(4172,'2024-07-30','Re: hpr4072 Piper voice synthesis',315,'Archer72 demonstrates using the /opt directory for the Piper executables.','<h2 id=\"clone-piper-and-use-the-opt-directory\">Clone piper and use the\n/opt directory</h2>\n<pre><code>mkdir -p /opt/bin/piper/\nsudo chown -R user /opt/bin/piper/\nsudo apt install cmake\ngit clone https://github.com/rhasspy/piper.git\ncd piper/\nmake\ncp install/piper* /opt/bin/piper/\ncp install/lib* /opt/bin/piper/\nexec /opt/bin/piper/piper</code></pre>\n<h2 id=\"voices\">Voices</h2>\n<pre><code>sudo apt install git-lfs\ngit lfs install\ngit clone https://huggingface.co/rhasspy/piper-voices\ncd piper-voices</code></pre>\n<h2 id=\"test-voice\">Test voice</h2>\n<pre><code>echo &#39;This sentence is spoken first. This sentence is synthesized while the first sentence is spoken.&#39; |\\\n    exec /opt/bin/piper/piper \\\n    --model ~/git/piper-voices/en/en_GB/southern_english_female/low/en_GB-southern_english_female-low.onnx \\\n    --output voice.wav</code></pre>\n',318,79,0,'CC-BY-SA','tts,TextToSpeech,VoiceSynthesis,accessibility',0,0,1),
(4171,'2024-07-29','Al discusses the renovation of his bathroom',709,'Al shares his experience of remodeling his bathroom, including the techniques and tools he utilized','<p>I avoid including links to items I discuss in the episode in case the\nsellers update their URLs. However, here\'s a list of the things I\nmentioned in the episode</p>\n<h2 id=\"tools-i-used\">Tools I Used:</h2>\n<ul>\n<li>Rotary Pipe Cutters - 22mm and 15mm</li>\n<li>Sealant Gun</li>\n<li>Sealant Finishing Tool</li>\n<li>Aero Disposable Freeze Kit with jacket</li>\n<li>2 Large Adjustable Wrenches/Spanners</li>\n</ul>\n<h2 id=\"parts-i-used\">Parts I used:</h2>\n<ul>\n<li>Flomasta twistloc plastic push-fit</li>\n<li>CT1 Adhesive Sealant</li>\n<li>PVC Easy Panels - Shower 10mm</li>\n<li>Aero Disposable Freeze Kit with jacket</li>\n</ul>\n<p><em>Before</em><br />\n<img src=\"https://hackerpublicradio.org/eps/hpr4171/hpr4171/before.jpg\"\nalt=\"Before\" /></p>\n<p><em>During</em><br />\n<img src=\"https://hackerpublicradio.org/eps/hpr4171/hpr4171/during.jpg\"\nalt=\"During\" /></p>\n<p><em>After</em><br />\n<img src=\"https://hackerpublicradio.org/eps/hpr4171/hpr4171/after.jpg\"\nalt=\"After\" /></p>\n',290,0,0,'CC-BY-SA','plumbing,diy',0,0,1),
(4173,'2024-07-31','Getting my 2015 Macbook Pro back up and running',355,'The storage drive of my 2015 macbook pro died on me and I was able to replace it','<p>Installing a new pcie ssd drive into my 2015 Macbook Pro</p>\n',297,0,0,'CC-BY-SA','macbook pro, apple, laptop, laptop repair',0,0,1),
(4365,'2025-04-25','Mint to Rocket Money and Scammers ',808,'operat0r talks about my move from Mint to Rocket Money and me getting scammed basically..','\n    <p>\n      Some advice about tracking spending, money management,\n      RocketMoney, MintApp, Budgeting, Personal Finance, Financial\n      Management, Automatic Routing, Investments, Net Worth and data\n      brokers.</p>\n    <ul>\n      <li><a moz-do-not-send=\"true\"\nhref=\"https://investors.intuit.com/news-events/press-releases/detail/1005/intuit-completes-acquisition-of-mint-com\">https://investors.intuit.com/news-events/press-releases/detail/1005/intuit-completes-acquisition-of-mint-com</a></li>\n      <li><a moz-do-not-send=\"true\" href=\"https://www.monarchmoney.com/\">\n          https://www.monarchmoney.com/</a></li>\n      <li><a moz-do-not-send=\"true\" href=\"https://www.rocketmoney.com/\">\n          https://www.rocketmoney.com/</a></li>\n      <li><a moz-do-not-send=\"true\" href=\"https://www.ynab.com/\">\n          https://www.ynab.com/</a></li>\n      <li><a moz-do-not-send=\"true\" href=\"https://www.deleteme.com/\">\n          https://www.deleteme.com/</a></li>\n      <li><a moz-do-not-send=\"true\" href=\"https://www.paypal.com\">\n          https://www.paypal.com</a></li>\n      <li><a moz-do-not-send=\"true\"\nhref=\"https://www.federalregister.gov/documents/2024/11/15/2024-25534/negative-option-rule\">https://www.federalregister.gov/documents/2024/11/15/2024-25534/negative-option-rule</a></li>\n    </ul>',36,0,1,'CC-BY-SA','Budgeting',0,0,1),
(4174,'2024-08-01','Of the Mic and the Mop',2696,'The response to the future of hpr','<h1 id=\"the-future-of-hpr\">The Future of HPR</h1>\n<p>In episode <a\nhref=\"https://hackerpublicradio.org/eps/hpr4109/index.html\">hpr4109</a>\n\"The future of HPR\" Knightwise challenged us to look at HPR from the\npoint of view of marketing to a business. His show was prompted by a\npost we put out entitled <a\nhref=\"https://lists.hackerpublicradio.com/pipermail/hpr/2024-January/004741.html\">Happy\nnew year - should we continue with HPR ?</a>, wherein we asked you to\nvote on the future of HPR. The vote was a not so subtle redirect to our\nupload page.</p>\n<h1 id=\"tldrl\">TL;D[R|L]</h1>\n<p>This is likely to be a long show, so I\'m adding the summary here.</p>\n<h2 id=\"key-takeaways\">Key Takeaways</h2>\n<ol type=\"1\">\n<li>More subscribers does not mean more contributors.</li>\n<li>In person contact is the best way to get new contributors.</li>\n<li>Use social media to bring people <strong>to</strong> HPR and not\ndrive the discussions <strong>away</strong> from HPR.</li>\n<li>Our interface point with the listening world is the RSS feed.</li>\n<li>The Web site is the first point of contact for new\ncontributors.</li>\n<li>We are losing contributors due to fear of being \"guilty by\nassociation\".</li>\n</ol>\n<h3 id=\"feed-the-queue\">Feed the queue</h3>\n<ul>\n<li>Send in one show a year.</li>\n<li>Get one new host a year.</li>\n<li>Don\'t rush in shows, use the reserve queue.</li>\n<li>Follow the Scheduling Guidelines.</li>\n</ul>\n<h3 id=\"look-for-hosts-at-every-opportunity\">Look for Hosts at every\nopportunity</h3>\n<ul>\n<li>Take every opportunity, work, school, hobbies, social media groups,\nto ask people to send in a show.</li>\n<li>Volunteer to host an HPR Booth at events, libraries, fairs, meetups,\netc.</li>\n<li>Record interviews with interesting Projects.</li>\n<li>Get in touch with older hosts and remind them how much you miss\ntheir content.</li>\n</ul>\n<h3 id=\"get-our-house-in-order\">Get our house in order</h3>\n<p>To be taken seriously as a project, we need to:</p>\n<ol start=\"0\" type=\"1\">\n<li>Finish the migration of the Back End.</li>\n<li>Formalize our current implicit Code of Conduct.</li>\n<li>Refresh the website, emphasizing our norms and values.</li>\n<li>Enrich the RSS feeds to become more integrated on distribution\nchannels.</li>\n<li>Start giving talks at conferences promoting HPR, or Projects\ndiscussed on HPR.</li>\n<li>Get HPR Published in Wikipedia, Industry, Tech and Hobby\nMagazines.</li>\n<li>Assign dedicated Janitors on Official and Unofficial Platforms.</li>\n</ol>\n<hr />\n<h3 id=\"subscribers-versus-contributors\">Subscribers versus\nContributors</h3>\n<p>\"Without data, you\'re just another person with an opinion.\" <a\nhref=\"https://en.wikiquote.org/wiki/W._Edwards_Deming\">W._Edwards_Deming</a></p>\n<blockquote>\n<p>All the numbers given in this episode are the most conservative\nnumbers we can give, as we have no financial incentive to do otherwise.\nWe can be confident in the numbers as the rate of subscriber growth\nmirrors the growth of social media, and the growth of the Internet in\ngeneral.</p>\n</blockquote>\n<p>There have been 2,446,084 Total unique subscribers since the project\nbegan. That is at least 2.5 Million people that have not only heard\nabout HPR, but have also actively subscribed to an HPR feed.</p>\n<p>There have been 359 hosts since the project began.</p>\n<a href=\"eps/hpr4174/hpr4174/first-show-of-new-host-plotted-over-time-Versus-First-Show-of-New-Hosts.png\">\n<img src=\"eps/hpr4174/hpr4174/first-show-of-new-host-plotted-over-time-Versus-First-Show-of-New-Hosts-600x.png\" alt=\"Subscribers increase, Hosts Decrease\" />\n</a>\n\n<blockquote>\n<p>The plots show that the number of monthly subscribers to HPR has\nslowly increased from 40,000 to over 120,000 between 2010 and 2022. It\nalso shows for the same period the number of new hosts per month. The\nperiod between 2010 and 2016 shows a lot of new hosts joining at a rate\nof about three per month. This was when we were active at FLOSS Events.\nBetween 2016 and 2023 the rate of new hosts drops to one every two\nmonths or so.</p>\n</blockquote>\n<hr />\n<h3 id=\"links\">Links</h3>\n<ul>\n<li><a href=\"https://www.peppercarrot.com/en/\">Pepper and\nCarrot</a></li>\n</ul>\n',30,0,0,'CC-BY-SA','HPR, Future, Statistics, peppercarrot',0,0,1),
(4175,'2024-08-02','what\'s in my bag part 2',2258,'operat0r talks about his bookbag for 2023 2024','<p>I go over what\'s in my bag for 2023-2024</p>\n\n<p><em><small>[Editor\'s Note; Comment added to the notes 2024-09-29]</small></em></p>\n\n<p>The items in the book bag include:</p>\n\n<ul>\n    <li>USB bass bunny</li>\n    <li>USB cable for number owner</li>\n    <li>Toothbrush and toothpaste</li>\n    <li>Retractable charging cable</li>\n    <li>Two headphones of the ear buds</li>\n</ul>\n\n<h3>ONE SENTENCE SUMMARY:</h3>\n<p>The user discussed various apps, tools, and services they use for personal and professional purposes including Plex, Real Link, Snapseed, Stocard, Telly Health, BetterHelp, Misnotifications, multi V&amp;C, Google Translate, Twitch, Uber, Last Pass, Google Voice, Yelp, and Land Zoom.</p>\n\n<h3>MAIN POINTS:</h3>\n<ul>\n    <li>Uses Plex for accessing media content</li>\n    <li>Real Link app for convenience but dislikes it</li>\n    <li>Snapseed used for photo storage and organization</li>\n    <li>Stocard app for barcode management</li>\n    <li>Telly Health used for personal health through Better Help services</li>\n    <li>Misnotifications app for reminder notifications</li>\n    <li>Multi V&amp;C desktop launcher for Android compression and accessibility features</li>\n    <li>Google Translate used for OCR tasks</li>\n    <li>Twitch used for break-sec security purposes</li>\n    <li>Uber app for transportation</li>\n    <li>Last Pass for password management</li>\n    <li>Google Voice and Hound for various voice assistance tasks</li>\n    <li>Yelp for restaurant search</li>\n    <li>Land Zoom for work purposes</li>\n</ul>\n<h3>TAKEAWAYS:</h3>\n<ul>\n    <li>Utilize Plex and Real Link for media content access</li>\n    <li>Use Snapseed for photo storage and organization</li>\n    <li>Stocard app helps manage barcodes</li>\n    <li>Use Telly Health, Better Help for personal health needs</li>\n    <li>Misnotifications for reminder notifications</li>\n    <li>Multi V&amp;C launcher for Android desktop compression and accessibility</li>\n    <li>Google Translate for OCR tasks</li>\n    <li>Twitch for break-sec security purposes</li>\n    <li>Uber app for transportation</li>\n    <li>Last Pass for password management</li>\n    <li>Google Voice and Hound for various voice assistance tasks</li>\n    <li>Yelp for restaurant search</li>\n    <li>Land Zoom for work purposes</li>\n</ul>\n',36,0,1,'CC-BY-SA','hacking,back packing',0,0,1),
(4177,'2024-08-06','Blender 3D Tutorial #1',4275,'Deltaray provides an audio tutorial of how to use the Blender 3D software','<p>In this tutorial I will guide you through the process of making this image.  Check the comments of this episode later for information on where you can share your results.</p>\n\n<p><img src=\"https://suso.suso.org/mediafiles/hpr-god-rays-small.jpg\" alt=\"https://suso.suso.org/mediafiles/hpr-god-rays-small.jpg\"></p>\n\n<p>Since this is an audio tutorial, I recommend you consider using media player software that allows you to easily rewind, pause and skip around without issue.  Something that allows you to use hotkeys to pause and rewind 10 seconds at a time would be ideal.</p>\n\n<p>Also, here are some important hotkeys that will be explained throughout the tutorial.</p>\n\n<ul>\n<li><b>Ctrl+s</b> = Save your scene (do this frequently in case Blender crashes on you)\n<li><b>Numpad 0</b> = Camera view\n<li><b>g</b> = grab\n<li><b>r</b> = rotate\n<li><b>s</b> = scale\n<li><b>x,y,z</b> = axis restrictions while using above keys\n<li><b>Middle mouse button hold</b> = rotate view of the scene\n<li><b>Tab</b> = Change between object mode and edit mode\n<li><b>F12</b> = render scene\n<li><b>~</b> = From camera view, this will reposition your camera using the keys below.\n<li><b>w,a,s,d,q,e</b> = In camera view forward,left,backward, up, down\n</ul>\n\n\n',194,0,0,'CC-BY-SA','blender,tutorial,open source,graphics',0,0,1),
(4178,'2024-08-07','Today I learnt (2024-07-27)',461,'A few more things I learnt recently','<article>\n<h2 id=\"til-1-movement-in-the-galaxy-and-mass-extinctions\">TIL 1:\nMovement in the galaxy and mass extinctions</h2>\n<ul>\n<li>Throughout the history of this planet there have been a number of\nmass extinctions. There are various theories about what has caused this.\nI came across one of these recently.</li>\n<li>The solar system doesn\'t orbit the galaxy in parallel with the\norientation of the galactic plane. There is a difference in the two\norientations in other words. Sometimes it\'s in the galactic plane, and\nat times it\'s \"above\" or \"below\".</li>\n<li>When in the plane the solar system is more protected from gamma ray\nbursts originating in the galaxy than when it\'s not. The period of\nrotation is the <em>Galactic year</em> and is about 225 million years\nlong.</li>\n<li>The thinking is that when less protected perhaps the cosmic\nradiation has effects on life on Earth. There seems to be a correlation\nbetween these events - gamma ray exposure and extinctions - though there\nis no certainty that this is so. Extinctions may have multiple causes,\nso the relationship cannot be simple.</li>\n<li>I have provided a few links that might give useful leads if you want\nto find out more.</li>\n</ul>\n<h2 id=\"til-1-links\">TIL 1: Links</h2>\n<ul>\n<li><a href=\"https://en.wikipedia.org/wiki/Extinction_event\">Wikipedia:\nExtinction event</a></li>\n<li><a href=\"https://en.wikipedia.org/wiki/Galactic_plane\">Wikipedia:\nGalactic plane</a></li>\n<li><a href=\"https://en.wikipedia.org/wiki/Galactic_year\">Wikipedia:\nGalactic year</a></li>\n<li><a\nhref=\"https://physics.stackexchange.com/questions/276958/what-angle-does-our-solar-system-make-with-the-milky-way\">Physics\nStackexchange: What angle does our Solar System make with The Milky\nWay?</a></li>\n<li><a href=\"https://en.wikipedia.org/wiki/Shiva_hypothesis\">Wikipedia:\nShiva hypothesis</a></li>\n<li><a\nhref=\"https://www.cambridge.org/core/journals/international-journal-of-astrobiology/article/abs/galactic-cycle-of-extinction/DE684156C04E767E8C2F10284E9CAA3F\">International\nJournal of Astrobiology: <em>The galactic cycle of\nextinction</em></a></li>\n</ul>\n<h2 id=\"til-2-which-is-correct---ml-or-ml\">TIL 2: Which is correct -\n<code>ml</code> or <code>mL</code>?</h2>\n<ul>\n<li>What is the correct abbreviation for <em>millilitre</em>?</li>\n<li>I watch a YouTube channel about cooking, from Canada. It is <a\nhref=\"https://www.youtube.com/@GlenAndFriendsCooking\">Glen and Friends\nCooking</a></li>\n<li>The show ends with a recipe, and in some cases the measurements are\nmetric. Often it\'s something like <em>540 mL can of tomatoes</em>.</li>\n<li>Having done Chemistry at school and university we were taught the\nabbreviated form of <em>millilitre</em> is <em>ml</em>, but today I\nlearnt that mixed case <em>mL</em> is also permitted and is preferred in\nthe USA, Canada and Australia, while Europe prefers lower case\n<em>ml</em>.</li>\n<li>It\'s a similar situation with other fractions and multiples of a\nLitre such as <em>dl</em> and <em>dL</em> for <em>decilitre</em> and\neven for <em>quettalitre</em> (10<sup>30</sup> litres) - <em>Ql</em> and\n<em>QL</em>.</li>\n</ul>\n<h2 id=\"til-2-links\">TIL 2: Links</h2>\n<ul>\n<li><a href=\"https://www.youtube.com/@GlenAndFriendsCooking\">Glen and\nFriends Cooking</a></li>\n<li><a\nhref=\"https://en.wikipedia.org/wiki/Litre#SI_prefixes_applied_to_the_litre\">Wikipedia:\nSI prefixes applied to the litre</a></li>\n</ul>\n<h2 id=\"til-3-meibomium-glands\">TIL 3: Meibomium glands</h2>\n<ul>\n<li>These glands are a type of sebaceous gland in the eyelid. Sebaceous\nglands in general produce secretions to protect the skin and hair. On\nthe skin they are part of the hair follicle and produce an oily\nsubstance called <em>sebum</em> (from the Latin word for <em>tallow</em>\nused to make candles).</li>\n<li>The Meibomium glands are found along the edge of the eyelid adjacent\nto the eyelashes. The oily substance they produce helps to prevent the\neye surface from drying out by mixing with the tears. It also helps the\neyelids to make an airtight seal when the eyes are closed. There are\nmany functions.</li>\n<li>I knew about the Meibomium glands from learning about human anatomy\nas a student, but didn\'t know very much about their function.</li>\n<li>The glands are named after Heinrich Meibom (1638 – 1700), a German\nphysician and scholar.</li>\n<li>I didn\'t know that the secretions produced by these glands can\nreduce with age, or the glands can can be blocked, leading to MGD\n(<em>Meibomium Gland Dysfunction</em>). I might have this according to\nmy Optometrist.</li>\n<li>I also didn\'t know that the secretion has a name:\n<em>meibum</em>.</li>\n</ul>\n<h2 id=\"til-3-links\">TIL 3: Links</h2>\n<ul>\n<li><a href=\"https://en.wikipedia.org/wiki/Sebaceous_gland\">Wikipedia: Sebaceous gland</a></li>\n<li><a href=\"https://en.wikipedia.org/wiki/Meibomian_gland\">Wikipedia:\nMeibomium gland</a></li>\n<li><a\nhref=\"https://en.wikipedia.org/wiki/Heinrich_Meibom_(doctor)\">Wikipedia:\nHeinrich Meibom</a></li>\n<li><a\nhref=\"https://en.wikipedia.org/wiki/Meibomian_gland_dysfunction\">Wikipedia:\nMeibomium Gland Dysfunction</a></li>\n</ul>\n</article>\n',225,123,1,'CC-BY-SA','Galactic plane,Galactic year,extinction,millilitre,Meibomium glands',0,0,1),
(4181,'2024-08-12','Downloading out of copyright movies',107,'Using tor proxy with yt-dlp to get public domain movies','<h1 id=\"downloading-out-of-copyright-movies\">Downloading out of\ncopyright movies</h1>\n<p>Hi my name is Bob. I\'ve commented a few times, but this is my first\nepisode.</p>\n<p>I\'m using text to speech as suggested by <a\nhref=\"https://hackerpublicradio.org/correspondents/0246.html\">Beeza</a>\nin episode <a\nhref=\"https://hackerpublicradio.org/eps/hpr4167/index.html\">hpr4167 ::\nRemoving another obstacle to recording an HPR show</a> but using\n<code>piper</code> from <a\nhref=\"https://hackerpublicradio.org/eps/hpr4172/index.html\">hpr4172 ::\nRe: hpr4072 Piper voice synthesis</a> by <a\nhref=\"https://hackerpublicradio.org/correspondents/0318.html\">Archer72</a>.</p>\n<p>For this tutorial I suggest how it might be possible to use <a\nhref=\"https://www.torproject.org/download/\">tor</a> browser to download\ndifficult to find public domain works.</p>\n<p>As well as letting you browse privately, it also enables a <a\nhref=\"https://en.wikipedia.org/wiki/SOCKS\">SOCKS Proxy</a> which other\napplications can use.</p>\n<p>Wikipedia maintains a list of <a\nhref=\"https://en.wikipedia.org/wiki/List_of_films_in_the_public_domain_in_the_United_States\">List\nof films in the public domain in the United States</a>.</p>\n<p>I found out about this list after reading <a\nhref=\"https://www.plagiarismtoday.com/2012/10/24/copyright-zombies-vampires-frankenstein-more/\">Copyright\nin Zombies, Vampires, Frankenstein and More!</a>.</p>\n<p>Once you have ensured that it\'s perfectly legal do download the movie\nin your Jurisdiction, then use tor to go to duck duck go video\nsearch.</p>\n<p>In our hypothetical scenario, say we wanted to download <a\nhref=\"https://duckduckgo.com/?q=Night+of+the+Living+Dead+1968+site%3Aok.ru&amp;t=ffab&amp;iax=videos&amp;ia=videos\">Night\nof the Living Dead</a>, released in 1968 by Director George A. Romero\nand came out of copyright in 1968 due to \"Missing copyright notice and\nerrors from the distributor.\" From <a\nhref=\"https://en.wikipedia.org/wiki/List_of_films_in_the_public_domain_in_the_United_States\">List\nof films in the public domain in the United States</a> Night of the\nLiving Dead entered the public domain because the original theatrical\ndistributor, the Walter Reade Organization, neglected to place a\ncopyright indication on the prints. In 1968, United States copyright law\nrequired a proper notice for a work to maintain a copyright\"</p>\n<p>This is why there are so many variations on zombie movies.</p>\n<p>In the example ok.ru is the site hosting the movie, and it has a link\nof <a\nhref=\"https://ok.ru/video/foo_bar\">https://ok.ru/video/foo_bar</a></p>\n<p>It would be simple enough to just point <a\nhref=\"https://github.com/yt-dlp/yt-dlp\">yt-dlp</a> - A feature-rich\ncommand-line audio/video downloader, to the url and download it.</p>\n<p>You could also take advantage of the fact that <a\nhref=\"https://github.com/yt-dlp/yt-dlp\">yt-dlp</a> supports a SOCKS\nproxy.</p>\n<pre><code>--proxy URL\n    Use the specified HTTP/HTTPS/SOCKS proxy.  To enable SOCKS proxy, specify a proper scheme, e.g.  socks5://user:pass@127.0.0.1:1080/.  Pass in an empty st9ring (--proxy &quot;&quot;) for direct connection</code></pre>\n<p>So if you were to run\n<code>yt-dlp --proxy socks5://localhost:9150 https://ok.ru/video/foo_bar</code>\nit would download the movie via tor.</p>\n<p>I am in no way condoning the downloading of illegal material, and am\nnot suggesting in any way that you do so.</p>\n',435,0,0,'CC-BY-SA','PublicDomain,Copyright,Tor,yt-dlp',0,0,1),
(4182,'2024-08-13','Replacing backup batteries in my Kenwood TS940S HF Radio Part 1',1571,'This is part 1 recording my experience of replacing backup button batteries in my HF ham radio','<p><small><strong>Note</strong>: <em>all pictures are thumbnails which\ncan be clicked to show the full-sized image</em></small></p>\n<p><strong>Picture 1</strong><br />\n<a href=\"https://hackerpublicradio.org/eps/hpr4182/hpr4182/1.jpeg\"><img\nsrc=\"https://hackerpublicradio.org/eps/hpr4182/hpr4182/1_thumbnail.jpeg\"\nalt=\"Picture 1: shows my beloved Kenwood TS-940S\" /></a><br />\nShows my beloved Kenwood TS-940S notice that the display on the top\nright of the radio displays the words &#x201C;TRIO-KENWOOD&#x201D; this indicates that\nthe backup battery has failed. Under normal condition it would display\nthe time.</p>\n<p><a href=\"https://en.wikipedia.org/wiki/UHF_connector\">Wikipedia\narticle about an S0239 connector</a>. This being the Antenna connector\nwhich I had to remove before being able to work on the radio.</p>\n<p><a href=\"https://www.youtube.com/watch?v=kPZbXyUNxCw\">Link to the\nYouTube video I used that described the process of removing the two\nbackup batteries in a Kenwood TS-940S.</a> The video was very useful and\nwas very informative however as per usual it looked far easier than it\nactually was or perhaps I&#x2019;m just rubbish at taking radios to bits.</p>\n<p><strong>Picture 2</strong><br />\n<a href=\"https://hackerpublicradio.org/eps/hpr4182/hpr4182/2.jpeg\"><img\nsrc=\"https://hackerpublicradio.org/eps/hpr4182/hpr4182/2_thumbnail.jpeg\"\nalt=\"Picture 2: shows a view of the radio with it&#x2019;s top cover removed\" /></a><br />\nShows a view of the radio with its top cover removed</p>\n<p>The backup battery for the clock is tucked away underneath the front\ntop lip of the radio directly behind the display that showed\n&#x201C;TRIO-KENWOOD&#x201D; This being above the front panel keypad.</p>\n<p>The second backup battery is for the PLL (Phase-locked loop memories)\nit is located underneath the speaker and switches to the right of the\nspeaker. <a\nhref=\"https://en.wikipedia.org/wiki/Phase-locked_loop\">Wikipedia article\nabout PLL (Phase-locked loop)</a></p>\n<p>The Antenna tuning unit which I briefly mention is located at the\nback right hand side of the unit. You can see the four holes on the top\nof the panel presumable to allow for adjustments. To the left of the\nfour holes you can see the two motors that drive the tuning adjustments\nwhen the auto tune (AT.T) button is depressed. <a\nhref=\"https://en.wikipedia.org/wiki/Antenna_tuner\">Wikipedia article\nabout Antenna Tuners</a></p>\n<p><a href=\"https://en.wikipedia.org/wiki/Soldering\">Wikipedia article\nabout soldering that mentions dry joints</a></p>\n<p>Link to TechMoan You-tube episode about a piece of audio equipment\nthat is destroyed by a leaking battery (<a\nhref=\"https://www.youtube.com/watch?v=eZHYoBWjEdg\">Sony&#x2019;s\nself-destructing MD Recorder from 2070</a>).</p>\n<p><strong>Picture 3</strong><br />\n<a href=\"https://hackerpublicradio.org/eps/hpr4182/hpr4182/3.jpeg\"><img\nsrc=\"https://hackerpublicradio.org/eps/hpr4182/hpr4182/3_thumbnail.jpeg\"\nalt=\"Picture 3: shows a view of inside the radio with the bottom cover removed\" /></a><br />\nShows a view of inside the radio with the bottom cover removed. The\nradio is very analogue compared with modern radios. It contains many\nadjustable ferrite cores which I would imagine would be a bit of\nnightmare to setup. It also has a lot of electro mechanical relays.\nThese days it would all be done with solid state electronics and with a\nsmall number of large scale integrated circuits. They truly don&#x2019;t make\nradios like this any more.</p>\n<p>The connector which I removed from the timer board to allow the front\npanel to rotate down can be seen in Picture 2. The timer board is a\nsmall printed circuit board that sits on the top of the radio slightly\nto the right and behind the clock display.</p>\n<p><strong>Picture 4</strong><br />\n<a href=\"https://hackerpublicradio.org/eps/hpr4182/hpr4182/4.jpeg\"><img\nsrc=\"https://hackerpublicradio.org/eps/hpr4182/hpr4182/4_thumbnail.jpeg\"\nalt=\"Picture 4: shows the three internal side screws that need to be removed in order to allow the front panel to be rotated down this being done to gain access to the clock backup battery\" /></a><br />\nShows the three internal side screws that need to be removed in order to\nallow the front panel to be rotated down this being done to gain access\nto the clock backup battery.</p>\n<p><strong>Picture 5</strong><br />\n<a href=\"https://hackerpublicradio.org/eps/hpr4182/hpr4182/5.jpeg\"><img\nsrc=\"https://hackerpublicradio.org/eps/hpr4182/hpr4182/5_thumbnail.jpeg\"\nalt=\"Picture 5: shows a close up of the failed clock backup battery\" /></a><br />\nShows a close up of the failed clock backup battery (silver disk with\norange rim), the cable harness with the black rigid plastic cable tie\nwhich was already open. I can&#x2019;t remember which connector was removed\neither the one to the right of the battery or the one just out of sight\nat the extreme bottom left hand side of the picture.</p>\n<p><strong>Picture 6</strong><br />\n<a href=\"https://hackerpublicradio.org/eps/hpr4182/hpr4182/6.jpeg\"><img\nsrc=\"https://hackerpublicradio.org/eps/hpr4182/hpr4182/6_thumbnail.jpeg\"\nalt=\"Picture 6: shows the radio hanging over the desk with the front panel now rotated down\" /></a><br />\nShows the radio hanging over the desk with the front panel now rotated\ndown. I now have clear access to the clock backup battery which I&#x2019;ll\ncover in my next episode.</p>\n',201,43,1,'CC-BY-SA','repair, electrical, DIY',0,0,1),
(4192,'2024-08-27','Replacing backup batteries in my Kenwood HF Radio Part 2',778,'Replacing batteries in my HF Amateur radio TS-940S. Covers replacement of the clock battery','<p><strong>Picture 1</strong><br />\n<img src=\"https://hackerpublicradio.org/eps/hpr4192/hpr4192/1.jpeg\"\nalt=\"Picture 1 shows the two replacement Kenwood batteries that I purchased from ebay.\" /><br />\nshows the two replacement Kenwood batteries that I purchased from\nebay.</p>\n<p><strong>Picture 2</strong><br />\n<img src=\"https://hackerpublicradio.org/eps/hpr4192/hpr4192/2.jpeg\"\nalt=\"Picture 2 shows the original clock battery fitted to my Kenwood radio. This battery retains the time, and alarm settings when the power is removed from the radio.\" /><br />\nshows the original clock battery fitted to my Kenwood radio. This\nbattery retains the time, and alarm settings when the power is removed\nfrom the radio.</p>\n<p><a\nhref=\"https://hinonline.com/p/fluke-77-iv-multimeter-digital-multimeter-cat-iv-600v_fluke-77/\">Link\nshowing a fluke 77 Digital Multi-meter identical to the one I\nhave.</a></p>\n<p><a href=\"https://en.wikipedia.org/wiki/Desoldering\">Wikipedia article\nabout de-soldering which shows a typical de-soldering pump (solder\nsucker) similar to the one I used.</a></p>\n<p><strong>Picture 3</strong><br />\n<img src=\"https://hackerpublicradio.org/eps/hpr4192/hpr4192/3.jpeg\"\nalt=\"Picture 3 shows the resistor I attached to one end of the new battery extending the leads so they reach between the two battery terminal posts on my Kenwood radio.\" /><br />\nshows the resistor I attached to one end of the new battery extending\nthe leads so they reach between the two battery terminal posts on my\nKenwood radio.</p>\n<p><strong>Picture 4</strong><br />\n<img src=\"https://hackerpublicradio.org/eps/hpr4192/hpr4192/4.jpeg\"\nalt=\"Picture 4 shows the new clock backup battery fitted to my Kenwood radio note the extended lead on the right hand side made from the leg of an old resistor I had lying around.\" /><br />\nshows the new clock backup battery fitted to my Kenwood radio note the\nextended lead on the right hand side made from the leg of an old\nresistor I had lying around.</p>\n<p><strong>Picture 5</strong><br />\n<img src=\"https://hackerpublicradio.org/eps/hpr4192/hpr4192/5.jpeg\"\nalt=\"Picture 5 shows the poor lighting and cramped working conditions I had to deal with.\" /><br />\nshows the poor lighting and cramped working conditions I had to deal\nwith.</p>\n',201,43,1,'CC-BY-SA','Amateur, Radio, DIY, repair, electronics, soldering',0,0,1),
(4202,'2024-09-10','Replacing backup batteries in my Kenwood HF Radio Part 3',1110,'Part 3 deals with the replacement of the clock backup battery on my TS-940S','<p><strong>Picture 1</strong><br />\n<img src=\"https://hackerpublicradio.org/eps/hpr4202/hpr4202/1.jpeg\"\nalt=\"Picture 1 shows the radio hanging over the edge with the front panel rotated down before rotating it back into place. It shows the cramped working condition I had to deal with.\" /><br />\nshows the radio hanging over the edge with the front panel rotated down\nbefore rotating it back into place. It shows the cramped working\ncondition I had to deal with.</p>\n<p><a href=\"https://www.youtube.com/watch?v=kPZbXyUNxCw\">Link to the\nYouTube video I used that described the process of removing the two\nbackup batteries in a Kenwood TS-940S.</a> The video was very useful and\ninformative however as usual it looked far easier than it actually was\nor perhaps I&#x2019;m just rubbish at taking radios apart.</p>\n<p><strong>Picture 2</strong><br />\n<img src=\"https://hackerpublicradio.org/eps/hpr4202/hpr4202/2.jpeg\"\nalt=\"Picture 2 shows the clock display immediately after first switch on with the display not working properly.\" /><br />\nshows the clock display immediately after first switch on with the\ndisplay not working properly.</p>\n<p><strong>Picture 3</strong><br />\n<img src=\"https://hackerpublicradio.org/eps/hpr4202/hpr4202/3.jpeg\"\nalt=\"Picture 3 shows the correct clock display after pushing an internal reset button. I think the picture shows the alarm and timer settings. It eventually displays the correct time once it was setup. Unfortunately I forgot to take a picture of the final clock display.\" /><br />\nshows the correct clock display after pushing an internal reset button.\nI think the picture shows the alarm and timer settings. It eventually\ndisplays the correct time once it was setup. Unfortunately I forgot to\ntake a picture of the final clock display.</p>\n<p><a href=\"https://www.youtube.com/watch?v=eZHYoBWjEdg\">Link to\nTechMoan You-tube episode where the hi-fi was destroyed by a leaking\nbattery (Sony&#x2019;s self-destructing MD Recorder from 2070).</a></p>\n<p><a href=\"https://en.wikipedia.org/wiki/UHF_connector\">Wikipedia\narticle about an S0239 connector. This being the Antenna connector which\nI had to re-connect before being able to work on the radio.</a></p>\n',201,43,1,'CC-BY-SA','Amateur, Radio, DIY, repair, electronics, soldering',0,0,1),
(4212,'2024-09-24','Replacing backup batteries in my Kenwood TS940S HF Radio Part 4',1209,'Part 4 deals with getting access to the PLL backup battery.','<p><a href=\"https://www.youtube.com/watch?v=kPZbXyUNxCw\">Link to the\nYouTube video I used that described the process of removing the two\nbackup batteries in a Kenwood TS-940S.</a></p>\n<p><a href=\"https://en.wikipedia.org/wiki/Phase-locked_loop\">I mention\nthe acronym PLL which stands for Phase Locked Loop. Here is a Wikipedia\narticle about PLL.</a></p>\n<p><strong>Picture 1</strong><br />\n<img src=\"https://hackerpublicradio.org/eps/hpr4212/hpr4212/1.jpeg\"\nalt=\"Picture 1 shows a top down view of the radio. The large black square section located at the front left of the picture contains the speaker left and control board right. With the top cover fitted the control board is accessible via s sliding cover. Both the speaker and control board need to be removed in order to get access to the PLL backup battery. Both come out as one piece.\" /><br />\nshows a top down view of the radio. The large black square section\nlocated at the front left of the picture contains the speaker left and\ncontrol board right. With the top cover fitted the control board is\naccessible via s sliding cover. Both the speaker and control board need\nto be removed in order to get access to the PLL backup battery. Both\ncome out as one piece.</p>\n<p><strong>Picture 2</strong><br />\n<img src=\"https://hackerpublicradio.org/eps/hpr4212/hpr4212/2.jpeg\"\nalt=\"Picture 2 shows the first three connectors that need removing from the control board. All six connectors need removing before lifting the control board and speaker.\" /><br />\nshows the first three connectors that need removing from the control\nboard. All six connectors need removing before lifting the control board\nand speaker.</p>\n<p><strong>Picture 3</strong><br />\n<img src=\"https://hackerpublicradio.org/eps/hpr4212/hpr4212/3.jpeg\"\nalt=\"Picture 3 shows the second three connectors that need removing from the control board. Notice they are marked with the letter F.\" /><br />\nshows the second three connectors that need removing from the control\nboard. Notice they are marked with the letter F.</p>\n<p><strong>Picture 4</strong><br />\n<img src=\"https://hackerpublicradio.org/eps/hpr4212/hpr4212/4.jpeg\"\nalt=\"Picture 4 shows one of the connectors removed. I was nervous removing these. Fortunately I was able to remove them without causing any damage.\" /><br />\nshows one of the connectors removed. I was nervous removing these.\nFortunately I was able to remove them without causing any damage.</p>\n<p><a href=\"http://www.aeroelectric.com/articles/pigtail/pigtail3.jpg\">I\nmention the terms pigtail and screened cables. Here is a link to a\npigtail soldered to a screened cable.</a></p>\n<p><strong>Picture 5</strong><br />\n<img src=\"https://hackerpublicradio.org/eps/hpr4212/hpr4212/5.jpeg\"\nalt=\"Picture 5 shows the speaker and control board lifted out of place and swiveled to the side to reveal the PLL unit which is encased in a metal box for screening. There are eight screws on the top lid that need removing to gain access to the inside of the screened PLL unit.\" /><br />\nshows the speaker and control board lifted out of place and swiveled to\nthe side to reveal the PLL unit which is encased in a metal box for\nscreening. There are eight screws on the top lid that need removing to\ngain access to the inside of the screened PLL unit.</p>\n<p><strong>Picture 6</strong><br />\n<img src=\"https://hackerpublicradio.org/eps/hpr4212/hpr4212/6.jpeg\"\nalt=\"Picture 6 shows the top cover removed from the screened PLL unit revealing the backup battery located in the middle of the picture (Silver disc with orange outer rim). The top cover is swiveled to the left hand side out of the way.\" /><br />\nshows the top cover removed from the screened PLL unit revealing the\nbackup battery located in the middle of the picture (Silver disc with\norange outer rim). The top cover is swiveled to the left hand side out\nof the way.</p>\n<p><strong>Picture 7</strong><br />\n<img src=\"https://hackerpublicradio.org/eps/hpr4212/hpr4212/7.jpeg\"\nalt=\"Picture 7 shows a close up of the PLL backup battery. From the picture droplets of liquid can clearly be seen on the right hand connecting terminal indicating that the battery is leaking and must be removed before damage occurs. On the right hand side of the picture notice the two connectors attached to the circuit board that are terminated with unused sockets. I have no idea what these sockets are used for. There are brass pillars either side of the connectors. I assume some sort of add on board could be purchased and perhaps this was what the unused connectors are for. I also mention an unpopulated IC socket that can be seen in the top left hand side of the picture. This is probably for another optional extra.\" /><br />\nshows a close up of the PLL backup battery. From the picture droplets of\nliquid can clearly be seen on the right hand connecting terminal\nindicating that the battery is leaking and must be removed before damage\noccurs. On the right hand side of the picture notice the two connectors\nattached to the circuit board that are terminated with unused sockets. I\nhave no idea what these sockets are used for. There are brass pillars\neither side of the connectors. I assume some sort of add on board could\nbe purchased and perhaps this is what the unused connectors are for. I\nalso mention an unpopulated IC socket that can be seen in the top left\nhand side of the picture. This is probably for another optional\nextra.</p>\n',201,43,1,'CC-BY-SA','Amateur, Radio, DIY, repair, electronics, soldering',0,0,1),
(4436,'2025-08-04','HPR Community News for July 2025',2187,'HPR Volunteers talk about shows released and comments posted in July 2025','\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/hpr4412/index.html\" target=\"_blank\">4412</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2025-07-01</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr4412/index.html\" target=\"_blank\">Parkinson Tribly\'s Story: The Prisoner of Unit 731</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0441.html\" target=\"_blank\">Antoine</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps/hpr4413/index.html\" target=\"_blank\">4413</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2025-07-02</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr4413/index.html\" target=\"_blank\">KDE custom shortcuts are easy and useful</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0425.html\" target=\"_blank\">gemlog</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps/hpr4414/index.html\" target=\"_blank\">4414</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2025-07-03</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr4414/index.html\" target=\"_blank\">Bellroy Tech Kit Review</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0296.html\" target=\"_blank\">Kevie</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps/hpr4415/index.html\" target=\"_blank\">4415</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2025-07-04</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr4415/index.html\" target=\"_blank\">Sony WH-CH700N A2DP stops working in Fedora</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/hpr4416/index.html\" target=\"_blank\">4416</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2025-07-07</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr4416/index.html\" target=\"_blank\">HPR Community News for June 2025</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/hpr4417/index.html\" target=\"_blank\">4417</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2025-07-08</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr4417/index.html\" target=\"_blank\">Newest matching file</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/hpr4418/index.html\" target=\"_blank\">4418</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2025-07-09</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr4418/index.html\" target=\"_blank\">My Desktop Applications</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0296.html\" target=\"_blank\">Kevie</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps/hpr4419/index.html\" target=\"_blank\">4419</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2025-07-10</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr4419/index.html\" target=\"_blank\">YouTube Subscriptions 2025 #1</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/hpr4420/index.html\" target=\"_blank\">4420</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2025-07-11</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr4420/index.html\" target=\"_blank\">The First Doctor, Part 2</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0198.html\" target=\"_blank\">Ahuka</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps/hpr4421/index.html\" target=\"_blank\">4421</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2025-07-14</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr4421/index.html\" target=\"_blank\">Content Moderation</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0403.html\" target=\"_blank\">Lee</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps/hpr4422/index.html\" target=\"_blank\">4422</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2025-07-15</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr4422/index.html\" target=\"_blank\">hajime - part 2 - in depth</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0448.html\" target=\"_blank\">oxo</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps/hpr4423/index.html\" target=\"_blank\">4423</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2025-07-16</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr4423/index.html\" target=\"_blank\">YouTube Subscriptions 2025 #2</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0198.html\" target=\"_blank\">Ahuka</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps/hpr4424/index.html\" target=\"_blank\">4424</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2025-07-17</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr4424/index.html\" target=\"_blank\">How I use Newsboat for Podcasts and Reddit</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/hpr4425/index.html\" target=\"_blank\">4425</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2025-07-18</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr4425/index.html\" target=\"_blank\">Introducing Linux Matters</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/hpr4426/index.html\" target=\"_blank\">4426</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2025-07-21</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr4426/index.html\" target=\"_blank\">My Command Line Applications</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0296.html\" target=\"_blank\">Kevie</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps/hpr4427/index.html\" target=\"_blank\">4427</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2025-07-22</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr4427/index.html\" target=\"_blank\">Tale of Two (Wireless) Keyboards</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0431.html\" target=\"_blank\">Moss Bliss</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps/hpr4428/index.html\" target=\"_blank\">4428</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2025-07-23</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr4428/index.html\" target=\"_blank\">Fixing AVI Indexes</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/hpr4429/index.html\" target=\"_blank\">4429</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2025-07-24</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr4429/index.html\" target=\"_blank\">Handcrafting and Bartering discussion w. Elsbeth</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0446.html\" target=\"_blank\">Elsbeth</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps/hpr4430/index.html\" target=\"_blank\">4430</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2025-07-25</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr4430/index.html\" target=\"_blank\">Playing Civilization V, Part 1</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/hpr4431/index.html\" target=\"_blank\">4431</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2025-07-28</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr4431/index.html\" target=\"_blank\">Thermosol refill challenges</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/hpr4432/index.html\" target=\"_blank\">4432</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2025-07-29</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr4432/index.html\" target=\"_blank\">YouTube Subscriptions 2025 #3</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/hpr4433/index.html\" target=\"_blank\">4433</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2025-07-30</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr4433/index.html\" target=\"_blank\">Nerd Responce to URandom Podcast</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/hpr4434/index.html\" target=\"_blank\">4434</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2025-07-31</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr4434/index.html\" target=\"_blank\">Newsboat part 2 - Podcasts and Youtube</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0318.html\" target=\"_blank\">Archer72</a></td>\n</tr>\n</table>\n\n<h2>Comments this month</h2>\n\n<p>These are comments which have been made during the past month, either to shows released during the month or to past shows.\nThere are 23 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/hpr4025/index.html#comments\" target=\"_blank\">hpr4025</a></strong>\n(2024-01-05) \"<em>Testing V language</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0407.html\" target=\"_blank\">Celeste</a>.<br/>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps/hpr4025/index.html#comment_4372\" target=\"_blank\">Comment 1</a>:\nMalix on 2025-07-06:\n\"Review of V\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps/hpr4411/index.html#comments\" target=\"_blank\">hpr4411</a></strong>\n(2025-06-30) \"<em>The Pachli project</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0314.html\" target=\"_blank\">thelovebug</a>.<br/>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps/hpr4411/index.html#comment_4367\" target=\"_blank\">Comment 1</a>:\npaulj on 2025-07-01:\n\"Great Interview\"</li></ul><br/>\n</li></ul>\n<h3>This month\'s shows</h3>\n<p>There are 21 comments on 9 of this month\'s shows:</p>\n<ul><li><strong><a href=\"https://hackerpublicradio.org/eps/hpr4412/index.html#comments\" target=\"_blank\">hpr4412</a></strong>\n(2025-07-01) \"<em>Parkinson Tribly\'s Story: The Prisoner of Unit 731</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0441.html\" target=\"_blank\">Antoine</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps/hpr4412/index.html#comment_4368\" target=\"_blank\">Comment 1</a>:\nKevin O&#39;Brien on 2025-07-01:\n\"I loved the show\"</li><li><a href=\"https://hackerpublicradio.org/eps/hpr4412/index.html#comment_4370\" target=\"_blank\">Comment 2</a>:\nAntoine on 2025-07-05:\n\"Glad w/ your interest\"</li><li><a href=\"https://hackerpublicradio.org/eps/hpr4412/index.html#comment_4371\" target=\"_blank\">Comment 3</a>:\nKevin O&#39;Brien on 2025-07-05:\n\"Studying history\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps/hpr4416/index.html#comments\" target=\"_blank\">hpr4416</a></strong>\n(2025-07-07) \"<em>HPR Community News for June 2025</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/hpr4416/index.html#comment_4369\" target=\"_blank\">Comment 1</a>:\nKen Fallon on 2025-07-04:\n\"Policy Check\"</li><li><a href=\"https://hackerpublicradio.org/eps/hpr4416/index.html#comment_4374\" target=\"_blank\">Comment 2</a>:\nTorin Doyle on 2025-07-10:\n\"Thanks.\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps/hpr4417/index.html#comments\" target=\"_blank\">hpr4417</a></strong>\n(2025-07-08) \"<em>Newest matching file</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/hpr4417/index.html#comment_4359\" target=\"_blank\">Comment 1</a>:\nArcher72 on 2025-06-23:\n\"It\'s in my memory\"</li><li><a href=\"https://hackerpublicradio.org/eps/hpr4417/index.html#comment_4373\" target=\"_blank\">Comment 2</a>:\nToeJet on 2025-07-08:\n\"Alternate method\"</li><li><a href=\"https://hackerpublicradio.org/eps/hpr4417/index.html#comment_4387\" target=\"_blank\">Comment 3</a>:\nDave Morriss on 2025-07-31:\n\"Thanks Archer72\"</li><li><a href=\"https://hackerpublicradio.org/eps/hpr4417/index.html#comment_4388\" target=\"_blank\">Comment 4</a>:\nDave Morriss on 2025-07-31:\n\"ToeJet\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps/hpr4419/index.html#comments\" target=\"_blank\">hpr4419</a></strong>\n(2025-07-10) \"<em>YouTube Subscriptions 2025 #1</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/hpr4419/index.html#comment_4375\" target=\"_blank\">Comment 1</a>:\nArcher72 on 2025-07-11:\n\"Stories\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps/hpr4421/index.html#comments\" target=\"_blank\">hpr4421</a></strong>\n(2025-07-14) \"<em>Content Moderation</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0403.html\" target=\"_blank\">Lee</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps/hpr4421/index.html#comment_4376\" target=\"_blank\">Comment 1</a>:\nKevin O&#39;Brien on 2025-07-16:\n\"Nice discussion\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps/hpr4423/index.html#comments\" target=\"_blank\">hpr4423</a></strong>\n(2025-07-16) \"<em>YouTube Subscriptions 2025 #2</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0198.html\" target=\"_blank\">Ahuka</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps/hpr4423/index.html#comment_4380\" target=\"_blank\">Comment 1</a>:\nArcher72 on 2025-07-20:\n\"Easy listening\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps/hpr4424/index.html#comments\" target=\"_blank\">hpr4424</a></strong>\n(2025-07-17) \"<em>How I use Newsboat for Podcasts and Reddit</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/hpr4424/index.html#comment_4377\" target=\"_blank\">Comment 1</a>:\nAntoine on 2025-07-18:\n\"Thank you\"</li><li><a href=\"https://hackerpublicradio.org/eps/hpr4424/index.html#comment_4381\" target=\"_blank\">Comment 2</a>:\nArcher72 on 2025-07-20:\n\"Re: Antoine\'s thank you\"</li><li><a href=\"https://hackerpublicradio.org/eps/hpr4424/index.html#comment_4382\" target=\"_blank\">Comment 3</a>:\nArcher72 on 2025-07-20:\n\"Open in Browser\"</li><li><a href=\"https://hackerpublicradio.org/eps/hpr4424/index.html#comment_4383\" target=\"_blank\">Comment 4</a>:\nAntoine on 2025-07-22:\n\"Re: Archer 72 - That\'s what I understood\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps/hpr4425/index.html#comments\" target=\"_blank\">hpr4425</a></strong>\n(2025-07-18) \"<em>Introducing Linux Matters</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/hpr4425/index.html#comment_4378\" target=\"_blank\">Comment 1</a>:\nTorin Doyle on 2025-07-18:\n\"Not as good as Ubuntu Podcast.\"</li><li><a href=\"https://hackerpublicradio.org/eps/hpr4425/index.html#comment_4379\" target=\"_blank\">Comment 2</a>:\nTorin Doyle on 2025-07-19:\n\"Music for LM\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps/hpr4426/index.html#comments\" target=\"_blank\">hpr4426</a></strong>\n(2025-07-21) \"<em>My Command Line Applications</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0296.html\" target=\"_blank\">Kevie</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps/hpr4426/index.html#comment_4384\" target=\"_blank\">Comment 1</a>:\noxp on 2025-07-25:\n\"fastfetch\"</li><li><a href=\"https://hackerpublicradio.org/eps/hpr4426/index.html#comment_4385\" target=\"_blank\">Comment 2</a>:\nKevie on 2025-07-25:\n\"thanks oxp\"</li><li><a href=\"https://hackerpublicradio.org/eps/hpr4426/index.html#comment_4386\" target=\"_blank\">Comment 3</a>:\nArcher72 on 2025-07-27:\n\"lynx browser\"</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://lists.hackerpublicradio.com/mailman/listinfo/hpr\" target=\"_blank\">Mailing List</a>\nwhich is open to all HPR listeners and contributors. The discussions are open\nand available on the HPR server under <a href=\"https://lists.hackerpublicradio.com/pipermail/hpr\">Mailman</a>.\n</p>\n<p>The threaded discussions this month can be found here:</p>\n<a href=\"https://lists.hackerpublicradio.com/pipermail/hpr/2025-July/thread.html\" target=\"_blank\">https://lists.hackerpublicradio.com/pipermail/hpr/2025-July/thread.html</a>\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',159,47,1,'CC-BY-SA','Community News',0,0,1),
(4232,'2024-10-22','Replacing backup batteries in my Kenwood TS940S HF Radio Part 6',1333,'Part 6 is the final episode it deals with fitting the new replacement PLL backup battery.','<p><strong>Picture 1</strong><br />\n<img src=\"https://hackerpublicradio.org/eps/hpr4232/hpr4232/1.jpeg\"\nalt=\"Shows me attaching the leg of a resistor to the new backup battery. This is to extend the battery terminal length so that it can be soldered between the two connecting battery posts of the radio Printed Circuit Board.\" /><br />\nShows me attaching the leg of a resistor to the new backup battery. This\nis to extend the battery terminal length so that it can be soldered\nbetween the two connecting battery posts of the radio Printed Circuit\nBoard.</p>\n<p><strong>Picture 2</strong><br />\n<img src=\"https://hackerpublicradio.org/eps/hpr4232/hpr4232/2.jpeg\"\nalt=\"Shows the newly fitted PLL backup battery with it&#x2019;s extended terminal fitted directly below the EPROM labelled JAF7.\" /><br />\nShows the newly fitted PLL backup battery with it&#x2019;s extended terminal\nfitted directly below the EPROM labelled JAF7.</p>\n<p><strong>Picture 3</strong><br />\n<img src=\"https://hackerpublicradio.org/eps/hpr4232/hpr4232/3.jpeg\"\nalt=\"Shows the speaker sitting within a metal box. This box sits on top of the screened metal box housing the PLL backup battery. When I was refitting the speaker box I discovered there were extra badly soldered grey wires attached to the speaker terminals. The other end of the wires was covered with black electrical insulating tape. I removed these extra grey wires from the speaker to prevent them from coming adrift and or causing a short circuit within the radio.\" /><br />\nShows the speaker sitting within a metal box. This box sits on top of\nthe screened metal box housing the PLL backup battery. When I was\nrefitting the speaker box I discovered there were extra badly soldered\ngrey wires attached to the speaker terminals. The other end of the wires\nwas covered with black electrical insulating tape. I removed these extra\ngrey wires from the speaker to prevent them from coming adrift and or\ncausing a short circuit within the radio.</p>\n<p>I mention the trick of using blue-tak to hold a difficult screw when\ninserting it into a tight recess. <a\nhref=\"https://en.wikipedia.org/wiki/Blu_Tack\">Wikipedia article about\nBlu Tack</a></p>\n',201,43,1,'CC-BY-SA','Amateur, Radio, DIY, repair, electronics, soldering',0,0,1),
(4222,'2024-10-08','Replacing backup batteries in my Kenwood TS940S HF Radio Part 5',969,'Part 5 deals with the removal of the original 40 year old PLL backup battery.','<p><strong>Picture 1</strong><br />\n<img src=\"https://hackerpublicradio.org/eps/hpr4222/hpr4222/1.jpeg\"\nalt=\"Shows the EPROM (Erasable Programmable Read Only Memory) fitted with a label marked JAF7. EPROM&#39;s can be erased by removing the sticker and exposing the device to strong ultraviolet light. I incorrectly refer to it as a PROM (Programmable Read Only Memory. Below it is the old leaking PLL backup battery.\" /><br />\nShows the EPROM (Erasable Programmable Read Only Memory) fitted with a\nlabel marked JAF7. EPROM\'s can be erased by removing the sticker and\nexposing the device to strong ultraviolet light. I incorrectly refer to\nit as a PROM (Programmable Read Only Memory. Below it is the old leaking\nPLL backup battery.</p>\n<p><a href=\"https://en.wikipedia.org/wiki/EPROM\">Wikipedia article about\nEPROM&#x2019;s (Erasable Programmable Read Only Memory)</a></p>\n<p><a\nhref=\"https://hinonline.com/p/fluke-77-iv-multimeter-digital-multimeter-cat-iv-600v_fluke-77/\">Link\n/ example of a Fluke 77 DMM (Digital Multi Meter)</a> I mention that I\nused it to check the battery voltage of the original PLL backup battery\nwhich I think was manufactured around 1984. I was very surprised to find\nthat the battery which is likely 40 years old had a battery voltage of\n3.2V which is a healthy voltage. The battery still needed changed due to\nliquid (probably acid) which can be seen in picture 1 being present on\nthe top surface of the battery.</p>\n<p><strong>Picture 2</strong><br />\n<img src=\"https://hackerpublicradio.org/eps/hpr4222/hpr4222/2.jpeg\"\nalt=\"Shows me extending the new battery terminal using the leg of a 1.8 kilo ohm resistor. Note that the resistor leg is shiny because this time I scraped away the surface oxidation using pliers prior to soldering it in place. This improves the final solder joint.\" /><br />\nShows me extending the new battery terminal using the leg of a 1.8 kilo\nohm resistor. Note that the resistor leg is shiny because this time I\nscraped away the surface oxidation using pliers prior to soldering it in\nplace. This improves the final solder joint.</p>\n<p><a href=\"https://www.govdeals.com/asset/3596/7126\">I mention I have\nan EC2000 Weller Electronically controlled soldering station. Here is a\nlink to an example I found</a></p>\n',201,43,1,'CC-BY-SA','Amateur, Radio, DIY, repair, electronics, soldering',0,0,1),
(4183,'2024-08-14','What\'s in Kevie\'s holiday bag:',562,'Kevie discusses what was in his holiday bag.','<a href=\"https://tuxjam.otherside.network/\">TuxJam</a> co-host <a href=\"https://mastodon.me.uk/@kevie\">Kevie</a> recently went on Holiday to Cyprus and he discusses what he had in his holiday bag:\n<ul>\n<li><a href=\"https://junocomputers.com\">Nyx 14 Juno Laptop</a></li>\n<li><a href=\"https://www.logitech.com/en-gb/products/mice/m185-wireless-mouse.910-002235.html\">Wireless mouse</a></li>\n<li><a href=\"https://retroflag.com/gpi_case_2.html\">Retroflag GPi 2</a></li>\n<li><a href=\"https://www.xmpow.com/en-gb/collections/uk-direct/products/mpow-h19-ipo-active-noise-cancelling-headphones\">Mpow Headphones</a></li>\n<li>3.5mm Jack cable</li>\n<li><a href=\"https://uk.jlab.com/products/epic-air-sport-anc-true-wireless-earbuds?variant=41029335318660\">JLab Epic Air Sport ANC Earbuds</a></li>\n<li>3 charging leads</li>\n<li><a href=\"https://fishermansfriend.com/\">Fisherman\'s Friends</a> (you need sweets for a flight)</li>\n<li><a href=\"https://magpi.raspberrypi.com/\">MagPi magazine</a></li>\n<li><a href=\"https://store.lindyssports.com/products/2024-pro-football\">Lindy\'s Pro Football annual magazine</a></li>\n<li>Book: <a href=\"https://www.petebrown.net/book/three-sheets-wind/\">Three Sheets to the Wind by Pete Brown</a></li>\n<li>Reading glasses</li>\n<li>Sun glasses</li>\n<li><a href=\"https://www.amazon.co.uk/kindle-paperwhite-signature-edition-32-gb-with-a-68-display-wireless-charging-and-auto-adjusting-front-light/dp/B08N2QK2TG\">Kindle Paperwhite</a></li>\n<li><a href=\"https://www.lenovo.com/gb/en/p/tablets/android-tablets/lenovo-tab-series/lenovo-tab-m10-gen-3/len103l0009\">Lenovo Tab M10 Tablet</a></li>\n</ul>\n',296,0,0,'CC-BY-SA','holiday, backpack, summer',0,0,1),
(4184,'2024-08-15','Use GKRellM, wget and ImageMagick for a live slideshow',577,'GKRellm can show live thumbnails. This script gets fresh data and types text on the images.','<p>This segment is about image magic and the GK Relim system monitor and\nhighway web cameras.</p>\n<p><a\nhref=\"https://images.drivebc.ca/bchighwaycam/pub/html/www/index-Northern.html\">The\nBritish Columbia HighwayCams website</a> allows you to view highway\nconditions, traffic, and weather information at a glance.</p>\n<p><a href=\"https://www.gnu.org/software/wget/\">GNU Wget</a> is a free\nsoftware package for retrieving files using HTTP, HTTPS, FTP and FTPS,\nthe most widely used Internet protocols. It is a non-interactive\ncommandline tool, so it may easily be called from scripts, cron jobs,\nterminals without X-Windows support, etc.</p>\n<p><a href=\"https://imagemagick.org/\">ImageMagick</a> is a free,\nopen-source software suite, used for editing and manipulating digital\nimages. It can be used to create, edit, compose, or convert bitmap\nimages, and supports a wide range of file formats, including JPEG, PNG,\nGIF, TIFF, and Ultra HDR.</p>\n<p><a href=\"http://gkrellm.srcbox.net/\">GKrellM</a> is a single process\nstack of system monitors which supports applying themes to match its\nappearance to your window manager, Gtk, or any other theme.</p>\n<p>Here is how the thumbnails and my own GKrellM monitor look:</p>\n<img src=\"eps/hpr4184/hpr4184/example-image.png\" />\n\n<p>The <a href=\"eps/hpr4184/hpr4184/gkrellcam.sh\">bash script can be\nfound here</a>.</p>\n<h3 id=\"links\">Links</h3>\n<ul>\n<li><a\nhref=\"https://gemlog.gemlog.ca/\">https://gemlog.gemlog.ca/</a></li>\n<li><a\nhref=\"https://images.drivebc.ca/bchighwaycam/pub/html/www/index-Northern.html\">https://images.drivebc.ca/bchighwaycam/pub/html/www/index-Northern.html</a></li>\n<li><a\nhref=\"https://www.gnu.org/software/wget/\">https://www.gnu.org/software/wget/</a></li>\n<li><a href=\"https://imagemagick.org/\">https://imagemagick.org/</a></li>\n<li><a\nhref=\"http://gkrellm.srcbox.net/\">http://gkrellm.srcbox.net/</a></li>\n</ul>\n',425,0,0,'CC-BY-SA','gkrellm,ImageMagick,linux,CommandLine,bash',0,0,1),
(4320,'2025-02-21','Switching my Mastodon account',824,'This episode explains how to migrate your Mastodon account','<p>One way in which the Fediverse is different from corporate social\nmedia is that there is no center. By definition, these platforms are a\nfederation of independent servers. This has consequences in that you may\nhave a server that is run by a single person and if that person gets\ntired of doing it, or faces life situations that get in the way, your\nserver may have to go away. But the mechanisms are in place to handle\nthis situation. I am going to explain in this short episode how you\nmigrate from one server to another.</p>\n<h2 id=\"links\">Links:</h2>\n<ul>\n<li><a href=\"https://fedi.tips/\" class=\"uri\">https://fedi.tips/</a></li>\n<li><a\nhref=\"https://fedi.tips/transferring-your-mastodon-account-to-another-server/\"\nclass=\"uri\">https://fedi.tips/transferring-your-mastodon-account-to-another-server/</a></li>\n<li><a href=\"https://fedi.garden/\"\nclass=\"uri\">https://fedi.garden/</a></li>\n<li><a href=\"https://freeradical.zone/explore\"\nclass=\"uri\">https://freeradical.zone/explore</a></li>\n<li><a href=\"https://www.zwilnik.com/switching-my-mastodon-account/\"\nclass=\"uri\">https://www.zwilnik.com/switching-my-mastodon-account/</a></li>\n</ul>\n',198,108,0,'CC-BY-SA','social media, alternative, Fediverse, Mastodon, migration',0,0,1),
(4186,'2024-08-19','How to get started with Software Freedom Day?',1968,'Sam ask how to get started with organizing Software Freedom Day.','<h1 id=\"talking-about-software-freedom-day-sfd-on-hpr\">Talking about\nSoftware Freedom Day (SFD) on HPR</h1>\n<h2 id=\"possible-topics\">Possible topics</h2>\n<h3 id=\"intro\">Intro</h3>\n<ul>\n<li>Who am I?</li>\n<li>Who are you?</li>\n<li>Why this recording?</li>\n</ul>\n<h3 id=\"framing-and-context\">Framing and context</h3>\n<ul>\n<li>What is SFD?</li>\n<li>How is SFD different from all those other events?</li>\n<li>Why is SFD important?</li>\n</ul>\n<h3 id=\"practical-questions\">Practical questions</h3>\n<ul>\n<li>I don\'t feel confident speaking in public, should I be organizing\nthis?</li>\n<li>How do I get started?</li>\n<li>What are possible venues?</li>\n<li>What\'s your audience?</li>\n<li>What activities could I do on a first event?</li>\n<li>What are the costs I have?</li>\n<li>Why would I register my event on the website?</li>\n</ul>\n<h3 id=\"topics-and-content-suggestions\">Topics and content\nsuggestions</h3>\n<ul>\n<li>For every one of these:\n<ul>\n<li>low hanging fruit?</li>\n<li>catered to my audience?</li>\n<li>who??</li>\n</ul></li>\n<li>Talks &amp; presentations</li>\n<li>Workshops</li>\n<li>Other types of activities</li>\n</ul>\n',433,0,0,'CC-BY-SA','Software Freedom Day, Community, Activism',0,0,1),
(4188,'2024-08-21','Re: HPR4172 Comment by Ken Fallon',309,'Archer72 responds to Ken\'s comment on HPR4172 with hopefully enough detail','<p>\n<p>Hello HPR, this is your host Archer72, for another episode of Hacker\nPublic Radio. <br> My subject today is Piper voice synthesis, continued.\n<br></p>\n<p>In response to Ken\'s comment on my show, hpr4172 Re: hpr4072 Piper\nvoice<br> synthesis, I am responding to his comment with a solution. I\'m\nglad that Ken <br> commented, because I had put the problem on the back\nburner and forgot about it.<br> Both of us had the <code>make</code>\ncommand for the Piper github repo fail at 22%. <br></p>\nI ignored it for the time being and compiled Piper for the Raspberry Pi\ninstead.<br> Now here is the comment that got me to figure out how to\nget Piper working on my<br> own Fedora 40 laptop.\n</p>\n<p>Comment #1 posted on 2024-07-24 14:04:27 by Ken Fallon <br> Fails on\nFedora 40</p>\n<pre><code>[ 22%] Linking C shared library libespeak-ng.so /usr/bin/ld:\n../ucd-tools/libucd.a(case.c.o): relocation R_X86_64_32S against `.rodata&#39; can\nnot be used when making a shared object; recompile with -fPIC /usr/bin/ld:\nfailed to set dynamic section sizes: bad value collect2: error: ld returned 1\nexit status [snip] make: *** [Makefile:5: all] Error 2</code></pre>\n<p>Comment #2 posted on 2024-07-26 09:38:17 by Archer72 <br> Re:Fails on\nFedora 40</p>\n<p>Hi Ken, I get the same failure, and found that there was a release in\n2023</p>\n<p><a href=\"github%20com/rhasspy/piper/releases/tag/2023.11.14-2\"\ntitle=\"Github Piper repo\">Github Piper repo</a></p>\n<p>\nI put the downloaded piper directory in <code>/opt</code> , along with\nthe<br> <code>piper-voices/en</code> directory and have a successful\nvoice output.\n</p>\n<pre><code>uname -r\n\n6.9.5-200.fc40.x86_64\n\n[piper] [info] Loaded voice in 0.33 second(s)\n[piper] [info] Initialized piper Output directory: /home/mark/./output.wav</code></pre>\n<p>End of comments</p>\n<p>\n<p>In further conversations with Ken, I found that a vital part of Piper\nvoice<br> synthesis had been forgotten. For example, if you are using\nPiper to convert a<br> text file to .wav, the command need to include\nthe following:<br> input.txt piper executable location, i.e.\n<code>/opt/piper/piper</code></p>\n<p><code>--model</code>, and the model location, i.e.\n<code>/opt/piper-voices/</code></p>\n<p>note, the voice used need to include the voice in .onnx format and\nalso the<br> voice configuration in .json format</p>\n<p><code>--output_file output.wav</code></p>\nThe final script is included in the show notes.\n</p>\n<pre><code>#!/bin/bash\ncat &quot;$1&quot; | /opt/piper/piper --model /opt/piper-voices/en_US/kusal/medium/en_US-kusal-medium.onnx --output_file output.wav</code></pre>\n<p>That\'s it! Now if you had downloaded the voices from hpr4172, there\nshould be a<br> successful voice to text output.</p>\n<p>To put the final touches on \'my\' voice, which is the\nen_US-kusal-medium voice,<br> processed just a bit with the\n<code>sox</code> program.</p>\n<pre><code>## ~/bin/make-my-voice.sh\n#!/bin/bash\n# Add 2 seconds of silence to the beginning of the file\nsox $1 output.wav pad 2\n\n## Reduce clipping\nsox output.wav output-mid.wav vol 0.99\n\n# Reduce the tempo by 12%\nsox output-mid.wav final_output.wav tempo 0.88</code></pre>\n<p>\n<p>One last thing. It was brought to my attention that the Piper voice,\nBryce \'may\'<br> sound like William Shatner in the original Star Trek tv\nseries.</p>\n<p>I will put that clip in here and see what the community thinks. Feel\nfree to<br> leave a comment saying \'yay\' or \'nay\' on this opinion.</p>\n<p>If this tool works for you, feel free to leave comments on this show.\nBetter<br> yet, record a show of your own. Looking forward to hearing\nfrom the<br> next host, whether it be by text to speech, or a\nmicrophone.</p>\nRemember to support free software and apps in the F-Droid store if you\nuse Android.\n</p>\n<p>This has been your host Archer72; Bye</p>\n',318,79,0,'CC-BY-SA','tts, TextToSpeech, VoiceSynthesis, accessibility',0,0,1),
(4187,'2024-08-20','Go Fish Card Game',203,'A simple card game you can play this summer','<p>This is a fantastic card game suitable for 3 or more players. We\'ve\neven played it with up to 7 players.</p>\n<p>The game utilizes a standard deck of cards.</p>\n<p>Each player is dealt 7 cards.</p>\n<p>The remaining cards form a pile in the center face down.</p>\n<p>The objective of the game is to have the most sets of cards by the\nend.</p>\n<p>A set is defined as 4 cards of the same rank, such as all the 3s or\nall the kings. The suits of the cards are irrelevant in this game.</p>\n<p>Determine who will take the first turn. This player must have a card\nof the rank they intend to ask for in their hand.</p>\n<p>They then inquire from another player if they have any cards of that\nspecific rank. For example, \"Oscar, do you have any 5s?\" If Oscar has\nany fives, he must give all the cards which have five on them to the\nasking player.</p>\n<p>The player who has requested the card gets another turn. They can ask\nany of the other players. When a player asks for a card and that player\ndoes not have that card in their hand they say \"Go Fish\", and the player\nwho has asked the question must draw a card from the pile. Their turn is\nover and passes to the next player in a clockwise direction.</p>\n<p>If a player collects 4 cards of the same rank, they form a set and\nare placed aside. If a player runs out of cards, they can draw one from\nthe pile and ask for cards of that rank. If there are no more cards left\nin the pile, that player is out of the game. But don\'t worry, you can\nstill win. The game continues until all the cards have been played. Once\nall the cards are played, the player with the most sets wins</p>\n<p>This game is both amusing and challenging, and it will certainly make\nyou laugh as you discover what cards other players hold. For instance,\nif Oscar has one five, Josie has two fives, Al has one five, and Rainy\nhas no fives. Oscar can ask Josie if she has a five, and since she does,\nshe has to give the cards to Oscar. He then gets another turn and asks\nRainy, but she doesn\'t have any and says \"go fish\". Now Al knows that\nOscar has three fives in his hand. So, when it\'s Al\'s turn, he can ask\nOscar if he has any fives, and since he does, he has to hand them over.\nThis way, Al wins that set of cards.</p>\n<p>Give it a try and you\'ll find yourself laughing out of frustration.\nI\'ll include the rules of the game in the show notes.</p>\n',290,0,0,'CC-BY-SA','card games ,summer,camping',0,0,1),
(4191,'2024-08-26','rkvm software KVM',1096,'A brief introduction to the rkvm software KVM','<p><a href=\"https://github.com/htrefil/rkvm/tree/master\">rkvm</a> is a\nsoftware KVM (keyboard, video and mouse) switch - minus the video. From\nthe README:</p>\n<blockquote>\n<p>rkvm is a tool for sharing keyboard and mouse across multiple Linux\nmachines. It is based on a client/server architecture, where server is\nthe machine controlling mouse and keyboard and relays events (mouse\nmove, key presses, ...) to clients.</p>\n</blockquote>\n<p>In this episode I discuss the steps I took to install and compile\nrkvm, my experiences running it, and what led me to this software in the\nfirst place.</p>\n',196,0,0,'CC-BY-SA','kvm, network, keyboard, mouse',0,0,1),
(4193,'2024-08-28','Why I haven\'t recorded an episode for HPR',720,'Dave records an episode for HPR explaining why he hasn\'t recorded an episode for HPR.','<p>Dave records an episode using <a\nhref=\"https://auphonic.com/help/mobile/android.html\">AuphonicEdit</a>,\nedited with <a href=\"https://www.audacityteam.org/\">Audacity</a>,\nprocessed with <a href=\"https://auphonic.com/\">Auphonic</a>, and\nuploaded to the HPR website... to show how straight-forward it is to\ndo!</p>\n<p>This is very much an unscripted stream-of-consciousness episode,\ncomplete with heavy breathing, wind noise (meteorological, not\nflatulent), road noise, and one instance of having to ask for directions\nbecause Dave got lost.</p>\n<p>... in his own town.<br />\n... where he\'s lived for 18 years.<br />\n... quite embarrassing really.</p>\n',314,45,0,'CC-BY-SA','hpr, auphonic, audacity, walking, heavy breathing',0,0,1),
(4195,'2024-08-30','Hacking HPR Hosts',2185,'Social Engineering more contributions to HPR by picking when to publish your show','<p>In this show Ken explains that we are competing with other players in\nthe Entertainment Industry. That we have no control of the supply chain,\nand rely on hosts to consider the scheduling guidelines when uploading\ntheir show.</p>\n<ul>\n<li>You must have your audio recording ready to upload before you pick a\nslot.</li>\n<li>New hosts, Interviews, and other time critical shows should use the\nfirst free slot.</li>\n<li>Always try and fill any free slots that are available in the\nupcoming two weeks.</li>\n<li>When the queue is filling up then leave some slots free for new\ncontributors.</li>\n<li>Post non urgent shows into the first empty week.</li>\n<li>If you are uploading a series of shows then post them one every two\nweeks.</li>\n<li>If you have a non urgent show that is timeless, then add every\nsecond show to the <a\nhref=\"https://hackerpublicradio.org/about.html#reserve_queue\">Reserve\nQueue</a>.</li>\n</ul>\n<p>See <a href=\"hpr4195_full_shownotes.html\">Full\nShownotes</a> for more information</p>\n',30,0,0,'CC-BY-SA','HPR, Queue, Scheduling, Buffering',0,0,1),
(4197,'2024-09-03','After 5 years away, OggCamp is back in 2024!',1083,'Ken interviews Gary Williams about rebooting the OggCamp meetup','\n<p>Ken interviews Gary Williams about rebooting the OggCamp meetup</p><p><a href=\"https://oggcamp.org/\">https://oggcamp.org/</a></p>\n\n<p><strong>After 5 years away, OggCamp is back in 2024!</strong></p>\n\n<p>Want to talk on our scheduled track? <a href=\"https://www.papercall.io/oggcamp24\"><strong>CfP</strong></a> is now open!</p>\n\n<p><strong>OggCamp Tickets are now available!</strong> Visit <a href=\"https://oggcamp.org/tickets/\">tickets</a> to find out more and secure your place.</p>\n\n<p>We’re at <a href=\"https://www.pendulumhotel.co.uk/\"><strong>The Manchester Conference Centre</strong></a> in the Pendulum Hotel near Piccadilly Station the weekend of <strong>October 12th and 13th 2024</strong>.</p>\n\n<hr>\n\n\n<h2>STAY IN TOUCH</h2>\n\n<p>Follow us on <a href=\"https://mastodon.social/@oggcamp\">Mastodon</a>,\n<a href=\"https://bsky.app/profile/oggcamp.bsky.social\">Bluesky</a>,\n<a href=\"https://twitter.com/oggcamp\">Twitter</a> or <a href=\"https://www.facebook.com/OggCamp\">Facebook</a> and we’ll update you with any important news. There is also a <a href=\"https://t.me/joinchat/AAAAAAsF-xo4ol9jAjNW8A\">Telegram group</a>, an <a href=\"irc://irc.libera.chat/oggcamp\">IRC channel</a> (also available via <a href=\"https://web.libera.chat/#oggcamp\">WebChat</a>), a <a href=\"https://matrix.to/#/#oggcamp:matrix.org\">Matrix Room</a> and a <a href=\"https://discord.gg/4DcDk6Y\">Discord Server</a>.</p>\n',30,0,0,'CC-BY-SA','OggCamp, Manchester, BarCamp.',0,0,1),
(4194,'2024-08-29','Get more user space on your Linux filesystem with tune2fs',296,'How to use the tune2fs program to reduce the reserved block percentage value','<p>As far as I know, this only applies to Linux <code>ext2</code>,\n<code>ext3</code>, and <code>ext4</code> filesystems:</p>\n<pre><code>df -h\n\nsudo tune2fs -m 1 /dev/sda1</code></pre>\n',194,0,0,'CC-BY-SA','cli,command line,linux,filesystems,sysadmin',0,0,1),
(4198,'2024-09-04','Are hobbies pathological?',755,'Personal reflections on hobbies, obsessive interests and mental health','<p><a title=\"Caroline, CC BY 2.0 &lt;https://creativecommons.org/licenses/by/2.0&gt;, via Wikimedia Commons\" href=\"https://commons.wikimedia.org/wiki/File:Science_Fair_150in1_Electronic_Project_Kit.jpg\"><img width=\"256\" alt=\"Science Fair 150in1 Electronic Project Kit\" src=\"https://upload.wikimedia.org/wikipedia/commons/thumb/8/82/Science_Fair_150in1_Electronic_Project_Kit.jpg/256px-Science_Fair_150in1_Electronic_Project_Kit.jpg?20130215091747\"></a></p>\n\n<p><a\nhref=\"https://en.wikipedia.org/wiki/Atari_8-bit_computers#400_and_800_release\">Atari\n8 bit computers</a> <a\nhref=\"https://en.wikipedia.org/wiki/Atari_ST\">Atari ST</a></p>\n<p><a href=\"https://en.wikipedia.org/wiki/RM_Nimbus\">RM Nimbus</a></p>\n<p><a href=\"https://en.wikipedia.org/wiki/Dark_Conspiracy\">Dark\nConspiracy</a></p>\n<p><a href=\"https://en.wikipedia.org/wiki/Autism\">Autism</a></p>\n<p><a\nhref=\"https://en.wikipedia.org/wiki/Local_exchange_trading_system\">Local\nExchange Trading Systems</a></p>\n<p><a href=\"https://en.wikipedia.org/wiki/PowerBook\">PowerBook</a></p>\n',403,29,1,'CC-BY-SA','retro-computing, mental health, role-playing',0,0,1),
(4456,'2025-09-01','HPR Community News for August 2025',4477,'HPR Volunteers SCOTI, Kevie, and Ken talk about shows released and comments posted in August 2025','<h2>New hosts</h2>\n<p>\nWelcome to our new host: <br />\n\n    <a href=\"https://hackerpublicradio.org/correspondents/0449.html\" target=\"_blank\">Manon</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/hpr4435/index.html\" target=\"_blank\">4435</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2025-08-01</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr4435/index.html\" target=\"_blank\">Philosophy, Cosmology, Physics, and just what is up with Hairy Larry\'s brain.</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0436.html\" target=\"_blank\">hairylarry</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps/hpr4436/index.html\" target=\"_blank\">4436</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2025-08-04</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr4436/index.html\" target=\"_blank\">HPR Community News for July 2025</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/hpr4437/index.html\" target=\"_blank\">4437</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2025-08-05</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr4437/index.html\" target=\"_blank\">One Possible Definition of \"Hacker\"</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0441.html\" target=\"_blank\">Antoine</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps/hpr4438/index.html\" target=\"_blank\">4438</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2025-08-06</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr4438/index.html\" target=\"_blank\">doodoo zero </a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0243.html\" target=\"_blank\">Jezra</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps/hpr4439/index.html\" target=\"_blank\">4439</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2025-08-07</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr4439/index.html\" target=\"_blank\">Rejecting a 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/hpr4440/index.html\" target=\"_blank\">4440</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2025-08-08</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr4440/index.html\" target=\"_blank\">The HOPE conference.</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0444.html\" target=\"_blank\">murph</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps/hpr4441/index.html\" target=\"_blank\">4441</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2025-08-11</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr4441/index.html\" target=\"_blank\">Voice Over IP</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0403.html\" target=\"_blank\">Lee</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps/hpr4442/index.html\" target=\"_blank\">4442</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2025-08-12</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr4442/index.html\" target=\"_blank\">Orthopedagogiek - what it is.</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0449.html\" target=\"_blank\">Manon</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps/hpr4443/index.html\" target=\"_blank\">4443</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2025-08-13</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr4443/index.html\" target=\"_blank\">The First Doctor, Part 3</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/hpr4444/index.html\" target=\"_blank\">4444</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2025-08-14</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr4444/index.html\" target=\"_blank\">Introduction into the E.R.P. application called Odoo</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/hpr4445/index.html\" target=\"_blank\">4445</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2025-08-15</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr4445/index.html\" target=\"_blank\">doodoo one</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0243.html\" target=\"_blank\">Jezra</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps/hpr4446/index.html\" target=\"_blank\">4446</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2025-08-18</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr4446/index.html\" target=\"_blank\">Calling on AI to resque HPR</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0433.html\" target=\"_blank\">Trollercoaster</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps/hpr4447/index.html\" target=\"_blank\">4447</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2025-08-19</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr4447/index.html\" target=\"_blank\">Interview with Margreet Pakkert at the Flevoland 2025 Field Work Archaeology Open Day.</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/hpr4448/index.html\" target=\"_blank\">4448</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2025-08-20</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr4448/index.html\" target=\"_blank\">YouTube Subscriptions 2025 #4</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/hpr4449/index.html\" target=\"_blank\">4449</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2025-08-21</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr4449/index.html\" target=\"_blank\">How to install Odoo 18 on a virtual machine</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/hpr4450/index.html\" target=\"_blank\">4450</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2025-08-22</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr4450/index.html\" target=\"_blank\">Playing Civilization V, Part 2</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0198.html\" target=\"_blank\">Ahuka</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps/hpr4451/index.html\" target=\"_blank\">4451</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2025-08-25</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr4451/index.html\" target=\"_blank\">Game Modding</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0036.html\" target=\"_blank\">operat0r</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps/hpr4452/index.html\" target=\"_blank\">4452</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2025-08-26</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr4452/index.html\" target=\"_blank\">Turn Coffee Into Code - Slogans from Tech(Companies, App, People)</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0441.html\" target=\"_blank\">Antoine</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps/hpr4453/index.html\" target=\"_blank\">4453</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2025-08-27</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr4453/index.html\" target=\"_blank\">IPv6 for Luddites</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0288.html\" target=\"_blank\">beni</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps/hpr4454/index.html\" target=\"_blank\">4454</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2025-08-28</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr4454/index.html\" target=\"_blank\">AI, It\'s a Trap!</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/hpr4455/index.html\" target=\"_blank\">4455</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2025-08-29</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr4455/index.html\" target=\"_blank\">YouTube Subscriptions 2025 #5</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 32 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/hpr4377/index.html#comments\" target=\"_blank\">hpr4377</a></strong>\n(2025-05-13) \"<em>Password store and the pass command</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0078.html\" target=\"_blank\">Klaatu</a>.<br/>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps/hpr4377/index.html#comment_4405\" target=\"_blank\">Comment 2</a>:\n&#1571;&#1581;&#1605;&#1583; &#1575;&#1604;&#1605;&#1581;&#1605;&#1608;&#1583;&#1610; on 2025-08-13:\n\"Look at KeePass\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps/hpr4429/index.html#comments\" target=\"_blank\">hpr4429</a></strong>\n(2025-07-24) \"<em>Handcrafting and Bartering discussion w. Elsbeth</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0446.html\" target=\"_blank\">Elsbeth</a>.<br/>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps/hpr4429/index.html#comment_4393\" target=\"_blank\">Comment 1</a>:\nArcher72 on 2025-08-04:\n\"Good to hear a craftier\"</li></ul><br/>\n</li></ul>\n<h3>This month\'s shows</h3>\n<p>There are 30 comments on 13 of this month\'s shows:</p>\n<ul><li><strong><a href=\"https://hackerpublicradio.org/eps/hpr4435/index.html#comments\" target=\"_blank\">hpr4435</a></strong>\n(2025-08-01) \"<em>Philosophy, Cosmology, Physics, and just what is up with Hairy Larry\'s brain.</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0436.html\" target=\"_blank\">hairylarry</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps/hpr4435/index.html#comment_4399\" target=\"_blank\">Comment 1</a>:\nBob Jonkman on 2025-08-11:\n\"How could playing music fit HPR?\"</li><li><a href=\"https://hackerpublicradio.org/eps/hpr4435/index.html#comment_4401\" target=\"_blank\">Comment 2</a>:\nhairylarry on 2025-08-11:\n\"Reply to Bob\"</li><li><a href=\"https://hackerpublicradio.org/eps/hpr4435/index.html#comment_4404\" target=\"_blank\">Comment 3</a>:\npaulj on 2025-08-14:\n\"Great Show\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps/hpr4437/index.html#comments\" target=\"_blank\">hpr4437</a></strong>\n(2025-08-05) \"<em>One Possible Definition of \"Hacker\"</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0441.html\" target=\"_blank\">Antoine</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps/hpr4437/index.html#comment_4396\" target=\"_blank\">Comment 1</a>:\nElsbeth on 2025-08-10:\n\"Love this content\"</li><li><a href=\"https://hackerpublicradio.org/eps/hpr4437/index.html#comment_4400\" target=\"_blank\">Comment 2</a>:\nAntoine on 2025-08-11:\n\": )\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps/hpr4438/index.html#comments\" target=\"_blank\">hpr4438</a></strong>\n(2025-08-06) \"<em>doodoo zero </em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0243.html\" target=\"_blank\">Jezra</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps/hpr4438/index.html#comment_4389\" target=\"_blank\">Comment 1</a>:\nArcher72 on 2025-08-04:\n\"I was just thinking about this\"</li><li><a href=\"https://hackerpublicradio.org/eps/hpr4438/index.html#comment_4415\" target=\"_blank\">Comment 2</a>:\njezra on 2025-08-23:\n\"development happened faster than the show release cadence\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps/hpr4439/index.html#comments\" target=\"_blank\">hpr4439</a></strong>\n(2025-08-07) \"<em>Rejecting a 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/hpr4439/index.html#comment_4394\" target=\"_blank\">Comment 1</a>:\nTorin Doyle on 2025-08-09:\n\"Please keep HPR a religion-free zone.\"</li><li><a href=\"https://hackerpublicradio.org/eps/hpr4439/index.html#comment_4398\" target=\"_blank\">Comment 2</a>:\nKen Fallon on 2025-08-10:\n\"Respond on the mail list\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps/hpr4440/index.html#comments\" target=\"_blank\">hpr4440</a></strong>\n(2025-08-08) \"<em>The HOPE conference.</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0444.html\" target=\"_blank\">murph</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps/hpr4440/index.html#comment_4395\" target=\"_blank\">Comment 1</a>:\nFXB on 2025-08-09:\n\"HOPE Conference Talks\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps/hpr4442/index.html#comments\" target=\"_blank\">hpr4442</a></strong>\n(2025-08-12) \"<em>Orthopedagogiek - what it is.</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0449.html\" target=\"_blank\">Manon</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps/hpr4442/index.html#comment_4391\" target=\"_blank\">Comment 1</a>:\nArcher72 on 2025-08-04:\n\"Interesting approach\"</li><li><a href=\"https://hackerpublicradio.org/eps/hpr4442/index.html#comment_4402\" target=\"_blank\">Comment 2</a>:\nDave Morriss on 2025-08-12:\n\"I enjoyed this a lot\"</li><li><a href=\"https://hackerpublicradio.org/eps/hpr4442/index.html#comment_4403\" target=\"_blank\">Comment 3</a>:\nAntoine on 2025-08-13:\n\"What a very specific field!\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps/hpr4444/index.html#comments\" target=\"_blank\">hpr4444</a></strong>\n(2025-08-14) \"<em>Introduction into the E.R.P. application called Odoo</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0369.html\" target=\"_blank\">Jeroen Baten</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps/hpr4444/index.html#comment_4390\" target=\"_blank\">Comment 1</a>:\nArcher72 on 2025-08-04:\n\"My wife has a side business\"</li><li><a href=\"https://hackerpublicradio.org/eps/hpr4444/index.html#comment_4406\" target=\"_blank\">Comment 2</a>:\nJason Lewis on 2025-08-14:\n\"Migrating from NetSuite\"</li><li><a href=\"https://hackerpublicradio.org/eps/hpr4444/index.html#comment_4413\" target=\"_blank\">Comment 3</a>:\nHenrik Hemrin on 2025-08-20:\n\"Odoo - new to me\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps/hpr4445/index.html#comments\" target=\"_blank\">hpr4445</a></strong>\n(2025-08-15) \"<em>doodoo one</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0243.html\" target=\"_blank\">Jezra</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps/hpr4445/index.html#comment_4407\" target=\"_blank\">Comment 1</a>:\nReto on 2025-08-16:\n\"I can follow your thoughts\"</li><li><a href=\"https://hackerpublicradio.org/eps/hpr4445/index.html#comment_4416\" target=\"_blank\">Comment 2</a>:\njezra on 2025-08-23:\n\"noted!\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps/hpr4446/index.html#comments\" target=\"_blank\">hpr4446</a></strong>\n(2025-08-18) \"<em>Calling on AI to resque HPR</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0433.html\" target=\"_blank\">Trollercoaster</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps/hpr4446/index.html#comment_4408\" target=\"_blank\">Comment 1</a>:\ncandycanearter07 on 2025-08-18:\n\"Interesting episode\"</li><li><a href=\"https://hackerpublicradio.org/eps/hpr4446/index.html#comment_4409\" target=\"_blank\">Comment 2</a>:\ntrollercoaster on 2025-08-19:\n\"I guess I didn\'t get my point over\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps/hpr4447/index.html#comments\" target=\"_blank\">hpr4447</a></strong>\n(2025-08-19) \"<em>Interview with Margreet Pakkert at the Flevoland 2025 Field Work Archaeology Open Day.</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/hpr4447/index.html#comment_4410\" target=\"_blank\">Comment 1</a>:\nClinton Roy on 2025-08-20:\n\"Pictures too!\"</li><li><a href=\"https://hackerpublicradio.org/eps/hpr4447/index.html#comment_4411\" target=\"_blank\">Comment 2</a>:\nHenrik Hemrin on 2025-08-20:\n\"Interesting talk about this boat and archeology\"</li><li><a href=\"https://hackerpublicradio.org/eps/hpr4447/index.html#comment_4414\" target=\"_blank\">Comment 3</a>:\nAntoine on 2025-08-21:\n\"That was sure a show!\"</li><li><a href=\"https://hackerpublicradio.org/eps/hpr4447/index.html#comment_4418\" target=\"_blank\">Comment 4</a>:\njezra on 2025-08-26:\n\"time to head to the woodshop!\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps/hpr4449/index.html#comments\" target=\"_blank\">hpr4449</a></strong>\n(2025-08-21) \"<em>How to install Odoo 18 on a virtual machine</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0369.html\" target=\"_blank\">Jeroen Baten</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps/hpr4449/index.html#comment_4392\" target=\"_blank\">Comment 1</a>:\nArcher72 on 2025-08-04:\n\"Oodo in a vm\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps/hpr4451/index.html#comments\" target=\"_blank\">hpr4451</a></strong>\n(2025-08-25) \"<em>Game Modding</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/hpr4451/index.html#comment_4417\" target=\"_blank\">Comment 1</a>:\ncandycanearter07 on 2025-08-25:\n\"\"moddable\" games\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps/hpr4453/index.html#comments\" target=\"_blank\">hpr4453</a></strong>\n(2025-08-27) \"<em>IPv6 for Luddites</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0288.html\" target=\"_blank\">beni</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps/hpr4453/index.html#comment_4419\" target=\"_blank\">Comment 1</a>:\nRho`n on 2025-08-27:\n\"Great intro to IPv6\"</li><li><a href=\"https://hackerpublicradio.org/eps/hpr4453/index.html#comment_4420\" target=\"_blank\">Comment 2</a>:\nnorrist on 2025-08-27:\n\"Please post your talk\"</li><li><a href=\"https://hackerpublicradio.org/eps/hpr4453/index.html#comment_4421\" target=\"_blank\">Comment 3</a>:\nwheresalice on 2025-08-28:\n\"IPv6 on HPR\"</li><li><a href=\"https://hackerpublicradio.org/eps/hpr4453/index.html#comment_4422\" target=\"_blank\">Comment 4</a>:\nKen Fallon on 2025-08-29:\n\"I opened a bug, you can help fix it.\"</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://lists.hackerpublicradio.com/mailman/listinfo/hpr\" target=\"_blank\">Mailing List</a>\nwhich is open to all HPR listeners and contributors. The discussions are open\nand available on the HPR server under <a href=\"https://lists.hackerpublicradio.com/pipermail/hpr\">Mailman</a>.\n</p>\n<p>The threaded discussions this month can be found here:</p>\n<a href=\"https://lists.hackerpublicradio.com/pipermail/hpr/2025-August/thread.html\" target=\"_blank\">https://lists.hackerpublicradio.com/pipermail/hpr/2025-August/thread.html</a>\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',159,47,1,'CC-BY-SA','Community News',0,0,1),
(4201,'2024-09-09','Today I learnt (2024-08-23)',1301,'Some random technical items this time','<article>\n<h2 id=\"til-1-incrementing-times-with-the-date-command\">TIL 1:\nIncrementing times with the <code>date</code> command</h2>\n<ul>\n<li>I have been working on an HPR project which is restoring external\nfiles to shows which lost them when we migrated to the current static\nsite.</li>\n<li>As I make changes I want to be able to check that they are correct,\nbut to make this check I need to wait for the next update of the static\nsite.</li>\n<li>Ken was away recently, and set up a <code>cron</code> job to refresh\nthe site every three hours. Each show page shows the refresh time in UTC\nform in the header.</li>\n<li>Being a bit numerically challenged I wanted a way of computing the\nnext refresh time in my timezone from the previous refresh time.</li>\n<li>The GNU <code>date</code> command accepts a date and time expression\nafter the <code>-d</code> option (or using the\nalternative<code>--date=STRING</code> option). The contents of the\n<code>STRING</code> here are very flexible but quite complex since you\ncan include time zone data, offsets, day and month names, etc. See the\nlinks below for links to the GNU manual.</li>\n<li>My first attempt used the <code>date</code> command like this and\ngot the wrong answer (using the output format <code>+%T</code> which\nwrites the time in a default form):</li>\n</ul>\n<pre><code>    $ date -d &#39;16:27:16 + 3 hours&#39; +%T\n    15:27:16</code></pre>\n<ul>\n<li>It is not clear why this fails, but the GNU function which parses\nthese date parameters is obviously confused. The second try included the\ntime zone after the time, and worked better, but is a little\nconfusing:</li>\n</ul>\n<pre><code>    $ date -d &#39;16:27:16 UTC + 3 hours&#39; +%T\n    20:27:16</code></pre>\n<ul>\n<li>The time returned is local time for me. The <code>date</code>\ncommand has added three hours to the UTC date to get 19:27:16, but since\nI am in the UK, which is in DST (called BST - British Summer Time - UTC\nplus 1 hour), an hour is added.</li>\n<li>The final try used the <code>-u</code> option which writes UTC\ntime:</li>\n</ul>\n<pre><code>    $ date -u -d &#39;16:27:16 UTC + 3 hours&#39; +%T\n    19:27:16</code></pre>\n<ul>\n<li>I actually ended up using and re-using these commands (though a\nscript would have been better):</li>\n</ul>\n<pre><code>    $ current=&#39;06:27:55&#39;\n    $ next=$(date -u -d &quot;${current}UTC + 3 hours 3 minutes&quot; +%T); echo &quot;$next UTC / $(date -d &quot;${next} UTC&quot; +&#39;%T %Z&#39;)&quot;\n    09:30:55 UTC / 10:30:55 BST\n    $ current=$next\n    $ next=$(date -u -d &quot;${current}UTC + 3 hours 3 minutes&quot; +%T); echo &quot;$next UTC / $(date -d &quot;${next} UTC&quot; +&#39;%T %Z&#39;)&quot;\n    12:33:55 UTC / 13:33:55 BST\n    $ current=$next\n    $ next=$(date -u -d &quot;${current}UTC + 3 hours 3 minutes&quot; +%T); echo &quot;$next UTC / $(date -d &quot;${next} UTC&quot; +&#39;%T %Z&#39;)&quot;\n    15:36:55 UTC / 16:36:55 BST</code></pre>\n<h2 id=\"til-1-links\">TIL 1: Links</h2>\n<ul>\n<li><a\nhref=\"https://www.gnu.org/software/coreutils/manual/html_node/index.html\">GNU\nCoreutils manual</a>\n<ul>\n<li><a\nhref=\"https://www.gnu.org/software/coreutils/manual/html_node/System-context.html\">System\ncontext</a>\n<ul>\n<li><a\nhref=\"https://www.gnu.org/software/coreutils/manual/html_node/date-invocation.html\">date:\nPrint or set system date and time</a>\n<ul>\n<li><a\nhref=\"https://www.gnu.org/software/coreutils/manual/html_node/Date-input-formats.html\">Date\ninput formats</a> (The quotation at the start of this section of the\nmanual is quite interesting!)</li>\n<li><a\nhref=\"https://www.gnu.org/software/coreutils/manual/html_node/Examples-of-date.html\">Date\nexamples</a></li>\n</ul></li>\n</ul></li>\n</ul></li>\n</ul>\n<hr />\n<h2 id=\"til-2-merging-lines-of-files-with-paste\">TIL 2: Merging lines of\nfiles with <code>paste</code></h2>\n<ul>\n<li>While processing and \"repairing\" shows I came across the need to\ngenerate a list of show numbers separated by commas. In the past I have\nloaded these into a Bash array and turned them into a comma-delimited\nstring, using the parameter substitution capabilities of Bash which can\nadd a comma to each element. The trouble with this is that it leaves a\ntrailing comma which has to be removed. I stumbled upon\n<code>paste</code> as an alternative way of doing this.</li>\n<li>The GNU <code>paste</code> command is another from the <a\nhref=\"https://www.gnu.org/software/coreutils/manual/html_node/index.html\">GNU\nCoreutils</a> group. This one merges lines of files. Its synopsis\nis:</li>\n</ul>\n<pre><code>    paste [OPTION]... [FILE]...</code></pre>\n<ul>\n<li>It merges lines consisting of the corresponding lines from each file\nprovided as an argument, by default separated by TABs, and writes them\nto standard output. This means it produces lines consisting of the first\nline from each of the files, separated by tabs, then the second lines,\nand so on.</li>\n<li>Any of the files can be linked to standard in by using a\n<code>-</code> (hyphen) as the file name.</li>\n<li>The delimiters can be changed with the <code>-d LIST</code> or\n<code>--delimiters=LIST</code> option. The use of a list of delimiters\ncauses the characters in the list to be used sequentially for each\ndelimiter.</li>\n<li>The merged lines can be visualised as rows in a matrix, where each\nfile provides a column.</li>\n<li>The \"matrix\" is rotated by using the <code>-s</code> or\n<code>--serial</code> option. Here the lines from one file at a time are\nmerged - the files are processed <em>serially</em> rather than in\n<em>parallel</em>.</li>\n<li>The <code>paste</code> command can be used to generate the\ncomma-delimited list I wanted by using the options <code>-s</code> and\n<code>-d \',\'</code>:</li>\n</ul>\n<pre><code>    $ printf &#39;%s&bsol;n&#39; {1..10} | paste -s -d, -\n    1,2,3,4,5,6,7,8,9,10</code></pre>\n<ul>\n<li>Note that you can\'t get the same result with\n<code>echo {1..10}</code> because all the numbers will be written to one\nline rather than being the separate lines that <code>paste</code>\nrequires.</li>\n<li>The file arguments to <code>paste</code> may also be Bash\n<em>process substitution</em> expressions:</li>\n</ul>\n<pre><code>    $ paste -s -d, &lt;(printf &#39;%s&bsol;n&#39; {1..10})\n    1,2,3,4,5,6,7,8,9,10</code></pre>\n<ul>\n<li>This means you can generate more complex output by using multiple\n<em>process substitution</em> expressions where each is seen as a\nfile:</li>\n</ul>\n<pre><code>    $ paste -d&#39;|&#39; &lt;(printf &#39;%d&bsol;n&#39; {1..7}) &lt;(printf &#39;%s&bsol;n&#39; {A..G}) &lt;(printf &#39;%d&bsol;n&#39; {100..106})\n    1|A|100\n    2|B|101\n    3|C|102\n    4|D|103\n    5|E|104\n    6|F|105\n    7|G|106</code></pre>\n<ul>\n<li>Note how using the <code>-s</code> option \"rotates\" this:</li>\n</ul>\n<pre><code>    $ paste -s -d&#39;|&#39; &lt;(printf &#39;%d&bsol;n&#39; {1..7}) &lt;(printf &#39;%s&bsol;n&#39; {A..G}) &lt;(printf &#39;%d&bsol;n&#39; {100..106})\n    1|2|3|4|5|6|7\n    A|B|C|D|E|F|G\n    100|101|102|103|104|105|106</code></pre>\n<ul>\n<li>This is what I was actually trying to do, so I could feed show\nnumbers to another script which will accept a CSV list as an\noption:</li>\n</ul>\n<pre><code>    $ echo &quot;select episode_id from repairs where repair_date is null order by episode_id desc limit 5&quot; |&bsol;\n    sqlite3 -list ~/HPR/InternetArchive/ia.db | paste -s -d&#39;,&#39; -\n    1959,1952,1951,1946,1941</code></pre>\n<h2 id=\"til-2-links\">TIL 2: Links</h2>\n<ul>\n<li><a\nhref=\"https://www.gnu.org/software/coreutils/manual/html_node/index.html\">GNU\nCoreutils manual</a>\n<ul>\n<li><a\nhref=\"https://www.gnu.org/software/coreutils/manual/html_node/Operating-on-fields.html\">Operating\non fields</a>\n<ul>\n<li><a\nhref=\"https://www.gnu.org/software/coreutils/manual/html_node/paste-invocation.html\">paste:\nMerge lines of files</a></li>\n</ul></li>\n</ul></li>\n</ul>\n</article>\n',225,123,1,'CC-BY-SA','TIL, date, paste',0,0,1),
(4205,'2024-09-13','Trollercoasting almost getting a heart attack',281,'Trollercoaster interacts with the Community News Summary of August 2024','<p>Trollercoaster reacts to the community news podcast of August - in a\nway fitting to his handle. With a little touch of drama and a little\ntouch of humor. I hope I didn\'t offend anyone (oh well... I\'m trolling a\nbit, so I guess I don\'t care that much... but I do a bit though... does\nit show that I have a chaotic brain?)</p>\n',433,0,0,'CC-BY-SA','Software Freedom Day, Community, Activism, Drama, Troll',0,0,1),
(4203,'2024-09-11','Setup DuckDNS on a Raspberry Pi',1036,'Kevie discusses Dynamic DNS and how to setup DuckDNS on a Raspberry Pi','<p><a href=\"https://mastodon.me.uk/@kevie\">Kevie</a>, co-host of <a href=\"https://tuxjam.otherside.network\">TuxJam</a>, discusses what a Dynamic DNS is and also introduces the free service DuckDNS. To complete this project you are going to need:</p>\n<ul>\n<li>Raspberry Pi</li>\n<li>Pi Power Supply</li>\n<li>Micro-SD Card</li>\n<li>Ethernet Cable</li>\n</ul>\n<p>The first thing that we will need to do is to go to the <a href=\"https://www.duckdns.org\">DuckDNS website</a>, sign in using your preferred method, once you complete the captcha then you will be given your unique token (copy or take a note of it, but don\'t share this with anybody).</p>\n<p>Next you will want to create your own unique address, type in your chosen domain and click on Add Domain.</p>\n<p>Now it is time to setup your Raspberry Pi. Log into your Pi and open a terminal. The first thing that we will do is make sure that it is up to date:</p>\n<code>sudo apt update &amp;&amp; sudo apt upgrade -y</code>\n<p>Install Curl using the command:</p>\n<code>sudo apt install curl</code>\n<p>You will now create two new folders, the first is where the script will be kept, the second to store the logs:</p>\n<code>sudo mkdir /opt/duckdns/ &amp;&amp; sudo mkdir /var/log/duckdns/</code>\n<p>We need to add a bash script that will update your IP with the DuckDNS service. First of all create a new file called duck.sh with the code:</p>\n<code>sudo nano /opt/duckdns/duck.sh</code>\n<p>At this point the file is empty, we need to enter in the command below. However you must replace <b>DUCKDNSDOMAIN</b> with the domain that was created on the DuckDNS website and replace <b>DUCKTOKEN</b> with your DuckDNS Token:</p>\n<code>echo url=\"https://www.duckdns.org/update?domains=DUCKDNSDOMAIN&amp;token=DUCKTOKEN&amp;ip=\" | curl -k -o /var/log/duckdns/duck.log -K -</code>\n<p>Now save and exit (ctrl+X, Y, enter on Nano).</p>\n<p>Next we can set the script\'s permission so that nobody else will gain access to your token:</p>\n<code>sudo chmod 700 /opt/duckdns/duck.sh</code>\n<p>Last step: we need to set a cron task so that your Pi will update DuckDNS domain every 5 minutes:</p>\n<code>sudo crontab -e</code>\n<p>Navigate to the bottom of the page and add the line:</p>\n<code>*/5 * * * * /opt/duckdns/duck.sh &gt;/dev/null 2&gt;&amp;1</code>\n<p>Save and exit and your dynamic DNS should be up and running within five minutes.</p>\n',296,0,0,'CC-BY-SA','Dynamic DNS,Raspberry Pi,remote access,Linux',0,0,1),
(4204,'2024-09-12','LibreOffice Importing External Data',164,'It\'s how to use the normal menu items to make online tabular data easier to use.','<p>Here is an example of a <a\nhref=\"https://www12.statcan.gc.ca/census-recensement/2016/dp-pd/prof/details/page.cfm?Lang=E&amp;Geo1=CSD&amp;Code1=5949011&amp;Geo2=PR&amp;Code2=59&amp;SearchText=terrace&amp;SearchType=Begins&amp;SearchPR=01&amp;B1=All&amp;TABID=1&amp;type=0\">StatsCan\n(Statistics Canada) tabular page of nasty UX</a>.</p>\n<p>NB: in this case, you <em>may</em> d/l the csv, but you\'d still have\nto do the same work. The point is to show a horrible UX case and how you\ncan fix it in LibreOffice Calc</p>\n',425,70,0,'CC-BY-SA','External_Links, LibreOffice_Calc',0,0,1),
(4211,'2024-09-23','Rapid Fire 1',1083,'Neuro diverse TV/Movies, DIY Liquid Conductive paint, cold hands / feet, Linux CPU info apps','<p>cat /usr/local/sbin/TOP</p>\n<pre><code>clear\necho `date` INFO: Showing any processes with videos open with ps aufx\n# use LSOF insted .. ps aufx|grep -iaE &quot;(\\.avi|\\.mpg|\\.mov|\\.flv|\\.wmv|\\.asf|\\.mpeg|\\.m4v|\\.divx|\\.mp4|\\.mkv|\\.sub|\\.iso|\\.264|\\.vob|\\.srt|\\.img|\\.sfv)&quot; ps aufx|grep -iaE &quot;(\\.avi|\\.mpg|\\.mov|\\.flv|\\.wmv|\\.asf|\\.mpeg|\\.m4v|\\.divx|\\.mp4|\\.mkv|\\.sub|\\.iso|\\.264|\\.vob|\\.srt|\\.img|\\.sfv)&quot;\n\nlsof -w | awk &#39;{for (i = 1; i &lt; 9; i++) $i = &quot;&quot;; sub(/^ */, &quot;&quot;); print}&#39;|sort -u |  grep -iaE &quot;(\\.avi|\\.mpg|\\.mov|\\.flv|\\.wmv|\\.asf|\\.mpeg|\\.m4v|\\.divx|\\.mp4|\\.mkv|\\.sub|\\.iso|\\.264|\\.vob|\\.srt|\\.img|\\.sfv)&quot; | grep -vE &quot;(Beakman|\\.movie)&quot;\n\n\nsleep 8\npkill -f tmux\ntmux new-session -s asdf -n myWindow -d &#39;btop&#39;\\; \\\nsplit-window -d &#39;nethogs -v 3 -p&#39;\\; \\\nsplit-window -d &#39;intel_gpu_top&#39;\\; \\\nselect-pane -t 0 \\; \\\nresize-pane -y 24 \\;  attach-session</code></pre>\n',36,0,1,'CC-BY-SA','hacking',0,0,1),
(4216,'2024-09-30','Down the rabbit hole.',1863,'Sgoti talks about Good Samaritan laws. Good Heavens!','<h1 id=\"down-the-rabbit-hole.\">Down the rabbit hole.</h1>\n<h2 id=\"sgoti-talks-about-good-samaritan-laws.\">Sgoti talks about Good\nSamaritan laws.</h2>\n<ul>\n<li>Tags: Good Samaritan laws, Duty to rescue</li>\n</ul>\n<p>Good Samaritan laws offer legal protection to people who give\nreasonable assistance to those who are, or whom they believe to be\ninjured, ill, in peril, or otherwise incapacitated. The protection is\nintended to reduce bystanders\' hesitation to assist, for fear of being\nsued or prosecuted for unintentional injury or wrongful death.<br />\n</p>\n<p>A duty to rescue is a concept in tort law and criminal law that\narises in a number of cases, describing a circumstance in which a party\ncan be held liable for failing to come to the rescue of another party\nwho could face potential injury or death without being rescued. The\nexact extent of the duty varies greatly between different\njurisdictions.<br />\nA duty to rescue arises where a person creates a hazardous situation. If\nanother person then falls into peril because of this hazardous\nsituation, the creator of the hazard &#x2013; who may not necessarily have been\na negligent tortfeasor &#x2013; has a duty to rescue the individual in\nperil.<br />\nSpouses have a duty to rescue each other in all U.S. jurisdictions.</p>\n<p>A tort is a civil wrong, other than breach of contract, that causes a\nclaimant to suffer loss or harm, resulting in legal liability for the\nperson who commits the tortious act. Tort law can be contrasted with\ncriminal law, which deals with criminal wrongs that are punishable by\nthe state. While criminal law aims to punish individuals who commit\ncrimes, tort law aims to compensate individuals who suffer harm as a\nresult of the actions of others.<br />\nIn common, civil, and mixed law jurisdictions alike, the main remedy\navailable to plaintiffs under tort law is compensation in damages, or\nmoney.<br />\n</p>\n<p><strong>Title:</strong> Good Samaritan Law.<br />\n<strong>License:</strong> Text is available under the Creative Commons\nAttribution-ShareAlike License 4.0; additional terms may apply.<br />\n<strong>Source(s):</strong><br />\n<a href=\"https://en.wikipedia.org/wiki/Good_Samaritan_law\"\ntitle=\"Good Samaritan Law.\">wikipedia:</a> Good Samaritan Law.<br />\n</p>\n<p><strong>Title:</strong> Duty to rescue.<br />\n<strong>License:</strong> Text is available under the Creative Commons\nAttribution-ShareAlike License 4.0; additional terms may apply.<br />\n<strong>Source(s):</strong><br />\n<a href=\"https://en.wikipedia.org/wiki/Duty_to_rescue\"\ntitle=\"Duty to rescue.\">wikipedia:</a> Duty to rescue.<br />\n</p>\n<p><strong>Title:</strong> Tort.<br />\n<strong>License:</strong> Text is available under the Creative Commons\nAttribution-ShareAlike License 4.0; additional terms may apply.<br />\n<strong>Source(s):</strong><br />\n<a href=\"https://en.wikipedia.org/wiki/Tort\"\ntitle=\"Tort.\">wikipedia:</a> Tort.<br />\n</p>\n',391,0,1,'CC-BY-SA','Good Samaritan laws, Duty to rescue',0,0,1),
(4215,'2024-09-27','My home lab',910,'About setting up a rack mounted home lab','\n<h2 id=\"servers-a-mac-mini-and-some-old-networking-kit\">3 servers, a Mac\nMini, and some old networking kit</h2>\n<p>Lee talks about building a home lab consisting of several servers and\nsome networking equipment.</p>\n<p>The home lab on Reddit: <a\nhref=\"https://www.reddit.com/r/homelab/comments/16tvugj/3_servers_a_mac_mini_and_some_old_networking_kit/\">3_servers_a_mac_mini_and_some_old_networking_kit</a></p>\n<p>Rack is limited to 30cm deep due to closet dimensions. All three\nserver cases have been modded in one way or another (most drastic was\nthe DVR, cut down from 40cm deep with an angle-grinder). To save money /\nenergy, the DVR is the only one always on, except in winter when I can\njustify the others heating the apartment.</p>\n<p>The (fairly obsolete) Cisco Router and old WiFi broadband router\ntogether can provide a Wireless LAN filtered with an IP deny list.</p>\n<p>Top to bottom</p>\n<ul>\n<!-- <li>NAS Server (1U) -->\n<!-- <ul> -->\n<!-- <li>CPU: Intel Celeron N4505 NUC</li> -->\n<!-- <li>OS/Software: Ubuntu 22.10</li> -->\n<!-- <li>Mem: 8Gb</li> -->\n<!-- <li>Storage: 4 TB</li> -->\n<!-- <li>DVR (2U)</li> -->\n<!-- <li>CPU: 12-core 12th Gen Intel Core i7-12700</li> -->\n<!-- <li>OS/Software: Manjaro / Jellyfin</li> -->\n<!-- </ul></li> -->\n<li>NAS Server (1U)\n<ul>\n<li>CPU: Intel Celeron N4505 NUC</li>\n<li>OS/Software: Ubuntu 22.10</li>\n<li>Mem: 8Gb</li>\n<li>Storage: 4 TB</li>\n</ul></li>\n<li>DVR (2U)\n<ul>\n<li>CPU: 12-core 12th Gen Intel Core i7-12700</li>\n<li>OS/Software: Manjaro / Jellyfin</li>\n<li>Mem: 16Gb</li>\n<li>Storage: 16 TB</li>\n</ul></li>\n<li>Secondary WiFi\n<ul>\n<li>Old TalkTalk Router</li>\n</ul></li>\n<li>Switch\n<ul>\n<li>Cisco SG-100-16</li>\n</ul></li>\n<li>Router\n<ul>\n<li>Cisco 1841 Router</li>\n</ul></li>\n<li>Mac Mini\n<ul>\n<li>CPU: quad core Intel Core i7-2635QM</li>\n<li>OS/Software: Manjaro</li>\n<li>Mem: 16 GB</li>\n<li>Storage: 1 TB</li>\n</ul></li>\n<li>Proxmox Box (2U)\n<ul>\n<li>CPU: 8-Core AMD Ryzen 7 3700X</li>\n<li>OS/Software: Proxmox 7</li>\n<li>Mem: 64Gb</li>\n<li>Storage: 3 TB</li>\n</ul></li>\n</ul>\n<p><img\nsrc=\"https://hackerpublicradio.org/eps/hpr4215/hpr4215/3-servers-a-mac-mini-and-some-old-networking-kit-v0-o6tflmur1vqb1.webp\"\nwidth=\"540\" height=\"748\" alt=\"Picture of the rack\" /></p>\n',403,0,0,'CC-BY-SA','homelab, server, self-hosting',0,0,1),
(4207,'2024-09-17','Re: The Kindle/Kobo Open Reader (KOReader)',518,'A response to hpr1949, about the KOReader','<p>A response to a 2016 show by Jon Kulp, about the KO Reader.</p>\n<p><a href=\"https://koreader.rocks/\"\nclass=\"uri\">https://koreader.rocks/</a></p>\n',399,0,0,'CC-BY-SA','koreader, kindle, ebooks, epub',0,0,1),
(4208,'2024-09-18','01 Plain Text Programs',343,'Plain Text Programs-what they are-what they do-why they\'re good-and why they\'re not for everything','<h2 id=\"plain-text-programs\">01 Plain Text Programs</h2>\n<p>Hi. I\'m here to talk about Plain Text Programs, what they are, what\nthey do, why they\'re good, and why they\'re not for everything. Right up\nfront I\'m requesting feedback on what I have to say. I\'m on Mastodon and\nI\'ll start a thread for each podcast or you can reach me by email.</p>\n<p>My Mastodon address is<br />\n<span class=\"citation\" data-cites=\"hairylarry\">@hairylarry</span><span\nclass=\"citation\" data-cites=\"gamerplus.org\">@gamerplus.org</span></p>\n<p>My profile is at<br />\n<a href=\"https://gamerplus.org/@hairylarry\"\nclass=\"uri\">https://gamerplus.org/@hairylarry</a></p>\n<p>And my email is<br />\nhairylarry@deltaboogie.com</p>\n<p>Also you can Network With Hairy Larry at<br />\n<a href=\"https://deltaboogie.net\"\nclass=\"uri\">https://deltaboogie.net</a>.</p>\n<p>In the future I plan on doing podcasts on specific Plain Text\nPrograms, some that I wrote and some that were written by others. Any\nprogram that I will discuss will be licensed with a free culture\nlicense.</p>\n<p>The first thing I want to emphasize about Plain Text Programs is that\nthere\'s no database like SQL or LLM. All text data is written in plain\ntext files stored on a file system.</p>\n<p>Now, I love databases. Before I retired I was a database programmer.\nAnd as a database programmer I learned a lot about the difficulties\nmaintaining programs that rely on databases. There\'s a lot of cool stuff\nyou can do with a database that\'s just not reasonable to try with plain\ntext. Now that I\'m retired I don\'t really want to work that hard\nanymore. I want programming to be easy and fun.</p>\n<p>Plain text does not mean there can\'t be images or other media. Image\nfiles like .jpg or .png can be stored in the file system just like text\nfiles. No worries.</p>\n<p>A big advantage of Plain Text Programs is portability. To back up a\nworking program you copy the directory tree that holds the program\'s\nfiles. To install or restore a Plain Text Program copy the tree onto a\nsystem or server.</p>\n<p>I usually work on Linux using the PHP programming language. This is\nof course my preference. Any language running on any file system can be\nused to write Plain Text Programs.</p>\n<p>My minimum install will usually have a configuration file, at least\none program file, and a set of text files.</p>\n<p>Some of the Plain Text Programs I use all the time that I wrote\nare</p>\n<h3 id=\"websites\">Websites</h3>\n<ul>\n<li>Dirt Simple Photo Gallery</li>\n<li>Plain Text Blog</li>\n<li>Not Actually Plain Text Blog</li>\n<li>Network With Hairy Larry</li>\n</ul>\n<h3 id=\"internet-radio\">Internet Radio</h3>\n<ul>\n<li>MixRemix - Creative Commons Jazz</li>\n<li>KGPL</li>\n</ul>\n<h3 id=\"utilities\">Utilities</h3>\n<ul>\n<li>Backup The Web Server</li>\n</ul>\n<p>I also use Plain Text Programs that other programmers wrote</p>\n<ul>\n<li><p>Music Folder Player<br />\n<a href=\"https://github.com/ltguillaume/music-folder-player\"\nclass=\"uri\">https://github.com/ltguillaume/music-folder-player</a></p></li>\n<li><p>Free PHP File Directory Script<br />\n<a href=\"https://halgatewood.com/file-directory-list\"\nclass=\"uri\">https://halgatewood.com/file-directory-list</a></p></li>\n<li><p>Simple Image Browser<br />\n<a href=\"https://github.com/SammysHP/SimpleImageBrowser\"\nclass=\"uri\">https://github.com/SammysHP/SimpleImageBrowser</a></p></li>\n</ul>\n<p>Links to these programs are in the script.</p>\n<p>So these are mostly websites or web applications but Plain Text\nPrograms do not have to be outward facing. They can just be an easy\nprogram that you write to automate a task that you have to do\nperiodically. Like my Backup The Web Server program that I wrote in\nbash.</p>\n<p>I write my Plain Text Programs websites so that updates and additions\nare made with FTP. FTP is a well established secure way to transfer\nfiles from your development system to your web server. Another good\noption, particularly for static websites that are generated on the\ndevelopment system and then mirrored up to the server, is rsync.</p>\n<p>I believe that simplicity is the key. I have written complicated\nPlain Text Programs including the social network writing game, Collab.\nBut I think a simple one page or few pages design fits the plain text\nparadigm better.</p>\n<p>Well, I\'m going to call this a wrap for now. I plan on covering\nspecific Plain Text Programs in future podcasts and I may occasionally\nstep back and look at the big picture or discuss ideas and\nspecifications for future projects.</p>\n<p>Thanks for listening. I appreciate all your comments.</p>\n<p>You can find the plain text script with the link to the comment\nthread and all other links at home.gamerplus.org, a Not Actually Plain\nText Blog.</p>\n<p>Comment thread link.<br />\n<a href=\"https://gamerplus.org/deck/@hairylarry/113142858145586294\"\nclass=\"uri\">https://gamerplus.org/deck/@hairylarry/113142858145586294</a></p>\n',436,25,0,'CC-BY-SA','programming, plaintext',0,0,1),
(4213,'2024-09-25','Making Waves Day 1',2331,'The Hallway track from Spectrum24 day 1','<h1 id=\"making-waves-day-1\">Making Waves Day 1</h1>\n<p><img src=\"eps/hpr4213/hpr4213/hpr-booth.jpg\" alt=\"HPR Booth with banner\" /></p>\n<p>The Conference for Creative Use of the Radio Spectrum in Open\nSystems, that brings users of the radio spectrum together. For over a\ncentury, technology has made it possible to transfer more data, faster,\nfurther. Today, wireless technology is everywhere and commonplace.\nHowever, it remains a playground and a ground for innovation for many\ncommunities. The spectrum24 conference provides an opportunity to\npublicize projects and to allow the different communities that use the\nspectrum to meet in person over a weekend.</p>\n<h2 id=\"president-of-the-iaru-region-1\">President of the IARU Region\n1</h2>\n<p>It\'s only right to start with\n<a href=\"https://www.qrz.com/db/F4GKR\">Sylvain Azarian F4GKR</a> the\npresident of the <a href=\"https://www.iaru-r1.org/\">International\nAmateur Radio Union (IARU) | Region 1</a></p>\n<p>The IARU represents the interests of the Amateur Radio Service\nworldwide to relevant international organisations, promoting the\ninterests of amateur radio and seeking to protect and enhance its\nspectrum privileges.</p>\n<p><img src=\"eps/hpr4213/hpr4213/IARU.png\" alt=\"IARU Logo\" /></p>\n<h2\nid=\"radioastronomy-activity-with-the-paris-radio-telescope-and-eme\">Radioastronomy\nactivity with the Paris radio-telescope and EME</h2>\n<p>Next we chat with\n<a href=\"https://www.qrz.com/db/N5FXH\">Fran&#xE7;ois-Xavier Hugo</a> and\n<a href=\"https://www.qrz.com/db/F4IEY\">Jules Benkemoun F4IEY</a> talking\nabout the Radiotelescope in the form of a 10m dish parabolic mesh disk\noperated at the\n<a href=\"https://radiotelescopelavillette.wordpress.com/radio-club-f4klo/\">Club\nRadioAmateur F4KLO</a>.</p>\n<p><img src=\"eps/hpr4213/hpr4213/F4KLO.png\" alt=\"Image of F4KLO dish\" /></p>\n<h2\nid=\"setting-up-an-amateur-radio-station-at-a-technical-school\">Setting\nup an Amateur Radio Station at a Technical School</h2>\n<p><a href=\"https://www.qrz.com/db/F4GOH\">Anthony Le Cren - F4GOH</a>,\nteaches electronics and computer technology at a Technical School and\ntells us about the science projects they got up to. He also managed to\nget a hour a week where he and his students set up an Amateur Radio\nStation in the school. What can you do in a hour a week ? Turns out\nquite a lot.</p>\n<p>Have a look at his site\n<a href=\"https://hamprojects.wordpress.com/\">Projets radio</a> for more\ninformation.</p>\n<p><img src=\"eps/hpr4213/hpr4213/F4GOH.png\" alt=\"Image of a baloon launch organised by F4GOH\" /></p>\n<h2 id=\"meshcom\">Meshcom</h2>\n<p>We chat with <a href=\"https://www.qrz.com/db/OE3MZC\">Michael Zwingl\nOE3MZC</a> who is president of the\n<a href=\"https://icssw.org/en/\">Institute of Citizen Science for Space\nand Wireless Communication</a> about\n<a href=\"https://icssw.org/en/meshcom/\">MeshCom 4.0</a></p>\n<p><img src=\"eps/hpr4213/hpr4213/Meshcom.jpg\" alt=\"The Meshcom booth with small lora modules\" /></p>\n<p><quote> MeshCom is a project to exchange text messages via LORA radio\nmodules. The primary goal is to realize networked off-grid messaging\nwith low power and low cost hardware.</p>\n<p>The technical approach is based on the use of LORA radio modules\nwhich transmit messages, positions, measured values, telecontrol and\nmuch more with low transmission power over long distances. MeshCom\nmodules can be combined to form a mesh network, but can also be\nconnected to a message network via MeshCom gateways, which are ideally\nconnected via HAMNET. This enables MeshCom radio networks, which are not\nconnected to each other via radio, to communicate with each other.\n</quote></p>\n<p><img src=\"eps/hpr4213/hpr4213/ken-meshcom.jpg\" alt=\"A photo of the interview\" /></p>\n<h2 id=\"satdump\">Satdump</h2>\n<p>Although <a href=\"https://www.qrz.com/db/F4LAU\">Alan Antoine\nF4LAU</a> was unfortunately not able to attend in person, his shoes were\nfilled by <a href=\"https://www.qrz.com/db/IU1QPT\">Jacopo Cassinis</a>,\nand <a href=\"https://radiodb.pl/stacja/14508\">Zbigniew Sztanga</a> who\nchatted with us about\n<a href=\"https://www.satdump.org/\">SatDump</a>.</p>\n<p><quote> SatDump is a general purpose satellite data processing\nsoftware. It is a one-stop-shop that provides all the necessary stages\nto get from the satellite transmission to actual products </quote></p>\n<p><img src=\"eps/hpr4213/hpr4213/SatDump.jpg\" alt=\"Jacopo and Zbigniew about to give their presentation\" /></p>\n',30,78,0,'CC-BY-SA','IARU,F4KLO,F4GOH,Meshcom,Satdump',0,0,1),
(4214,'2024-09-26','Making Waves Day 2',2199,'The Hallway track from Spectrum24 day 2','<h1 id=\"making-waves-day-2\">Making Waves Day 2</h1>\n<p><img src=\"eps/hpr4214/hpr4214/spectrum24.jpg\" alt=\"closing picture\" /></p>\n<p>The Conference for Creative Use of the Radio Spectrum in Open\nSystems, that brings users of the radio spectrum together. For over a\ncentury, technology has made it possible to transfer more data, faster,\nfurther. Today, wireless technology is everywhere and commonplace.\nHowever, it remains a playground and a ground for innovation for many\ncommunities. The spectrum24 conference provides an opportunity to\npublicize projects and to allow the different communities that use the\nspectrum to meet in person over a weekend.</p>\n<h2 id=\"m17\">M17</h2>\n<p>Let\'s start the day off with a talk with\n<a href=\"https://www.qrz.com/db/ON4MOD\">Morgan Dieport ON4MOD</a> from\nthe <a href=\"https://m17project.org/\">M17 Protocol</a>.</p>\n<p><quote> M17 is a community of open source developers and radio\nenthusiasts. We\'re building understandable systems in support of the\nhackers and experimenters\' history of ham radio. </quote></p>\n<p><img src=\"eps/hpr4214/hpr4214/M17_spectrum.png\" alt=\"A wikipedia diagram showing the frequency peak of the M17 protocol\" /></p>\n<h2 id=\"openrtx\">OpenRTX</h2>\n<p><a href=\"https://www.qrz.com/db/IU2KWO\">Silvano Seva IU2KWO</a></p>\n<p><a href=\"https://openrtx.org/#/\">OpenRTX</a> is \"Free and Open Source\nFirmware for Digital Ham Radios. Top-down designed with modularity,\nflexibility and performance in mind.\" The code is available on\n<a href=\"https://github.com/OpenRTX/OpenRTX\">github</a>.</p>\n<p><img src=\"eps/hpr4214/hpr4214/OpenRTX.png\" alt=\"OpenRTX Logo\" /></p>\n<h2 id=\"rf-swift\">RF Swift</h2>\n<p>We next caught up with <a href=\"https://github.com/FlUxIuS\">Sebastien\nDudek</a> who had just presented a talk about the project\n<a href=\"https://github.com/PentHertz/RF-Swift\"></p>\n<p><quote> Introducing our Go and shell script-based toolbox, designed\nto streamline the deployment of Docker containers for your preferred RF\ntools. This evolving toolkit promises even more features in the near\nfuture, making it an essential asset for RF enthusiasts. </quote></p>\n<p><img src=\"eps/hpr4214/hpr4214/RFSwift.jpg\" alt=\"Sebastien giving the presentation\" /></p>\n<h2 id=\"vlf-receivers-design\">VLF receivers design</h2>\n<p>The say that in Space no one can hear you scream, but here at\nspectrum24 I\'m not so sure.</p>\n<p>The talk from <a href=\"https://www.qrz.com/db/f4eob\">Thierry Alves\nF4EOB</a>, <a href=\"https://www.qrzcq.com/call/CT2JTZ\">CT2JTZ</a> spoke\nof listening to cosmic wind.</p>\n<p>So how low can you go ? Head over to\n<a href=\"http://www.vlf.it/\">http://www.vlf.it</a> to find out.</p>\n<p><img src=\"eps/hpr4214/hpr4214/vlf.jpg\" alt=\"Thierry giving the presentation\" /></p>\n<h1 id=\"trx-control\">trx-control</h1>\n<p>What do you do when you\'re not organizing conferences ? Hacking a\nproject to contrail radios, and a lot more besides, using Linux.</p>\n<p><quote> trx-control is a modern and extensible software system for\nLinux to control transceivers and other devices over the network. It can\nas well be used to integrate third-party applications or databases.\n</quote></p>\n<p><img src=\"eps/hpr4214/hpr4214/trx-control.jpg\" alt=\"Marc Balmer at the booth\" /></p>\n',30,0,0,'CC-BY-SA','M17,OpenRTX,RF-Swift,VLF,trx-control',0,0,1),
(4217,'2024-10-01','Episode 2 - Dirt Simple Photo Gallery',585,'Dirt Simple Photo Gallery put me on the path to Plain Text Programs','<h1 id=\"episode-2---dirt-simple-photo-gallery\">Episode 2 - Dirt Simple\nPhoto Gallery</h1>\n<p>Dirt Simple Photo Gallery is the program that started me down the\nPlain Text Programs path. It predates my own thinking about Plain Text\nPrograms by at least a decade. Ever since I wrote it I use it all the\ntime. It is now my preferred web page generator for all kinds of web\npages, not just galleries.</p>\n<p>Like most of my programs I wrote it because I needed it. Vivian and I\nwere putting on music events like Blues Fest, Sunday In The Park, Jazz\nThursday, New Jazz In Jonesboro, and Bebopalooza. I recorded all the\nshows. Sometimes video, always audio. And we loved taking pictures of\nthe musicians singing and playing.</p>\n<p>After the shows we would dump the photo files to a hard drive, make\nall the original photos read only, and back them up to a CD or DVD. We\nreally enjoyed scrolling through the photos, picking the ones we liked,\ncropping them and enhancing them, and resizing them for the\ninternet.</p>\n<p>And then that\'s where it fell apart. We recorded the show. We took\nthe pictures. We cropped the pictures and had them ready to go for our\nDelta Boogie website. And we didn\'t want to write the html.</p>\n<p>Some days we would have five or six bands playing. We usually had ten\nto twenty photos of each band that we picked out of hundreds of photos\ntaken. Do the math. That\'s a lot of typing HTML code like a href =, img\nsrc, etc. A lot a captions to write. A lot of work to get done in a\nweek. Because the next weekend we had another show. Another set of\nphotos. Another bunch of html backlog.</p>\n<p>And the thing I found out. If we didn\'t get the pages posted right\naway we almost never had time to post them later. I mean we had kids to\nraise, cooking to do, cars to fix, school to attend, not to mention\nwork.</p>\n<p>So, I loved writing programs more than I loved marking up html. And I\ncould write one program and avoid marking up tons of html. And so I\nwrote the Dirt Simple Photo Gallery.</p>\n<p>Even back in the dark ages of the internet also known as the nineties\nthere were photo gallery programs. And just like today they were\ncumbersome and running them was a lot like data entry. You know what I\nhate worse than writing html? Data entry.</p>\n<p>I had this idea. I would take all the photos we had ready for a\ngallery and I would upload them to a directory on our server. Then I\nwould upload an index.php file and we\'d have a photo gallery.</p>\n<p>And that\'s just how Dirt Simple Photo Gallery works. And if that\'s\nreally all you need you\'re done.</p>\n<p>It wasn\'t quite all we needed. So I added a title.txt file and a\nnotes.txt file so there could be a bit more than just the photos and\ncaptions on the web page. I was careful that I didn\'t have to write any\nhtml in the notes.txt file. The program even automatically turns copy\nand pasted links into hot links.</p>\n<p>Now, you can include html in the notes.txt file. You can even embed\niframes if you want to include an audio or video player. But you don\'t\nhave to. Also, iframe embeds are just a copy and paste exactly like\nlinks. Easy peasy.</p>\n<p>There\'s also the problem of the captions and the sort order of the\nphotos.</p>\n<h2 id=\"captions\">Captions</h2>\n<p>I use the file names to carry the meta data required for captions and\nsort order.</p>\n<p>These are the characters I use in the file names. Alphanumeric,\ncommas, apostrophes, dashes, and underscores. I don\'t use spaces but the\nunderscores are converted to spaces in the captions. I use Thunar and I\nlove the bulk rename option where I can search and replace a set of file\nnames and change all the spaces into underscores.</p>\n<p>I have code that allows you to include special characters in your\ncaptions by using html character sets but it\'s confusing to think about.\nAnd I discovered the only special characters I really needed were\ndashes, commas, and apostrophes. All three of these characters are legal\nin file names on all major systems. Dashes are not problematic. Commas\ncan cause problems if you are using comma delimited data but, I\'m not,\nso no worries. Apostrophes can also be an issue because in php they are\nused as single quotes and can be used to delimit strings in the code.\nThere is a way around this with php. Use double quotes to surround the\nentire string. If there is a place inside of that string where you would\nuse single quotes, which is not uncommon in html, replace the single\nquotes with escaped double quotes, that is \". So that\'s what I did.</p>\n<p>So now I can use all the apostrophes I want in my file names and they\nfly right through my code, never accidentally truncating a string and\nthrowing errors.</p>\n<p>Commas and apostrophes are important in captions. Captioning group\nshots without commas leads to misunderstanding people\'s names. And if\nyour caption has a possessive in it like Joe\'s Garage leaving the\napostrophe out is just wrong.</p>\n<p>Using double quotes in a file name will truncate strings in the php\ncode and throw errors. Usually, anywhere you would want a double quote a\nsingle quote will do.</p>\n<p>There are other special characters, like dashes, that aren\'t\nproblematic. Forward slashes and back slashes should not be used in file\nnames ever. Some special characters may work on some systems and not on\nothers. I\'ve been using this program for almost 25 years and I really\nwant commas and apostrophes and don\'t really care about other special\ncharacters in captions. You may have special needs for special\ncharacters I don\'t. That\'s why it\'s open source. If you need something\nthe program isn\'t designed to provide test it. Fix it. Right now there\nare fewer than 100 lines of code in the program. I have confidence in\nyou.</p>\n<h2 id=\"sorting\">Sorting</h2>\n<p>Default sorting of images is alphabetical by file name. If you just\nname your files with good captions and don\'t add any numbers as a prefix\nthat\'s what you\'ll get. Alphabetical by caption. This may be just what\nyou need.</p>\n<p>If, however, you want some other sort order you can prefix your files\nwith nnn- where n is any integer.</p>\n<p>000-filename.ext displays the picture at the top of the page. If the\nphoto is narrow enough, the text from notes.txt will wrap around it to\nthe left.</p>\n<p>All the photos numbered 001- to 999- will display in a single column\nbelow the text. Unnumbered photos will also display below the text in\nalphabetical order. So if you want a photo at the top of the page add\nthe prefix 000- to the file name. If alphabetical order is what you want\nfor the rest of the photos you don\'t have to rename them.</p>\n<p>Permitted extensions are jpg, png, or gif. (It\'s hapeg stupid!) It\'s\neasy to add other permitted extensions in the code but, of course, they\nhave to be rendered by a browser. I did not include the jpeg extension\nchoosing to rename jpeg files to jpg. This made it slightly easier to\ncode.</p>\n<p>There is a config.inc file where you can set your table width. The\ndefault is 700. I resize my photos to be 600 max width. I usually use\njpg files with a quality level of 90. This reduces storage space and\nenables fast loading of images. The config.inc file also allows you to\nchange background color, text color, link color, etc. There is also a\nCSS section in the config.inc file so you can change the font, the\nheadline sizes, etc. Or add your own CSS.</p>\n<p>If you have trouble getting the text wraparound to look good on your\npage there is a way to disable it in the config.inc file.</p>\n<p>Install the page with ftp. Make a directory, where you want it on\nyour website, and give it a good name. Upload index.php, title.txt,\nnotes.txt, config.inc, and the image files into the directory. Go to\nyour website and check it out. That\'s it.</p>\n<p>Page maintenance is the same. Fix captions by renaming files. Add and\ndelete images. Update the title or the text in notes.txt and upload the\nchanges. Change the font, colors, or CSS in config.inc and upload the\nchanges.</p>\n<p>I have put up a demo site on infinityfree.com.</p>\n<p>And I am posting my show notes on my blog at<br />\n<a href=\"https://home.gamerplus.org/\"\nclass=\"uri\">https://home.gamerplus.org/</a></p>\n<p>I will include links there to the demo site, the link to the comment\nthread for this podcast on Mastodon, and the link to the git repository\non Codeberg.</p>\n<p>If you can\'t find Dirt Simple Photo Gallery use the search\nfeature.</p>\n<p>To Network With Hairy Larry I have another plain text program\nat<br />\n<a href=\"https://deltaboogie.net/\"\nclass=\"uri\">https://deltaboogie.net/</a></p>\n<p>If you use or have written Plain Text Programs please let me know. I\nwant to do a podcast about them.</p>\n<p>Thanks for listening.</p>\n<h2 id=\"more-links\">More Links</h2>\n<ul>\n<li><p>Comment thread at Gamer+DBN on Mastodon</p></li>\n<li><p>Dirt Simple Photo Gallery Demo<br />\n<a href=\"https://ptp.000.pe/Dirt_Simple_Photo_Gallery\"\nclass=\"uri\">https://ptp.000.pe/Dirt_Simple_Photo_Gallery</a></p></li>\n<li><p>Repository on Codeberg<br />\nDirt Simple Photo Gallery<br />\n<a href=\"https://codeberg.org/hairylarry/DirtSimplePhotoGallery\"\nclass=\"uri\">https://codeberg.org/hairylarry/DirtSimplePhotoGallery</a></p></li>\n</ul>\n',436,25,0,'CC-BY-SA','programming,plaintext,gallery,images,photos',0,0,1),
(4225,'2024-10-11','Chewing the rag with Kristoff and Ken',3175,'Kristoff Bonne ON1ARF and Ken Fallon PA7KEN chat about HAM and Hackers','<p>Known in the Hacker world as the Ham Radio Guy at FOSDEM,\n<a href=\"https://www.qrz.com/db/ON1ARF\">Kristoff Bonne ON1ARF</a>, and\n<a href=\"https://www.qrz.com/db/PA7KEN\">Ken Fallon\nPA7KEN</a>/<a href=\"https://www.qrz.com/db/G5KEN\">G5KEN</a> sit down to\ndiscuss\n\"<a href=\"https://en.wikipedia.org/wiki/Population_ageing\">vergrijzing</a>,\nchanging attitudes, and increasing participation in the Amateur Radio\nCommunity.\"</p>\n',30,43,0,'CC-BY-SA','FOSDEM,HAM',0,0,1),
(4218,'2024-10-02','Crazy Battery Story',517,'Got the wrong batteries and had to walk to get the right ones','<p>My telegram is t.me/forthenerdsremix</p>\n<p>irc is #forthenerds on libera</p>\n',297,0,0,'CC-BY-SA','batteries, remote control, tv',0,0,1),
(4246,'2024-11-11','Bytes, Pages and Screens',728,'A trek through some podcasts, books and TV shows','<u>Podcasts</u><br/><br/>\nLinux Outlaws - <a href=\"https://en.wikipedia.org/wiki/Linux_Outlaws\">https://en.wikipedia.org/wiki/Linux_Outlaws</a><br/><br/>\nThis Week In Tech - Know How - <a href=\"https://twit.tv/shows/know-how\">https://twit.tv/shows/know-how</a><br/><br/>\nThis Week In Tech - Security Now - <a href=\"https://twit.tv/shows/security-now\">https://twit.tv/shows/security-now</a><br/><br/>\nThis Week In Tech - FLOSS Weekly - <a href=\"https://twit.tv/shows/floss-weekly\">https://twit.tv/shows/floss-weekly</a><br/><br/>\nDestination Linux - <a href=\"https://tuxdigital.com/podcasts/destination-linux/\">https://tuxdigital.com/podcasts/destination-linux/</a><br/><br/>\nGNU World Order - <a href=\"https://gnuworldorder.info\">https://gnuworldorder.info</a><br/><br/>\n<u>Books</u><br/><br/>\nThe Lord of the Rings (J R R Tolkien) - <a href=\"https://en.wikipedia.org/wiki/The_Lord_of_the_Rings\">https://en.wikipedia.org/wiki/The_Lord_of_the_Rings</a><br/><br/>\nDune (Frank Herbert) - <a href=\"https://en.wikipedia.org/wiki/Dune_(novel)\">https://en.wikipedia.org/wiki/Dune_(novel)</a><br/><br/>\nWar &amp; Peace (Leo Tolstoy) - <a href=\"https://en.wikipedia.org/wiki/War_and_Peace\">https://en.wikipedia.org/wiki/War_and_Peace</a><br/><br/>\nThe Hitchhikers Guide to the Galaxy (Douglas Adams) - <a href=\"https://en.wikipedia.org/wiki/The_Hitchhiker%27s_Guide_to_the_Galaxy\">https://en.wikipedia.org/wiki/The_Hitchhiker%27s_Guide_to_the_Galaxy</a><br/><br/>\nDiscworld (Terry Pratchett) - <a href=\"https://en.wikipedia.org/wiki/Discworld\">https://en.wikipedia.org/wiki/Discworld</a><br/><br/>\nCryptonomicon & Anathem (Neal Stephenson) - <a href=\"https://en.wikipedia.org/wiki/Neal_Stephenson\">https://en.wikipedia.org/wiki/Neal_Stephenson</a><br/><br/>\nHave Spacesuit Will Travel, Double Star, Stranger in a Strange Land (Robert A Heinlein) - <a href=\"https://en.wikipedia.org/wiki/Robert_A._Heinlein\">https://en.wikipedia.org/wiki/Robert_A._Heinlein</a><br/><br/>\nEnders Games (Orson Scott Card) - <a href=\"https://en.wikipedia.org/wiki/Ender%27s_Game\">https://en.wikipedia.org/wiki/Ender%27s_Game</a><br/><br/>\nHarry Potter and the Prisoner of Azkaban (J K Rowling) - <a href=\"https://en.wikipedia.org/wiki/Harry_Potter\">https://en.wikipedia.org/wiki/Harry_Potter</a><br/><br/>\nAurora CV-01 (Ryk Brown) - <a href=\"https://frontierssaga.com/episodes/\">https://frontierssaga.com/episodes/</a><br/><br/>\n<u>TV Series</u><br/><br/>\nPrisoner Cell Block H (Grundy) - <a href=\"https://en.wikipedia.org/wiki/Prisoner_(TV_series)\">https://en.wikipedia.org/wiki/Prisoner_(TV_series)</a><br/><br/>\nNeighbours (Grundy) - <a href=\"https://en.wikipedia.org/wiki/Neighbours\">https://en.wikipedia.org/wiki/Neighbours</a><br/><br/>\nMr Robot (USA Network) - <a href=\"https://en.wikipedia.org/wiki/Mr._Robot\">https://en.wikipedia.org/wiki/Mr._Robot</a><br/><br/>\nBlack Mirror (Endemol Shine) - <a href=\"https://en.wikipedia.org/wiki/Black_Mirror\">https://en.wikipedia.org/wiki/Black_Mirror</a><br/><br/>\nDexter (Showtime) - <a href=\"https://en.wikipedia.org/wiki/Dexter_(TV_series)\">https://en.wikipedia.org/wiki/Dexter_(TV_series)</a><br/><br/>\nTouched by an Angel (Warner Bros) - <a href=\"https://en.wikipedia.org/wiki/Touched_by_an_Angel\">https://en.wikipedia.org/wiki/Touched_by_an_Angel</a><br/>\n',403,0,1,'CC-BY-SA','tv, podcasts, books',0,0,1),
(4224,'2024-10-10','Auto shop interaction',414,'Archer72 rambles about an experience in a Wal-Mart oil change shop','<p>Archer72 rambles about an experience in a Wal-Mart oil change shop,\nand a positive interaction with a customer there.</p>\n',318,0,0,'CC-BY-SA','AutoMaintenance,AutoShop',0,0,1),
(4223,'2024-10-09','Movie review of The Artifice Girl',2067,'Sgoti butchers a movie review of The Artifice Girl','<h1 id=\"movie-review-of-the-artifice-girl\">Movie review of The Artifice\nGirl</h1>\n<h2 id=\"sgoti-butchers-a-movie-review-of-the-artifice-girl\">Sgoti\nbutchers a movie review of The Artifice Girl</h2>\n<ul>\n<li>Tags: movie review, LinuxLUGcastz</li>\n</ul>\n<p><a\nhref=\"https://linuxlugcast.com/index.php/2024/02/04/episode-237/\">Welcome\nto Episode 237 the LinuxLUGcastz</a></p>\n<p><a href=\"https://en.wikipedia.org/wiki/The_Artifice_Girl\">The\nArtifice Girl</a></p>\n<p>The Artifice Girl is a 2022 science fiction psychological thriller\nwritten and directed by Franklin Ritch, produced by Aaron B. Koontz and\nreleased direct to VOD. It stars Tatum Matthews, Sinda Nichols, David\nGirard, Lance Henriksen, and Franklin Ritch. NGO agents discover a\nrevolutionary Artificial intelligence (AI) computer program that uses a\ndigital child to catch online predators, it advances far more rapid than\nthey could have imagined, posing unforeseen challenges for the\nrelationship between humans and AI.</p>\n<p>This work is licensed under a <a\nhref=\"https://creativecommons.org/licenses/by-sa/4.0/\"\ntitle=\"CC-BY-SA 4.0 International\">Creative Commons\nAttribution-ShareAlike 4.0 International License</a>.</p>\n',391,0,0,'CC-BY-SA','MovieReview, LinuxLUGcastz',0,0,1),
(4219,'2024-10-03','Black diamond head lamp and other gear',1456,'Sgoti talks about using his head lamp and backpack during his day job','<h1 id=\"black-diamond-head-lamp-and-other-gear.\">Black diamond head lamp\nand other gear.</h1>\n<h2\nid=\"sgoti-talks-about-using-his-head-lamp-and-backpack-during-his-day-job.\">Sgoti\ntalks about using his head lamp and backpack during his day job.</h2>\n<ul>\n<li>Tags: headlamp, backpack</li>\n</ul>\n<p><a\nhref=\"https://www.rei.com/product/202774/black-diamond-spot-400-headlamp\">black\ndiamond spot 400 headlamp</a></p>\n<ul>\n<li>Features\n<ul>\n<li>Dual-fuel design allows you to power the headlamp with 3 AAA\nalkaline batteries (included) or the rechargeable BD 1500 lithium-ion\nbattery and charger (not included)</li>\n<li>Settings include proximity and distance modes, dimming, strobe, red\nLED night vision, and lock mode</li>\n<li>White LED outputs up to 400 lumens on max setting, 200 lumens on\nmedium and 6 lumens on low</li>\n<li>PowerTap&#x2122; Technology allows instant adjustment between max output\nand dimmed power</li>\n<li>Brightness Memory allows you to turn the light on and off at a\nchosen brightness setting without it reverting back to the default\nsetting</li>\n<li>Red LED night vision has dimming and strobe modes, and is quickly\nactivated without cycling through the white mode</li>\n<li>Multifaceted optical efficiency lens technology</li>\n<li>Integrated battery meter display shows the percentage of power\nremaining so you know when to replace the batteries</li>\n<li>Digital lockout feature prevents accidental use when stored in a\npack or pocket</li>\n<li>IPX8 waterproof protection rated to operate at least 1.1 meters\nunderwater for 30 minutes&#x2014;perfect should you be caught in a\ndownpour</li>\n<li>If submerged, water may enter the battery compartment, but it will\nstill operate; it should be completely dried out after use in wet\nconditions</li>\n</ul></li>\n</ul>\n<p><a\nhref=\"https://www.patagonia.com/product/fieldsmith-lid-pack-28-liters/196924365315.html\">Fieldsmith\nLid Pack 28L</a></p>\n<p>This work is licensed under a <a\nhref=\"https://creativecommons.org/licenses/by-sa/4.0/\"\ntitle=\"CC-BY-SA 4.0 International\">Creative Commons\nAttribution-ShareAlike 4.0 International License</a>.</p>\n',391,0,0,'CC-BY-SA','headlamp, backpack',0,0,1),
(4226,'2024-10-14','JAMBOREE and Taco Bell!',1122,'SOC Fortress CoPilot / Velociraptor / Wazuh and Taco Bell Quesadilla Sauce!','<p><a href=\"https://JAMBOREE.rmccurdy.com\">JAMBOREE.rmccurdy.com</a> :\nSOCFortress CoPilot / Velociraptor / Wazuh</p>\n<h3 id=\"copycat-taco-bell-quesadilla-sauce\">Copycat Taco Bell Quesadilla\nSauce</h3>\n<pre><code>PREP TIME\n5 minutes\n\nTOTAL TIME\n5 minutes\n\nIngredients\n&#xBD; cup mayonnaise\n&#xBD; cup sour cream\n3 Tablespoons pickled jalapeno juice (from a jar of pickled jalapenos)\n3 Tablespoons pickled jalapenos (diced)\n2 teaspoon paprika\n2 teaspoons ground cumin\n1 teaspoon garlic granules\n1 teaspoon onion powder\n&#xBD; teaspoon salt (or to taste)\n&#xBD; teaspoon chili powder</code></pre>\n',36,0,1,'CC-BY-SA','cooking, hacking',0,0,1),
(4227,'2024-10-15','Introduction to jq - part 3',1553,'More filters','<article>\n<h2 id=\"overview\">Overview</h2>\n<p>In this episode we will continue looking at basic filters. Then we\nwill start looking at the feature that makes <code>jq</code> very\npowerful, the ability to transform JSON from one form to another. In\nessence we can read and parse JSON and then construct an alternative\nform.</p>\n<h2 id=\"more-basic-filters\">More basic filters</h2>\n<h3 id=\"arraystring-slice-.numbernumber\">Array/String Slice:\n<code>.[&lt;number&gt;:&lt;number&gt;]</code></h3>\n<p>This filter allows parts of JSON arrays or strings to be\nextracted.</p>\n<p>The first number is the index of the elements of the array or string,\nstarting from zero. The second number is an ending index, but it means\n\"up to but not including\". If the first index is omitted it refers to\nthe start of the string or array. If the second index is blank it refers\nto the end of the string or array.</p>\n<p>This example shows using an array and extracting part of it:</p>\n<pre><code>$ x=&quot;[$(seq -s, 1 10)]&quot;\n$ echo &quot;$x&quot;\n[1,2,3,4,5,6,7,8,9,10]\n$ echo &quot;$x&quot; | jq -c &#39;.[3:6]&#39;\n[4,5,6]</code></pre>\n<p>Here we use the <code>seq</code> command to generate the numbers 1-10\nseparated by commas in a JSON array. Feeding this to <code>jq</code> on\nits standard input with the slice request \'<code>.[3:6]</code>\' results\nin a sub-array from element 3 (containing value 4), up to <em>but not\nincluding</em> element 6 (containing 7). Note that using the\n<code>\'-c\'</code> option generates compact output, as we discussed in\nthe last episode.</p>\n<p>For a string, the idea is similar, as in:</p>\n<pre><code>$ echo &#39;&quot;Hacker Public Radio&quot;&#39; | jq &#39;.[7:10]&#39;\n&quot;Pub&quot;</code></pre>\n<p>Notice that we provide the JSON string quotes inside single quotes\nfollowing <code>echo</code>. The filter \'<code>.[7:10]</code>\' starts\nfrom element 7 (letter \"P\") up to <em>but not including</em> element 10\n(letter \"l\").</p>\n<p>Both of the numbers may be negative, meaning that they are offsets\nfrom the end of the array or string.</p>\n<p>So, using \'<code>.[-7:-4]</code>\' in the array example gives the same\nresult as \'<code>.[3:6]</code>\', as do \'<code>.[3:-4]</code>\' and\n\'<code>.[-7:6]</code>\'. This example uses the <code>x</code> variable\ncreated earlier:</p>\n<pre><code>$ for f in &#39;.[-7:-4]&#39; &#39;.[3:6]&#39; &#39;.[3:-4]&#39; &#39;.[-7:6]&#39;; do\n&gt; echo &quot;$x&quot; | jq -c  &quot;$f&quot;\n&gt; done\n[4,5,6]\n[4,5,6]\n[4,5,6]\n[4,5,6]</code></pre>\n<p>Similarly, using \'<code>.[-12:-9]</code>\' gives the same result as\n\'<code>.[7:10]</code>\' when used with the string.</p>\n<pre><code>$ echo &#39;&quot;Hacker Public Radio&quot;&#39; | jq &#39;.[-12:-9]&#39;\n&quot;Pub&quot;</code></pre>\n<p>As a point of interest, I wrote a little Bash loop to show the\npositive and negative offsets of the characters in the test string -\njust to help me visualise them. See the <mark>footnote</mark><a\nhref=\"#fn1\" class=\"footnote-ref\" id=\"fnref1\"\nrole=\"doc-noteref\"><sup>1</sup></a> for details.</p>\n<p>Finally, here is how to get the last character of the example string\nusing positive and negative offsets:</p>\n<pre><code>$ echo &#39;&quot;Hacker Public Radio&quot;&#39; | jq &#39;.[18:]&#39;\n&quot;o&quot;\n$ echo &#39;&quot;Hacker Public Radio&quot;&#39; | jq &#39;.[-1:]&#39;\n&quot;o&quot;</code></pre>\n<h3 id=\"arrayobject-value-iterator-.\">Array/Object Value Iterator:\n<code>.[]</code></h3>\n<p>This filter generates values from iterating through an array or an\nobject. It is similar to the <code>.[index]</code> syntax we have\nalready seen, but it returns all of the array elements:</p>\n<pre><code>$ arr=&#39;[&quot;Kohinoor&quot;,&quot;plastered&quot;,&quot;downloadable&quot;]&#39;\n$ echo &quot;$arr&quot; | jq &#39;.[]&#39;\n&quot;Kohinoor&quot;\n&quot;plastered&quot;\n&quot;downloadable&quot;</code></pre>\n<p>The strings in the array are returned separately, not as an array.\nThis is because this is an iterator, and its output can be linked to\nother filters.</p>\n<p>It can also be used to iterate over <u>values</u> in an object:</p>\n<pre><code>$ obj=&#39;{&quot;name&quot;: &quot;Hacker Public Radio&quot;, &quot;type&quot;: &quot;Podcast&quot;}&#39;\n$ echo &quot;$obj&quot; | jq &#39;.[]&#39;\n&quot;Hacker Public Radio&quot;\n&quot;Podcast&quot;</code></pre>\n<p>This iterator does not work on other data types, just arrays and\nobjects.</p>\n<p>An alternative iterator <code>.[]?</code> exists which ignores\nerrors:</p>\n<pre><code>$ echo &quot;true&quot; | jq &#39;.[]&#39;\njq: error (at &lt;stdin&gt;:1): Cannot iterate over boolean (true)</code></pre>\n<p>Ignoring errors:</p>\n<pre><code>$ echo &quot;true&quot; | jq &#39;.[]?&#39;</code></pre>\n<h2 id=\"using-multiple-filters\">Using multiple filters</h2>\n<p>There are two operators that can be placed between filters to combine\ntheir effects: the <strong>comma</strong> (<code>\',\'</code>) and the\n<strong>pipe</strong> (<code>\'|\'</code>).</p>\n<h3 id=\"comma-operator\">Comma operator</h3>\n<p>The comma (<code>\',\'</code>) operator allows you to chain together\nmultiple filters. As we already know, the <code>jq</code> program feeds\nthe input it receives on standard input or from a file into whatever\nfilter it is given. So far we have only seen a single filter being\nused.</p>\n<p>With the comma operator the input to <code>jq</code> is fed to all of\nthe filters separated by commas in left to right order. The result is a\nconcatenation of the output of all of these filters.</p>\n<p>For example, if we take the output from the HPR stats page which was\nmentioned in <a\nhref=\"https://hackerpublicradio.org/eps/hpr4104/index.html\">part 1</a>\nof this series of shows, and store it in a file called\n<code>stats.json</code> we can view two separate parts of the JSON like\nthis:</p>\n<pre><code>$ curl -s https://hub.hackerpublicradio.org/stats.json -O\n\n$ jq &#39;.shows , .queue&#39; stats.json\n{\n  &quot;total&quot;: 4756,\n  &quot;twat&quot;: 300,\n  &quot;hpr&quot;: 4456,\n  &quot;duration&quot;: 7640311,\n  &quot;human_duration&quot;: &quot;0 Years, 2 months, 29 days, 10 hours, 18 minutes and 31 seconds&quot;\n}\n{\n  &quot;number_future_hosts&quot;: 6,\n  &quot;number_future_shows&quot;: 18,\n  &quot;unprocessed_comments&quot;: 0,\n  &quot;submitted_shows&quot;: 0,\n  &quot;shows_in_workflow&quot;: 51,\n  &quot;reserve&quot;: 20\n}</code></pre>\n<p>This applies the filter <code>.shows</code> (an <em>object\nidentifier-index</em> filter, see <a\nhref=\"https://hackerpublicradio.org/eps/hpr4114/index.html\">part 2</a>)\nwhich returns the contents of the object with that name, then it applies\nfilter <code>.queue</code> which returns the relevant JSON object.</p>\n<h3 id=\"pipe-operator\">Pipe operator</h3>\n<p>The pipe (<code>\'|\'</code>) operator combines filters by feeding the\noutput of the first (left-most) filter of a pair into the second\n(right-most) filter of a pair. This is analogous to the way the same\nsymbol works in the Unix shell.</p>\n<p>For example, if we extract the <code>\'shows\'</code> object from\n<code>stats.json</code>, we can then extract the value of the\n<code>total\'</code> key\' as follows:</p>\n<pre><code>$ jq &#39;.shows | .total&#39; stats.json\n4756</code></pre>\n<p>Interestingly, chaining two <em>object identifier-index</em> filters\ngives the same output:</p>\n<pre><code>$ jq &#39;.shows.total&#39; stats.json\n4756</code></pre>\n<p>(Note: to answer the question in the audio, the two filters shown can\nalso be written as <code>\'.shows .total\'</code> <u>with</u> intervening\nspaces.)</p>\n<p>We will see the pipe operator being used in many instances in\nupcoming episodes.</p>\n<h2 id=\"parentheses\">Parentheses</h2>\n<p>It is possible to use parentheses in filter expressions in a similar\nway to using them in arithmetic, where they group parts together and can\nchange the normal order of operations. They can be used in other\ncontexts too. The example is a simple arithmetic one:</p>\n<pre><code>$ jq &#39;.shows.total + 2 / 2&#39; stats.json\n4757\n$ jq &#39;(.shows.total + 2) / 2&#39; stats.json\n2379</code></pre>\n<h2 id=\"examples\">Examples</h2>\n<h3 id=\"finding-country-data-1\">Finding country data #1</h3>\n<p>Here we are using a file called <code>countries.json</code> obtained\nfrom the <a href=\"https://github.com/mledoze/countries\">GitHub\nproject</a> listed below. This file is around 39,000 lines long so it is\nnot being distributed with the show. However, it\'s quite interesting and\nyou are encouraged to grab a copy and experiment with it.</p>\n<p>I will show ways in which the structure can be examined and reported\nwith <code>jq</code> in a later show, but for now I will show an example\nof extracting data:</p>\n<pre><code>$ jq &#39;.[42] | .name.common , .capital.[]&#39; countries.json\n&quot;Switzerland&quot;\n&quot;Bern&quot;</code></pre>\n<ul>\n<li>The file contains an array of country objects; the one with index 42\nis Switzerland.</li>\n<li>The name of the country is in an object called <code>\"name\"</code>,\nwith the common name in a keyed field called <code>\"common\"</code>, thus\nthe filter <code>.name.common</code>.</li>\n<li>In this country object is an object called <code>\"capital\"</code>\nholding an array containing the name (or names) of the capital city (or\ncities). The filter <code>.capital.[]</code> obtains and displays the\ncontents of the array.</li>\n<li>Note that we used a <code>comma</code> operator between the\nfilters.</li>\n</ul>\n<h3 id=\"finding-country-data-2\">Finding country data #2</h3>\n<p>Another search of the <code>countries.json</code> file, this time\nlooking at the languages spoken. There is an object called\n<code>\"languages\"</code> which contains abbreviated language names as\nkeys and full names as the values:</p>\n<pre><code>$ jq &#39;.[42] | .name.common , .capital.[] , .languages&#39; countries.json\n&quot;Switzerland&quot;\n&quot;Bern&quot;\n{\n  &quot;fra&quot;: &quot;French&quot;,\n  &quot;gsw&quot;: &quot;Swiss German&quot;,\n  &quot;ita&quot;: &quot;Italian&quot;,\n  &quot;roh&quot;: &quot;Romansh&quot;\n}</code></pre>\n<ul>\n<li>Using the filter <code>.languages</code> we get the whole object,\nhowever, using the iterator <code>.[]</code> we get just the\nvalues.</li>\n</ul>\n<pre><code>$ jq &#39;.[42] | .name.common , .capital.[] , .languages.[]&#39; countries.json\n&quot;Switzerland&quot;\n&quot;Bern&quot;\n&quot;French&quot;\n&quot;Swiss German&quot;\n&quot;Italian&quot;\n&quot;Romansh&quot;</code></pre>\n<ul>\n<li>This has some shortcomings, we need the <em>construction</em>\ncapabilities of <code>jq</code> to generate more meaningful output.</li>\n</ul>\n<h2 id=\"next-episode\">Next episode</h2>\n<p>In the next episode we will look at <em>construction</em> - how new\nJSON output data can be generated from input data.</p>\n<h2 id=\"links\">Links</h2>\n<ul>\n<li>jq:\n<ul>\n<li><a href=\"https://jqlang.github.io/jq/manual/\">The <code>jq</code>\nmanual</a></li>\n</ul></li>\n</ul>\n<ul>\n<li>Test data sources:\n<ul>\n<li><a href=\"https://hub.hackerpublicradio.org/stats.json\">HPR\nStatistics</a></li>\n<li><a href=\"https://randomuser.me/documentation\">Random User Generator\nAPI</a></li>\n<li><a href=\"https://github.com/mledoze/countries\">Github project\n<code>mledoze/countries</code></a></li>\n</ul></li>\n</ul>\n<ul>\n<li><a href=\"https://en.wikipedia.org/wiki/Romansh_language\">Romansh\nlanguage</a></li>\n</ul>\n<ul>\n<li>Previous episodes:\n<ul>\n<li><a\nhref=\"https://hackerpublicradio.org/eps/hpr4104/index.html\">Introduction\nto jq - part 1</a></li>\n<li><a\nhref=\"https://hackerpublicradio.org/eps/hpr4114/index.html\">Introduction\nto jq - part 2</a></li>\n</ul></li>\n</ul>\n<aside id=\"footnotes\" class=\"footnotes footnotes-end-of-document\"\nrole=\"doc-endnotes\">\n<hr />\n<ol>\n<li id=\"fn1\"><p><strong>Footnote</strong>: A Bash loop to show positive\nand negative index values relating to an example string:</p>\n<pre><code>$ y=&#39;Hacker Public Radio&#39;\n$ for ((i=0,j=${#y}; i&lt;&quot;${#y}&quot;; i++,j--)); do printf &#39;%02d: -%02d: %s&bsol;n&#39; &quot;$i&quot; &quot;$j&quot; &quot;${y:$i:1}&quot;; done\n00: -19: H\n01: -18: a\n02: -17: c\n03: -16: k\n04: -15: e\n05: -14: r\n06: -13:\n07: -12: P\n08: -11: u\n09: -10: b\n10: -09: l\n11: -08: i\n12: -07: c\n13: -06:\n14: -05: R\n15: -04: a\n16: -03: d\n17: -02: i\n18: -01: o</code></pre>\n<p>Note that variable <code>y</code> doesn\'t contain a valid JSON\nstring; we are just counting characters here to demonstrate the offsets\nthat can be used when slicing a string! <a href=\"#fnref1\"\nclass=\"footnote-back\" role=\"doc-backlink\">↩︎</a></p></li>\n</ol>\n</aside>\n</article>\n',225,0,1,'CC-BY-SA','JSON,JavaScript Object Notation,jq,jq filter,jq language',0,0,1),
(4228,'2024-10-16','Auditing Audio Files For Youtube',244,'I detail a technique to ensure all music used on my Youtube channel is free from copyright claims','<ul>\n<li>AudioAudit:<br />\n<a href=\"https://github.com/anim8or/AudioAuit\"\nclass=\"uri\">https://github.com/anim8or/AudioAuit</a></li>\n<li>My YouTube Channel:<br />\n<a href=\"https://www.youtube.com/@TheTitaniumBunker\"\nclass=\"uri\">https://www.youtube.com/@TheTitaniumBunker</a></li>\n</ul>\n',430,38,0,'CC-BY-SA','Audio,Video,Youtube,Abraham Wald,Operational Research',0,0,1),
(4229,'2024-10-17','Neurodiversity and Hacking',1289,'Lee talks to Matthew about the link between neurodiversity and hacking.','<p>Lee talks to Matthew about the link between neurodiversity and using\nsystems in ways they were not designed for.</p>\n<p>A short biography:</p>\n<p>Matthew Bellringer is a neurodiversity and innovation specialist who\nspecialises in supporting work that addresses problems from a unique\nperspective, co-production, and regenerative working practices. More\ndetails on <a href=\"https://www.matthewbellringer.com\">Matthew\'s\nwebsite</a>.</p>\n<p>Matthew is also Chair and Co-founder of NeurodiverseIT, a group for\nneurodivergent IT professionals within <a\nhref=\"https://www.bcs.org/\">BCS, the Chartered Institute of IT</a> and\nthe organiser and founder of <a href=\"https://curiousbeing.org/\">Curious\nBeing</a>, a community for unconventional people who want to make the\nworld a better place. Matthew is a late-discovery autistic ADHDer.</p>\n',403,0,0,'CC-BY-SA','neurodiversity, hacking',0,0,1),
(4481,'2025-10-06','HPR Community News for September 2025',4993,'HPR Volunteers talk about shows released and comments posted in September 2025','<h2>New hosts</h2> <p> Welcome to our new hosts: <br />      <a href=\"https://hackerpublicradio.org/correspondents/0450.html\" target=\"_blank\">Wojciech</a>,      <a href=\"https://hackerpublicradio.org/correspondents/0451.html\" target=\"_blank\">Major_Ursa</a>. </p>  <h2>Last Month\'s Shows</h2> <table id=\"t01\"> <tr> <th>Id</th> <th>Day</th> <th>Date</th> <th>Title</th> <th>Host</th> </tr> <tr> <td><strong><a href=\"https://hackerpublicradio.org/eps/hpr4456/index.html\" target=\"_blank\">4456</a></strong></td> <td>Mon</td> <td class=\"shrink\">2025-09-01</td> <td><a href=\"https://hackerpublicradio.org/eps/hpr4456/index.html\" target=\"_blank\">HPR Community News for August 2025</a></td> <td><a href=\"https://hackerpublicradio.org/correspondents/0159.html\" target=\"_blank\">HPR Volunteers</a></td> </tr> <tr> <td><strong><a href=\"https://hackerpublicradio.org/eps/hpr4457/index.html\" target=\"_blank\">4457</a></strong></td> <td>Tue</td> <td class=\"shrink\">2025-09-02</td> <td><a href=\"https://hackerpublicradio.org/eps/hpr4457/index.html\" target=\"_blank\">doodoo deuce </a></td> <td><a href=\"https://hackerpublicradio.org/correspondents/0243.html\" target=\"_blank\">Jezra</a></td> </tr> <tr> <td><strong><a href=\"https://hackerpublicradio.org/eps/hpr4458/index.html\" target=\"_blank\">4458</a></strong></td> <td>Wed</td> <td class=\"shrink\">2025-09-03</td> <td><a href=\"https://hackerpublicradio.org/eps/hpr4458/index.html\" target=\"_blank\">Creating an animation in Powerpoint</a></td> <td><a href=\"https://hackerpublicradio.org/correspondents/0430.html\" target=\"_blank\">Dave Hingley</a></td> </tr> <tr> <td><strong><a href=\"https://hackerpublicradio.org/eps/hpr4459/index.html\" target=\"_blank\">4459</a></strong></td> <td>Thu</td> <td class=\"shrink\">2025-09-04</td> <td><a href=\"https://hackerpublicradio.org/eps/hpr4459/index.html\" target=\"_blank\">How I got into tech</a></td> <td><a href=\"https://hackerpublicradio.org/correspondents/0450.html\" target=\"_blank\">Wojciech</a></td> </tr> <tr> <td><strong><a href=\"https://hackerpublicradio.org/eps/hpr4460/index.html\" target=\"_blank\">4460</a></strong></td> <td>Fri</td> <td class=\"shrink\">2025-09-05</td> <td><a href=\"https://hackerpublicradio.org/eps/hpr4460/index.html\" target=\"_blank\">Arthur C. Clarke</a></td> <td><a href=\"https://hackerpublicradio.org/correspondents/0198.html\" target=\"_blank\">Ahuka</a></td> </tr> <tr> <td><strong><a href=\"https://hackerpublicradio.org/eps/hpr4461/index.html\" target=\"_blank\">4461</a></strong></td> <td>Mon</td> <td class=\"shrink\">2025-09-08</td> <td><a href=\"https://hackerpublicradio.org/eps/hpr4461/index.html\" target=\"_blank\">Battle of the mic\'s</a></td> <td><a href=\"https://hackerpublicradio.org/correspondents/0403.html\" target=\"_blank\">Lee</a></td> </tr> <tr> <td><strong><a href=\"https://hackerpublicradio.org/eps/hpr4462/index.html\" target=\"_blank\">4462</a></strong></td> <td>Tue</td> <td class=\"shrink\">2025-09-09</td> <td><a href=\"https://hackerpublicradio.org/eps/hpr4462/index.html\" target=\"_blank\">HPR Beer Garden - Intro and Dessert Stouts </a></td> <td><a href=\"https://hackerpublicradio.org/correspondents/0296.html\" target=\"_blank\">Kevie</a></td> </tr> <tr> <td><strong><a href=\"https://hackerpublicradio.org/eps/hpr4463/index.html\" target=\"_blank\">4463</a></strong></td> <td>Wed</td> <td class=\"shrink\">2025-09-10</td> <td><a href=\"https://hackerpublicradio.org/eps/hpr4463/index.html\" target=\"_blank\">Software Freedom Day NJ, briefly.  </a></td> <td><a href=\"https://hackerpublicradio.org/correspondents/0444.html\" target=\"_blank\">murph</a></td> </tr> <tr> <td><strong><a href=\"https://hackerpublicradio.org/eps/hpr4464/index.html\" target=\"_blank\">4464</a></strong></td> <td>Thu</td> <td class=\"shrink\">2025-09-11</td> <td><a href=\"https://hackerpublicradio.org/eps/hpr4464/index.html\" target=\"_blank\">Replacing the Trackpad on my Laptop</a></td> <td><a href=\"https://hackerpublicradio.org/correspondents/0152.html\" target=\"_blank\">Claudio Miranda</a></td> </tr> <tr> <td><strong><a href=\"https://hackerpublicradio.org/eps/hpr4465/index.html\" target=\"_blank\">4465</a></strong></td> <td>Fri</td> <td class=\"shrink\">2025-09-12</td> <td><a href=\"https://hackerpublicradio.org/eps/hpr4465/index.html\" target=\"_blank\">Playing Civilization V, Part 3</a></td> <td><a href=\"https://hackerpublicradio.org/correspondents/0198.html\" target=\"_blank\">Ahuka</a></td> </tr> <tr> <td><strong><a href=\"https://hackerpublicradio.org/eps/hpr4466/index.html\" target=\"_blank\">4466</a></strong></td> <td>Mon</td> <td class=\"shrink\">2025-09-15</td> <td><a href=\"https://hackerpublicradio.org/eps/hpr4466/index.html\" target=\"_blank\">HPR Music project - Walking tune to(wards) a friend</a></td> <td><a href=\"https://hackerpublicradio.org/correspondents/0422.html\" target=\"_blank\">FredBlack</a></td> </tr> <tr> <td><strong><a href=\"https://hackerpublicradio.org/eps/hpr4467/index.html\" target=\"_blank\">4467</a></strong></td> <td>Tue</td> <td class=\"shrink\">2025-09-16</td> <td><a href=\"https://hackerpublicradio.org/eps/hpr4467/index.html\" target=\"_blank\">A small Odoo usage intro and a larger technical bit</a></td> <td><a href=\"https://hackerpublicradio.org/correspondents/0369.html\" target=\"_blank\">Jeroen Baten</a></td> </tr> <tr> <td><strong><a href=\"https://hackerpublicradio.org/eps/hpr4468/index.html\" target=\"_blank\">4468</a></strong></td> <td>Wed</td> <td class=\"shrink\">2025-09-17</td> <td><a href=\"https://hackerpublicradio.org/eps/hpr4468/index.html\" target=\"_blank\">AI Trap and Fix</a></td> <td><a href=\"https://hackerpublicradio.org/correspondents/0318.html\" target=\"_blank\">Archer72</a></td> </tr> <tr> <td><strong><a href=\"https://hackerpublicradio.org/eps/hpr4469/index.html\" target=\"_blank\">4469</a></strong></td> <td>Thu</td> <td class=\"shrink\">2025-09-18</td> <td><a href=\"https://hackerpublicradio.org/eps/hpr4469/index.html\" target=\"_blank\">Disagree With Me - 3 Statements About Life Living</a></td> <td><a href=\"https://hackerpublicradio.org/correspondents/0441.html\" target=\"_blank\">Antoine</a></td> </tr> <tr> <td><strong><a href=\"https://hackerpublicradio.org/eps/hpr4470/index.html\" target=\"_blank\">4470</a></strong></td> <td>Fri</td> <td class=\"shrink\">2025-09-19</td> <td><a href=\"https://hackerpublicradio.org/eps/hpr4470/index.html\" target=\"_blank\">HPR is twenty years old today. </a></td> <td><a href=\"https://hackerpublicradio.org/correspondents/0403.html\" target=\"_blank\">Lee</a></td> </tr> <tr> <td><strong><a href=\"https://hackerpublicradio.org/eps/hpr4471/index.html\" target=\"_blank\">4471</a></strong></td> <td>Mon</td> <td class=\"shrink\">2025-09-22</td> <td><a href=\"https://hackerpublicradio.org/eps/hpr4471/index.html\" target=\"_blank\">Ti-82 Makes Music and Password Manager</a></td> <td><a href=\"https://hackerpublicradio.org/correspondents/0036.html\" target=\"_blank\">operat0r</a></td> </tr> <tr> <td><strong><a href=\"https://hackerpublicradio.org/eps/hpr4472/index.html\" target=\"_blank\">4472</a></strong></td> <td>Tue</td> <td class=\"shrink\">2025-09-23</td> <td><a href=\"https://hackerpublicradio.org/eps/hpr4472/index.html\" target=\"_blank\">Cheap Yellow Display Project: Introduction to the Cheap Yellow Display </a></td> <td><a href=\"https://hackerpublicradio.org/correspondents/0394.html\" target=\"_blank\">Trey</a></td> </tr> <tr> <td><strong><a href=\"https://hackerpublicradio.org/eps/hpr4473/index.html\" target=\"_blank\">4473</a></strong></td> <td>Wed</td> <td class=\"shrink\">2025-09-24</td> <td><a href=\"https://hackerpublicradio.org/eps/hpr4473/index.html\" target=\"_blank\">HPR Beer Garden 2 - Session IPA</a></td> <td><a href=\"https://hackerpublicradio.org/correspondents/0296.html\" target=\"_blank\">Kevie</a></td> </tr> <tr> <td><strong><a href=\"https://hackerpublicradio.org/eps/hpr4474/index.html\" target=\"_blank\">4474</a></strong></td> <td>Thu</td> <td class=\"shrink\">2025-09-25</td> <td><a href=\"https://hackerpublicradio.org/eps/hpr4474/index.html\" target=\"_blank\">Hacker Poetry - 001</a></td> <td><a href=\"https://hackerpublicradio.org/correspondents/0451.html\" target=\"_blank\">Major_Ursa</a></td> </tr> <tr> <td><strong><a href=\"https://hackerpublicradio.org/eps/hpr4475/index.html\" target=\"_blank\">4475</a></strong></td> <td>Fri</td> <td class=\"shrink\">2025-09-26</td> <td><a href=\"https://hackerpublicradio.org/eps/hpr4475/index.html\" target=\"_blank\">The true audio file for walking tune to(wards) a friend</a></td> <td><a href=\"https://hackerpublicradio.org/correspondents/0422.html\" target=\"_blank\">FredBlack</a></td> </tr> <tr> <td><strong><a href=\"https://hackerpublicradio.org/eps/hpr4476/index.html\" target=\"_blank\">4476</a></strong></td> <td>Mon</td> <td class=\"shrink\">2025-09-29</td> <td><a href=\"https://hackerpublicradio.org/eps/hpr4476/index.html\" target=\"_blank\">Does AI cause brain damage?</a></td> <td><a href=\"https://hackerpublicradio.org/correspondents/0433.html\" target=\"_blank\">Trollercoaster</a></td> </tr> <tr> <td><strong><a href=\"https://hackerpublicradio.org/eps/hpr4477/index.html\" target=\"_blank\">4477</a></strong></td> <td>Tue</td> <td class=\"shrink\">2025-09-30</td> <td><a href=\"https://hackerpublicradio.org/eps/hpr4477/index.html\" target=\"_blank\">doodoo 3 a deuce plus 1</a></td> <td><a href=\"https://hackerpublicradio.org/correspondents/0243.html\" target=\"_blank\">Jezra</a></td> </tr> </table>  <h2>Comments this month</h2>  <p>These are comments which have been made during the past month, either to shows released during the month or to past shows. There are 22 comments in total.</p> <h3>Past shows</h3> <p>There are 4 comments on 4 previous shows:</p> <ul> <li><strong><a href=\"https://hackerpublicradio.org/eps/hpr4393/index.html#comments\" target=\"_blank\">hpr4393</a></strong> (2025-06-04) \"<em>Journal like you mean it.</em>\" by <a href=\"https://hackerpublicradio.org/correspondents/0391.html\" target=\"_blank\">Some Guy On The Internet</a>.<br/> <li style=\"list-style: none; display: inline\"> <ul> <li> <a href=\"https://hackerpublicradio.org/eps/hpr4393/index.html#comment_4425\" target=\"_blank\">Comment 1</a>: Archer72 on 2025-09-01: \"Journaling\"</li></ul><br/> </li><li><strong><a href=\"https://hackerpublicradio.org/eps/hpr4442/index.html#comments\" target=\"_blank\">hpr4442</a></strong> (2025-08-12) \"<em>Orthopedagogiek - what it is.</em>\" by <a href=\"https://hackerpublicradio.org/correspondents/0449.html\" target=\"_blank\">Manon</a>.<br/> <li style=\"list-style: none; display: inline\"> <ul> <li> <a href=\"https://hackerpublicradio.org/eps/hpr4442/index.html#comment_4433\" target=\"_blank\">Comment 4</a>: Manon Fallon on 2025-09-07: \"Thank you\"</li></ul><br/> </li><li><strong><a href=\"https://hackerpublicradio.org/eps/hpr4445/index.html#comments\" target=\"_blank\">hpr4445</a></strong> (2025-08-15) \"<em>doodoo one</em>\" by <a href=\"https://hackerpublicradio.org/correspondents/0243.html\" target=\"_blank\">Jezra</a>.<br/> <li style=\"list-style: none; display: inline\"> <ul> <li> <a href=\"https://hackerpublicradio.org/eps/hpr4445/index.html#comment_4428\" target=\"_blank\">Comment 3</a>: Windigo on 2025-09-03: \"Singular vs plural functions\"</li></ul><br/> </li><li><strong><a href=\"https://hackerpublicradio.org/eps/hpr4453/index.html#comments\" target=\"_blank\">hpr4453</a></strong> (2025-08-27) \"<em>IPv6 for Luddites</em>\" by <a href=\"https://hackerpublicradio.org/correspondents/0288.html\" target=\"_blank\">beni</a>.<br/> <li style=\"list-style: none; display: inline\"> <ul> <li> <a href=\"https://hackerpublicradio.org/eps/hpr4453/index.html#comment_4435\" target=\"_blank\">Comment 5</a>: Paulj on 2025-09-09: \"Fantastic show - thank you\"</li> <li> <a href=\"https://hackerpublicradio.org/eps/hpr4453/index.html#comment_4436\" target=\"_blank\">Comment 6</a>: Dave Morriss on 2025-09-09: \"I was surprised to find that my ISP offers IPv6\"</li></ul><br/> </li></ul> <h3>This month\'s shows</h3> <p>There are 18 comments on 10 of this month\'s shows:</p> <ul><li><strong><a href=\"https://hackerpublicradio.org/eps/hpr4456/index.html#comments\" target=\"_blank\">hpr4456</a></strong> (2025-09-01) \"<em>HPR Community News for August 2025</em>\" by <a href=\"https://hackerpublicradio.org/correspondents/0159.html\" target=\"_blank\">HPR Volunteers</a>.</li> <li style=\"list-style: none; display: inline\"> <ul><li><a href=\"https://hackerpublicradio.org/eps/hpr4456/index.html#comment_4427\" target=\"_blank\">Comment 1</a>: candycanearter07 on 2025-09-01: \"show doubt\"</li><li><a href=\"https://hackerpublicradio.org/eps/hpr4456/index.html#comment_4438\" target=\"_blank\">Comment 2</a>: أحمد المحمودي on 2025-09-12: \"Pronouncing my name\"</li><li><a href=\"https://hackerpublicradio.org/eps/hpr4456/index.html#comment_4440\" target=\"_blank\">Comment 3</a>: Ken Fallon on 2025-09-16: \"Can I have an example\"</li></ul><br/> </li><li><strong><a href=\"https://hackerpublicradio.org/eps/hpr4459/index.html#comments\" target=\"_blank\">hpr4459</a></strong> (2025-09-04) \"<em>How I got into tech</em>\" by <a href=\"https://hackerpublicradio.org/correspondents/0450.html\" target=\"_blank\">Wojciech</a>.</li> <li style=\"list-style: none; display: inline\"> <ul><li><a href=\"https://hackerpublicradio.org/eps/hpr4459/index.html#comment_4426\" target=\"_blank\">Comment 1</a>: Archer72 on 2025-09-01: \"First show\"</li><li><a href=\"https://hackerpublicradio.org/eps/hpr4459/index.html#comment_4429\" target=\"_blank\">Comment 2</a>: Antoine on 2025-09-04: \"Welcome! \"</li><li><a href=\"https://hackerpublicradio.org/eps/hpr4459/index.html#comment_4430\" target=\"_blank\">Comment 3</a>: Henrik Hemrin on 2025-09-04: \"Thanks and welcome\"</li><li><a href=\"https://hackerpublicradio.org/eps/hpr4459/index.html#comment_4431\" target=\"_blank\">Comment 4</a>: Andrew on 2025-09-04: \"Excellent first show...\"</li><li><a href=\"https://hackerpublicradio.org/eps/hpr4459/index.html#comment_4434\" target=\"_blank\">Comment 5</a>: paulj on 2025-09-09: \"Welcome, and thanks!\"</li></ul><br/> </li><li><strong><a href=\"https://hackerpublicradio.org/eps/hpr4461/index.html#comments\" target=\"_blank\">hpr4461</a></strong> (2025-09-08) \"<em>Battle of the mic\'s</em>\" by <a href=\"https://hackerpublicradio.org/correspondents/0403.html\" target=\"_blank\">Lee</a>.</li> <li style=\"list-style: none; display: inline\"> <ul><li><a href=\"https://hackerpublicradio.org/eps/hpr4461/index.html#comment_4437\" target=\"_blank\">Comment 1</a>: candycanearter07 on 2025-09-12: \"Interesting dive into a topic not thought about often!\"</li></ul><br/> </li><li><strong><a href=\"https://hackerpublicradio.org/eps/hpr4462/index.html#comments\" target=\"_blank\">hpr4462</a></strong> (2025-09-09) \"<em>HPR Beer Garden - Intro and Dessert Stouts </em>\" by <a href=\"https://hackerpublicradio.org/correspondents/0296.html\" target=\"_blank\">Kevie</a>.</li> <li style=\"list-style: none; display: inline\"> <ul><li><a href=\"https://hackerpublicradio.org/eps/hpr4462/index.html#comment_4439\" target=\"_blank\">Comment 1</a>: T.A.Spinner on 2025-09-13: \"Your thoughts on hefeweizens?\"</li></ul><br/> </li><li><strong><a href=\"https://hackerpublicradio.org/eps/hpr4466/index.html#comments\" target=\"_blank\">hpr4466</a></strong> (2025-09-15) \"<em>HPR Music project - Walking tune to(wards) a friend</em>\" by <a href=\"https://hackerpublicradio.org/correspondents/0422.html\" target=\"_blank\">FredBlack</a>.</li> <li style=\"list-style: none; display: inline\"> <ul><li><a href=\"https://hackerpublicradio.org/eps/hpr4466/index.html#comment_4444\" target=\"_blank\">Comment 1</a>: candycanearter07 on 2025-09-25: \"unique idea for a show!\"</li></ul><br/> </li><li><strong><a href=\"https://hackerpublicradio.org/eps/hpr4470/index.html#comments\" target=\"_blank\">hpr4470</a></strong> (2025-09-19) \"<em>HPR is twenty years old today. </em>\" by <a href=\"https://hackerpublicradio.org/correspondents/0403.html\" target=\"_blank\">Lee</a>.</li> <li style=\"list-style: none; display: inline\"> <ul><li><a href=\"https://hackerpublicradio.org/eps/hpr4470/index.html#comment_4441\" target=\"_blank\">Comment 1</a>: quvmoh on 2025-09-20: \"congrats\"</li><li><a href=\"https://hackerpublicradio.org/eps/hpr4470/index.html#comment_4446\" target=\"_blank\">Comment 2</a>: ClaudioM on 2025-09-26: \"Happy 20th Anniversary!\"</li></ul><br/> </li><li><strong><a href=\"https://hackerpublicradio.org/eps/hpr4471/index.html#comments\" target=\"_blank\">hpr4471</a></strong> (2025-09-22) \"<em>Ti-82 Makes Music and Password Manager</em>\" by <a href=\"https://hackerpublicradio.org/correspondents/0036.html\" target=\"_blank\">operat0r</a>.</li> <li style=\"list-style: none; display: inline\"> <ul><li><a href=\"https://hackerpublicradio.org/eps/hpr4471/index.html#comment_4445\" target=\"_blank\">Comment 1</a>: candycanearter07 on 2025-09-25: \"TI calc history\"</li></ul><br/> </li><li><strong><a href=\"https://hackerpublicradio.org/eps/hpr4472/index.html#comments\" target=\"_blank\">hpr4472</a></strong> (2025-09-23) \"<em>Cheap Yellow Display Project: Introduction to the Cheap Yellow Display </em>\" by <a href=\"https://hackerpublicradio.org/correspondents/0394.html\" target=\"_blank\">Trey</a>.</li> <li style=\"list-style: none; display: inline\"> <ul><li><a href=\"https://hackerpublicradio.org/eps/hpr4472/index.html#comment_4442\" target=\"_blank\">Comment 1</a>: Archer72 on 2025-09-23: \"Following the series\"</li></ul><br/> </li><li><strong><a href=\"https://hackerpublicradio.org/eps/hpr4473/index.html#comments\" target=\"_blank\">hpr4473</a></strong> (2025-09-24) \"<em>HPR Beer Garden 2 - Session IPA</em>\" by <a href=\"https://hackerpublicradio.org/correspondents/0296.html\" target=\"_blank\">Kevie</a>.</li> <li style=\"list-style: none; display: inline\"> <ul><li><a href=\"https://hackerpublicradio.org/eps/hpr4473/index.html#comment_4443\" target=\"_blank\">Comment 1</a>: Ken Fallon on 2025-09-24: \"FLOSS Beer Tracker \"</li></ul><br/> </li><li><strong><a href=\"https://hackerpublicradio.org/eps/hpr4476/index.html#comments\" target=\"_blank\">hpr4476</a></strong> (2025-09-29) \"<em>Does AI cause brain damage?</em>\" by <a href=\"https://hackerpublicradio.org/correspondents/0433.html\" target=\"_blank\">Trollercoaster</a>.</li> <li style=\"list-style: none; display: inline\"> <ul><li><a href=\"https://hackerpublicradio.org/eps/hpr4476/index.html#comment_4447\" target=\"_blank\">Comment 1</a>: Trey on 2025-09-29: \"Excellent episode\"</li><li><a href=\"https://hackerpublicradio.org/eps/hpr4476/index.html#comment_4448\" target=\"_blank\">Comment 2</a>: Trollercoaster on 2025-09-30: \"Re: Excellent episode\"</li></ul><br/> </li></ul>  <h2>Mailing List discussions</h2> <p> Policy decisions surrounding HPR are taken by the community as a whole. This discussion takes place on the <a href=\"https://lists.hackerpublicradio.com/mailman/listinfo/hpr\" target=\"_blank\">Mailing List</a> which is open to all HPR listeners and contributors. The discussions are open and available on the HPR server under <a href=\"https://lists.hackerpublicradio.com/pipermail/hpr\">Mailman</a>. </p> <p>The threaded discussions this month can be found here:</p> <a href=\"https://lists.hackerpublicradio.com/pipermail/hpr/2025-September/thread.html\" target=\"_blank\">https://lists.hackerpublicradio.com/pipermail/hpr/2025-September/thread.html</a>  <h2>Events Calendar</h2> <p>With the kind permission of <strong>LWN.net</strong> we are linking to <a href=\"https://lwn.net/Calendar/\" target=\"_blank\">The LWN.net Community Calendar</a>.</p> <p>Quoting the site:</p> <blockquote>This is the LWN.net community event calendar, where we track events of interest to people using and developing Linux and free software. Clicking on individual events will take you to the appropriate web page.</blockquote>',159,47,1,'CC-BY-SA','Community News',0,0,1),
(4501,'2025-11-03','HPR Community News for October 2025',3018,'HPR Volunteers talk about shows released and comments posted in October 2025','<h2>New hosts</h2> <p> Welcome to our new hosts: <br />      <a href=\"https://hackerpublicradio.org/correspondents/0452.html\" target=\"_blank\">Kirbotica</a>,      <a href=\"https://hackerpublicradio.org/correspondents/0453.html\" target=\"_blank\">Thibaut</a>,      <a href=\"https://hackerpublicradio.org/correspondents/0454.html\" target=\"_blank\">candycanearter</a>. </p>  <h2>Last Month\'s Shows</h2> <table id=\"t01\"> <tr> <th>Id</th> <th>Day</th> <th>Date</th> <th>Title</th> <th>Host</th> </tr> <tr> <td><strong><a href=\"https://hackerpublicradio.org/eps/hpr4478/index.html\" target=\"_blank\">4478</a></strong></td> <td>Wed</td> <td class=\"shrink\">2025-10-01</td> <td><a href=\"https://hackerpublicradio.org/eps/hpr4478/index.html\" target=\"_blank\">YouTube Subscriptions 2025 #6</a></td> <td><a href=\"https://hackerpublicradio.org/correspondents/0198.html\" target=\"_blank\">Ahuka</a></td> </tr> <tr> <td><strong><a href=\"https://hackerpublicradio.org/eps/hpr4479/index.html\" target=\"_blank\">4479</a></strong></td> <td>Thu</td> <td class=\"shrink\">2025-10-02</td> <td><a href=\"https://hackerpublicradio.org/eps/hpr4479/index.html\" target=\"_blank\">Who is the Algernon for Whom are the Flowers?</a></td> <td><a href=\"https://hackerpublicradio.org/correspondents/0441.html\" target=\"_blank\">Antoine</a></td> </tr> <tr> <td><strong><a href=\"https://hackerpublicradio.org/eps/hpr4480/index.html\" target=\"_blank\">4480</a></strong></td> <td>Fri</td> <td class=\"shrink\">2025-10-03</td> <td><a href=\"https://hackerpublicradio.org/eps/hpr4480/index.html\" target=\"_blank\">Arthur C. Clarke Becomes Successful</a></td> <td><a href=\"https://hackerpublicradio.org/correspondents/0198.html\" target=\"_blank\">Ahuka</a></td> </tr> <tr> <td><strong><a href=\"https://hackerpublicradio.org/eps/hpr4481/index.html\" target=\"_blank\">4481</a></strong></td> <td>Mon</td> <td class=\"shrink\">2025-10-06</td> <td><a href=\"https://hackerpublicradio.org/eps/hpr4481/index.html\" target=\"_blank\">HPR Community News for September 2025</a></td> <td><a href=\"https://hackerpublicradio.org/correspondents/0159.html\" target=\"_blank\">HPR Volunteers</a></td> </tr> <tr> <td><strong><a href=\"https://hackerpublicradio.org/eps/hpr4482/index.html\" target=\"_blank\">4482</a></strong></td> <td>Tue</td> <td class=\"shrink\">2025-10-07</td> <td><a href=\"https://hackerpublicradio.org/eps/hpr4482/index.html\" target=\"_blank\">doodoo 4 the double deuce </a></td> <td><a href=\"https://hackerpublicradio.org/correspondents/0243.html\" target=\"_blank\">Jezra</a></td> </tr> <tr> <td><strong><a href=\"https://hackerpublicradio.org/eps/hpr4483/index.html\" target=\"_blank\">4483</a></strong></td> <td>Wed</td> <td class=\"shrink\">2025-10-08</td> <td><a href=\"https://hackerpublicradio.org/eps/hpr4483/index.html\" target=\"_blank\">HPR Beer Garden 3 - Porters</a></td> <td><a href=\"https://hackerpublicradio.org/correspondents/0296.html\" target=\"_blank\">Kevie</a></td> </tr> <tr> <td><strong><a href=\"https://hackerpublicradio.org/eps/hpr4484/index.html\" target=\"_blank\">4484</a></strong></td> <td>Thu</td> <td class=\"shrink\">2025-10-09</td> <td><a href=\"https://hackerpublicradio.org/eps/hpr4484/index.html\" target=\"_blank\">When Your Dentist Uses ChatControl Logic</a></td> <td><a href=\"https://hackerpublicradio.org/correspondents/0433.html\" target=\"_blank\">Trollercoaster</a></td> </tr> <tr> <td><strong><a href=\"https://hackerpublicradio.org/eps/hpr4485/index.html\" target=\"_blank\">4485</a></strong></td> <td>Fri</td> <td class=\"shrink\">2025-10-10</td> <td><a href=\"https://hackerpublicradio.org/eps/hpr4485/index.html\" target=\"_blank\">Git for Github and Gitlab</a></td> <td><a href=\"https://hackerpublicradio.org/correspondents/0318.html\" target=\"_blank\">Archer72</a></td> </tr> <tr> <td><strong><a href=\"https://hackerpublicradio.org/eps/hpr4486/index.html\" target=\"_blank\">4486</a></strong></td> <td>Mon</td> <td class=\"shrink\">2025-10-13</td> <td><a href=\"https://hackerpublicradio.org/eps/hpr4486/index.html\" target=\"_blank\">A code off my mind</a></td> <td><a href=\"https://hackerpublicradio.org/correspondents/0403.html\" target=\"_blank\">Lee</a></td> </tr> <tr> <td><strong><a href=\"https://hackerpublicradio.org/eps/hpr4487/index.html\" target=\"_blank\">4487</a></strong></td> <td>Tue</td> <td class=\"shrink\">2025-10-14</td> <td><a href=\"https://hackerpublicradio.org/eps/hpr4487/index.html\" target=\"_blank\">Is AI autistic?</a></td> <td><a href=\"https://hackerpublicradio.org/correspondents/0441.html\" target=\"_blank\">Antoine</a></td> </tr> <tr> <td><strong><a href=\"https://hackerpublicradio.org/eps/hpr4488/index.html\" target=\"_blank\">4488</a></strong></td> <td>Wed</td> <td class=\"shrink\">2025-10-15</td> <td><a href=\"https://hackerpublicradio.org/eps/hpr4488/index.html\" target=\"_blank\">Cheap Yellow Display Project Part 2: What is the problem? </a></td> <td><a href=\"https://hackerpublicradio.org/correspondents/0394.html\" target=\"_blank\">Trey</a></td> </tr> <tr> <td><strong><a href=\"https://hackerpublicradio.org/eps/hpr4489/index.html\" target=\"_blank\">4489</a></strong></td> <td>Thu</td> <td class=\"shrink\">2025-10-16</td> <td><a href=\"https://hackerpublicradio.org/eps/hpr4489/index.html\" target=\"_blank\">Hacks Poetic - Pilot Episode</a></td> <td><a href=\"https://hackerpublicradio.org/correspondents/0452.html\" target=\"_blank\">Kirbotica</a></td> </tr> <tr> <td><strong><a href=\"https://hackerpublicradio.org/eps/hpr4490/index.html\" target=\"_blank\">4490</a></strong></td> <td>Fri</td> <td class=\"shrink\">2025-10-17</td> <td><a href=\"https://hackerpublicradio.org/eps/hpr4490/index.html\" target=\"_blank\">Playing Civilization V, Part 4</a></td> <td><a href=\"https://hackerpublicradio.org/correspondents/0198.html\" target=\"_blank\">Ahuka</a></td> </tr> <tr> <td><strong><a href=\"https://hackerpublicradio.org/eps/hpr4491/index.html\" target=\"_blank\">4491</a></strong></td> <td>Mon</td> <td class=\"shrink\">2025-10-20</td> <td><a href=\"https://hackerpublicradio.org/eps/hpr4491/index.html\" target=\"_blank\">Thibaut and Ken Interview David Revoy</a></td> <td><a href=\"https://hackerpublicradio.org/correspondents/0453.html\" target=\"_blank\">Thibaut</a></td> </tr> <tr> <td><strong><a href=\"https://hackerpublicradio.org/eps/hpr4492/index.html\" target=\"_blank\">4492</a></strong></td> <td>Tue</td> <td class=\"shrink\">2025-10-21</td> <td><a href=\"https://hackerpublicradio.org/eps/hpr4492/index.html\" target=\"_blank\">How to do a distribution upgrade of an Ubuntu LTS on a Digital Ocean droplet</a></td> <td><a href=\"https://hackerpublicradio.org/correspondents/0293.html\" target=\"_blank\">Rho`n</a></td> </tr> <tr> <td><strong><a href=\"https://hackerpublicradio.org/eps/hpr4493/index.html\" target=\"_blank\">4493</a></strong></td> <td>Wed</td> <td class=\"shrink\">2025-10-22</td> <td><a href=\"https://hackerpublicradio.org/eps/hpr4493/index.html\" target=\"_blank\">HPR Beer Garden 4 - Weissbier</a></td> <td><a href=\"https://hackerpublicradio.org/correspondents/0296.html\" target=\"_blank\">Kevie</a></td> </tr> <tr> <td><strong><a href=\"https://hackerpublicradio.org/eps/hpr4494/index.html\" target=\"_blank\">4494</a></strong></td> <td>Thu</td> <td class=\"shrink\">2025-10-23</td> <td><a href=\"https://hackerpublicradio.org/eps/hpr4494/index.html\" target=\"_blank\">Exploring FUTO Keyboard</a></td> <td><a href=\"https://hackerpublicradio.org/correspondents/0441.html\" target=\"_blank\">Antoine</a></td> </tr> <tr> <td><strong><a href=\"https://hackerpublicradio.org/eps/hpr4495/index.html\" target=\"_blank\">4495</a></strong></td> <td>Fri</td> <td class=\"shrink\">2025-10-24</td> <td><a href=\"https://hackerpublicradio.org/eps/hpr4495/index.html\" target=\"_blank\">An introduction to Taskwarrior</a></td> <td><a href=\"https://hackerpublicradio.org/correspondents/0454.html\" target=\"_blank\">candycanearter</a></td> </tr> <tr> <td><strong><a href=\"https://hackerpublicradio.org/eps/hpr4496/index.html\" target=\"_blank\">4496</a></strong></td> <td>Mon</td> <td class=\"shrink\">2025-10-27</td> <td><a href=\"https://hackerpublicradio.org/eps/hpr4496/index.html\" target=\"_blank\">Stroopwafel</a></td> <td><a href=\"https://hackerpublicradio.org/correspondents/0403.html\" target=\"_blank\">Lee</a></td> </tr> <tr> <td><strong><a href=\"https://hackerpublicradio.org/eps/hpr4497/index.html\" target=\"_blank\">4497</a></strong></td> <td>Tue</td> <td class=\"shrink\">2025-10-28</td> <td><a href=\"https://hackerpublicradio.org/eps/hpr4497/index.html\" target=\"_blank\">fixing 328eforth</a></td> <td><a href=\"https://hackerpublicradio.org/correspondents/0326.html\" target=\"_blank\">Brian-in-Ohio</a></td> </tr> <tr> <td><strong><a href=\"https://hackerpublicradio.org/eps/hpr4498/index.html\" target=\"_blank\">4498</a></strong></td> <td>Wed</td> <td class=\"shrink\">2025-10-29</td> <td><a href=\"https://hackerpublicradio.org/eps/hpr4498/index.html\" target=\"_blank\">Living the Tux Life Episode 1</a></td> <td><a href=\"https://hackerpublicradio.org/correspondents/0290.html\" target=\"_blank\">Al</a></td> </tr> <tr> <td><strong><a href=\"https://hackerpublicradio.org/eps/hpr4499/index.html\" target=\"_blank\">4499</a></strong></td> <td>Thu</td> <td class=\"shrink\">2025-10-30</td> <td><a href=\"https://hackerpublicradio.org/eps/hpr4499/index.html\" target=\"_blank\">Greg Farough and Zoë Kooyman of the FSF interview Librephone lead developer Rob Savoye</a></td> <td><a href=\"https://hackerpublicradio.org/correspondents/0030.html\" target=\"_blank\">Ken Fallon</a></td> </tr> <tr> <td><strong><a href=\"https://hackerpublicradio.org/eps/hpr4500/index.html\" target=\"_blank\">4500</a></strong></td> <td>Fri</td> <td class=\"shrink\">2025-10-31</td> <td><a href=\"https://hackerpublicradio.org/eps/hpr4500/index.html\" target=\"_blank\">Arthur C. Clarke: 2001 and Sequels</a></td> <td><a href=\"https://hackerpublicradio.org/correspondents/0198.html\" target=\"_blank\">Ahuka</a></td> </tr> </table>  <h2>Comments this month</h2>  <p>These are comments which have been made during the past month, either to shows released during the month or to past shows. There are 41 comments in total.</p> <h3>Past shows</h3> <p>There are 12 comments on 7 previous shows:</p> <ul> <li><strong><a href=\"https://hackerpublicradio.org/eps/hpr4238/index.html#comments\" target=\"_blank\">hpr4238</a></strong> (2024-10-30) \"<em>Snaps are better than flatpaks</em>\" by <a href=\"https://hackerpublicradio.org/correspondents/0391.html\" target=\"_blank\">Some Guy On The Internet</a>.<br/> <li style=\"list-style: none; display: inline\"> <ul> <li> <a href=\"https://hackerpublicradio.org/eps/hpr4238/index.html#comment_4455\" target=\"_blank\">Comment 4</a>: BA on 2025-10-05: \"Not a fan of any of them.\"</li></ul><br/> </li><li><strong><a href=\"https://hackerpublicradio.org/eps/hpr4453/index.html#comments\" target=\"_blank\">hpr4453</a></strong> (2025-08-27) \"<em>IPv6 for Luddites</em>\" by <a href=\"https://hackerpublicradio.org/correspondents/0288.html\" target=\"_blank\">beni</a>.<br/> <li style=\"list-style: none; display: inline\"> <ul> <li> <a href=\"https://hackerpublicradio.org/eps/hpr4453/index.html#comment_4484\" target=\"_blank\">Comment 7</a>: Beni on 2025-10-22: \"Link to the mentioned IPv6 talk on EuroBSDcon 2025\"</li></ul><br/> </li><li><strong><a href=\"https://hackerpublicradio.org/eps/hpr4470/index.html#comments\" target=\"_blank\">hpr4470</a></strong> (2025-09-19) \"<em>HPR is twenty years old today. </em>\" by <a href=\"https://hackerpublicradio.org/correspondents/0403.html\" target=\"_blank\">Lee</a>.<br/> <li style=\"list-style: none; display: inline\"> <ul> <li> <a href=\"https://hackerpublicradio.org/eps/hpr4470/index.html#comment_4462\" target=\"_blank\">Comment 3</a>: Steve Barnes on 2025-10-12: \"Les petites félicites!\"</li></ul><br/> </li><li><strong><a href=\"https://hackerpublicradio.org/eps/hpr4474/index.html#comments\" target=\"_blank\">hpr4474</a></strong> (2025-09-25) \"<em>Hacker Poetry - 001</em>\" by <a href=\"https://hackerpublicradio.org/correspondents/0451.html\" target=\"_blank\">Major_Ursa</a>.<br/> <li style=\"list-style: none; display: inline\"> <ul> <li> <a href=\"https://hackerpublicradio.org/eps/hpr4474/index.html#comment_4449\" target=\"_blank\">Comment 1</a>: candycanearter07 on 2025-10-01: \"love it\"</li></ul><br/> </li><li><strong><a href=\"https://hackerpublicradio.org/eps/hpr4475/index.html#comments\" target=\"_blank\">hpr4475</a></strong> (2025-09-26) \"<em>The true audio file for walking tune to(wards) a friend</em>\" by <a href=\"https://hackerpublicradio.org/correspondents/0422.html\" target=\"_blank\">FredBlack</a>.<br/> <li style=\"list-style: none; display: inline\"> <ul> <li> <a href=\"https://hackerpublicradio.org/eps/hpr4475/index.html#comment_4467\" target=\"_blank\">Comment 1</a>: brian-in-ohio on 2025-10-14: \"Why fret about frets?\"</li> <li> <a href=\"https://hackerpublicradio.org/eps/hpr4475/index.html#comment_4468\" target=\"_blank\">Comment 2</a>: Folky on 2025-10-15: \"Frets?\"</li></ul><br/> </li><li><strong><a href=\"https://hackerpublicradio.org/eps/hpr4476/index.html#comments\" target=\"_blank\">hpr4476</a></strong> (2025-09-29) \"<em>Does AI cause brain damage?</em>\" by <a href=\"https://hackerpublicradio.org/correspondents/0433.html\" target=\"_blank\">Trollercoaster</a>.<br/> <li style=\"list-style: none; display: inline\"> <ul> <li> <a href=\"https://hackerpublicradio.org/eps/hpr4476/index.html#comment_4450\" target=\"_blank\">Comment 3</a>: enistello on 2025-10-01: \"Wonderful episode\"</li> <li> <a href=\"https://hackerpublicradio.org/eps/hpr4476/index.html#comment_4452\" target=\"_blank\">Comment 4</a>: Trollercoaster on 2025-10-02: \"Re: Wondeful episode\"</li></ul><br/> </li><li><strong><a href=\"https://hackerpublicradio.org/eps/hpr4477/index.html#comments\" target=\"_blank\">hpr4477</a></strong> (2025-09-30) \"<em>doodoo 3 a deuce plus 1</em>\" by <a href=\"https://hackerpublicradio.org/correspondents/0243.html\" target=\"_blank\">Jezra</a>.<br/> <li style=\"list-style: none; display: inline\"> <ul> <li> <a href=\"https://hackerpublicradio.org/eps/hpr4477/index.html#comment_4453\" target=\"_blank\">Comment 1</a>: candycanearter07 on 2025-10-02: \"cool app but\"</li> <li> <a href=\"https://hackerpublicradio.org/eps/hpr4477/index.html#comment_4456\" target=\"_blank\">Comment 2</a>: Archer72 on 2025-10-05: \"Re: cool app\"</li> <li> <a href=\"https://hackerpublicradio.org/eps/hpr4477/index.html#comment_4457\" target=\"_blank\">Comment 3</a>: candycanearter07 on 2025-10-06: \"Re: Re: cool app\"</li> <li> <a href=\"https://hackerpublicradio.org/eps/hpr4477/index.html#comment_4459\" target=\"_blank\">Comment 4</a>: أحمد المحمودي on 2025-10-07: \"I use todoman\"</li></ul><br/> </li></ul> <h3>This month\'s shows</h3> <p>There are 29 comments on 12 of this month\'s shows:</p> <ul><li><strong><a href=\"https://hackerpublicradio.org/eps/hpr4478/index.html#comments\" target=\"_blank\">hpr4478</a></strong> (2025-10-01) \"<em>YouTube Subscriptions 2025 #6</em>\" by <a href=\"https://hackerpublicradio.org/correspondents/0198.html\" target=\"_blank\">Ahuka</a>.</li> <li style=\"list-style: none; display: inline\"> <ul><li><a href=\"https://hackerpublicradio.org/eps/hpr4478/index.html#comment_4451\" target=\"_blank\">Comment 1</a>: Anonymous 27 on 2025-10-02: \"Excellent recommendations\"</li></ul><br/> </li><li><strong><a href=\"https://hackerpublicradio.org/eps/hpr4479/index.html#comments\" target=\"_blank\">hpr4479</a></strong> (2025-10-02) \"<em>Who is the Algernon for Whom are the Flowers?</em>\" by <a href=\"https://hackerpublicradio.org/correspondents/0441.html\" target=\"_blank\">Antoine</a>.</li> <li style=\"list-style: none; display: inline\"> <ul><li><a href=\"https://hackerpublicradio.org/eps/hpr4479/index.html#comment_4454\" target=\"_blank\">Comment 1</a>: Trey on 2025-10-02: \"Very interesting\"</li><li><a href=\"https://hackerpublicradio.org/eps/hpr4479/index.html#comment_4458\" target=\"_blank\">Comment 2</a>: Anonymous 27 on 2025-10-06: \"Required Futurama reference\"</li></ul><br/> </li><li><strong><a href=\"https://hackerpublicradio.org/eps/hpr4480/index.html#comments\" target=\"_blank\">hpr4480</a></strong> (2025-10-03) \"<em>Arthur C. Clarke Becomes Successful</em>\" by <a href=\"https://hackerpublicradio.org/correspondents/0198.html\" target=\"_blank\">Ahuka</a>.</li> <li style=\"list-style: none; display: inline\"> <ul><li><a href=\"https://hackerpublicradio.org/eps/hpr4480/index.html#comment_4463\" target=\"_blank\">Comment 1</a>: Archer72 on 2025-10-13: \"Great show... and may the force be with you\"</li><li><a href=\"https://hackerpublicradio.org/eps/hpr4480/index.html#comment_4465\" target=\"_blank\">Comment 2</a>: Kevin O\'Brien on 2025-10-13: \"Thank you\"</li></ul><br/> </li><li><strong><a href=\"https://hackerpublicradio.org/eps/hpr4483/index.html#comments\" target=\"_blank\">hpr4483</a></strong> (2025-10-08) \"<em>HPR Beer Garden 3 - Porters</em>\" by <a href=\"https://hackerpublicradio.org/correspondents/0296.html\" target=\"_blank\">Kevie</a>.</li> <li style=\"list-style: none; display: inline\"> <ul><li><a href=\"https://hackerpublicradio.org/eps/hpr4483/index.html#comment_4472\" target=\"_blank\">Comment 1</a>: Archer72 on 2025-10-16: \"History of beer\"</li></ul><br/> </li><li><strong><a href=\"https://hackerpublicradio.org/eps/hpr4484/index.html#comments\" target=\"_blank\">hpr4484</a></strong> (2025-10-09) \"<em>When Your Dentist Uses ChatControl Logic</em>\" by <a href=\"https://hackerpublicradio.org/correspondents/0433.html\" target=\"_blank\">Trollercoaster</a>.</li> <li style=\"list-style: none; display: inline\"> <ul><li><a href=\"https://hackerpublicradio.org/eps/hpr4484/index.html#comment_4460\" target=\"_blank\">Comment 1</a>: Trollercoaster on 2025-10-09: \"Voting has been delayed\"</li><li><a href=\"https://hackerpublicradio.org/eps/hpr4484/index.html#comment_4461\" target=\"_blank\">Comment 2</a>: candycanearter07 on 2025-10-12: \"Satire as a tool\"</li><li><a href=\"https://hackerpublicradio.org/eps/hpr4484/index.html#comment_4466\" target=\"_blank\">Comment 3</a>: Trollercoaster on 2025-10-14: \"Re: Satire as a tool\"</li><li><a href=\"https://hackerpublicradio.org/eps/hpr4484/index.html#comment_4474\" target=\"_blank\">Comment 4</a>: operat0r on 2025-10-16: \"Lol\"</li><li><a href=\"https://hackerpublicradio.org/eps/hpr4484/index.html#comment_4478\" target=\"_blank\">Comment 5</a>: Trollercoaster on 2025-10-20: \"Re: Lol\"</li></ul><br/> </li><li><strong><a href=\"https://hackerpublicradio.org/eps/hpr4485/index.html#comments\" target=\"_blank\">hpr4485</a></strong> (2025-10-10) \"<em>Git for Github and Gitlab</em>\" by <a href=\"https://hackerpublicradio.org/correspondents/0318.html\" target=\"_blank\">Archer72</a>.</li> <li style=\"list-style: none; display: inline\"> <ul><li><a href=\"https://hackerpublicradio.org/eps/hpr4485/index.html#comment_4479\" target=\"_blank\">Comment 1</a>: candycanearter07 on 2025-10-21: \"useful introduction\"</li><li><a href=\"https://hackerpublicradio.org/eps/hpr4485/index.html#comment_4481\" target=\"_blank\">Comment 2</a>: Sayaci on 2025-10-21: \"The content of the Archer72\"</li></ul><br/> </li><li><strong><a href=\"https://hackerpublicradio.org/eps/hpr4486/index.html#comments\" target=\"_blank\">hpr4486</a></strong> (2025-10-13) \"<em>A code off my mind</em>\" by <a href=\"https://hackerpublicradio.org/correspondents/0403.html\" target=\"_blank\">Lee</a>.</li> <li style=\"list-style: none; display: inline\"> <ul><li><a href=\"https://hackerpublicradio.org/eps/hpr4486/index.html#comment_4464\" target=\"_blank\">Comment 1</a>: Trey on 2025-10-13: \"Excellent perspectives \"</li></ul><br/> </li><li><strong><a href=\"https://hackerpublicradio.org/eps/hpr4489/index.html#comments\" target=\"_blank\">hpr4489</a></strong> (2025-10-16) \"<em>Hacks Poetic - Pilot Episode</em>\" by <a href=\"https://hackerpublicradio.org/correspondents/0452.html\" target=\"_blank\">Kirbotica</a>.</li> <li style=\"list-style: none; display: inline\"> <ul><li><a href=\"https://hackerpublicradio.org/eps/hpr4489/index.html#comment_4470\" target=\"_blank\">Comment 1</a>: Ken Fallon on 2025-10-16: \"What a waste !\"</li><li><a href=\"https://hackerpublicradio.org/eps/hpr4489/index.html#comment_4473\" target=\"_blank\">Comment 2</a>: Trey on 2025-10-16: \"Thought provoking...\"</li><li><a href=\"https://hackerpublicradio.org/eps/hpr4489/index.html#comment_4475\" target=\"_blank\">Comment 3</a>: Claudio on 2025-10-16: \"A Refreshing HPR Episode!\"</li><li><a href=\"https://hackerpublicradio.org/eps/hpr4489/index.html#comment_4476\" target=\"_blank\">Comment 4</a>: Alexander on 2025-10-17: \"Just threw my iPhone in the ocean...\"</li><li><a href=\"https://hackerpublicradio.org/eps/hpr4489/index.html#comment_4477\" target=\"_blank\">Comment 5</a>: Kevin O\'Brien on 2025-10-17: \"I loved the show\"</li><li><a href=\"https://hackerpublicradio.org/eps/hpr4489/index.html#comment_4480\" target=\"_blank\">Comment 6</a>: Tori on 2025-10-21: \"When Nostalgia Meets the Digital Age\"</li><li><a href=\"https://hackerpublicradio.org/eps/hpr4489/index.html#comment_4483\" target=\"_blank\">Comment 7</a>: brian-in-ohio on 2025-10-22: \"Don\'t burn out\"</li></ul><br/> </li><li><strong><a href=\"https://hackerpublicradio.org/eps/hpr4491/index.html#comments\" target=\"_blank\">hpr4491</a></strong> (2025-10-20) \"<em>Thibaut and Ken Interview David Revoy</em>\" by <a href=\"https://hackerpublicradio.org/correspondents/0453.html\" target=\"_blank\">Thibaut</a>.</li> <li style=\"list-style: none; display: inline\"> <ul><li><a href=\"https://hackerpublicradio.org/eps/hpr4491/index.html#comment_4482\" target=\"_blank\">Comment 1</a>: brian-in-ohio on 2025-10-22: \"Great show\"</li><li><a href=\"https://hackerpublicradio.org/eps/hpr4491/index.html#comment_4489\" target=\"_blank\">Comment 2</a>: Henrik Hemrin on 2025-10-26: \"Inspiring\"</li></ul><br/> </li><li><strong><a href=\"https://hackerpublicradio.org/eps/hpr4493/index.html#comments\" target=\"_blank\">hpr4493</a></strong> (2025-10-22) \"<em>HPR Beer Garden 4 - Weissbier</em>\" by <a href=\"https://hackerpublicradio.org/correspondents/0296.html\" target=\"_blank\">Kevie</a>.</li> <li style=\"list-style: none; display: inline\"> <ul><li><a href=\"https://hackerpublicradio.org/eps/hpr4493/index.html#comment_4485\" target=\"_blank\">Comment 1</a>: folky on 2025-10-22: \"Hefeweizen is best ;-) \"</li><li><a href=\"https://hackerpublicradio.org/eps/hpr4493/index.html#comment_4486\" target=\"_blank\">Comment 2</a>: paulj on 2025-10-22: \"Great Episode!\"</li><li><a href=\"https://hackerpublicradio.org/eps/hpr4493/index.html#comment_4487\" target=\"_blank\">Comment 3</a>: Claudio on 2025-10-23: \"Great Episode I Can Relate To!\"</li><li><a href=\"https://hackerpublicradio.org/eps/hpr4493/index.html#comment_4488\" target=\"_blank\">Comment 4</a>: Gan Ainm on 2025-10-26: \"Scottish-Bavarian IPW\"</li></ul><br/> </li><li><strong><a href=\"https://hackerpublicradio.org/eps/hpr4495/index.html#comments\" target=\"_blank\">hpr4495</a></strong> (2025-10-24) \"<em>An introduction to Taskwarrior</em>\" by <a href=\"https://hackerpublicradio.org/correspondents/0454.html\" target=\"_blank\">candycanearter</a>.</li> <li style=\"list-style: none; display: inline\"> <ul><li><a href=\"https://hackerpublicradio.org/eps/hpr4495/index.html#comment_4469\" target=\"_blank\">Comment 1</a>: Archer72 on 2025-10-15: \"First show:  Good explanation\"</li></ul><br/> </li><li><strong><a href=\"https://hackerpublicradio.org/eps/hpr4500/index.html#comments\" target=\"_blank\">hpr4500</a></strong> (2025-10-31) \"<em>Arthur C. Clarke: 2001 and Sequels</em>\" by <a href=\"https://hackerpublicradio.org/correspondents/0198.html\" target=\"_blank\">Ahuka</a>.</li> <li style=\"list-style: none; display: inline\"> <ul><li><a href=\"https://hackerpublicradio.org/eps/hpr4500/index.html#comment_4471\" target=\"_blank\">Comment 1</a>: Archer72 on 2025-10-16: \"Deep dive\"</li></ul><br/> </li></ul>  <h2>Mailing List discussions</h2> <p> Policy decisions surrounding HPR are taken by the community as a whole. This discussion takes place on the <a href=\"https://lists.hackerpublicradio.com/mailman/listinfo/hpr\" target=\"_blank\">Mailing List</a> which is open to all HPR listeners and contributors. The discussions are open and available on the HPR server under <a href=\"https://lists.hackerpublicradio.com/pipermail/hpr\">Mailman</a>. </p> <p>The threaded discussions this month can be found here:</p> <a href=\"https://lists.hackerpublicradio.com/pipermail/hpr/2025-October/thread.html\" target=\"_blank\">https://lists.hackerpublicradio.com/pipermail/hpr/2025-October/thread.html</a>  <h2>Events Calendar</h2> <p>With the kind permission of <strong>LWN.net</strong> we are linking to <a href=\"https://lwn.net/Calendar/\" target=\"_blank\">The LWN.net Community Calendar</a>.</p> <p>Quoting the site:</p> <blockquote>This is the LWN.net community event calendar, where we track events of interest to people using and developing Linux and free software. Clicking on individual events will take you to the appropriate web page.</blockquote>',159,47,1,'CC-BY-SA','Community News',0,0,1),
(4231,'2024-10-21','Duplicating Multiple USB Flash Drives with DD and Tmux on FreeBSD',952,'Claudio describes his process for mass USB flash drive duplication with FreeBSD, tmux, and dd.','<h2 id=\"pre-planning-and-creating-your-image\">Pre-planning and creating\nyour image:</h2>\n<ol type=\"1\">\n<li>Create your image with your preferred disk image creation tool. I\nused USB Image Tool to create an image from my \"golden master\" Windows\n11 installation thumb drive A. USB Image Tool: <a\nhref=\"https://www.alexpage.de/usb-image-tool\"\nclass=\"uri\">https://www.alexpage.de/usb-image-tool</a></li>\n</ol>\n<h3\nid=\"prepare-your-tmux-session-on-your-linux-or-bsd-based-system.\">Prepare\nyour Tmux session on your Linux or BSD-based system.</h3>\n<ol type=\"1\">\n<li><code>\'tmux new -s $sessionName\'</code> to create a new Tmux session\nwindow with a session name of your choice.</li>\n<li><code>\'Ctrl-B-\"\'</code> to create a horizontal split, putting one\npane over the other.</li>\n<li><code>\'Ctrl-B-%\'</code> to create a vertical split, putting one pane\nnext to the other.</li>\n<li><code>\'Ctrl-B-UpArrow\'</code> or <code>\'Ctrl-B-DownArrow\'</code> to\nmove to the pane you want to split if you split the window with a\nhorizontal line.</li>\n<li><code>\'Ctrl-B-LeftArrow\'</code> or <code>\'Ctrl-B-RightArrow\'</code>\nto move to the pane you want to split if you split the window with a\nvertical line.</li>\n</ol>\n<p><a href=\"https://tmuxcheatsheet.com/\"\nclass=\"uri\">https://tmuxcheatsheet.com/</a></p>\n<h3\nid=\"duplicate-4-usb-thumb-drives-from-a-disk-image-within-your-new-split-paned-tmux-session\">Duplicate\n4 USB thumb drives from a disk image within your new, split-paned Tmux\nsession:</h3>\n<ul>\n<li><strong>CHECK DMESG FOR THE CORRECT DEVICE NAME AND WRITE IT\nDOWN!!!</strong>\n<ul>\n<li>FreeBSD will show dmesg output on TTYv0, or you can use the dmesg\ncommand on Linux or BSD. You don\'t want to end up wiping your system\ndrive!</li>\n</ul></li>\n<li>Within your Tmux session:\n<ul>\n<li>Pane 1:\n<code>\'dd if=$diskImageName of=/dev/da0 bs=1M status=progress\'</code> to\nbegin imaging USB thumb drive #1.</li>\n<li>Pane 2:\n<code>\'dd if=$diskImageName of=/dev/da1 bs=1M status=progress\'</code> to\nbegin imaging USB thumb drive #2.</li>\n<li>Pane 3:\n<code>\'dd if=$diskImageName of=/dev/da2 bs=1M status=progress\'</code> to\nbegin imaging USB thumb drive #3.</li>\n<li>Pane 4:\n<code>\'dd if=$diskImageName of=/dev/da3 bs=1M status=progress\'</code> to\nbegin imaging USB thumb drive #4.</li>\n<li><code>\'Ctrl-B-:\'</code> to call the Tmux command prompt, followed by\n<code>\'setw synchronize-panes\'</code> to sync the 4 panes to your\ncommands. The primary pane will be highlighted in red, and the secondary\npanes will copy whatever command it typed into that primary pane.</li>\n<li>Hit Enter to begin the process on all 4 panes.</li>\n<li>When the image finishes, you can remove the USB thumbs drives, pop\nin 4 more, hit the Up arrow on the primary pane to pull up the previous\ncommands on their respective panes, and hit Enter. When in doubt, refer\nto Step 0!!</li>\n<li>Repeat as needed.</li>\n</ul></li>\n</ul>\n<p>If you need to de-synchronize your Tmux panes, just type\n<code>\'Ctrl-:\'</code> to call the Tmux command prompt, followed by\n<code>\'setw synchronize-panes\'</code> to toggle pane synchronization on\nand off (or you can use the up arrow at the Tmux command prompt to bring\nup that previously-typed command).</p>\n<p>The faster your USB ports and USB thumb drives, the better!</p>\n',152,0,0,'CC-BY-SA','freebsd,tmux,dd,windows,usb,diskduplication,duplication',0,0,1),
(4233,'2024-10-23','OggCamp 2024 Day 1',1822,'Interviews from Day one of OggCamp 2024 from Manchester','<p>James Baker campaigns and advocacy manager with the open rights\ngroup</p>\n<ul>\n<li><a\nhref=\"https://www.openrightsgroup.org/\">https://www.openrightsgroup.org/</a></li>\n</ul>\n<p>John Chadfield, and Iran Kohen, from the Union for Tech workers</p>\n<ul>\n<li><a href=\"https://utaw.tech/about\">https://utaw.tech/about</a></li>\n</ul>\n<p>Margaret Low from the University of Warwick</p>\n<ul>\n<li><a\nhref=\"https://warwick.ac.uk/fac/sci/wmg/about/our-journey/margaret-low/\">https://warwick.ac.uk/fac/sci/wmg/about/our-journey/margaret-low/</a></li>\n</ul>\n<p>Kevie, Andrew, Dave, Al</p>\n<ul>\n<li><a\nhref=\"https://tuxjam.otherside.network/\">https://tuxjam.otherside.network/</a></li>\n<li><a\nhref=\"https://mastodon.me.uk/@kevie\">https://mastodon.me.uk/@kevie</a></li>\n<li><a\nhref=\"https://mastodon.me.uk/@mcnalu\">https://mastodon.me.uk/@mcnalu</a></li>\n<li><a\nhref=\"https://mastodon.me.uk/@thelovebug\">https://mastodon.me.uk/@thelovebug</a></li>\n<li><a\nhref=\"https://mastodon.me.uk/@mralc\">https://mastodon.me.uk/@mralc</a></li>\n</ul>\n<p>George Doscher</p>\n<ul>\n<li><a\nhref=\"https://mastodon.social/@geospart\">https://mastodon.social/@geospart</a></li>\n</ul>\n',30,0,0,'CC-BY-SA','OggCamp2024,OpenRightsGroup,utaw,tuxjam,geospart',0,0,1),
(4234,'2024-10-24','OggCamp 2024 Day 2',2437,'Interviews from Day two of OggCamp 2024 from Manchester','<p>Dan Lynch<br />\n- <a href=\"https://www.danlynch.org/\"\nclass=\"uri\">https://www.danlynch.org/</a><br />\n- <a href=\"https://mastodon.social/@methoddan\"\nclass=\"uri\">https://mastodon.social/@methoddan</a></p>\n<p>Terence Eden<br />\n- <a href=\"https://openbenches.org/\"\nclass=\"uri\">https://openbenches.org/</a><br />\n- <a href=\"https://shkspr.mobi/blog/\"\nclass=\"uri\">https://shkspr.mobi/blog/</a><br />\n- <a href=\"https://mastodon.social/@edent\"\nclass=\"uri\">https://mastodon.social/@edent</a></p>\n<p>Simon Phipps from Public Software CIC<br />\n- <a href=\"https://publicsoftware.eu/\"\nclass=\"uri\">https://publicsoftware.eu/</a><br />\n- <a href=\"https://webmink.com/\"\nclass=\"uri\">https://webmink.com/</a><br />\n- <a href=\"https://meshed.cloud/@webmink\"\nclass=\"uri\">https://meshed.cloud/@webmink</a></p>\n<p>Dan gave a lightning talk<br />\n- <a href=\"https://fosstodon.org/@danielittlewood\"\nclass=\"uri\">https://fosstodon.org/@danielittlewood</a><br />\n- <a href=\"https://danielittlewood.xyz/\"\nclass=\"uri\">https://danielittlewood.xyz/</a></p>\n<p>MrX, Dave Morriss, and Ken Fallon from Hacker Public Radio<br />\n- <a href=\"https://hackerpublicradio.org\"\nclass=\"uri\">https://hackerpublicradio.org</a><br />\n- <a href=\"https://hackerpublicradio.org/correspondents/0201.html\"\nclass=\"uri\">https://hackerpublicradio.org/correspondents/0201.html</a><br />\n- <a href=\"https://hackerpublicradio.org/correspondents/0225.html\"\nclass=\"uri\">https://hackerpublicradio.org/correspondents/0225.html</a><br />\n- <a href=\"https://mastodon.sdf.org/@perloid\"\nclass=\"uri\">https://mastodon.sdf.org/@perloid</a><br />\n- <a href=\"https://hackerpublicradio.org/correspondents/0030.html\"\nclass=\"uri\">https://hackerpublicradio.org/correspondents/0030.html</a><br />\n- <a href=\"https://mastodon.sdf.org/@ken_fallon\"\nclass=\"uri\">https://mastodon.sdf.org/@ken_fallon</a></p>\n<p>Closing off with Gary Williams who organized the event.<br />\n- <a href=\"https://mastodon.social/@garythewilliams\"\nclass=\"uri\">https://mastodon.social/@garythewilliams</a><br />\n- <a href=\"https://gary.thewilliams.ie/\"\nclass=\"uri\">https://gary.thewilliams.ie/</a><br />\n- <a href=\"https://linuxafterdark.net/\"\nclass=\"uri\">https://linuxafterdark.net/</a><br />\n- <a href=\"https://hybridcloudshow.com/\"\nclass=\"uri\">https://hybridcloudshow.com/</a><br />\n- <a href=\"https://www.oggcamp.org/\"\nclass=\"uri\">https://www.oggcamp.org/</a></p>\n',30,0,0,'CC-BY-SA','OggCamp2024,methoddan,edent,webmink,danielittlewood,perloid,ken_fallon,garythewilliams',0,0,1),
(4235,'2024-10-25','What Is Plain Text Programming?',476,'In which I go into detail about what I mean when I talk about a Plain Text Program.','<h2 id=\"episode-3---what-is-a-plain-text-program\">Episode 3 - What Is A\nPlain Text Program?</h2>\n<h3 id=\"what-is-a-plain-text-program\">What Is A Plain Text Program?</h3>\n<p>Today I\'m going to go into more detail about what I mean when I say\nPlain Text Program. I want to emphasize that this is just me. Others may\nhave different ideas on this topic. This is how I try to write Plain\nText Programs. I will feature other people\'s work that I still consider\nto be Plain Text Programs that do not follow all of these\nguidelines.</p>\n<p>I want to thank the hosts on the monthly HPR Community News podcast\nfor inspiring me. They had questions. I also want to thank those making\ncomments. I\'m new to Hacker Public Radio and I will try to be more\ntimely responding to comments in the future.</p>\n<h3 id=\"what-is-a-plain-text-file\">What Is A Plain Text File?</h3>\n<p>Text files are usually edited in a text editor or in a word processor\nand saved with the .txt extension. They consist of a string of\ncharacters. Text files can be divided into lines using the newline\ncharacter, <code>\\n</code>, or the carriage return and newline\ncharacters, <code>\\r\\n</code>. You don\'t have to type these characters.\nYour editor puts them in for you.</p>\n<p>Text files do not have to use the .txt extension. Most programming\nfiles, like .php or .c files are plain text. I will only be discussing\nprograms that are open source and that store their code in text\nfiles.</p>\n<p>Plain text configuration files often have no extension. For my Plain\nText Programs I use <code>config.inc</code>.</p>\n<p>There is no difference between text files and plain text files.\nPeople often say plain text files to distinguish them from word\nprocessor files like .doc or .odt files.</p>\n<p>Plain Text Programs use text files to store text like a title or a\nblog post. When I talk about Plain Text Programs I also mean something\nmore than this. That\'s what this podcast is about.</p>\n<h3 id=\"no-database\">No Database?</h3>\n<p>Plain Text Programs do not use a database like mysql or postgres.\nAlso the file system does not imitate a database, creating keys,\nindexing, etc.</p>\n<p>Instead the file system performs the database functions by accessing\nfiles which can be text files, graphics files, or other files. These\nfiles can be all in one directory or in multiple directories in a single\ndirectory tree.</p>\n<p>If password security is required in a Plain Text Program that runs on\nthe internet I make an exception to the single tree rule to allow\npasswords to be stored outside of the webspace.</p>\n<p>So the assets a Plain Text Program accesses are just files in the\nfile system.</p>\n<h3 id=\"no-html-or-other-markup-required\">No HTML Or Other Markup\nRequired</h3>\n<p>I have no rule against allowing html or other markup. But I do not\nassume that the maintainer knows how to do this or wants to learn it.\nThe reason I started writing Plain Text Programs was to avoid html\nmarkup. I want to be able to type text files, save them, and upload\nthem, without being concerned about anything except the text itself.</p>\n<p>The text files holding the content are written in block paragraph\nstyle with a blank line between paragraphs. Text files are not required\nin a Plain Text Program but most Plain Text Programs do use some text\ndata which should be stored in text files.</p>\n<p>If this is a web application, links can be copied and pasted from the\nbrowser with no additional markup required.</p>\n<p>Other assets in the directory, like .gif, .jpg, or .png images,\ndisplay automatically.</p>\n<p>I use the file names for meta data like title, caption, or sort\norder. I can also sort chronologically using the file timestamps.</p>\n<p>If there is a hierarchy of directories the program can use the\ndirectory name of the child directories for the link text. For instance\nthe Delta Musicians directory tree can have a Table Of Contents at the\ntop level that lists the musicians in alphabetical order. Each musician\ngets their own subdirectory and the name of that subdirectory is used to\ngenerate the link and link text for that page.</p>\n<p>Then, each page can use Dirt Simple Photo Gallery and the program\ngenerates the caption from the image\'s file name.</p>\n<p>All configuration is also done in a text file. I use a well\ndocumented <code>config.inc</code> file that initializes php variables.\nThe maintainer of the application is never required to edit source\ncode.</p>\n<h3 id=\"does-plain-text-mean-there-is-no-gui-interface\">Does Plain Text\nMean There Is No GUI Interface?</h3>\n<p>No. I write mostly web apps so they run in the browser interface.\nAlso, Plain Text Programs do not require a GUI. It could run in a\nterminal or as a cron job. The program could play a music playlist or\nrun a slideshow with no input at all.</p>\n<h3 id=\"what-do-i-have-to-know-to-maintain-a-plain-text-program\">What Do\nI Have To Know To Maintain A Plain Text Program?</h3>\n<p>The maintainer of the program will have to be able to 1. Create and\nedit text files in a text editor or word processor 2. Copy and paste\nlinks, iframe embeds, file names, titles, etc. 3. Rename files 4. Upload\nand download with ftp</p>\n<h3 id=\"executive-summary\">Executive Summary</h3>\n<p>A Plain Text Program does not use a database like sql. Instead it\nstores the assets in the file system and accesses them using the file\nsystem.</p>\n<p>A Plain Text Program does not require html or other markup. Text\nassets are written in block paragraph format. If the maintainer prefers\nto use a word processor instead of a text editor that\'s fine as long as\nthe files are saved as text files with the .txt extension. Most word\nprocessors support this.</p>\n<p>Plain Text Programs can support links if the links are copied and\npasted into the text file with no markup required.</p>\n<p>Plain Text Programs can support iframe embeds if the embed code is\ncopied and pasted onto its own line in the text file.</p>\n<p>All of the assets for a Plain Text Program are stored in a single\ndirectory tree. This is one of the main advantages of Plain Text\nPrograms because it makes them easy to backup and restore so they are\nvery portable. I sometimes make an exception to this if I want to save a\npassword on a webserver outside of the webspace.</p>\n<p>A Plain Text Program uses the file and directory names for meta data\nlike titles, captions, or sort order. The file timestamps can be used\nfor chronological sorting.</p>\n<p>All configuration is done by editing a well documented text file. The\nmaintainer should not have to edit the program code.</p>\n<p>The maintainer should be allowed to edit the program code. I will\nonly discuss open source programs that store the program itself in text\nfiles.</p>\n<h3 id=\"more-questions\">More Questions?</h3>\n<p>I thought so. Comment on Hacker Public Radio or at Gamer+DBN. I will\ninclude links in the show notes.</p>\n',436,25,0,'CC-BY-SA','programming,plaintext,questions',0,0,1),
(4266,'2024-12-09','What\'s the weather?',1046,'Lee writes a script to check what the weather is like','<p>One web service that can find out the weather on the command line\nis:</p>\n<pre><code>$ curl wttr.in</code></pre>\n<p>Inspired by this is the following script in PHP that uses data from\n7timer.info</p>\n<p>Available at <a\nhref=\"https://gist.github.com/macsplit\">https://gist.github.com/macsplit</a></p>\n<pre><code>&lt;?php\n\ndate_default_timezone_set(&#39;UTC&#39;);\n\n$lon = &quot;-0.19759370325694858&quot;;\n$lat = &quot;51.35956063540873&quot;;\n\n$url = &quot;https://www.7timer.info/bin/civil.php?lon=$lon&amp;lat=$lat&amp;unit=metric&amp;ac=0&amp;output=json&quot;;\n\n$weathers = [\n    &#39;tsday&#39; =&gt; &quot;&#x2600;&#xFE0F; Hot Day&quot;,\n    &#39;clearday&#39; =&gt; &quot;&#x2600;&#xFE0F; Clear Day&quot;,\n    &#39;clearnight&#39; =&gt; &quot;&#x1F319; Clear Night&quot;,\n    &#39;pcloudyday&#39; =&gt; &quot;&#x26C5; Partially Cloudy Day&quot;,\n    &#39;pcloudynight&#39; =&gt; &quot;&#x2601;&#xFE0F; Partially Cloudy Night&quot;,\n    &#39;mcloudyday&#39; =&gt; &quot;&#x1F325;&#xFE0F; Moderately Cloudy Day&quot;,\n    &#39;mcloudynight&#39; =&gt; &quot;&#x2601;&#xFE0F; Moderately Cloudy Night&quot;,\n    &#39;cloudyday&#39; =&gt; &quot;&#x2601;&#xFE0F; Cloudy Day&quot;,\n    &#39;cloudynight&#39; =&gt; &quot;&#x2601;&#xFE0F; Cloudy Night&quot;,\n    &#39;humidday&#39; =&gt; &quot;&#x1F321;&#xFE0F; Humid Day&quot;,\n    &#39;humidnight&#39; =&gt; &quot;&#x1F321;&#xFE0F; Humid Night&quot;,\n    &#39;lightrainday&#39; =&gt; &quot;&#x1F327;&#xFE0F; Lightly Rainy Day&quot;,\n    &#39;lightrainnight&#39; =&gt; &quot;&#x1F327;&#xFE0F; Lightly Rainy Night&quot;,\n    &#39;oshowerday&#39; =&gt; &quot;&#x1F327;&#xFE0F; Overcast Showery Day&quot;,\n    &#39;oshowernight&#39; =&gt; &quot;&#x1F327;&#xFE0F; Overcast Showery Night&quot;,\n    &#39;ishowerday&#39; =&gt; &quot;&#x1F327;&#xFE0F; Showery Day&quot;,\n    &#39;ishowernight&#39; =&gt; &quot;&#x1F327;&#xFE0F; Showery Night&quot;,\n    &#39;lightsnowday&#39; =&gt; &quot;&#x2744;&#xFE0F; Lightly Snowy Day&quot;,\n    &#39;lightsnownight&#39; =&gt; &quot;&#x2744;&#xFE0F; Lightly Snowy Night&quot;,\n    &#39;rainday&#39; =&gt; &quot;&#x1F327;&#xFE0F; Rainy Day&quot;,\n    &#39;rainnight&#39; =&gt; &quot;&#x1F327;&#xFE0F; Rainy Night&quot;,\n    &#39;snowday&#39; =&gt; &quot;&#x2744;&#xFE0F; Snowy Day&quot;,\n    &#39;snownight&#39; =&gt; &quot;&#x2744;&#xFE0F; Snowy Night&quot;,\n    &#39;rainsnowday&#39; =&gt; &quot;&#x1F328;&#xFE0F; Rainy and Snowy Day&quot;,\n    &#39;rainsnownight&#39; =&gt; &quot;&#x1F328;&#xFE0F; Rainy and Snowy Night&quot;\n];\n\n$json = file_get_contents($url);\nif (!$json) exit();\n$obj = json_decode($json);\n$init = DateTime::createFromFormat(&#39;YmdH&#39;, $obj-&gt;init)-&gt;getTimestamp();\n$series = $obj-&gt;dataseries;\n$now = time();\nforeach ($series as $k =&gt; $point) {\n    $timepoint = $point-&gt;timepoint;\n    $timestamp = $init + ($timepoint * 3600);\n    $diff = abs($timestamp - $now);\n    $data[$diff] = $point;\n}\n$key = min(array_keys($data));\n$measure = $data[$key];\n$temperature = $measure-&gt;{&#39;temp2m&#39;};\n$weather_desc = $weathers[$measure-&gt;weather];\n\necho &quot;$weather_desc $temperature&quot;.&quot;&#xB0;C\\n&quot;;\n\n?&gt;</code></pre>\n\n<p><small><em>Editor\'s Note: Modified 2024-11-13 in line with comment #1</em></small></p>\n',403,0,0,'CC-BY-SA','php',0,0,1),
(4236,'2024-10-28','History of Nintendo',589,'Join Alexander [Lochyboy] as he gives information about the history of Nintendo','<p>Join Alexander [Lochyboy] as he gives information about the history\nof Nintendo</p>\n',434,0,0,'CC-BY-SA','history, nintendo, gaming, retro',0,0,1),
(4237,'2024-10-29','My First OggCamp Experience',1344,'Kevie shares his thoughts on his first ever OggCamp','<p>Having recently attended OggCamp 2024 in Manchester. Kevie shares\nsome of his thoughts on the event and on the whole experience in\ngeneral.</p>\n',296,62,0,'CC-BY-SA','Manchester, OggCamp, Conference',0,0,1),
(4238,'2024-10-30','Snaps are better than flatpaks',916,'Sgoti reminds everyone on the joy of using snap packages.','<p>Snaps are just better.<br>72 hours or I\'m 100% correct.<br><br>Get your snaps here<br><a href=\"https://snapcraft.io/\" target=\"_blank\">https://snapcraft.io/</a><br></p>\n',391,0,1,'CC-BY-SA','snaps, SnapPackages, FlatPak',0,0,1),
(4239,'2024-10-31','Android Tasker and Automation',903,'operat0r talks about Android automation and Tasker','<p>Anything \"tasker\" in <a href=\"https://rmccurdy.com/.scripts/downloaded/\">https://rmccurdy.com/.scripts/downloaded/</a> complete dump of all of the Tasker scripts!!!</p>\n',36,0,1,'CC-BY-SA','Android, hacking, automation',0,0,1),
(4249,'2024-11-14','Audio Streams on the Command Line',476,'Kevie talks about streaming and ripping audio streams on Linux using the command line','<p><a href=\"https://tuxjam.otherside.network\">TuxJam</a> co-host <a href=\"https://mastodon.me.uk/@kevie\">Kevie</a> has a discussion about playing an audio stream from the command line using <a href=\"https://www.videolan.org/vlc/\">VLC</a> and also <a href=\"http://www.mpg123.org/\">MPG123</a> and then ripping the stream to a localised file using the wget command:</p>\n<p>Play a stream using VLC:</p>\n<code>cvlc https://your.radio.stream</code>\n<p>Play a stream using MPG123:</p>\n<code>mpg123 https://your.radio.stream</code>\n<p>Rip the stream to a local file:</p>\n<code>wget -O YourFile.flac \"https://your.radio.stream\"</code>\n',296,0,0,'CC-BY-SA','CLI, audio, streaming, radio, recording, ripping, music',0,0,1),
(4257,'2024-11-26','Movie review: The Artifice Girl',922,'In response to HPR4223, Kevie shares his thoughts on the movie','<p><a href=\"https://mastodon.me.uk@kevie\">Kevie</a>, co-host of <a href=\"https://tuxjam.otherside.network/\">TuxJam</a>, shares his thoughts on the movie <a href=\"https://www.paperstreetpictures.com/categorydetail.php?cid=NTE=\">The Artifice Girl</a>. This is done in response (of sorts) to <a href=\"https://hackerpublicradio.org/eps/hpr4223/index.html\">HPR 4223</a> by <a href=\"https://hackerpublicradio.org/correspondents/0391.html\">Some Guy On The Internet</a></p>\n<p>Note: please do not listen to this episode if you want to watch this movie, it contains spoilers.</p>\n',296,0,0,'CC-BY-SA','movie, review, sci-fi',0,0,1),
(4243,'2024-11-06','Hand Warmer, long term product review',924,'Long term product review of my electric hand warmer. Inspiration from Ken Fallon during OggCamp','<h2 id=\"background\">Background</h2>\n<p>Ken suggested at Oggcamp to do a long term product review of my hand\nwarmer.</p>\n<h2 id=\"product-information\">Product information</h2>\n<ul>\n<li><p>The model: OCOOPA 10,000 mAh capacity</p></li>\n<li><p>Purchase date: December 2020</p></li>\n<li><p>Cost: &#xA3;25</p></li>\n<li><p>Description: It has a single button used to turn it on and to\nadjust the heat level.</p></li>\n<li><p>It has three different USB sockets. These are used when either\ncharging the hand warmer or using it as a power bank to charge other\ndevices.</p></li>\n</ul>\n<h2 id=\"links-to-product\">Links to product</h2>\n<p><a\nhref=\"https://www.ocoopa.com/collections/haloseries/products/ocoopa-h01-pd-pro-ip45-waterproof-and-dustproof-crack-resistant-quick-charge-rechargeable-10000mah-hand-warmer-camouflageURL\">Fast\ncharge model from Ocoopa. My model charges slower which might be gentler\non the battery. Actually the real reason I bought the slow charge model\nwas it was cheaper</a></p>\n<p><a\nhref=\"https://www.amazon.co.uk/OCOOPA-Rechargeable-10000mAh-Electric-Football/dp/B08DJ5B94G/ref=sr_1_6?adgrpid=167779637264&amp;dib=eyJ2IjoiMSJ9.QM55EuwGjjhaAqG8UCo0gHIg7rCC4CwcuX0qwHsUUjkbdzbru59Z9AL4YIntGsFoIbNvDNB_0H8a-fug6yKE-QKKrWcdcm6OW3wx8wBYP6k.io66ORkn2FdDSBhawpQaW-lvDy053_l0TBgKSeTC7IU&amp;dib_tag=se&amp;gad_source=1&amp;hvadid=696399789733&amp;hvdev=c&amp;hvexpln=69&amp;hvlocphy=9189955&amp;hvnetw=g&amp;hvocijid=4686875213813031010--&amp;hvqmt=e&amp;hvrand=4686875213813031010&amp;hvtargid=kwd-985528522290&amp;hydadcr=18117_2287657&amp;keywords=ocoopa%2B10000mah&amp;nsdOptOutParam=true&amp;qid=1730557505&amp;sr=8-6&amp;th=1\">Amazon\nseem to sell the model I have and amazingly it&#x2019;s still &#xA3;25!</a></p>\n<h2 id=\"story\">Story</h2>\n<p>During OggCamp I mentioned to Ken that I had an electric hand warmer\nand he asked me if it was any good. He suggested I do a long term\nproduct review of it. So here is my review</p>\n<p>I do lots of dog walking and suffer from cold hands.</p>\n<p>I\'ve had different hand warmers over the years:</p>\n<ul>\n<li>Ones that you boil in water. Don&#x2019;t last long</li>\n<li>One that is activated by removing from its packet. Lasts for many\nhours actually too long. They seems very wasteful as they are single\nuse.</li>\n<li>Zippo hand warmer works well but is a faff to setup and sometimes\ngoes out.</li>\n</ul>\n<p>This electric hand warmer is by far the best solution I\'ve found.</p>\n<p>It saved me twice during OggCamp as I used it on two occasions to top\nup my phone. When arriving and leaving OggCamp.</p>\n<p>This was the first time I&#x2019;d used the hand warmer to charge anything.\nI was very glad it worked.</p>\n<p>At the time of purchase I was rather sceptical about the whole idea\nof electric hand warmers.</p>\n<p>The batteries are not used in ideal conditions. They get very hot and\nwhen in use a lot of current is drawn from them.</p>\n<p>My Hand warmer is now almost 4 years old and is still going strong\nwith no noticeable degradation in capacity.</p>\n<p>It has a rated capacity is 10,000 mAh. The highest charge it achieved\nwas about 1 year into use. It accepted 8034 mAh of charge. I haven&#x2019;t\nchecked again since November 2021. However it still continues to last\nmany hours / multiple dog walks.</p>\n<p>I always get a bit nervous over the summer months as it is left for a\nnumber of months unused. Luckily living in Scotland I don&#x2019;t need to wait\nlong until the weather gets cold. Did I mention before about the\nhorrible weather in Scotland?</p>\n<h2 id=\"how-i-look-after-the-battery\">How I look after the battery</h2>\n<ul>\n<li><p>Always wait for the battery to return to room temperature before\nputting it on charge.</p></li>\n<li><p>Don&#x2019;t leave the hand warmer for more than a few days at 100%\ncharge.</p></li>\n<li><p>Try not to completely flatten the battery. If you do flatten the\nbattery then charge it up soon afterwards.</p></li>\n<li><p>If storing it for a number of months then try to store it at\napproximately 50% charge.</p></li>\n</ul>\n<p><em>Top view</em><br />\n<img src=\"hpr4243_1.JPG\" alt=\"Top view\" /></p>\n<p><em>Underneath</em><br />\n<img src=\"hpr4243_2.JPG\" alt=\"Underneath\" /></p>\n<p><em>USB ports</em><br />\n<img src=\"hpr4243_3.JPG\" alt=\"USB ports\" /></p>\n',201,0,1,'CC-BY-SA','Review, Gadget, Outdoors, Walking',0,0,1),
(4244,'2024-11-07','Two methods of digitizing photos.',495,'A brief discussion about two methods of digitizing analog photos.','<p>Today I will talk about digitizing analog photos. I will talk about\ntwo methods.</p>\n<p>I have scanners from different manufacturers, flat bed scanner and\ndedicated film scanner. Each scanner is delivered with software. Each\nsoftware is generally good. But it is a problem to manage several\nsoftware. Secondly, none of them works for Linux operating system. I\nwanted to simplify my software learning, so I wanted one software for\nall my existing and any future scanner. Secondly I intended to migrate\nto a Linux operating system, which I now have done.</p>\n<p>Those two requirements lead me to switch over to VueScan software. I\nhad tested VueScan before and also gotten recommendations from\nphotographic friends. VueScan is a proprietary software made by a small\nfamily run company. It&#x2019;s available for Linux, Windows and macOS. VueScan\nsupports very many hardware scanners. I do not know about any better\nsoftware for Linux and is maybe also the best choice for any operating\nsystem. I do not regret my switch to VueScan.</p>\n<p>A second method to digitize photos is reproduction with a camera.\nThat is to use a camera to shoot a photo of the photo.</p>\n<p>Some say it is the superior technology. I don&#x2019;t know. But as I am\ncoming from the scanning technology and starting to explore the repro\ntechnology, I will give my early thoughts from that perspective.</p>\n<p>My initial plan has been to use repro photography for prints that are\nglued into albums and therefore difficult to manage in the scanner. It\nis also an excellent method to digitize other papers in book format. But\nI have not really started to do that.</p>\n<p>However, a while ago I started to look into 6x9 cm negatives. My\nscanner can just manage 6x9. But I do not have a fixture for 6x9. So it\nis both somewhat tricky to position the negative as well as to keep it\nflat. A thin plexiglass plate might be possible to use to keep it flat.\nEven without plexiglass, I have tested I can get well acceptable result\nwith the scanner.</p>\n<p>I started to try out the repro method. I have not come so far in my\ntrials that I can decide which is the best method for me.</p>\n<p>My camera is a modest camera compared to state of the art. My flat\nbed scanner should give better or comparable resolution than my modest\ndigital camera. The fixture I have for repro do not keep the negative\nfully flat, because 6x9 is a rather big size. So I plan to explore if I\ncan improve quality with a plexiglass plate above the negative.</p>\n<p>An issue with the repro method is to keep all angles in control, to\nmount the camera in exactly correct angle in relation to the object.\nFocus can also be another issue. I consider it is better to use manual\nfocus rather than auto focus. When I take the repro photos, I have the\ncamera connected to a laptop and I use the Entangle software to control\nthe camera settings. I can use the camera live view to position the\nobject as well as to focus.</p>\n<p>I use RawTherapee software to convert the negative photo to a normal\nphoto. RawTherapee comes with pre-installed profiles for this process.\nThe default profile values can be adjusted and also stored as new\npersonal profiles.</p>\n<p>A major advantage of the repro method compared to the scanner method\nis the speed. Once all is configured, it takes one hundred of a second\nor so to do the digitize itself, while it can take minutes with the\nscanner.</p>\n<p>I use digiKam as my photo catalog software.</p>\n<p>All software I currently use with the exception of VueScan are free\nand open source. I use all on Linux operating system, some of them are\navailable on other platforms. I include links to their websites in the\nshow notes.</p>\n<p>If you have any opinion or experience on digitizing analog photos, I\nwill be happy to read your comments or listen to your show.</p>\n<h2 id=\"software\">Software</h2>\n<p>VueScan: <a href=\"https://www.hamrick.com/\"\nclass=\"uri\">https://www.hamrick.com/</a></p>\n<p>Entangle: <a href=\"https://entangle-photo.org/\"\nclass=\"uri\">https://entangle-photo.org/</a></p>\n<p>RawTherapee: <a href=\"https://rawtherapee.com/\"\nclass=\"uri\">https://rawtherapee.com/</a></p>\n<p>digiKam: <a href=\"https://www.digikam.org/\"\nclass=\"uri\">https://www.digikam.org/</a></p>\n',429,0,0,'CC-BY-SA','photography, digitize, digitizing, scanner, reproduction, repro',0,0,1),
(4242,'2024-11-05','Interview with Lorenzo \'kelset\' Sciandra',658,'Ken tracks down a Lorenzo to talk about his presentations at OggCamp2024','<h3 id=\"links\">Links</h3>\n<ul>\n<li>website: <a href=\"https://kelset.dev/\">https://kelset.dev/</a></li>\n<li>mental health project: <a\nhref=\"https://debug-mind.com/\">https://debug-mind.com/</a></li>\n<li>talk about STF at OGGCamp: <a\nhref=\"https://speakerdeck.com/kelset/sustaining-oss\">https://speakerdeck.com/kelset/sustaining-oss</a></li>\n<li>talk about mental health at OGGCamp: <a\nhref=\"https://speakerdeck.com/kelset/mental-health-in-tech-oss-edition\">https://speakerdeck.com/kelset/mental-health-in-tech-oss-edition</a></li>\n<li>ofc STF\'s website: <a\nhref=\"https://www.sovereigntechfund.de/\">https://www.sovereigntechfund.de/</a></li>\n<li><a\nhref=\"https://mastodon.online/@kelset\">https://mastodon.online/@kelset</a></li>\n</ul>\n',30,78,0,'CC-BY-SA','OggCamp2024,STF,Mental Health',0,0,1),
(4247,'2024-11-12','Installing GuixSD--Part Deux',1728,'Rho`n records installing GuixSD onto a Mac Mini computer','<h1>Synopsis</h1>\n\n<p>In this episode Rho`n records his further adventures in installing GuixSD onto a Mac Mini computer.</p>\n\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>\n\n<h1>References</h1>\n\n<ul>\n	<li><a href=\"https://guix.gnu.org/\">Guix website</a></li>\n	<li><a href=\"https://guix.gnu.org/manual/en/html_node/System-Installation.html\">Instructions for installing Guix</a> as the main OS</li>\n	<li><a href=\"http://www.riitek.com/product/218.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>\n</ul>\n\n<h1>Attribution</h1>\n\n<p>The transition sound used between audio clips is found on <a href=\"https://freesound.org/\">freesound.org</a>:<br>\nName: <a href=\"https://freesound.org/people/DanJFilms/sounds/529064/\">Harp Transition Music Cue</a><br>\nAuthor: <a href=\"https://freesound.org/people/DanJFilms/\">DanJFilms</a><br>\nLicense: <a href=\"http://creativecommons.org/publicdomain/zero/1.0/\">Creative Commons Zero</a></p>\n',293,0,0,'CC-BY-SA','Guix,GuixSD,installer,install,USB drive,Mac Mini',0,0,1),
(4248,'2024-11-13','Millie Perkins',847,'Ken talks with Millie Perkins about her home automation talk at OggCamp','<p>Millie Perkins gave a talk \"Home automation &#x1F3E0; A beginner\'s foray\ndown the rabbit hole\" on Sunday 13 October 2024 between 11:00 and 11:30.\nThe talk was so well received that our HPR Reporters tracked her down\nfor a follow up chat.</p>\n<ul>\n<li><a href=\"https://mastodon.social/@milperks\"\nclass=\"uri\">https://mastodon.social/@milperks</a></li>\n<li><a\nhref=\"https://joind.in/event/oggcamp-2024/home-automation--a-beginners-foray-down-the-rabbit-hole\"\nclass=\"uri\">https://joind.in/event/oggcamp-2024/home-automation--a-beginners-foray-down-the-rabbit-hole</a></li>\n<li><a href=\"https://www.oggcamp.org\"\nclass=\"uri\">https://www.oggcamp.org</a></li>\n<li><a href=\"https://hackerpublicradio.org/series/0125.html\"\nclass=\"uri\">https://hackerpublicradio.org/series/0125.html</a></li>\n</ul>\n',30,78,0,'CC-BY-SA','OggCamp2024, HomeAssistant, HomeAutomation',0,0,1),
(4521,'2025-12-01','HPR Community News for November 2025',4224,'HPR Volunteers Kevie and Ken talk about shows released and comments posted in November 2025','<h2>New hosts</h2> <p> Welcome to our new host: <br />      <a href=\"https://hackerpublicradio.org/correspondents/0455.html\" target=\"_blank\">Whiskeyjack</a>. </p>  <h2>Last Month\'s Shows</h2> <table id=\"t01\"> <tr> <th>Id</th> <th>Day</th> <th>Date</th> <th>Title</th> <th>Host</th> </tr> <tr> <td><strong><a href=\"https://hackerpublicradio.org/eps/hpr4501/index.html\" target=\"_blank\">4501</a></strong></td> <td>Mon</td> <td class=\"shrink\">2025-11-03</td> <td><a href=\"https://hackerpublicradio.org/eps/hpr4501/index.html\" target=\"_blank\">HPR Community News for October 2025</a></td> <td><a href=\"https://hackerpublicradio.org/correspondents/0159.html\" target=\"_blank\">HPR Volunteers</a></td> </tr> <tr> <td><strong><a href=\"https://hackerpublicradio.org/eps/hpr4502/index.html\" target=\"_blank\">4502</a></strong></td> <td>Tue</td> <td class=\"shrink\">2025-11-04</td> <td><a href=\"https://hackerpublicradio.org/eps/hpr4502/index.html\" target=\"_blank\">Cheap Yellow Display Project Part 3: Reverse beacon network </a></td> <td><a href=\"https://hackerpublicradio.org/correspondents/0394.html\" target=\"_blank\">Trey</a></td> </tr> <tr> <td><strong><a href=\"https://hackerpublicradio.org/eps/hpr4503/index.html\" target=\"_blank\">4503</a></strong></td> <td>Wed</td> <td class=\"shrink\">2025-11-05</td> <td><a href=\"https://hackerpublicradio.org/eps/hpr4503/index.html\" target=\"_blank\">One time passwords using oathtool</a></td> <td><a href=\"https://hackerpublicradio.org/correspondents/0455.html\" target=\"_blank\">Whiskeyjack</a></td> </tr> <tr> <td><strong><a href=\"https://hackerpublicradio.org/eps/hpr4504/index.html\" target=\"_blank\">4504</a></strong></td> <td>Thu</td> <td class=\"shrink\">2025-11-06</td> <td><a href=\"https://hackerpublicradio.org/eps/hpr4504/index.html\" target=\"_blank\">YouTube Subscriptions 2025 #7</a></td> <td><a href=\"https://hackerpublicradio.org/correspondents/0198.html\" target=\"_blank\">Ahuka</a></td> </tr> <tr> <td><strong><a href=\"https://hackerpublicradio.org/eps/hpr4505/index.html\" target=\"_blank\">4505</a></strong></td> <td>Fri</td> <td class=\"shrink\">2025-11-07</td> <td><a href=\"https://hackerpublicradio.org/eps/hpr4505/index.html\" target=\"_blank\">New site - looks great!</a></td> <td><a href=\"https://hackerpublicradio.org/correspondents/0318.html\" target=\"_blank\">Archer72</a></td> </tr> <tr> <td><strong><a href=\"https://hackerpublicradio.org/eps/hpr4506/index.html\" target=\"_blank\">4506</a></strong></td> <td>Mon</td> <td class=\"shrink\">2025-11-10</td> <td><a href=\"https://hackerpublicradio.org/eps/hpr4506/index.html\" target=\"_blank\">The UCSD P-System Operating System</a></td> <td><a href=\"https://hackerpublicradio.org/correspondents/0455.html\" target=\"_blank\">Whiskeyjack</a></td> </tr> <tr> <td><strong><a href=\"https://hackerpublicradio.org/eps/hpr4507/index.html\" target=\"_blank\">4507</a></strong></td> <td>Tue</td> <td class=\"shrink\">2025-11-11</td> <td><a href=\"https://hackerpublicradio.org/eps/hpr4507/index.html\" target=\"_blank\">What\'s in the bag ?</a></td> <td><a href=\"https://hackerpublicradio.org/correspondents/0030.html\" target=\"_blank\">Ken Fallon</a></td> </tr> <tr> <td><strong><a href=\"https://hackerpublicradio.org/eps/hpr4508/index.html\" target=\"_blank\">4508</a></strong></td> <td>Wed</td> <td class=\"shrink\">2025-11-12</td> <td><a href=\"https://hackerpublicradio.org/eps/hpr4508/index.html\" target=\"_blank\">YouTube Subscriptions 2025 #8</a></td> <td><a href=\"https://hackerpublicradio.org/correspondents/0198.html\" target=\"_blank\">Ahuka</a></td> </tr> <tr> <td><strong><a href=\"https://hackerpublicradio.org/eps/hpr4509/index.html\" target=\"_blank\">4509</a></strong></td> <td>Thu</td> <td class=\"shrink\">2025-11-13</td> <td><a href=\"https://hackerpublicradio.org/eps/hpr4509/index.html\" target=\"_blank\">HPR Beer Garden 5 - Heferweisen</a></td> <td><a href=\"https://hackerpublicradio.org/correspondents/0296.html\" target=\"_blank\">Kevie</a></td> </tr> <tr> <td><strong><a href=\"https://hackerpublicradio.org/eps/hpr4510/index.html\" target=\"_blank\">4510</a></strong></td> <td>Fri</td> <td class=\"shrink\">2025-11-14</td> <td><a href=\"https://hackerpublicradio.org/eps/hpr4510/index.html\" target=\"_blank\">Playing Civilization V, Part 5</a></td> <td><a href=\"https://hackerpublicradio.org/correspondents/0198.html\" target=\"_blank\">Ahuka</a></td> </tr> <tr> <td><strong><a href=\"https://hackerpublicradio.org/eps/hpr4511/index.html\" target=\"_blank\">4511</a></strong></td> <td>Mon</td> <td class=\"shrink\">2025-11-17</td> <td><a href=\"https://hackerpublicradio.org/eps/hpr4511/index.html\" target=\"_blank\">Audio-books</a></td> <td><a href=\"https://hackerpublicradio.org/correspondents/0403.html\" target=\"_blank\">Lee</a></td> </tr> <tr> <td><strong><a href=\"https://hackerpublicradio.org/eps/hpr4512/index.html\" target=\"_blank\">4512</a></strong></td> <td>Tue</td> <td class=\"shrink\">2025-11-18</td> <td><a href=\"https://hackerpublicradio.org/eps/hpr4512/index.html\" target=\"_blank\">HomeAssistant - Nmap (\"Network Mapper\")</a></td> <td><a href=\"https://hackerpublicradio.org/correspondents/0421.html\" target=\"_blank\">Reto</a></td> </tr> <tr> <td><strong><a href=\"https://hackerpublicradio.org/eps/hpr4513/index.html\" target=\"_blank\">4513</a></strong></td> <td>Wed</td> <td class=\"shrink\">2025-11-19</td> <td><a href=\"https://hackerpublicradio.org/eps/hpr4513/index.html\" target=\"_blank\">Living the Tux Life Episode 2 - Ventoy</a></td> <td><a href=\"https://hackerpublicradio.org/correspondents/0290.html\" target=\"_blank\">Al</a></td> </tr> <tr> <td><strong><a href=\"https://hackerpublicradio.org/eps/hpr4514/index.html\" target=\"_blank\">4514</a></strong></td> <td>Thu</td> <td class=\"shrink\">2025-11-20</td> <td><a href=\"https://hackerpublicradio.org/eps/hpr4514/index.html\" target=\"_blank\">YouTube Subscriptions 2025 #9</a></td> <td><a href=\"https://hackerpublicradio.org/correspondents/0198.html\" target=\"_blank\">Ahuka</a></td> </tr> <tr> <td><strong><a href=\"https://hackerpublicradio.org/eps/hpr4515/index.html\" target=\"_blank\">4515</a></strong></td> <td>Fri</td> <td class=\"shrink\">2025-11-21</td> <td><a href=\"https://hackerpublicradio.org/eps/hpr4515/index.html\" target=\"_blank\">Privacy? I don\'t have anything to hide...</a></td> <td><a href=\"https://hackerpublicradio.org/correspondents/0318.html\" target=\"_blank\">Archer72</a></td> </tr> <tr> <td><strong><a href=\"https://hackerpublicradio.org/eps/hpr4516/index.html\" target=\"_blank\">4516</a></strong></td> <td>Mon</td> <td class=\"shrink\">2025-11-24</td> <td><a href=\"https://hackerpublicradio.org/eps/hpr4516/index.html\" target=\"_blank\">Browser User Agent</a></td> <td><a href=\"https://hackerpublicradio.org/correspondents/0429.html\" target=\"_blank\">Henrik Hemrin</a></td> </tr> <tr> <td><strong><a href=\"https://hackerpublicradio.org/eps/hpr4517/index.html\" target=\"_blank\">4517</a></strong></td> <td>Tue</td> <td class=\"shrink\">2025-11-25</td> <td><a href=\"https://hackerpublicradio.org/eps/hpr4517/index.html\" target=\"_blank\">Cheap Yellow Display Project Part 4: The hardware </a></td> <td><a href=\"https://hackerpublicradio.org/correspondents/0394.html\" target=\"_blank\">Trey</a></td> </tr> <tr> <td><strong><a href=\"https://hackerpublicradio.org/eps/hpr4518/index.html\" target=\"_blank\">4518</a></strong></td> <td>Wed</td> <td class=\"shrink\">2025-11-26</td> <td><a href=\"https://hackerpublicradio.org/eps/hpr4518/index.html\" target=\"_blank\">Cosy News Corner for Week 46 - Your source for Open Source news</a></td> <td><a href=\"https://hackerpublicradio.org/correspondents/0382.html\" target=\"_blank\">Daniel Persson</a></td> </tr> <tr> <td><strong><a href=\"https://hackerpublicradio.org/eps/hpr4519/index.html\" target=\"_blank\">4519</a></strong></td> <td>Thu</td> <td class=\"shrink\">2025-11-27</td> <td><a href=\"https://hackerpublicradio.org/eps/hpr4519/index.html\" target=\"_blank\">YouTube Subscriptions 2025 #10</a></td> <td><a href=\"https://hackerpublicradio.org/correspondents/0198.html\" target=\"_blank\">Ahuka</a></td> </tr> <tr> <td><strong><a href=\"https://hackerpublicradio.org/eps/hpr4520/index.html\" target=\"_blank\">4520</a></strong></td> <td>Fri</td> <td class=\"shrink\">2025-11-28</td> <td><a href=\"https://hackerpublicradio.org/eps/hpr4520/index.html\" target=\"_blank\">Arthur C. Clarke: Rama and Sequels</a></td> <td><a href=\"https://hackerpublicradio.org/correspondents/0198.html\" target=\"_blank\">Ahuka</a></td> </tr> </table>  <h2>Comments this month</h2>  <p>These are comments which have been made during the past month, either to shows released during the month or to past shows. There are 22 comments in total.</p> <h3>Past shows</h3> <p>There are 8 comments on 8 previous shows:</p> <ul> <li><strong><a href=\"https://hackerpublicradio.org/eps/hpr3753/index.html#comments\" target=\"_blank\">hpr3753</a></strong> (2022-12-21) \"<em>Some thoughts on \"Numeronyms\"</em>\" by <a href=\"https://hackerpublicradio.org/correspondents/0225.html\" target=\"_blank\">Dave Morriss</a>.<br/> <li style=\"list-style: none; display: inline\"> <ul> <li> <a href=\"https://hackerpublicradio.org/eps/hpr3753/index.html#comment_4494\" target=\"_blank\">Comment 3</a>: Ken Fallon on 2025-11-03: \"Just linked to this\"</li> <li> <a href=\"https://hackerpublicradio.org/eps/hpr3753/index.html#comment_4499\" target=\"_blank\">Comment 4</a>: Dave Morriss on 2025-11-05: \"Thanks Ken\"</li></ul><br/> </li><li><strong><a href=\"https://hackerpublicradio.org/eps/hpr4397/index.html#comments\" target=\"_blank\">hpr4397</a></strong> (2025-06-10) \"<em>Transfer files from desktop to phone with qrcp</em>\" by <a href=\"https://hackerpublicradio.org/correspondents/0078.html\" target=\"_blank\">Klaatu</a>.<br/> <li style=\"list-style: none; display: inline\"> <ul> <li> <a href=\"https://hackerpublicradio.org/eps/hpr4397/index.html#comment_4509\" target=\"_blank\">Comment 2</a>: Ken Fallon on 2025-11-18: \"I knew this would come in handy\"</li> <li> <a href=\"https://hackerpublicradio.org/eps/hpr4397/index.html#comment_4511\" target=\"_blank\">Comment 3</a>: candycanearter07 on 2025-11-19: \"issues with qrcp...\"</li> <li> <a href=\"https://hackerpublicradio.org/eps/hpr4397/index.html#comment_4512\" target=\"_blank\">Comment 4</a>: Ken Fallon on 2025-11-20: \"qrcp is private 0x0.st is not\"</li></ul><br/> </li><li><strong><a href=\"https://hackerpublicradio.org/eps/hpr4485/index.html#comments\" target=\"_blank\">hpr4485</a></strong> (2025-10-10) \"<em>Git for Github and Gitlab</em>\" by <a href=\"https://hackerpublicradio.org/correspondents/0318.html\" target=\"_blank\">Archer72</a>.<br/> <li style=\"list-style: none; display: inline\"> <ul> <li> <a href=\"https://hackerpublicradio.org/eps/hpr4485/index.html#comment_4493\" target=\"_blank\">Comment 3</a>: Archer72 on 2025-11-01: \"candycanearter07 and Sayaci: Thanks!\"</li> <li> <a href=\"https://hackerpublicradio.org/eps/hpr4485/index.html#comment_4501\" target=\"_blank\">Comment 4</a>: candycanearter07 on 2025-11-05: \"Re: candycanearter07 and Sayaci: Thanks!\"</li></ul><br/> </li><li><strong><a href=\"https://hackerpublicradio.org/eps/hpr4491/index.html#comments\" target=\"_blank\">hpr4491</a></strong> (2025-10-20) \"<em>Thibaut and Ken Interview David Revoy</em>\" by <a href=\"https://hackerpublicradio.org/correspondents/0453.html\" target=\"_blank\">Thibaut</a>.<br/> <li style=\"list-style: none; display: inline\"> <ul> <li> <a href=\"https://hackerpublicradio.org/eps/hpr4491/index.html#comment_4495\" target=\"_blank\">Comment 3</a>: dnt on 2025-11-04: \"Great interview\"</li></ul><br/> </li><li><strong><a href=\"https://hackerpublicradio.org/eps/hpr4493/index.html#comments\" target=\"_blank\">hpr4493</a></strong> (2025-10-22) \"<em>HPR Beer Garden 4 - Weissbier</em>\" by <a href=\"https://hackerpublicradio.org/correspondents/0296.html\" target=\"_blank\">Kevie</a>.<br/> <li style=\"list-style: none; display: inline\"> <ul> <li> <a href=\"https://hackerpublicradio.org/eps/hpr4493/index.html#comment_4503\" target=\"_blank\">Comment 5</a>: TA Spinner on 2025-11-10: \"Great episode, I look forward to more!\"</li></ul><br/> </li><li><strong><a href=\"https://hackerpublicradio.org/eps/hpr4494/index.html#comments\" target=\"_blank\">hpr4494</a></strong> (2025-10-23) \"<em>Exploring FUTO Keyboard</em>\" by <a href=\"https://hackerpublicradio.org/correspondents/0441.html\" target=\"_blank\">Antoine</a>.<br/> <li style=\"list-style: none; display: inline\"> <ul> <li> <a href=\"https://hackerpublicradio.org/eps/hpr4494/index.html#comment_4491\" target=\"_blank\">Comment 1</a>: Archer72 on 2025-11-01: \"Keyboards use\"</li></ul><br/> </li><li><strong><a href=\"https://hackerpublicradio.org/eps/hpr4498/index.html#comments\" target=\"_blank\">hpr4498</a></strong> (2025-10-29) \"<em>Living the Tux Life Episode 1</em>\" by <a href=\"https://hackerpublicradio.org/correspondents/0290.html\" target=\"_blank\">Al</a>.<br/> <li style=\"list-style: none; display: inline\"> <ul> <li> <a href=\"https://hackerpublicradio.org/eps/hpr4498/index.html#comment_4505\" target=\"_blank\">Comment 1</a>: candycanearter07 on 2025-11-10: \"cheers for taking the plunge!\"</li></ul><br/> </li><li><strong><a href=\"https://hackerpublicradio.org/eps/hpr4499/index.html#comments\" target=\"_blank\">hpr4499</a></strong> (2025-10-30) \"<em>Greg Farough and Zoë Kooyman of the FSF interview Librephone lead developer Rob Savoye</em>\" by <a href=\"https://hackerpublicradio.org/correspondents/0030.html\" target=\"_blank\">Ken Fallon</a>.<br/> <li style=\"list-style: none; display: inline\"> <ul> <li> <a href=\"https://hackerpublicradio.org/eps/hpr4499/index.html#comment_4498\" target=\"_blank\">Comment 1</a>: Henrik Hemrin on 2025-11-05: \"Good interview pod to learn more about the Librephone project\"</li></ul><br/> </li></ul> <h3>This month\'s shows</h3> <p>There are 14 comments on 8 of this month\'s shows:</p> <ul><li><strong><a href=\"https://hackerpublicradio.org/eps/hpr4501/index.html#comments\" target=\"_blank\">hpr4501</a></strong> (2025-11-03) \"<em>HPR Community News for October 2025</em>\" by <a href=\"https://hackerpublicradio.org/correspondents/0159.html\" target=\"_blank\">HPR Volunteers</a>.</li> <li style=\"list-style: none; display: inline\"> <ul><li><a href=\"https://hackerpublicradio.org/eps/hpr4501/index.html#comment_4492\" target=\"_blank\">Comment 1</a>: Archer72 on 2025-11-01: \"If you do something cool...\"</li><li><a href=\"https://hackerpublicradio.org/eps/hpr4501/index.html#comment_4500\" target=\"_blank\">Comment 2</a>: candycanearter07 on 2025-11-05: \"Re: If you do something cool...\"</li><li><a href=\"https://hackerpublicradio.org/eps/hpr4501/index.html#comment_4502\" target=\"_blank\">Comment 3</a>: Archer72 on 2025-11-08: \"Tip from operat0r\"</li></ul><br/> </li><li><strong><a href=\"https://hackerpublicradio.org/eps/hpr4503/index.html#comments\" target=\"_blank\">hpr4503</a></strong> (2025-11-05) \"<em>One time passwords using oathtool</em>\" by <a href=\"https://hackerpublicradio.org/correspondents/0455.html\" target=\"_blank\">Whiskeyjack</a>.</li> <li style=\"list-style: none; display: inline\"> <ul><li><a href=\"https://hackerpublicradio.org/eps/hpr4503/index.html#comment_4504\" target=\"_blank\">Comment 1</a>: interesting, but... on 2025-11-10: \"candycanearter07\"</li><li><a href=\"https://hackerpublicradio.org/eps/hpr4503/index.html#comment_4507\" target=\"_blank\">Comment 2</a>: Whiskeyjack on 2025-11-12: \"One time passwords using oathtool\"</li></ul><br/> </li><li><strong><a href=\"https://hackerpublicradio.org/eps/hpr4505/index.html#comments\" target=\"_blank\">hpr4505</a></strong> (2025-11-07) \"<em>New site - looks great!</em>\" by <a href=\"https://hackerpublicradio.org/correspondents/0318.html\" target=\"_blank\">Archer72</a>.</li> <li style=\"list-style: none; display: inline\"> <ul><li><a href=\"https://hackerpublicradio.org/eps/hpr4505/index.html#comment_4496\" target=\"_blank\">Comment 1</a>: folky on 2025-11-04: \"Thank you\"</li></ul><br/> </li><li><strong><a href=\"https://hackerpublicradio.org/eps/hpr4506/index.html#comments\" target=\"_blank\">hpr4506</a></strong> (2025-11-10) \"<em>The UCSD P-System Operating System</em>\" by <a href=\"https://hackerpublicradio.org/correspondents/0455.html\" target=\"_blank\">Whiskeyjack</a>.</li> <li style=\"list-style: none; display: inline\"> <ul><li><a href=\"https://hackerpublicradio.org/eps/hpr4506/index.html#comment_4506\" target=\"_blank\">Comment 1</a>: L\'andrew on 2025-11-11: \"A blast from the p-code past...\"</li><li><a href=\"https://hackerpublicradio.org/eps/hpr4506/index.html#comment_4508\" target=\"_blank\">Comment 2</a>: brian-in-ohio on 2025-11-17: \"good show\"</li><li><a href=\"https://hackerpublicradio.org/eps/hpr4506/index.html#comment_4513\" target=\"_blank\">Comment 3</a>: Trixter on 2025-11-21: \"This was very well done\"</li></ul><br/> </li><li><strong><a href=\"https://hackerpublicradio.org/eps/hpr4509/index.html#comments\" target=\"_blank\">hpr4509</a></strong> (2025-11-13) \"<em>HPR Beer Garden 5 - Heferweisen</em>\" by <a href=\"https://hackerpublicradio.org/correspondents/0296.html\" target=\"_blank\">Kevie</a>.</li> <li style=\"list-style: none; display: inline\"> <ul><li><a href=\"https://hackerpublicradio.org/eps/hpr4509/index.html#comment_4510\" target=\"_blank\">Comment 1</a>: ClaudioM on 2025-11-19: \"Both are Tasty!\"</li></ul><br/> </li><li><strong><a href=\"https://hackerpublicradio.org/eps/hpr4511/index.html#comments\" target=\"_blank\">hpr4511</a></strong> (2025-11-17) \"<em>Audio-books</em>\" by <a href=\"https://hackerpublicradio.org/correspondents/0403.html\" target=\"_blank\">Lee</a>.</li> <li style=\"list-style: none; display: inline\"> <ul><li><a href=\"https://hackerpublicradio.org/eps/hpr4511/index.html#comment_4497\" target=\"_blank\">Comment 1</a>: Lee on 2025-11-05: \"Errata\"</li></ul><br/> </li><li><strong><a href=\"https://hackerpublicradio.org/eps/hpr4517/index.html#comments\" target=\"_blank\">hpr4517</a></strong> (2025-11-25) \"<em>Cheap Yellow Display Project Part 4: The hardware </em>\" by <a href=\"https://hackerpublicradio.org/correspondents/0394.html\" target=\"_blank\">Trey</a>.</li> <li style=\"list-style: none; display: inline\"> <ul><li><a href=\"https://hackerpublicradio.org/eps/hpr4517/index.html#comment_4514\" target=\"_blank\">Comment 1</a>: mirwi on 2025-11-25: \"Explanation of \"silent key\".\"</li><li><a href=\"https://hackerpublicradio.org/eps/hpr4517/index.html#comment_4515\" target=\"_blank\">Comment 2</a>: Trey on 2025-11-26: \"Thank you, Mirwi.  Silent Key episode link\"</li></ul><br/> </li><li><strong><a href=\"https://hackerpublicradio.org/eps/hpr4518/index.html#comments\" target=\"_blank\">hpr4518</a></strong> (2025-11-26) \"<em>Cosy News Corner for Week 46 - Your source for Open Source news</em>\" by <a href=\"https://hackerpublicradio.org/correspondents/0382.html\" target=\"_blank\">Daniel Persson</a>.</li> <li style=\"list-style: none; display: inline\"> <ul><li><a href=\"https://hackerpublicradio.org/eps/hpr4518/index.html#comment_4516\" target=\"_blank\">Comment 1</a>: Torin Doyle on 2025-11-29: \"I like this news feature.\"</li></ul><br/> </li></ul>  <h2>Mailing List discussions</h2> <p> Policy decisions surrounding HPR are taken by the community as a whole. This discussion takes place on the <a href=\"https://lists.hackerpublicradio.com/mailman/listinfo/hpr\" target=\"_blank\">Mailing List</a> which is open to all HPR listeners and contributors. The discussions are open and available on the HPR server under <a href=\"https://lists.hackerpublicradio.com/pipermail/hpr\">Mailman</a>. </p> <p>The threaded discussions this month can be found here:</p> <a href=\"https://lists.hackerpublicradio.com/pipermail/hpr/2025-November/thread.html\" target=\"_blank\">https://lists.hackerpublicradio.com/pipermail/hpr/2025-November/thread.html</a>  <h2>Events Calendar</h2> <p>With the kind permission of <strong>LWN.net</strong> we are linking to <a href=\"https://lwn.net/Calendar/\" target=\"_blank\">The LWN.net Community Calendar</a>.</p> <p>Quoting the site:</p> <blockquote>This is the LWN.net community event calendar, where we track events of interest to people using and developing Linux and free software. Clicking on individual events will take you to the appropriate web page.</blockquote>',159,47,1,'CC-BY-SA','Community News',0,0,1),
(4251,'2024-11-18','Dave and MrX turn over a new leaf',3462,'It\'s a leafy day in Studio N','<article>\n<h2 id=\"introduction\">Introduction</h2>\n<p>Hosts:</p>\n<ul>\n<li><a\nhref=\"https://hackerpublicradio.org/correspondents/0201.html\">MrX</a></li>\n<li><a\nhref=\"https://hackerpublicradio.org/correspondents/0225.html\">Dave\nMorriss</a></li>\n</ul>\n<p>We recorded this on Saturday September 14<sup>th</sup> 2024. This\ntime we were at Swanston Farm, a place we had previously visited for\nlunch in March 2024.</p>\n<p>After lunch we adjourned to Dave\'s car (<em>Studio N</em>) in the car\npark, and recorded a chat. The details of why it is <u>Studio N</u>\ninstead of <u>Studio C</u> is mentioned in the chat itself!</p>\n<p><small><em>Preparing this show has taken longer than usual this time\n- apologies!</em></small></p>\n<h2 id=\"topics-discussed\">Topics discussed</h2>\n<ul>\n<li>Studio change:\n<ul>\n<li>Sadly, since the last recording <em>Studio C</em> (Dave\'s 10-year\nold <a\nhref=\"https://en.wikipedia.org/wiki/Citro%C3%ABn_C4_Picasso\">Citroën C4\nPicasso</a>) self-destructed. It was a diesel car and one of the fuel\ninjectors failed and destroyed the engine management system as it died.\nIt wasn\'t worth repairing!</li>\n<li>The replacement is <em>Studio N</em>, a Nissan Leaf, which is an <a\nhref=\"https://en.wikipedia.org/wiki/Electric_vehicle\">EV (electric\nvehicle)</a>. The price of nearly new EV cars is fairly good in the UK\nat this time in 2024, so it seemed like a good opportunity to get\none.</li>\n<li>Learning to own and drive an EV can be challenging to some extent:\n<ul>\n<li>\"Range anxiety\" and access to charging stations</li>\n<li><a\nhref=\"https://en.wikipedia.org/wiki/Regenerative_braking\">Regenerative\nbraking</a></li>\n<li>Fast (DC) charging on the road is relatively expensive (£0.79p per\nkWh), but is convenient</li>\n<li>Ideally, a home (AC) charger is required. It will be slower (7 kW\nper hour) but will be cheaper with a night tariff (£0.085 per kWh versus\n£0.25 per kWh normal rate)</li>\n<li>There is potential, with solar panels and a battery, to use free\nelectricity to charge an EV at home</li>\n</ul></li>\n<li><code>MrX</code> might like to move to an EV in the future</li>\n</ul></li>\n</ul>\n<ul>\n<li>YouTube channels:\n<ul>\n<li>Dave is subscribed to a channel called \"<a\nhref=\"https://www.youtube.com/@ThePostApocalypticInventor\"><em>The Post\nApocalyptic Inventor</em> (TPAI)</a>\" and recently shared one of the\nlatest videos with <code>MrX</code>. The channel owner collects\ndiscarded items from scrapyards in Germany, or buys old bits of\nequipment, and gets them working again.\n<ul>\n<li><a href=\"https://www.youtube.com/watch?v=BJklwDYfZDo\">Milling\nMachine Adventure! Bring her Home! / Gantry Build</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=18-lrsp8Vg8\">I built a CNC\nPlasma Cutting Table from Scrap!</a></li>\n</ul></li>\n</ul></li>\n</ul>\n<ul>\n<li>Databases:\n<ul>\n<li><code>MrX</code> used <a\nhref=\"https://en.wikipedia.org/wiki/DBase\">dBase</a> on DOS in the past,\nand received some training in databases.</li>\n<li>In 2017 he obtained a large <a\nhref=\"https://en.wikipedia.org/wiki/Comma-separated_values\">csv\n(comma-separated values)</a> file from the <a\nhref=\"https://en.wikipedia.org/wiki/Ofcom\">OFCOM (Office of\nCommunications, UK)</a> website containing their <em>Wireless Legacy\nRegister</em>, which contains licensees and frequencies with longitude\nand latitude values. A means of interrogating this file was sought,\nhaving found that spreadsheets were not really very good at handling\nfiles of this size (around 200,000 records).</li>\n<li><code>MrX</code> used the <a\nhref=\"https://github.com/BurntSushi/xsv\">xsv tool</a>, which was covered\nin shows <a\nhref=\"https://hackerpublicradio.org/eps/hpr2698/index.html\">hpr2698</a>\nand <a\nhref=\"https://hackerpublicradio.org/eps/hpr2752/index.html\">hpr2752</a>\nby <a href=\"https://hackerpublicradio.org/correspondents/0300.html\">Mr.\nYoung</a>. It allows a CSV file to be interrogated in quite a lot of\ndetail from the command line. However, with a file of this size it was\nstill quite slow.</li>\n<li>In a discussion with Dave the subject of the <a\nhref=\"https://en.wikipedia.org/wiki/SQLite\">SQLite</a> database came up.\nUsing the <a href=\"https://sqlitebrowser.org/\">SQLite Browser</a> it was\nsimple to load this CSV file into a database and gain rapid access to\nits contents. SQLite databases may also be queried through a\ncommand-line interface which can also be run on a Raspberry Pi, phones,\ntablets and on a ChromeBook.</li>\n</ul></li>\n</ul>\n<ul>\n<li>The <a\nhref=\"https://github.com/jiro4989/textimg\"><code>textimg</code></a>\ntool:\n<ul>\n<li>This is a command to convert from colored text (ANSI or 256) to an\nimage. Dave generates coloured text from his meal database (HPR show <a\nhref=\"https://hackerpublicradio.org/eps/hpr3386/index.html\">hpr3386 ::\nWhat\'s for dinner?</a>, this being a later enhancement), then captures\nthe output and sends it to a Telegram channel shared with his\nfamily.</li>\n<li>Dave also exchanges weather data obtained from the site\n<code>wttr.in</code> with <a\nhref=\"https://hackerpublicradio.org/correspondents/0318.html\"><code>Archer72</code></a>\non Matrix.</li>\n<li>This is a useful tool for generating images from text, including any\ntext colours. It can be installed from the GitHub copy, and maybe from\nsome package repositories.</li>\n</ul></li>\n</ul>\n<ul>\n<li>Using coloured text in BASH (Dave responding to <code>MrX</code>):\n<ul>\n<li>I have used a function to define variables with colour names:\n<ul>\n<li>Call a function <code>define_colours</code> which defines (and\nexports) variables called <code>red</code>, <code>green</code>,\netc.</li>\n<li>Using <code>red=$(tput setaf 1); export red</code></li>\n</ul></li>\n<li>I use the colours in two ways:\n<ul>\n<li>Method 1: use these names in\n<code>echo \"${red}Red text${reset}\"</code></li>\n<li>Method 2: use another function <code>coloured</code> which takes two\narguments, a colour name (as a string) and a message. The script\nencloses the message argument in a colour variable and a reset. The\ncolour name argument is used in a redirection to turn <code>red</code>\ninto the contents of the variable <code>$red</code>.</li>\n</ul></li>\n<li>This probably needs a show to explain things fully.</li>\n</ul></li>\n</ul>\n<ul>\n<li>Terminal multiplexers:\n<ul>\n<li>Dave and <code>MrX</code> use GNU <code>screen</code>.</li>\n<li>Both recognise that the alternative <code>tmux</code> might be\nbetter to use in terms of features, but are reluctant to learn a new\ninterface!</li>\n<li>Dave has noticed a new open-source alternative called <a\nhref=\"https://zellij.dev/\">zellij</a> but has not yet used it.</li>\n</ul></li>\n</ul>\n<ul>\n<li>Variable weather:\n<ul>\n<li>Dealing with hot weather: YouTube, Techmoan channel <a\nhref=\"https://www.youtube.com/watch?v=6kw4B-8ez1M\">PERSONAL AIRCON -\nRanvoo Aice Lite Review</a></li>\n<li><code>MrX</code> had recently had a holiday in the <a\nhref=\"https://en.wikipedia.org/wiki/Lake_District\">Lake District</a>\nwhere the weather was good.</li>\n<li>In Scotland the weather has been wet and windy in the same\nperiod.</li>\n</ul></li>\n</ul>\n<ul>\n<li>Spectrum24, OggCamp:\n<ul>\n<li><code>MrX</code> is attending his first <a\nhref=\"https://oggcamp.org/\">OggCamp</a> in Manchester. Dave will be\nattending too, as will Ken.\n<ul>\n<li>HPR has a table/booth at OggCamp.</li>\n</ul></li>\n<li>Ken was recently at <a\nhref=\"https://spectrum-conference.org/\">Spectrum24</a>, an amateur radio\nconference in Paris.\n<ul>\n<li><a href=\"https://meshtastic.org/\">Meshtastic</a> an open source,\noff-grid, decentralized, mesh network built to run on affordable,\nlow-power devices</li>\n</ul></li>\n</ul></li>\n</ul>\n<ul>\n<li>Old inkjet printers:\n<ul>\n<li><code>MrX</code> has an Epson R300 printer where the black ink seems\nto have dried up.</li>\n<li>Dave has an old HP Inkjet with the same type of problem. This\nprinter has a scanner and FAX capability. An <a\nhref=\"https://hackerpublicradio.org/eps/hpr1864/index.html\">HPR show</a>\nwas done in 2015 describing how it was set up to use a Raspberry Pi to\nmake it available on the local network.</li>\n</ul></li>\n</ul>\n<ul>\n<li>Propelling or <em>mechanical</em> pencils:\n<ul>\n<li>Dave had a Pentel GraphGear 1000 propelling (aka mechanical) pencil\nwhich was mentioned on <a\nhref=\"https://hackerpublicradio.org/eps/hpr3197/index.html\">HPR show\n3197</a>. This was dropped onto concrete, and didn\'t appear damaged at\nthe time, but it apparently received internal damage and eventually fell\napart.</li>\n</ul></li>\n</ul>\n<h2 id=\"links\">Links</h2>\n<ul>\n<li>Electric cars:\n<ul>\n<li><a href=\"https://en.wikipedia.org/wiki/Electric_vehicle\">EV\n(electric vehicle)</a></li>\n<li><a\nhref=\"https://en.wikipedia.org/wiki/Regenerative_braking\">Regenerative\nbraking</a></li>\n</ul></li>\n</ul>\n<ul>\n<li>Databases\n<ul>\n<li>SQLite:\n<ul>\n<li><a href=\"https://en.wikipedia.org/wiki/SQLite\">SQLite</a></li>\n<li><a href=\"https://sqlitebrowser.org/\">SQLite Browser</a></li>\n<li><a href=\"https://www.sqlitetutorial.net/\">An Easy Way to Master\nSQLite Fast</a></li>\n<li>Open source SQLite Studio available for Linux <a\nhref=\"https://sqlitestudio.pl/\">SQLiteStudio</a></li>\n</ul></li>\n<li>SQL:\n<ul>\n<li>Origins: <a\nhref=\"https://youtube.com/watch?v=z8L202FlmD4&amp;si=qUNEabvUxrLKH0Ha\">The\nBirth of SQL &amp; the Relational Database</a></li>\n<li>Intricacies: <a\nhref=\"https://stevestedman.com/2015/03/mysql-join-types-poster/\">MySQL\nJOIN Types Poster (Steve Stedman)</a></li>\n</ul></li>\n<li>Design:\n<ul>\n<li><a\nhref=\"https://youtube.com/watch?v=y1tcbhWLiUM&amp;si=OorjdxGR2Dq-sZn-\">How\nto Fake a Database Design - Curtis Poe (<em>Ovid</em>)</a></li>\n</ul></li>\n</ul></li>\n</ul>\n<ul>\n<li>The <code>textimg</code> tool:\n<ul>\n<li>GitHub repository: <a\nhref=\"https://github.com/jiro4989/textimg\">textimg</a></li>\n</ul></li>\n</ul>\n<ul>\n<li><code>zellij</code>:\n<ul>\n<li>Website: <a href=\"https://zellij.dev/\">zellij</a></li>\n<li>Github repository: <a\nhref=\"https://github.com/zellij-org/zellij\">zellij</a></li>\n<li>Quote from the repo: <em>Zellij is a workspace aimed at developers,\nops-oriented people and anyone who loves the terminal. Similar programs\nare sometimes called \"Terminal Multiplexers\".</em></li>\n</ul></li>\n</ul>\n</article>\n',225,0,1,'CC-BY-SA','HPR hosts, discussion, Edinburgh',0,0,1),
(4245,'2024-11-08','What\'s in my bag?',1256,'An impromptu What\'s in My Bag episode from the reserve queue','<p>Just me rambling as I go through my (former) every day carry bag in\npreparation for a trip.</p>\n',394,23,0,'CC-BY-SA','bag, rambling',0,0,1),
(4252,'2024-11-19','Privacy is not hiding',984,'Sgoti argues privacy is not hiding','<h2 id=\"sgoti-argues-privacy-is-not-hiding\">Sgoti argues privacy is not\nhiding</h2>\n<ul>\n<li>Tags: privacy, security, hiding</li>\n</ul>\n<p>Some Guy on the Internet, \"I consider any unwelcome questioning of\none\'s privacy to be a deliberate attack against ones\' privacy. The\nattack is socially engineered to erode the victims guard against\nunwelcome questioning usually prompting the victim with an easy\nsurrendering statement, &#x201C;I\'ve got nothing to hide&#x201D;. Once the victim\nsurrenders to the attack, by equating privacy with hiding, the victim\nbecomes more vulnerable to further/deeper probing for sensitive\ninformation.\"</p>\n<ul>\n<li><strong>Source:</strong> <a\nhref=\"https://en.wikipedia.org/wiki/Privacy\"\ntitle=\"From Wikipedia, the free encyclopedia\">wikipedia.org:\nPrivacy.</a></li>\n</ul>\n<blockquote>\n<p>Privacy is the ability of an individual or group to seclude\nthemselves or information about themselves, and thereby express\nthemselves selectively.<br />\nThe domain of privacy partially overlaps with security, which can\ninclude the concepts of appropriate use and protection of information.\nPrivacy may also take the form of bodily integrity.</p>\n</blockquote>\n<ul>\n<li><strong>Supporting Source:</strong> <a\nhref=\"https://dictionary.cambridge.org/dictionary/english/privacy\"\ntitle=\"Meaning of privacy in English\">cambridge.org: Privacy.</a></li>\n</ul>\n<blockquote>\n<p>Someone\'s right to keep their personal matters and relationships\nsecret.</p>\n</blockquote>\n<ul>\n<li><strong>Supporting Source:</strong> <a\nhref=\"https://www.merriam-webster.com/dictionary/privacy\">merriam-webster.com:\nPrivacy.</a></li>\n</ul>\n<blockquote>\n<p>a: the quality or state of being apart from company or observation :\n<a\nhref=\"https://www.merriam-webster.com/dictionary/seclusion\">seclusion</a>.<br />\nb: freedom from unauthorized intrusion.</p>\n</blockquote>\n<ul>\n<li><strong>Supporting Source:</strong> <a\nhref=\"https://www.dictionary.com/browse/privacy\">dictionary.com:\nPrivacy.</a></li>\n</ul>\n<blockquote>\n<p>The state of being apart from other people or concealed from their\nview; solitude; seclusion: Please leave the room and give me some\nprivacy.<br />\nThe state of being free from unwanted or undue intrusion or disturbance\nin one\'s private life or affairs; freedom to be let alone: Tourists must\nrespect the tribe\'s privacy.</p>\n</blockquote>\n<ul>\n<li><strong>Source:</strong> <a\nhref=\"https://www.npr.org/2023/03/24/1165822372/afroman-police-raid-lawsuit-music-videos\"\ntitle=\"Afroman, whose real name is Joseph Foreman.\">Afroman put home\nfootage of a police... Now the cops are suing him.</a></li>\n<li><strong>Source:</strong> <a\nhref=\"https://www.vice.com/en/article/jg5a88/cops-sue-teen-invasion-of-privacy-false-arrest.\">Cops\nAre Suing a Teen for Invasion of Privacy After Allegedly False Arrest\nGoes Viral.</a></li>\n<li><strong>Source:</strong> <a\nhref=\"https://www.justice.gov/crt/addressing-police-misconduct-laws-enforced-department-justice\">Addressing\nPolice Misconduct Laws Enforced By The Department Of Justice.</a></li>\n</ul>\n<p>This work is licensed under a <a\nhref=\"https://creativecommons.org/licenses/by-sa/4.0/\"\ntitle=\"CC-BY-SA 4.0 International\">Creative Commons\nAttribution-ShareAlike 4.0 International License</a>.</p>\n',391,74,0,'CC-BY-SA','privacy, security, hiding',0,0,1),
(4253,'2024-11-20','A brief introduction of myself',156,'Where kinghezy briefly introduces himself','<p><a href=\"https://www.debian.org/\"\nclass=\"uri\">https://www.debian.org/</a></p>\n<p><a href=\"https://wiki.debian.org/DebianTesting\"\nclass=\"uri\">https://wiki.debian.org/DebianTesting</a></p>\n<p><a href=\"https://en.m.wikipedia.org/wiki/Rolling_release\"\nclass=\"uri\">https://en.m.wikipedia.org/wiki/Rolling_release</a></p>\n<p><a href=\"https://en.m.wikipedia.org/wiki/Amateur_radio\"\nclass=\"uri\">https://en.m.wikipedia.org/wiki/Amateur_radio</a></p>\n<p><a href=\"https://www.arrl.org/getting-your-technician-license\"\nclass=\"uri\">https://www.arrl.org/getting-your-technician-license</a></p>\n',414,0,0,'CC-BY-SA','Introduction',0,0,1),
(4254,'2024-11-21','Cake Money Money Cake Money Money Cake!',698,'Operator talks about web server monitoring and financial tracking','<p>50 Cent Cake<br />\n<a href=\"https://m.youtube.com/watch?v=TuN709KlOsA\"\nclass=\"uri\">https://m.youtube.com/watch?v=TuN709KlOsA</a></p>\n<p>Money, money, money, money<br />\nCake<br />\nI need the cake n***a</p>\n<p>The Unit don\'t play, we rap but we strapped<br />\nBuck got the shotgun, 50 got the mack<br />\nSpida got the sweeper and you bound to hear it clap<br />\nYou won\'t have another birthday cake afta that<br />\nCause Yayo got a temper and he don\'t know how to act<br />\nI\'ve been gone all winter but now a n***a back</p>\n<p>To get the money, the money<br />\nThe money, the money, the cake</p>\n',36,0,1,'CC-BY-SA','Servers,WebHosting,Financial Tracking,Money,Website Monitoring',0,0,1),
(4255,'2024-11-22','What is on My Podcast Player 2024, Part 1',968,'This is an update on the podcasts Ahuka listens to.','<p>I listen to a lot of podcasts and so I am sharing my finds with the\ncommunity</p>\n<h2 id=\"links\">Links</h2>\n<ul>\n<li><a href=\"http://feeds.feedburner.com/dancarlin/history\"\nclass=\"uri\">http://feeds.feedburner.com/dancarlin/history</a></li>\n<li><a href=\"https://dwowhocast.libsyn.com/rss\"\nclass=\"uri\">https://dwowhocast.libsyn.com/rss</a></li>\n<li><a href=\"https://freyburg.libsyn.com/rss\"\nclass=\"uri\">https://freyburg.libsyn.com/rss</a></li>\n<li><a href=\"http://rss.sciam.com/sciam/science-talk\"\nclass=\"uri\">http://rss.sciam.com/sciam/science-talk</a></li>\n<li><a href=\"https://www.splendidchaps.com/feed/podcast/\"\nclass=\"uri\">https://www.splendidchaps.com/feed/podcast/</a></li>\n<li><a href=\"http://feeds.feedburner.com/TheDoctorWhoPodcast\"\nclass=\"uri\">http://feeds.feedburner.com/TheDoctorWhoPodcast</a></li>\n<li><a href=\"https://podcasts.files.bbci.co.uk/b00snr0w.rss\"\nclass=\"uri\">https://podcasts.files.bbci.co.uk/b00snr0w.rss</a></li>\n<li><a href=\"https://www.astronomycast.com/feed/\"\nclass=\"uri\">https://www.astronomycast.com/feed/</a></li>\n<li><a href=\"http://feeds.feedburner.com/IHearOfSherlock\"\nclass=\"uri\">http://feeds.feedburner.com/IHearOfSherlock</a></li>\n<li><a href=\"https://www.bigfinish.com/podcasts.rss\"\nclass=\"uri\">https://www.bigfinish.com/podcasts.rss</a></li>\n<li><a href=\"https://feeds.feedburner.com/dancarlin/commonsense\"\nclass=\"uri\">https://feeds.feedburner.com/dancarlin/commonsense</a></li>\n<li><a href=\"https://benfranklinsworld.com/category/podcast/feed/\"\nclass=\"uri\">https://benfranklinsworld.com/category/podcast/feed/</a></li>\n</ul>\n',198,75,0,'CC-BY-SA','podcasts',0,0,1),
(4262,'2024-12-03','DIY C02',584,'Quick chat and update on D I Y C 0 2','<p>Just <a href=\"https://kagi.com\">KAGI.com</a> it</p>\n',36,0,0,'CC-BY-SA','DIY',0,0,1),
(4291,'2025-01-13','AM on the Nyquist Prompt',755,'Lee experiments with amplitude modulation and learns lisp in the process','<p>Studying for a license from the <a\nhref=\"https://rsgb.org/main/\">Radio Society of Great Britain</a> lead to\nan interesting experiment.</p>\n<p>What happens if one sine wave is modulated with another sine wave?\nSimilar to sending a pure tone over AM radio.</p>\n<p>Apparently the result is two frequencies, one equal to the difference\nof the two original frequencies and one equal to the sum.</p>\n<p>Creating two tones and multiplying them in Nyquist Prompt in Audacity\nthen plotting the resulting spectrum concurs.</p>\n<pre class=\"lisp\"><code>(mult (sound (hzosc 1000)) (sound (hzosc 500)))</code></pre>\n<p>The original tones were 1 kHz and 0.5 kHz.</p>\n<p>The result was a peak at 0.5 kHz (the difference) and one at 1.5 kHz\n(the sum).</p>\n<p><img src=\"https://hackand.click/articles/am.png\"\nalt=\"Audacity\" /></p>\n<p>On another note, the manual mentions in practice if one of the tones\nis the carrier frequency and one of them is the signal, then the carrier\nshould not be modulated all the way down to zero or all the way up to\nmaximum. This avoids distortion and clipping so the quality is better\nwhen received. It is also more power efficient so the transmission can\ntravel further given the transmitter has a limited power output.</p>\n',403,43,0,'CC-BY-SA','lisp, nyquist, radio',0,0,1),
(4256,'2024-11-25','Birds of a Feather Talk at OLF 2024',1010,'Lyle and Thaj speak some nonsense to make other people make shows.','<p>Lyle and Thaj speak some nonsense to make other people make\nshows.</p>\n',270,0,1,'CC-BY-SA','OLF, Record a show',0,0,1),
(4258,'2024-11-27','Introduction and History of Using Computers',743,'Introducing myself to the HPR community and going through my timeline of computer usage.','<p>HPR Hosts mentioned:<br />\n<a\nhref=\"https://hackerpublicradio.org/correspondents/0318.html\">Archer72 -\nMark Rice</a><br />\n<a\nhref=\"https://hackerpublicradio.org/correspondents/0314.html\">TheLoveBug\n- Dave Lee</a><br />\n<a\nhref=\"https://hackerpublicradio.org/correspondents/0296.html\">Kevie</a><br />\n<a\nhref=\"https://hackerpublicradio.org/correspondents/0434.html\">Lochyboy -\nAlexander</a></p>\n<p>Computers mentioned:<br />\nOric-1, Oric Atmos, Dragon 32, Atari 800XL, Atari 400, Acorn Electron,\nAmstrad PCW8256, Amstrad PCW8512, Enterprise 128, AST PC, GateWay PC,\nSystem76 Thelio PC, Razer 15 Laptop</p>\n<p>The easiest ways for people to contact me via Telegram or\nMastodon.<br />\nTelegram: <a href=\"https://t.me/solusspider\"\nclass=\"uri\">https://t.me/solusspider</a><br />\nMastodon: <span class=\"citation\"\ndata-cites=\"SolusSpider\">@SolusSpider</span><span class=\"citation\"\ndata-cites=\"linuxrocks.online\">@linuxrocks.online</span></p>\n',437,0,0,'CC-BY-SA','Oric,Dragon,Atari,Acorn,Amstrad,Enterprise,Amiga,Windows,Linux,Food Bank,IRC,Newsgroups,ICQ,TuxJam',0,0,1),
(4259,'2024-11-28','Why digitize photos',404,'Two reasons to digitize photos is discussed: for a historical archive or for a personal collection.','<p>Today I want to talk about why digitizing analog photos.</p>\n<p>Three years ago, I wrote a chapter in the annual book for a home\nvillage association. The chapter was about life in a small village in\nthe 1930\'s. In addition to the text I had a couple of black and white\nphoto prints from those days.</p>\n<p>I said black and white. But honestly, an eighty year old black and\nwhite print is not only black and white. Because of aging, type of paper\nand development method, the black and white print has colours. Should\nthe photos in the book chapter be of best black and white photo quality,\nor should they reflect the prints as they are at the time of the book\nrelease?</p>\n<p>There is no right or wrong answer into that question. But it relates\nto the topic, why digitize?</p>\n<p>I have found the web site \"Preserving history. How to Digitally\nArchive and Share Historical Photographs, Documents, and Audio\nRecordings\".</p>\n<p>The main focus is photographs, but as the title states it is also\nabout documents and audio. The web site is written and organized as a\nbook and is a very comprehensive and useful resource. It is a few years\nold but is still to a large extent accurate and relevant. The exact\ndetails, which equipment, formats, settings and so on can be discussed.\nAnd as technology has evolved, what the book describes as best has to\nsome extent changed so the best practise can now in some cases be seen\nas good practise.</p>\n<p>The book has a chapter titled \"Historical Archive Versus Personal\nPhotograph Collection\".</p>\n<p>The historical archive is about to preserve the object in every\ndetail, e.g. colours, scratches, borders and dimensions. It is\napplicable for true archives, like museums and other public\narchives.</p>\n<p>The other reason to digitize is of personal and family reasons. In\nthis scope, the focus is to have good photos. This approach gives better\nflexibility in method, equipment and settings, and in general the work\nwill probably be less time consuming.</p>\n<p>So the take away from this episode is that I recommend you to give\nthe purpose of why you digitize photos a thought before you start a big\ndigitizing project. And that you need to balance any desire to make the\nbest possible archival copy with the best possible equipment and all\ntime in the world with what is realistic for you, and what is good\nenough. And at the other end, the happiness to have and share a digital\nphoto copy of any quality is better than none at all, but considering a\nbit more of work and attention may improve the quality\nsignificantly.</p>\n<p>Finally, I also want to give a few remarks to my own episode number\n4244.</p>\n<p>I talked about placing the negative or positive in direct contact to\nglass under or above it. Be observant, there is a risk this will create\nNewton rings which can affect the result in a not acceptable way.</p>\n<p>The problem that the object is not totally flat in a flat bed scanner\nshould in most cases not be a problem because the scanners are normally\ndesigned to manage a bit of focus depth.</p>\n<p>Remarks on my repro setup:</p>\n<p>My digital camera is mounted on a repro stand. The stand is similar\nto the stand used in an analog darkroom.</p>\n<p>The \"duplication direction\" is opposite to the analog darkroom: The\ncamera is mounted on the stand, while the object to be duplicated is\nplaced on the base plate.</p>\n<p>I have a light table on the base plate when a negative or positive is\nduplicated.</p>\n<p>Mounted on the camera, depending on lens, may an extension tube be\nneeded to achieve the macro distance to duplicate a small object.</p>\n<h2 id=\"references\">References:</h2>\n<ul>\n<li><p>Preserving history. How to Digitally Archive and Share Historical\nPhotographs, Documents, and Audio Recordings. <a\nhref=\"https://archivehistory.jeksite.com\"\nclass=\"uri\">https://archivehistory.jeksite.com</a></p></li>\n<li><p>Two methods of digitizing photos. <a\nhref=\"https://hackerpublicradio.org/eps/hpr4244/index.html\"\nclass=\"uri\">https://hackerpublicradio.org/eps/hpr4244/index.html</a></p></li>\n</ul>\n',429,0,0,'CC-BY-SA','photography, digitize, digitizing, scanner, reproduction, repro',0,0,1),
(4263,'2024-12-04','An interview with Adam Matthews about the Disco Pigeon',1432,'Ken interviews Adam who stole the show at OggCamp with his Disco Pigeon','<p>In today\'s show we speak to Adam Matthews about his Disco Pigeon that he displayed at OggCamp2024. He tells us his background, how it came to be, and chat about how he built it.</p>\n\n<p><a href=\"hpr4263_image_1.jpg\"><img src=\"hpr4263_image_1_tn.jpg\" alt=\"A Pigeon covered in light reflecting mirrors, on its perch\" /></a></p>\n\n<h3>Links</h3>\n<ul>\n<li><a href=\"https://admatthews.co.uk/\">https://admatthews.co.uk/</a></li>\n<li><a href=\"https://mastodon.social/@wonkatron\">https://mastodon.social/@wonkatron</a></li>\n<li><a href=\"https://www.oggcamp.org/\">https://www.oggcamp.org/</a></li>\n</ul>\n',30,0,0,'CC-BY-SA','DiscoPigeon, OggCamp24',0,0,1),
(4264,'2024-12-05','Mintcast, high crimes and misdemeanors.',1833,'Sgoti talks about mintCast episode 450 Crumbling Foundations.','<h1 id=\"mintcast-high-crimes-and-misdemeanors.\">Mintcast, high crimes\nand misdemeanors.</h1>\n<h2\nid=\"sgoti-talks-about-mintcast-episode-450-crumbling-foundations.\">Sgoti\ntalks about mintCast episode 450 Crumbling Foundations.</h2>\n<ul>\n<li><p>tags: Thunderbird, email, mintcast</p></li>\n<li><p><strong>Source:</strong> <a href=\"https://mintcast.org/about/\"\ntitle=\"About mintCast\">mintcast:</a> About mintCast.<br />\n</p>\n<ul>\n<li>mintCast is \"The podcast by the Linux Mint community for all users\nof Linux.\" As a community-driven podcast, we like to have as much\ninvolvement from special guests as possible.</li>\n</ul></li>\n<li><p><strong>Supporting source:</strong> <a\nhref=\"https://mintcast.org/show-notes/episode-450-show-notes/\"\ntitle=\"Episode 450 Show Notes\">mintcast:</a> Episode 450 Show\nNotes.<br />\n</p>\n<ul>\n<li><ol start=\"7\" type=\"1\">\n<li>Keep your mailbox and device(s) secure and clean. Take extra steps\nto keep your mailbox tidy and secure. Compromised mailbox can authorize\naccess to your accounts on other websites, social media, etc. SECURE and\nTIDY are the keywords here.</li>\n</ol></li>\n</ul></li>\n<li><p><strong>Supporting source:</strong> <a\nhref=\"https://archive.org/details/mintCast450\"\ntitle=\"450 - Crumbling Foundations\">archive:</a> 450 - Crumbling\nFoundations.<br />\n</p></li>\n<li><p><strong>Source:</strong> <a\nhref=\"https://support.mozilla.org/en-US/products/thunderbird\"\ntitle=\"Thunderbird Support\">mozilla:</a> Thunderbird Support.<br />\n</p></li>\n<li><p><strong>Supporting source:</strong> <a\nhref=\"https://support.mozilla.org/en-US/kb/organize-your-messages-using-filters\"\ntitle=\"Organize Your Messages by Using Filters\">mozilla:</a> Organize\nYour Messages by Using Filters.<br />\n</p></li>\n<li><p><strong>Supporting source:</strong> <a\nhref=\"https://support.mozilla.org/en-US/questions/1387615\"\ntitle=\"...force Thunderbird to sync ALL IMAP folders...\">mozilla:</a>\n...force Thunderbird to sync ALL IMAP folders...<br />\n</p></li>\n<li><p><strong>Supporting source:</strong> <a\nhref=\"https://support.mozilla.org/en-US/kb/profiles-where-thunderbird-stores-user-data\"\ntitle=\"Where Thunderbird stores your messages...\">mozilla:</a> Where\nThunderbird stores your messages...</p></li>\n<li><p><strong>Source:</strong> <a\nhref=\"https://en.wikipedia.org/wiki/High_crimes_and_misdemeanors\"\ntitle=\"High crimes and misdemeanors\">wikipedia:</a> High crimes and\nmisdemeanors</p></li>\n</ul>\n',391,0,0,'CC-BY-SA','Thunderbird, email, mintcast',0,0,1),
(4267,'2024-12-10','Borderlands Movie Review',798,'Kevie shares his thoughts on the much maligned Borderlands movie','<p><a href=\"https://mastodon.me.uk/@kevie\">Kevie</a>, co-host of <a href=\"https://tuxjam.otherside.network/\">TuxJam</a>, takes a look at the recently released <a href=\"https://borderlands.movie/\">Borderlands Movie</a> with a spoiler free review of the much maligned production. Kevie shares his thoughts, as a fan of the <a href=\"http://www.borderlandsthegame.com/\">game series</a>, on the cast, story line and the film as a whole.</p>\n<p>For those who are interested in trying the game for the first time, be sure to check out the sale prices on <a href=\"https://www.cdkeys.com/#q=borderlands\">CDKeys</a></p>\n',296,0,0,'CC-BY-SA','film, movie, shooters, hollywood, gaming',0,0,1),
(4272,'2024-12-17','Embed Mastodon Threads',1037,'I\'m reconstructing the development process writing Embed Mastodon Threads','<h2 id=\"episode-4---embed-mastodon-threads\">Episode 4 - Embed Mastodon\nThreads</h2>\n<p>This is Episode 4 of the Plain Text Programs Podcast hosted at Hacker\nPublic Radio. As always I will include links with the show notes rather\nthan reading them on the podcast except there will be one exception to\nthat today, the link to my Plain Text Blog, home.gamerplus.org.</p>\n<p>My blog and this podcast were my inspiration for writing the Embed\nMastodon Threads program. Besides posting the show notes at Hacker\nPublic Radio where they have a comments section I also post them at my\nblog. Then I make a Mastodon post that includes a link to the show notes\non my blog and designate it as being the comment thread for that episode\nof the podcast. I also post a link to the comment thread on Mastodon in\nmy show notes. Or at least I did in the past.</p>\n<p>It came to mind that it would be nice to be able to display the\ncomment thread at the bottom of the blog post. So I made a Mastodon post\nabout this, and I quote.</p>\n<blockquote>\n<p>So here\'s my idea.</p>\n<p>I want to use mastodon toots as a comment thread for my blog\nposts.</p>\n<p>At the bottom of the blog post I want to embed the toot and the\nreplies.</p>\n<p>I can pull the toot id from the embed code.</p>\n<p>Then I want to make a database query to get all the replies to that\ntoot.</p>\n<p>Then I can generate the embed codes needed to show the toot and all\nthe replies.</p>\n<p>I\'m a mysql guy, not postgres. Also a Mastodon newb.</p>\n<p>I want to know how to get the reply ids for a toot.</p>\n<p>Any help, links, etc?</p>\n<p>End quote.</p>\n</blockquote>\n<p>I immediately got responses from some programmers expressing interest\nin the idea and giving good advice.</p>\n<p>I did some research based on their suggestions. I had a good night\'s\nsleep. And then I made another post in the morning. And I quote.</p>\n<blockquote>\n<p>Mastodon is so great.</p>\n<p>I had this idea last night and fiddled around with it long enough to\nrealize I was doing it wrong.</p>\n<p>So I made a post on Mastodon and almost immediately got help.</p>\n<p>I found some good info on the Mastodon API.</p>\n<p>I wake up this morning to more help and I found out about using curl\nin php to make https requests.</p>\n<p>Then a musician friend of mine who I\'ve been following since before\nMastodon sends a working example, with code, in a javascript\nenvironment.</p>\n<p>And I\'ve got a plan.</p>\n<p>End quote.</p>\n</blockquote>\n<p>So credit where credit is due.</p>\n<p>The programmers, gamers, and musicians helping me were:</p>\n<p>Jeff the GenX Alien<br />\n<span class=\"citation\" data-cites=\"jeff\">@jeff</span><span\nclass=\"citation\"\ndata-cites=\"soapbox.hackdefendr.com\">@soapbox.hackdefendr.com</span></p>\n<p>EcksDy<br />\n<span class=\"citation\" data-cites=\"EcksDy\">@EcksDy</span><span\nclass=\"citation\" data-cites=\"techtoots.com\">@techtoots.com</span></p>\n<p>Malin<br />\n<span class=\"citation\" data-cites=\"malin\">@malin</span><span\nclass=\"citation\" data-cites=\"dice.camp\">@dice.camp</span></p>\n<p>and</p>\n<p>Wayne Myers<br />\n<span class=\"citation\" data-cites=\"conniptions\">@conniptions</span><span\nclass=\"citation\"\ndata-cites=\"mastodon.social\">@mastodon.social</span></p>\n<p>Now, I\'ve known Wayne Myers since before I was ever on Mastodon. We\nshare an interest in free culture music and I have played his songs on\nmy radio show, Something Blue, recorded by his band, Fit and the\nConniptions.</p>\n<p>He sent some links in a couple of comments to other blogs that were\nembedding Mastodon threads which confirmed that my idea could work.</p>\n<p>Jeff the GenX Alien gave me some significant technical help. And I\nquote.</p>\n<blockquote>\n<p>Use tootcli to learn everything you need to know about the inner\nworkings of Mastodon.</p>\n<p><a href=\"https://github.com/ihabunek/toot\"\nclass=\"uri\">https://github.com/ihabunek/toot</a></p>\n<p>Whatever the API supports so does toot.</p>\n<p>End quote.</p>\n</blockquote>\n<p>So I looked into tootcli and the Mastodon API and I realized that I\ndidn\'t need to access the database for my program, I could just use the\nAPI.</p>\n<p>So, thanks Jeff.</p>\n<p>My second clue came from EcksDy. And I quote.</p>\n<blockquote>\n<p>I\'ve got some help too. Using the Mastodon API and curl in php it\nshould be doable.</p>\n<p>End quote.</p>\n</blockquote>\n<p>So then I started to research using curl in PHP to retrieve json data\nfrom the Mastodon API and that\'s what I went with.</p>\n<p>I set up a testbed and Malin chimed in with test results. He\ncontinued to help with testing and ideas throughout the rest of the\nproject.</p>\n<p>That\'s why Mastodon is so great! Way better than consulting an AI\nbot.</p>\n<p>So I had my work cut out for me. Here is where this program is like\nmy Plain Text Programs. I work hard, up front, until I am convinced that\nI have an idea that will be easy to implement. This is much easier than\ndoing it the hard way first and then rewriting the program later after\nit becomes difficult to maintain.</p>\n<p>I said I had a plan. This was my plan.</p>\n<p>Write a PHP program that will generate a webpage that can be embedded\nin an iframe. This program will take a link as a parameter included in\nthe url.</p>\n<p>Get that link from the Mastodon embed code for the parent post.</p>\n<p>Use the API to retrieve the data associated with the parent post\nincluding the replies.</p>\n<p>Then generate the page by inserting the appropriate data into\nMastodon\'s existing embed structure.</p>\n<p>That\'s kind of a broad framework but it certainly seemed doable. And\nit was.</p>\n<p>So first I wanted to make the API call so I could look at the\ndata.</p>\n<p>I found this video by Alejandro AO.</p>\n<p>How to easily create cURL API requests in PHP (Wordpress, Laravel,\nSymfony) <a\nhref=\"https://www.youtube.com/watch?v=iRLgEWMNA6w&amp;t=602s\"\nclass=\"uri\">https://www.youtube.com/watch?v=iRLgEWMNA6w&amp;t=602s</a></p>\n<p>He recommended that you use curl in the terminal to test your API\ncall. Then you use a web app called Curl-to-PHP to generate your PHP\ncode to make the same API call from your program.</p>\n<p>My first time consuming stumbling block was what I call the problem\nwith the colon.</p>\n<p>There are some great documents detailing the syntax for API calls\nwhich I will link to in the show notes.</p>\n<p>And where you are supposed to insert an id they show that as :id.</p>\n<p>Like an idiot I thought the colon was part of the syntax, not as they\nintended, a marker to indicate insert your id here. This is why I like\nto see actual code examples in syntax documents.</p>\n<p>Anyway I couldn\'t get it to work so I searched around until I found\nsome code examples and that turned on the lightbulb in my head.</p>\n<p>Now I was able to make API calls using curl in the terminal. I copied\nthe working curl command and pasted it into the Curl-to-PHP website and\nit output some code. And it worked! Which I was very glad about because\nprevious research into how to make API calls with PHP was confusing to\nsay the least. Sometimes PHP gifts you with and abundance of riches\nwhich doesn\'t always make life easier.</p>\n<p>So I made my API call from my program. The Curl-to-PHP code returned\n$result. And then I used the json_decode command to turn the result\nstring into an array of Mastodon data.</p>\n<p><code>$obj = json_decode($result, true);</code></p>\n<p>And I could use the print_r command to look at that data.</p>\n<p><code>print_r($obj);</code></p>\n<p>I immediately put the print_r command at the bottom of my program\nwhere it resides today as commented out debug code. This way while I was\nlooking at my program output I could just scroll down or search to find\nwhat the actual data looked like.</p>\n<p>So I fumbled around for a while before I figured out that I would\nneed the id and the url to make my idea work.</p>\n<p>Accessing json data is reading an array. So easy peasy or maybe not.\nThis code returns the id of the reply from inside a while loop where $i\nis the index.</p>\n<p><code>$id = $obj[\'descendants\'][$i][\'id\'];</code></p>\n<p>Like I said, it looks easy now. Needless to say it took some head\nscratching to figure out the exact syntax.</p>\n<p>I used to be a mason and people would always ask me how I learned\nmasonry. I\'d look them in the eye and say, \"Trowel and error\". There\nwas, in fact, a lot of trowel and error going on.</p>\n<p>So then I generated the embed code to display each post and it\nworked. For all of my posts. Not for replies from other servers.</p>\n<p>So I scrolled down and examined the json data and I found the url\nfield that had all the info about the replies, server, username, and id.\nSo I picked up the url field the same way I picked up the id field and\nupdated my code with the url server and name.</p>\n<p>This still didn\'t work. After staring at the json data for a while\nthe light finally dawned. The id I was using was the gamerplus id from\nmy server. The id I needed to use was in the url field from their\nserver.</p>\n<p>Now that I had become enlightened it was easy to notice that the url\nfield contained the exact info that I needed to use in the embed.\nRemember what I said about doing it the hard way before you replaced\nthat code with the easy way. That can happen even when you have a\nplan.</p>\n<p>So by using the url data in the embed I have less string handling and\nfewer lines of code.</p>\n<p>I went to bed and in the morning I made this post. And I quote. &gt;\n&gt; I am able to pull the urls from the json call so that should solve\nthe missing comments issue. &gt; &gt; And then it comes down to the\nissue of data structures. &gt; &gt; KISS &gt; &gt; I have decided, for\nnow, to display the comments in chronological order without concern for\nwhether a comment is a reply to the post or a reply to another comment.\n&gt; &gt; A chronological list rather than a tree. &gt; &gt; Easy to\nimplement (kind of/relatively) and easy to understand. Also no indents.\n&gt; &gt; This project will be licensed GPL so I am certainly open to\nothers applying other data structures to the data display. Everything\nyou need to display a tree is in the json. &gt; &gt; End quote.</p>\n<p>So the data structure I needed is called a multidimensional array or\nan array of arrays.</p>\n<p>In terms of a database table it is two columns and a bunch of\nrows.</p>\n<p>In terms of PHP arrays it\'s an array where each element is an array\nwith two values in it, the id and the url. Now, in my case, the id is\nfrom the gamerplus server. The url is from whatever server the replyer\ncalls home.</p>\n<p>I initialize the array with the parent post.</p>\n<p><code>$ids = array(array($id,$url));</code></p>\n<p>You can see the nested arrays in the code.</p>\n<p>Then I add items to the array like this.</p>\n<p><code>$ids[] =  array($id,$url);</code></p>\n<p>I access an array item like this.</p>\n<pre><code>foreach($ids as $id) {\n  $url = $id[1];</code></pre>\n<p>The 1 refers to the second element of the array because programmers\nstart counting at 0.</p>\n<p>Then using the url and the domain that I captured from the GET\nparameter that passes the parent url into the program I build the iframe\nembed for that post using the Mastodon embed as a template.</p>\n<p>Which worked but the posts weren\'t displayed in chronological order.\nBecause the json data isn\'t necessarily in chronological order.</p>\n<p>So I had to sort the multidimensional array on the id. Which isn\'t as\nstraight forward as the sort() command.</p>\n<p>So I found this article on stackoverflow called</p>\n<p><em>How do I sort a multidimensional array by one of the fields of\nthe inner array in PHP?</em></p>\n<p>It had a two line solution that I modified to work with my array.</p>\n<p>And now all my posts were in chronological order.</p>\n<p>Stack Overflow code is licensed CC BY which is one way compatible\nwith the GPL. Just include the attribution in a comment.</p>\n<p>My first post quoted above was posted on Friday, October 25, at 8:40\nPM.</p>\n<p>On Monday, October 28 at 8:52 PM I wrote, \"Here\'s the blog post proof\nof concept/working code.\"</p>\n<p>Three days from \"I have an idea\" to \"working code\". That wasn\'t all I\ndid in those three days. Saturday I had a repertoire session with my\nband, Jazz Buskers. Sunday I produced my radio show, Something Blue. But\nwhen I\'m in the middle of a programming project I get hyper focused.\nSometimes I have to force myself to step away.</p>\n<p>And I have worked on the code a little bit today. And I will in the\nfuture too. I did a lot of testing today and some Mastodon servers\nand/or accounts just don\'t support embeds. But if you want to use Embed\nMastodon Threads on your blog or website your toot will probably be the\nparent and if it works on your account, you\'re good.</p>\n<p>Also posts from different servers look different. Sometimes the\nbackground color is different. Sometimes the links look different.\nSometimes the whole post is a link to that post on Mastodon.</p>\n<p>I decided to embrace that as a feature rather than a bug with the\ndifferent look making it easier to distinguish posts made on Gamer+ from\nposts made on other servers.</p>\n<p>I have uploaded Embed Mastodon Threads to home.gamerplus.org. At my\nblog I have a post called Embed Mastodon Threads Hosted On Gamerplus\nwhere I say, \"The program is licensed GPL and I will put up a codeberg\nrepository so you can download it and install it wherever you want. But\nfeel free to use my server.\" And then I go into detail about just how to\ndo that in the embedded comments thread.</p>\n<p>The program is 46 lines of code with 11 lines of comments including\nattribution comments and debug code that is commented out. So 35 lines\nof code. Over three days that\'s 12 lines of code a day. About double\nnormal expectations for a programmer.</p>\n<p>This has been a long podcast, certainly longer than most of my\npodcasts will be. But I wrote it right after I did the project and it\ngave me an opportunity to discuss the development process. There were\nmany issues I had that I didn\'t mention but I think I hit the high\npoints.</p>\n<p>Throughout the whole project I was posting to my threads on Mastodon\nso that also helped me check back on the development history of this\nthree day project. The stream of boosts and replies from my compatriots\nhelped keep me going too.</p>\n<p>It was a rush!</p>\n<p>So this is not exactly a plain text program because it uses a\ndatabase accessed through the Mastodon API. Still, I do not have to\nmaintain that database, it\'s just there on every Mastodon instance,\nready to use.</p>\n<p>Most of my plain text programs are web apps or web pages. This one is\na web service.</p>\n<p>And it is simple to use. All you have to be able to do is copy the\nembed code from Mastodon, extract the link, and paste the link into the\nurl that calls the web service. Then you put that url into an iframe on\nyour blog or web page.</p>\n<p>I have a help page for using Embed Mastodon Threads in the same\ndirectory as the thread.php program where you can generate and copy your\niframe code. In fact the help page is also a Plain Text Program which I\nmay talk about in a future podcast. On the help page are instructions on\nhow to get a link from the Mastodon embed code. Then you paste the link\ninto a form and hit submit. The page generates your iframe embed code\nthat you can use in your blog or web page. The page also displays what\nthe embedded thread will look like.</p>\n<p>If you would rather download the code and install your own instance\nof Embed Mastodon Threads I have a codeberg repository. Again all the\nlinks are in the show notes at Hacker Public Radio and at my blog at\nhome.gamerplus.org.</p>\n<p>If you have questions you can reply to a thread on Mastodon or email\nme at hairylarry@deltaboogie.com. If you don\'t have a mastodon account\nyou can get one at gamerplus.org.</p>\n<h2 id=\"links\">Links</h2>\n<ul>\n<li><p>My Plain Text Blog<br />\n<a href=\"https://home.gamerplus.org/\"\nclass=\"uri\">https://home.gamerplus.org/</a></p></li>\n<li><p>Embed Mastodon Threads Help Page<br />\n<a href=\"https://home.gamerplus.org/Embed_Mastodon_Threads/\"\nclass=\"uri\">https://home.gamerplus.org/Embed_Mastodon_Threads/</a></p></li>\n<li><p>Codeberg Repository<br />\n<a href=\"https://codeberg.org/hairylarry/EmbedMastodonThreads\"\nclass=\"uri\">https://codeberg.org/hairylarry/EmbedMastodonThreads</a></p></li>\n<li><p>From Jeff the GenX Alien<br />\nUse tootcli to learn everything you need to know about the inner\nworkings of Mastodon.<br />\n<a href=\"https://github.com/ihabunek/toot\"\nclass=\"uri\">https://github.com/ihabunek/toot</a><br />\nWhatever the API supports so does toot.</p></li>\n<li><p>How to easily create cURL API requests in PHP (Wordpress,\nLaravel, Symfony)<br />\n<a href=\"https://www.youtube.com/watch?v=iRLgEWMNA6w&amp;t=602s\"\nclass=\"uri\">https://www.youtube.com/watch?v=iRLgEWMNA6w&amp;t=602s</a></p></li>\n<li><p>Curl-to-PHP<br />\n<a href=\"https://incarnate.github.io/curl-to-php/\"\nclass=\"uri\">https://incarnate.github.io/curl-to-php/</a></p></li>\n<li><p>Playing with public data - Mastodon documentation<br />\n<a href=\"https://docs.joinmastodon.org/client/public/\"\nclass=\"uri\">https://docs.joinmastodon.org/client/public/</a></p></li>\n<li><p>Status - Mastodon documentation<br />\n<a href=\"https://docs.joinmastodon.org/entities/Status/\"\nclass=\"uri\">https://docs.joinmastodon.org/entities/Status/</a></p></li>\n<li><p>Context - Mastodon documentation<br />\n<a href=\"https://docs.joinmastodon.org/entities/Context/\"\nclass=\"uri\">https://docs.joinmastodon.org/entities/Context/</a></p></li>\n<li><p>How do I sort a multidimensional array by one of the fields of\nthe inner array in PHP?<br />\n<a\nhref=\"https://stackoverflow.com/questions/2426917/how-do-i-sort-a-multidimensional-array-by-one-of-the-fields-of-the-inner-array-i\"\nclass=\"uri\">https://stackoverflow.com/questions/2426917/how-do-i-sort-a-multidimensional-array-by-one-of-the-fields-of-the-inner-array-i</a></p></li>\n<li><p>Embed Mastodon Threads Hosted On Gamerplus<br />\n<a\nhref=\"https://home.gamerplus.org/permalink.php?fname=Embed_Mastodon_Threads_Hosted_On_Gamerplus.txt\"\nclass=\"uri\">https://home.gamerplus.org/permalink.php?fname=Embed_Mastodon_Threads_Hosted_On_Gamerplus.txt</a></p></li>\n<li><p>Gamer+DBN Mastodon server<br />\n<a href=\"https://gamerplus.org\"\nclass=\"uri\">https://gamerplus.org</a></p></li>\n</ul>\n',436,25,0,'CC-BY','embed, mastodon, widget, php, plaintext',0,0,1),
(4546,'2026-01-05','HPR Community News for December 2025',0,'HPR Volunteers talk about shows released and comments posted in December 2025','_',159,47,1,'CC-BY-SA','Community News',0,0,1),
(4269,'2024-12-12','What is on My Podcast Player 2024, Part 2',994,'This is an update on the podcasts Ahuka listens to.','<p>I listen to a lot of podcasts and so I am sharing my finds with the\ncommunity</p>\n<h3 id=\"links\">Links</h3>\n<ul>\n<li><a href=\"https://thememorycheats.libsyn.com/rss\"\nclass=\"uri\">https://thememorycheats.libsyn.com/rss</a></li>\n<li><a href=\"https://the20mbdoctorwhopodcast.podbean.com/feed.xml\"\nclass=\"uri\">https://the20mbdoctorwhopodcast.podbean.com/feed.xml</a></li>\n<li><a href=\"http://www.podarama.com/podcasts/fab4free4all/rss.xml\"\nclass=\"uri\">http://www.podarama.com/podcasts/fab4free4all/rss.xml</a></li>\n<li><a href=\"https://somethingaboutthebeatles.libsyn.com/rss\"\nclass=\"uri\">https://somethingaboutthebeatles.libsyn.com/rss</a></li>\n<li><a\nhref=\"https://duelinggenre.com/category/podcasts/the-doctors-companion/feed/\"\nclass=\"uri\">https://duelinggenre.com/category/podcasts/the-doctors-companion/feed/</a></li>\n<li><a\nhref=\"http://feeds.nightvalepresents.com/welcometonightvalepodcast\"\nclass=\"uri\">http://feeds.nightvalepresents.com/welcometonightvalepodcast</a></li>\n<li><a\nhref=\"https://feeds.soundcloud.com/users/soundcloud:users:162332893/sounds.rss\"\nclass=\"uri\">https://feeds.soundcloud.com/users/soundcloud:users:162332893/sounds.rss</a></li>\n<li><a href=\"https://healthcaretriage.libsyn.com/rss\"\nclass=\"uri\">https://healthcaretriage.libsyn.com/rss</a></li>\n<li><a href=\"http://brokensea.com/drwho/feed/podcast/\"\nclass=\"uri\">http://brokensea.com/drwho/feed/podcast/</a></li>\n<li><a href=\"https://revolutionspodcast.libsyn.com/rss\"\nclass=\"uri\">https://revolutionspodcast.libsyn.com/rss</a></li>\n<li><a href=\"https://triflesdspodcast.libsyn.com/rss\"\nclass=\"uri\">https://triflesdspodcast.libsyn.com/rss</a></li>\n<li><a href=\"https://beatlesexaminer.podbean.com/feed.xml\"\nclass=\"uri\">https://beatlesexaminer.podbean.com/feed.xml</a></li>\n<li><a href=\"https://dchhaddendum.libsyn.com/rss\"\nclass=\"uri\">https://dchhaddendum.libsyn.com/rss</a></li>\n</ul>\n',198,75,0,'CC-BY-SA','podcasts',0,0,1),
(4271,'2024-12-16','Beginners guide to Proxmox',733,'Al gives a overview of what Proxmox is and how to setup it.','<p><a href=\"https://www.youtube.com/watch?v=lhRPhBDysVI&amp;t=534s\">Link\nto a YouTube video which tells you more storage and Proxmox</a></p>\n<p>To change the Promox to use no subscription repository edit the\nfollowing file:</p>\n<pre><code>nano /etc/apt/sources.list.d/pve-enterprise.list</code></pre>\n<p>Add make sure the file looks like this:</p>\n<pre><code>deb http://download.proxmox.com/debian/pve bookworm pve-no-subscription</code></pre>\n<p>Save and exit the file</p>\n<p>Open the Ceph repository list file:</p>\n<pre><code>nano /etc/apt/sources.list.d/ceph.list</code></pre>\n<p>add make sure the file look like this</p>\n<pre><code>deb http://download.proxmox.com/debian/ceph-quincy bookworm no-subscription</code></pre>\n<p>Save and exit the file</p>\n',290,8,0,'CC-BY-SA','proxmox',0,0,1),
(4273,'2024-12-18','Improving videography with basic manual settings',1037,'How I learned to stop worrying and love the exposure triangle','<p>Getting a Good Starting Point for Indoor Videography:</p>\n<ol>\n    <li>Adjust lighting in the real world to get the look you want</li>\n    <li>Set camera to full manual</li>\n    <li>Set ISO to the base ISO of your camera</li>\n    <li>Set shutter speed to match the frequency of your lighting</li>\n    <li>Adjust exposure using the aperture</li>\n    <li>Set white balance in camera</li>\n    <li>Focus on your subject</li>\n    <li>Put a color chart in front of your subject for a few seconds when you start shooting video</li>\n</ol>\n<p>For more detail than I put into this HPR episode, consult <a href=\"https://trixter.oldskool.org/2023/11/14/how-to-shoot-vintage-computer-product-photography-for-youtube-or-anything/\" target=\"_blank\">this guide</a>.</p>\n\n',149,0,0,'CC-BY-SA','photography, videography, exposure triangle',0,0,1),
(4265,'2024-12-06','Drivecasting: arm sleeves, glasses and more.',844,'Sgoti talks about arm sleeves and safety glasses.','<ul>\n<li><p><a href=\"https://www.harborfreight.com/\">Harbor Freight\nTools</a></p>\n<ul>\n<li><a\nhref=\"https://www.harborfreight.com/heat-and-cut-resistant-kevlar-sleeves-57515.html\">Hardy\nheat and cut-resistant kevlar sleeves.</a></li>\n<li><a\nhref=\"https://www.harborfreight.com/smoke-lens-safety-glasses-66822.html?_br_psugg_q=safety+glasses\">Western\nsafety safety glasses with smoke lenses.</a></li>\n<li><a\nhref=\"https://www.harborfreight.com/impact-resistant-safety-glasses-94357.html\">Western\nsafety impact resistant safety glasses.</a></li>\n<li><a\nhref=\"https://www.harborfreight.com/yellow-lens-safety-glasses-95472.html?_br_psugg_q=yellow+safety+glasses\">Western\nsafety safety glasses with yellow lenses.</a></li>\n</ul></li>\n<li><p><a\nhref=\"https://www.amazon.com/ARMORAY-Arm-Sleeves-Women-Cover/dp/B078KNX1J5/\">Rmoray\narm sleeves for men or women.</a></p></li>\n<li><p><a\nhref=\"https://www.amazon.com/YQXCC-Protection-Football-Basketball-Activities/dp/B082HS37B1/\">4\npairs uv sun protection arm sleeves</a></p></li>\n<li><p><a href=\"https://www.lidl.com/\">lidl</a></p>\n<ul>\n<li><a href=\"https://www.lidl.com/products/426220_C\">Playtive wooden\nplay food set, slice &amp; dice fruit.</a></li>\n<li><a href=\"https://www.lidl.com/products/426220_D\">Playtive wooden\nplay food set, sushi</a></li>\n<li><a href=\"https://www.lidl.com/products/426220_E\">Playtive wooden\nplay food set, slice &amp; dice vegetables set.</a></li>\n</ul></li>\n<li><p><a\nhref=\"https://www.walmart.com/ip/McDavid-Sport-Compression-Arm-Sleeve-Pair-Black-Adult-Unisex-Large-Extra-Large/346995232?from=/search\">Mcdavid\nsport compression arm sleeve pair black adult unisex large/extra\nlarge</a></p></li>\n</ul>\n<p>This work is licensed under a <a\nhref=\"https://creativecommons.org/licenses/by-sa/4.0/\"\ntitle=\"CC-BY-SA 4.0 International\">Creative Commons\nAttribution-ShareAlike 4.0 International License</a>.</p>\n',391,0,0,'CC-BY-SA','arm sleeves, safety glasses, wooden toys',0,0,1),
(4268,'2024-12-11','Book review and an Emacs rabbit-hole',753,'I talk about Mastering Emacs by Mickey Peterson','<p><a href=\"https://www.masteringemacs.org/\"\nclass=\"uri\">https://www.masteringemacs.org/</a></p>\n<p><a href=\"https://www.gnu.org/software/emacs/\"\nclass=\"uri\">https://www.gnu.org/software/emacs/</a></p>\n',415,0,0,'CC-BY-SA','Emacs,books,writing.text',0,0,1),
(4274,'2024-12-19','The Wreck - I\'m alright!',991,'Archer72 talks about his car wreck and people he has met along the way.','<h1 id=\"what-happened\">What happened?</h1>\n<ul>\n<li>The way I saw it, along with police officers</li>\n</ul>\n<h1 id=\"recording-the-wreck\">Recording the wreck</h1>\n<ul>\n<li>Axet Audio Recorder\n<ul>\n<li>\"This is not paid off...\"</li>\n<li>\"I think I broke it\"</li>\n<li>\"I was just trying to get home\"</li>\n</ul></li>\n</ul>\n<h1 id=\"medical-technology\">Medical technology</h1>\n<ul>\n<li>Implant\n<ul>\n<li>400mm x 11mm Titanium rod</li>\n</ul></li>\n<li>Wikipedia</li>\n</ul>\n<p><a href=\"https://en.wikipedia.org/wiki/Intramedullary_rod\"\ntitle=\"Intramedullary Rod - Wikipedia\">Intramedullary_rod -\nWikipedia</a></p>\n<ul>\n<li>Intramedullary nail</li>\n<li>First used in World War II</li>\n<li>This aids healing and mobility in a short amount of time</li>\n</ul>\n<h2 id=\"other-medical-technology\">Other medical technology</h2>\n<h3 id=\"prosthetics\">Prosthetics</h3>\n<p>Realistic skin prosthetics</p>\n<p><a\nhref=\"https://www.steepergroup.com/prosthetics/lower-limb-prosthetics/cosmesis/skinergy-plus\"\ntitle=\"Realistic skin prostetics - Steepler Group\">Realistic skin\nprosthetics - Steepler Group</a></p>\n<p>Leg covers</p>\n<p><a\nhref=\"https://www.steepergroup.com/prosthetics/lower-limb-prosthetics/cosmesis/prosthetic-leg-cover\"\ntitle=\"Decorative Leg covers\">Decorative Leg covers</a></p>\n<p>Virtual library</p>\n<p><a href=\"http://www.oandplibrary.org/op/1973_03_027.asp\"\ntitle=\"Virtual library - O &amp; P Library\">Virtual library - O &amp; P\nLibrary</a></p>\n<h1 id=\"physical-therapy-gym\">Physical Therapy Gym</h1>\n<ul>\n<li>Adjustable bed/mat</li>\n<li>Stretches</li>\n<li>Hand bike</li>\n<li>Stairs</li>\n<li>Adjustable car mock-up</li>\n</ul>\n<h1 id=\"accessibility\">Accessibility</h1>\n<ul>\n<li>Kmag, a desktop magnifier<br />\n<a href=\"https://apps.kde.org/kmag\"\ntitle=\"Kmag, a desktop magnifier\">Kmag, a desktop magnifier</a></li>\n</ul>\n<h1 id=\"hacking-the-wifi\">Hacking the WiFi</h1>\n<ul>\n<li>Questionable if I really disturbed the WiFi</li>\n</ul>\n<p><img src=\"hpr4274_image_1.png\" title=\"Nmap IP Addresses\" alt=\"Nmap IP Addresses\" /></p>\n<p><img src=\"hpr4274_image_2.png\" title=\"Broken wifi - Picture 1\" alt=\"Broken wifi - Picture 1\" /></p>\n<p><img src=\"hpr4274_image_3.png\" title=\"Broken wifi - Picture 2\" alt=\"Broken wifi - Picture 2\" /></p>\n',318,0,1,'CC-BY-SA','car, accident, medical, prosthetics, kmag, accessibility, wifi, termux',0,0,1),
(4275,'2024-12-20','What is on My Podcast Player 2024, Part 3',1026,'This is an update on the podcasts Ahuka listens to.','<p>I listen to a lot of podcasts and so I am sharing my finds with the\ncommunity</p>\n<h2 id=\"links\">Links</h2>\n<ul>\n<li><a href=\"http://www.discussingwho.com/feed/podcast/\"\nclass=\"uri\">http://www.discussingwho.com/feed/podcast/</a></li>\n<li><a href=\"https://talkmoretalk.podbean.com/feed.xml\"\nclass=\"uri\">https://talkmoretalk.podbean.com/feed.xml</a></li>\n<li><a href=\"https://shadybearbklyn.podbean.com/feed.xml\"\nclass=\"uri\">https://shadybearbklyn.podbean.com/feed.xml</a></li>\n<li><a href=\"https://nightterrace.com/category/on-the-terrace/feed/\"\nclass=\"uri\">https://nightterrace.com/category/on-the-terrace/feed/</a></li>\n<li><a href=\"http://davidbarrkirtley.com/podcast/geeksguideshow.xml\"\nclass=\"uri\">http://davidbarrkirtley.com/podcast/geeksguideshow.xml</a></li>\n<li><a href=\"https://feed.podbean.com/2legspodcast/feed.xml\"\nclass=\"uri\">https://feed.podbean.com/2legspodcast/feed.xml</a></li>\n<li><a href=\"https://rss.acast.com/10americanpresidents\"\nclass=\"uri\">https://rss.acast.com/10americanpresidents</a></li>\n<li><a href=\"https://feeds.megaphone.fm/ARML5394164180\"\nclass=\"uri\">https://feeds.megaphone.fm/ARML5394164180</a></li>\n<li><a href=\"https://rss.acast.com/ourfakehistory\"\nclass=\"uri\">https://rss.acast.com/ourfakehistory</a></li>\n<li><a href=\"http://feeds.feedburner.com/SpaceRocketHistory\"\nclass=\"uri\">http://feeds.feedburner.com/SpaceRocketHistory</a></li>\n<li><a href=\"http://rss.acast.com/therenaissanceenglishhistorypodcast\"\nclass=\"uri\">http://rss.acast.com/therenaissanceenglishhistorypodcast</a></li>\n<li><a href=\"https://rss.acast.com/thehistoryofbyzantium\"\nclass=\"uri\">https://rss.acast.com/thehistoryofbyzantium</a></li>\n</ul>\n',198,75,1,'CC-BY-SA','Podcasts',0,0,1),
(4276,'2024-12-23','PWNED',1279,'I share how I got pwned and or allowed myself to get pwned ...','<pre><code>Time    Event\n11:14 PM 12/7/2024  RDP Brute force for username &quot;internet&quot; password &quot;notyours&quot;\n8:20 AM 12/11/2024  paypal charge for uber cash\n8:23 AM 12/11/2024  text from uber for MFA to google voice\n9:09 AM 12/11/2024  G2A pwned tried to buy 200$ worth of games etc\n9:21 AM 12/11/2024  email from google play saying I added Kathys card to my account\n9:22 AM 12/11/2024  email from amazon saying gift card canceled  .\n\nTop 10 Source IP Addresses:\n\nSource IP      Count\n---------      -----\n3.17.166.66    13165\n44.222.204.3    2213\n18.189.189.191  1748\n52.26.221.152   1662\n91.238.181.77    972\n88.214.25.72     600&quot;</code></pre>\n',36,0,1,'CC-BY-SA','hacking, computers, information security',0,0,1),
(4278,'2024-12-25','Pi powered Christmas Tree',883,'Kevie talks about setting up a LED Christmas Tree from The Pi Hut','<p><a href=\"https://tuxjam.otherside.network/\">TuxJam</a> co-host <a href=\"https://mastodon.me.uk/@kevie\">Kevie</a> continues his series on Raspberry Pi projects with a look at the <a href=\"https://thepihut.com/products/3d-rgb-xmas-tree-for-raspberry-pi\">3D RGB Xmas Tree</a> from The Pi Hut. This is compatible with all of the Raspberry Pis,and, if you are going to use this as a stand alone Christmas decoration, it is recommended that you use <a href=\"https://www.raspberrypi.com/software/operating-systems/\">RaspberryPi OS Lite.</a></p>\n<p>Obviously there does need to be a bit of setup, it is not plug and play, but that would be boring for a Pi project; wouldn\'t it? As I said: I used mine with a Pi Zero 2W and if you are starting from scratch then I would recommend using Pi Imager as this will allow you to set a user, password, automatic login, wifi and SSH. Call it something like tree for the client name on the network so that it is easy to find. Doing all of this will mean that this Pi never needs to be connected to a monitor. The notes below should take you through the process step-by-step.</p>\n<ol>\n	<li>Once the tree has been installed and the Pi is booted up, install GPIOZero (this step is only necessary if you installed RaspberryPiOS Lite) <code>sudo apt install python3-gpiozero</code></li>\n	<li>Create a new directory: <code>mkdir tree</code> and move into it with <code>cd tree</code></li>\n	<li>Now it\'s time to get the code: <code>wget https://tinyurl.com/3rrezjv9 -O tree.py</code></li>\n	<li>I went for the Xmas Tree Sparkle sequence by Rendzina. To get this simply type: <code>wget https://tinyurl.com/5e8cxrb5 -O XmasTree_Sparkle.py</code></li>\n	<li>Test out the sequence: <code>python XmasTree_Sparkle.py</code></li>\n	<li>To automate the tree we can set a cron task: <code>sudo crontab -e</code></li>\n	<li>Add the following lines to the end of the Crontab file: <code>30 22 * * * /sbin/shutdown -h now</code> This shuts it down at 10.30pm every night. <code>@reboot python /home/pi/tree/XmasTree_Sparkle.py</code> This will switch on the tree when the Pi boots up.</li>\n	<li>Exit and save.</li>\n	<li>Reboot the Pi: <code>sudo reboot</code></li>\n</ol>\n\n<p>To take a look at the Pi Hut\'s starting documentation click <a href=\"https://github.com/ThePiHut/rgbxmastree?tab=readme-ov-file#getting-started\">here</a></p>\n<p>Redzina\'s custom scripts are available <a href=\"https://github.com/rendzina/XmasTree?tab=readme-ov-file\">here.</a></p>\n<img src=\"https://mastodon.me.uk/system/media_attachments/files/113/646/783/843/188/510/original/c77791b11003a222.jpeg\" width=\"33%\" alt=\"A picture of the tree lit up and attached to a Raspberry Pi Zero 2W\">\n',296,0,0,'CC-BY-SA','Christmas, RaspberryPi, Pi',0,0,1),
(4277,'2024-12-24','Introduction episode by Paul',503,'Paulj is a new podcast host for HPR - this is his introductory podcast.','<p>No show notes for this introductory podcast!</p>\n',438,0,0,'CC-BY-SA','introduction',0,0,1),
(4279,'2024-12-26','What is on My Podcast Player 2024, Part 4',1127,'This is an update on the podcasts Ahuka listens to.','<p>I listen to a lot of podcasts and so I am sharing my finds with the\ncommunity</p>\n<h2 id=\"links\">Links</h2>\n<ul>\n<li><a href=\"https://feeds.buzzsprout.com/960769.rss\"\nclass=\"uri\">https://feeds.buzzsprout.com/960769.rss</a></li>\n<li><a href=\"https://inwardempirepodcast.podomatic.com/rss2.xml\"\nclass=\"uri\">https://inwardempirepodcast.podomatic.com/rss2.xml</a></li>\n<li><a href=\"https://feeds.simplecast.com/jUhKwVIJ\"\nclass=\"uri\">https://feeds.simplecast.com/jUhKwVIJ</a></li>\n<li><a href=\"https://rss.art19.com/tides-of-history\"\nclass=\"uri\">https://rss.art19.com/tides-of-history</a></li>\n<li><a href=\"https://cruiseradioshow.libsyn.com/rss\"\nclass=\"uri\">https://cruiseradioshow.libsyn.com/rss</a></li>\n<li><a href=\"https://www.mixcloud.com/RockinRebelRadio/\"\nclass=\"uri\">https://www.mixcloud.com/RockinRebelRadio/</a></li>\n<li><a href=\"https://feeds-origin.megaphone.fm/history-of-world-war-ii\"\nclass=\"uri\">https://feeds-origin.megaphone.fm/history-of-world-war-ii</a></li>\n<li><a href=\"https://feeds.megaphone.fm/ARML9312759060\"\nclass=\"uri\">https://feeds.megaphone.fm/ARML9312759060</a></li>\n<li><a href=\"https://terminus.libsyn.com/rss\"\nclass=\"uri\">https://terminus.libsyn.com/rss</a></li>\n<li><a href=\"https://feeds.captivate.fm/relativity\"\nclass=\"uri\">https://feeds.captivate.fm/relativity</a></li>\n<li><a href=\"https://anchor.fm/s/c583548/podcast/rss\"\nclass=\"uri\">https://anchor.fm/s/c583548/podcast/rss</a></li>\n<li><a href=\"https://anchor.fm/s/9479538/podcast/rss\"\nclass=\"uri\">https://anchor.fm/s/9479538/podcast/rss</a></li>\n<li><a\nhref=\"https://feeds.acast.com/public/shows/985e7c00-8945-4e0d-a4da-b93049180ce1\"\nclass=\"uri\">https://feeds.acast.com/public/shows/985e7c00-8945-4e0d-a4da-b93049180ce1</a></li>\n<li><a href=\"https://feeds.megaphone.fm/TNM3605642123\"\nclass=\"uri\">https://feeds.megaphone.fm/TNM3605642123</a></li>\n<li><a href=\"https://rss.acast.com/the-ancients\"\nclass=\"uri\">https://rss.acast.com/the-ancients</a></li>\n<li><a\nhref=\"https://feeds.acast.com/public/shows/9c4dc3cd-147f-442d-b0d3-033f45c2648c\"\nclass=\"uri\">https://feeds.acast.com/public/shows/9c4dc3cd-147f-442d-b0d3-033f45c2648c</a></li>\n<li><a href=\"https://hackerpublicradio.org/hpr_total_rss.php\"\nclass=\"uri\">https://hackerpublicradio.org/hpr_total_rss.php</a></li>\n<li><a href=\"https://ninthworldjournal.libsyn.com/rss\"\nclass=\"uri\">https://ninthworldjournal.libsyn.com/rss</a></li>\n<li><a href=\"https://feeds.megaphone.fm/oz9\"\nclass=\"uri\">https://feeds.megaphone.fm/oz9</a></li>\n<li><a href=\"https://audioboom.com/channels/4988723.rss\"\nclass=\"uri\">https://audioboom.com/channels/4988723.rss</a></li>\n<li><a href=\"https://feeds.feedburner.com/TheBritishHistoryPodcast\"\nclass=\"uri\">https://feeds.feedburner.com/TheBritishHistoryPodcast</a></li>\n</ul>\n',198,75,0,'CC-BY-SA','Podcasts',0,0,1),
(4281,'2024-12-30','My ridiculously complicated DHCP setup at home',480,'This is about how I setup my DHCP server at home','<p>\n  Hello, this is Jon The Nice Guy, and after 10 years of knowing\n  about Hacker Public Radio, here is my first podcast for the\n  network.</p>\n<p>\n  <br>\n</p>\n<p>\n  Firstly, I want to give a shout out to my Admin Admin Podcast\n  co-host Al, who I heard just a week-or-so ago talking about\n  Proxmox! Glad to hear you\'re over here too!</p>\n<p>\n  <br>\n</p>\n<p>\n  I wanted to record an episode on my ridiculously complicated DHCP\n  setup at home. I\'m not saying this is the right or even a good\n  idea for anyone else, but it\'s something you might want to do.</p>\n<p>\n  <br>\n</p>\n<p>\n  Firstly, a little about why I have a complicated DHCP setup, and\n  it starts with the router my previous ISP gave me.</p>\n<p>\n  <br>\n</p>\n<p>\n  My router could just about cope with serving DHCP, but at the time\n  when I was experimenting with running services on my home lab, the\n  DNS server on the router wouldn\'t return addresses for hosts on my\n  network, just those on the public internet. This wasn\'t a great\n  experience! So, I installed PiHole [1] - initially because I\'d\n  heard good things about it\'s ad blocking capabilities, but later\n  because it was just a pretty and sensible DHCP and DNS server that\n  I could do things with.</p>\n<p>\n  <br>\n</p>\n<p>\n  Under the covers, PiHole is running DNSMasq [2], which means that\n  all the configuration is plain text files that I can overwrite\n  with Ansible [3].</p>\n<p>\n  <br>\n</p>\n<p>\n  My PiHole was running on a Raspberry Pi 2 [4], in a lego-style\n  case [5] plugged into the back of my router. And this was fine for\n  a few months. And then it ran out of storage space, I changed\n  jobs, my wife complained one too many times, and I reverted back\n  to using the router\'s DHCPd and DNS. I also picked up either\n  Nebula [6] or Tailscale [7] at around that time too, so I didn\'t\n  need internal DNS to resolve to home services any more, and\n  anything public I setup external DNS records pointing to the\n  internal addresses. Job done.</p>\n<p>\n  <br>\n</p>\n<p>\n  Scrub forward a couple of years, and when I changed jobs, I got a\n  joining bonus which paid for me to get wired network around my\n  house. I also setup my own Proxmox [8] cluster, which I documented\n  on a post [9] on my blog [10]. Again, everything was peachy. I\n  setup home assistant [11], which I expose on to the internet via a\n  proxy on my VPS, and everything was still good... but things are a\n  little more complicated now - I\'ve got more stuff to keep track of\n  and the router\'s DHCP server was struggling a little... but it was\n  all OK.</p>\n<p>\n  <br>\n</p>\n<p>\n  And then I changed ISP. My new ISP shipped a router running a\n  customized version of OpenWRT [12], and I thought, finally, a good\n  router! And then I realised I couldn\'t do *anything* sensible with\n  it. It was so locked down, I couldn\'t even change the admin\n  password without factory resetting it! Ugh. Within a couple of\n  weeks my wife was complaining about random intermittent DNS\n  requests failing, and I was seeing it too. So, I found on the\n  Proxmox Helper Scripts [13] website that someone had put a script\n  to setup a PiHole instance... So naturally, as I had two Proxmox\n  Servers by this point, I ran two PiHole servers. This lasted a few\n  months until I performed a system upgrade to the proxmox cluster\n  and it took down both Proxmox cluster members at the same time and\n  DNS fell off the network! I revived the Raspberry Pi 2 which now\n  sits attached to the router again! Yes!</p>\n<p>\n  <br>\n</p>\n<p>\n  Meanwhile, I was now getting more into IoT and I had several Tuya\n  IoT devices connected over Wifi, and the 254 network addresses\n  available in the /24 sized network [14] to me at home didn\'t seem\n  enough, so I decided to expand my network to a /22, giving me\n  enough address space for 1022 devices. Plus, I have kids, who each\n  have computers and phones and games devices, my wife and I both\n  work from home, so we both have computers from work and our own\n  devices too... so I decided, now is the time to plan out my\n  network.</p>\n<p>\n  <br>\n</p>\n<p>\n  I decided to use PHPIPAM [15] having been asked to look at it at\n  work, and found it was a good fit for what I wanted to do with it.</p>\n<p>\n  <br>\n</p>\n<p>\n  PHPIPAM is really designed for owners of large-scale networks,\n  people who allocate chunks of public IP scopes and IPv6 address\n  ranges, but it will subdivide smaller network blocks, and so I\n  could carve up my network.</p>\n<p>\n  <br>\n</p>\n<p>\n  I decided to split my /22 into four /24 networks. One was\n  dedicated to DHCP addressed items, with one smaller subnet in\n  there allocated to the Proxmox hosted PiHole and another to the\n  Raspberry Pi hosted PiHole, and both are basically a catch-all for\n  anything I\'ve not yet allocated. One was for end-user devices,\n  like phones, computers, TVs and Games Consoles separated into\n  smaller subnets per-person and one additional subnet for\n  room-shared devices like TVs and Games Consoles. One subnet was\n  separated into smaller subnets for IoT devices and core network\n  things, like mains and network switches, light bulbs, cameras and\n  printers. The last /24 subnet was undivided, but was for servers,\n  both physical and virtual.</p>\n<p>\n  <br>\n</p>\n<p>\n  Great, I\'ve now got a lovely network map [IMAGE1], but *ugh* I\'ve\n  got to transfer all those DHCP and static IP allocations to the\n  PiHoles. And, while I\'d been using Gravity Sync [15] to\n  synchronize between the two PiHole devices, sometimes it took a\n  while for Gravity Sync to sync.</p>\n<p>\n  <br>\n</p>\n<p>\n  And over time, I wanted to expose some of those services I was\n  running at home, to my family, at home.</p>\n<p>\n  <br>\n</p>\n<p>\n  So, I turned to Ansible.</p>\n<p>\n  <br>\n</p>\n<p>\n  A few years ago, I\'d helped write some Ansible modules which were\n  used to interact with a cloud service my employer at the time was\n  running, so I had a kind of idea on how Ansible works under the\n  surface, the documentation for writing a new set of lookups was\n  OK, and ChatGPT helped where I lost my way.</p>\n<p>\n  <br>\n</p>\n<p>\n  I knew that there was a Terraform [17] Provider [18] for PHPIPAM,\n  so there was a working API... and so I knew I could look up data\n  in PHPIPAM. I wrote some Ansible lookups [19] to confirm the data\n  was accessible from PHPIPAM, and it was! Great, now all I needed\n  to do was to drop files into PiHole.</p>\n<p>\n  <br>\n</p>\n<p>\n  I\'d heard Alex [20] from the Self Hosting Podcast [21] talking\n  about how he wrote some Ansible to automate his PiHole management\n  [22], but it assumed a lot about how your network was setup and\n  integrated a lot with other things he did - no complaints there!\n  It\'s his network after all! But so I knew I needed to do 5 things.</p>\n<p>\n  <br>\n</p>\n<p>\n  1. Create a list of static DHCP allocations on both PiHole\n  devices.</p>\n<p>\n  2. Create a list of DNS names to resolve in the internal network\n  to addresses via A records</p>\n<p>\n  3. Create a list of DNS names to resolve to other DNS names via\n  CNAME records</p>\n<p>\n  4. Create a list of DNS wildcards, so anything ending in that name\n  would appear in my network.</p>\n<p>\n  5. If anything changed, restart DNSMasq.</p>\n<p>\n  <br>\n</p>\n<p>\n  I wrote this code and ran it. Well, ran it and it didn\'t work, so\n  I fixed it and ran it again... and again and again until it did\n  work.</p>\n<p>\n  <br>\n</p>\n<p>\n  I\'ve just added that to my Github today, so feel free to take a\n  look [23].</p>\n<p>\n  <br>\n</p>\n<p>\n  You\'ve spent a while listening to this, so what is my \"too long,\n  didn\'t listen\"?</p>\n<p>\n  <br>\n</p>\n<p>\n  I have two pihole devices, I run a phpipam service under docker on\n  a LXC container on my proxmox server. On the same LXC container I\n  have a cron job which triggers the ansible playbook every 5\n  minutes to push any updates to PHPIPAM to the pihole hosts.</p>\n<p>\n  <br>\n</p>\n<p>\n  Every few days I check to see what hosts have turned up in the\n  DHCP pools on the PiHole hosts, map those to hosts I want to track\n  in the future, and allocate them addresses in PHPIPAM so that\n  those hosts will get managed IP addresses after 5 minutes, the\n  next time they renew their DHCP addresses...</p>\n<p>\n  <br>\n</p>\n<p>\n  Tada!</p>\n<p>\n  <br>\n</p>\n<p>\n  For more over engineered solutions like this, feel free to take a\n  look at the content on my blog, or maybe I\'ll appear again, on\n  Hacker... Public... Radio.</p>\n<p>\n  <br>\n</p>\n<p>\n  Take care, 73.</p>\n<p>\n  <br>\n</p>\n<br>\n<p>\n  [1] PiHole: <a moz-do-not-send=\"true\" href=\"https://pi-hole.net/\">https://pi-hole.net/</a></p>\n<p>\n  [2] DNSMasq: <a moz-do-not-send=\"true\"\n    href=\"https://thekelleys.org.uk/dnsmasq/doc.html\">https://thekelleys.org.uk/dnsmasq/doc.html</a></p>\n<p>\n  [3] Ansible: <a moz-do-not-send=\"true\" href=\"https://ansible.com\">https://ansible.com</a></p>\n<p>\n  [4] Raspberry Pi: <a moz-do-not-send=\"true\"\n    href=\"https://www.raspberrypi.com/products/\">https://www.raspberrypi.com/products/</a></p>\n<p>\n  [5] Lego style case: <a moz-do-not-send=\"true\"\n    href=\"https://www.amazon.co.uk/gp/product/B015WVR5BS\">https://www.amazon.co.uk/gp/product/B015WVR5BS</a></p>\n<p>\n  [6] Nebula: <a moz-do-not-send=\"true\"\n    href=\"https://www.defined.net/\">https://www.defined.net/</a></p>\n<p>\n  [7] Tailscale: <a moz-do-not-send=\"true\"\n    href=\"https://tailscale.com/\">https://tailscale.com/</a></p>\n<p>\n  [8] Proxmox: <a moz-do-not-send=\"true\"\n    href=\"https://www.proxmox.com\">https://www.proxmox.com</a></p>\n<p>\n  [9] Proxmox post: <a moz-do-not-send=\"true\"\n    href=\"https://jon.sprig.gs/blog/post/2885\">https://jon.sprig.gs/blog/post/2885</a></p>\n<p>\n  [10] My blog: <a moz-do-not-send=\"true\"\n    href=\"https://jon.sprig.gs\">https://jon.sprig.gs</a></p>\n<p>\n  [11] Home Assistant: <a moz-do-not-send=\"true\"\n    href=\"https://www.home-assistant.io/\">https://www.home-assistant.io/</a></p>\n<p>\n  [12] OpenWRT: <a moz-do-not-send=\"true\"\n    href=\"https://openwrt.org/\">https://openwrt.org/</a></p>\n<p>\n  [13] Helper Scripts: <a moz-do-not-send=\"true\"\n    href=\"https://community-scripts.github.io/ProxmoxVE/\">https://community-scripts.github.io/ProxmoxVE/</a></p>\n<p>\n  [14] Network address spreadsheet: <a moz-do-not-send=\"true\"\nhref=\"https://gist.github.com/JonTheNiceGuy/a847aa4faf878d7d6cee5c069e1d66d6\">https://gist.github.com/JonTheNiceGuy/a847aa4faf878d7d6cee5c069e1d66d6</a></p>\n<p>\n  [15] PHPIPAM: <a moz-do-not-send=\"true\"\n    href=\"https://phpipam.net/\">https://phpipam.net/</a></p>\n<p>\n  [16] Gravity Sync: <a moz-do-not-send=\"true\"\n    href=\"https://github.com/vmstan/gravity-sync\">https://github.com/vmstan/gravity-sync</a></p>\n<p>\n  [17] Terraform: <a moz-do-not-send=\"true\"\n    href=\"https://www.terraform.io/\">https://www.terraform.io/</a></p>\n<p>\n  [18] PHPIPAM Terraform Provider: <a moz-do-not-send=\"true\"\n    href=\"https://registry.terraform.io/providers/lord-kyron/phpipam/latest\">https://registry.terraform.io/providers/lord-kyron/phpipam/latest</a></p>\n<p>\n  [19] Ansible Lookup: <a moz-do-not-send=\"true\"\nhref=\"https://gist.github.com/JonTheNiceGuy/289a8a2e0233e730f0fbc8f958ec4bc6\">https://gist.github.com/JonTheNiceGuy/289a8a2e0233e730f0fbc8f958ec4bc6</a></p>\n<p>\n  [20] Alex Kretzschmar: <a moz-do-not-send=\"true\"\n    href=\"https://alex.ktz.me/\">https://alex.ktz.me/</a></p>\n<p>\n  [21] Self Hosted Podcast: <a moz-do-not-send=\"true\"\n    href=\"https://selfhosted.show/\">https://selfhosted.show/</a></p>\n<p>\n  [22] Fully Automated DNS and DHCP with PiHole and DNSMasq: <a\n    moz-do-not-send=\"true\"\nhref=\"https://blog.ktz.me/fully-automated-dns-and-dhcp-with-pihole-and-dnsmasq/\">https://blog.ktz.me/fully-automated-dns-and-dhcp-with-pihole-and-dnsmasq/</a></p>\n<p>\n  [23] ansible-pihole: <a moz-do-not-send=\"true\"\n    href=\"https://github.com/JonTheNiceGuy/ansible-pihole\">https://github.com/JonTheNiceGuy/ansible-pihole</a></p>\n<p>\n  <br>\n</p>\n<p>\n  [IMAGE1] <a moz-do-not-send=\"true\"\nhref=\"https://jon.sprig.gs/blog/wp-content/uploads/2024/12/Screenshot-from-2024-12-20-19-29-22.png\">https://jon.sprig.gs/blog/wp-content/uploads/2024/12/Screenshot-from-2024-12-20-19-29-22.png</a><br>\n</p>\n<p><a href=\"[IMAGE1]\nhttps://jon.sprig.gs/blog/wp-content/uploads/2024/12/Screenshot-from-2024-12-20-19-29-22.png\"><img\nsrc=\"https://jon.sprig.gs/blog/wp-content/uploads/2024/12/Screenshot-from-2024-12-20-19-29-22.png\"\nalt=\"https://jon.sprig.gs/blog/wp-content/uploads/2024/12/Screenshot-from-2024-12-20-19-29-22.png\"\n      class=\"transparent\" moz-do-not-send=\"true\" height=\"539\"\n      border=\"0\" width=\"232\"></a>\n  <meta http-equiv=\"content-type\" content=\"text/html;\n    charset=windows-1252\">\n</p>\n',439,0,0,'CC-0','ansible, pihole, phpipam, system-administration, proxmox',0,0,1),
(4282,'2024-12-31','Backup Power for my Gas Furnace',733,'How I modified the power connection to my forced air gas furnace to allow for backup power use','<p>\n  Hello, again.&nbsp;This is Trey.&nbsp;&nbsp;</p>\n<p>\n  <br>\n</p>\n<p>\n  Before I begin, please note: In the show notes, I include links to\n  several informative videos, and to specific products which might\n  be used for a project like this.&nbsp;I do not endorse, nor\n  support any of the products or influencers linked.&nbsp;I do not\n  profit from anything on or associated with any of the\n  links.&nbsp;They are provided merely for additional information or\n  for reference.&nbsp;</p>\n<p>\n  <br>\n</p>\n<p>\n  I live in the eastern part of the state of Tennessee in the\n  southeast United States. Our summers are fairly hot and humid, but\n  our winters are generally mild. Last winter, we experienced an ice\n  storm, with temperatures dropping into the single digits\n  (Fahrenheit) or below -12 degrees Celsius.&nbsp;This was not a\n  problem until tree limbs heavy with ice began to break off and\n  fall, on occasion taking power lines with them.&nbsp;As a direct\n  result, we lost power at my home.&nbsp;The icy road conditions\n  made it difficult for service vehicles to reach impacted areas,\n  and also made it impossible for us to leave our home.&nbsp;</p>\n<p>\n  <br>\n</p>\n<p>\n  My house is heated by a natural gas forced air\n  furnace.&nbsp;However, the fan which blows hot air throughout the\n  house, and the electronics which control everything from telling\n  the furnace to turn on to igniting the gas, all require\n  electricity. For anyone unfamiliar with how a forced air furnace\n  works, I am including a link to a helpful YouTube video by The DIY\n  HVAC Guy <a href=\"https://www.youtube.com/watch?v=DE5CHjQNSi0\"\n    rel=\"noopener noreferrer\" target=\"_blank\">\n    Link</a>\n  &nbsp;</p>\n<p>\n  <br>\n</p>\n<p>\n  So, with the loss of electrical power, came a loss of heat. We\n  experienced a full day of being huddled under blankets and\n  drinking warm beverages.&nbsp;These I could heat up on my gas\n  stove, when I used a match or lighter to ignite the\n  burner.&nbsp;Thankfully, the next day our power was restored, and\n  our home warmed up again.&nbsp;</p>\n<p>\n  <br>\n</p>\n<p>\n  But that got me thinking, and searching for solutions.&nbsp;I\n  needed to provide an alternative electrical power option for my\n  gas furnace so that it would continue to work when the electricity\n  was interrupted.&nbsp;I found a really interesting video, also by\n  The DIY HVAC Guy (<a\n    href=\"https://www.youtube.com/watch?v=y07w1hiKIrI \"\n    rel=\"noopener noreferrer\" target=\"_blank\">\n    Link</a>\n  ), explaining an option for retrofitting the electrical\n  connections to the furnace, but I never got around to doing\n  it.&nbsp;&nbsp;</p>\n<p>\n  <br>\n</p>\n<p>\n  That changed, a couple months ago, when I found a real deal on a\n  brand new portable solar generator.&nbsp;It is effectively a large\n  lithium iron phosphate (LiFePO4) battery, an inverter, and a\n  charging system, all bundled together in an easy to carry\n  case.&nbsp;It provides over 1,000 watt hours of power.&nbsp;It can\n  be charged using portable solar panels (which I purchased at the\n  same time), or supported using external power sources from 12v to\n  48v DC.&nbsp;</p>\n<p>\n  <br>\n</p>\n<p>\n  The retrofit of the of the electrical feed line into my furnace\n  was easily accomplished by doing something very similar to what\n  was done in the video linked above.&nbsp;I turned off the circuit\n  breaker for the furnace in the house\'s main electrical panel, and\n  then located the switch box mounted on the side of my\n  furnace.&nbsp;I removed the switch plate cover and tested the\n  wires inside using a non-contact voltage tester, which would light\n  up and scream at me if there was still any power to any of the\n  wires.&nbsp;No screaming.&nbsp;No power.&nbsp;Good.&nbsp;</p>\n<p>\n  <br>\n</p>\n<p>\n  Next, I&nbsp;removed the switch from the box, disconnected the\n  black power source \"hot\" wire from the switch.&nbsp;This would\n  carry 120v AC&nbsp;directly to the switch and allow a user to turn\n  the furnace on and off.&nbsp;The wires going into the furnace\n  included a black \"hot\" wire, connected to the other side of the\n  switch, and a white \"neutral\" wire which was connected using a\n  wire nut to the white \"Neutral\" wire from the house wiring. I\n  disconnected all of these wires, and also the ground wire from the\n  house wiring.&nbsp;&nbsp;</p>\n<p>\n  <br>\n</p>\n<p>\n  I removed the front service panel from the furnace so that I could\n  perform the next steps safely.&nbsp;I removed the \"single gang\"\n  electrical box (which had housed the on/off switch) from the side\n  of the furnace, where it had been attached using a single sheet\n  metal screw.&nbsp;The term \"single gang\" describes a box which is\n  only wide enough to accommodate a single standard sized switch or\n  a single duplex outlet.&nbsp;A \"double gang\" box is wide enough\n  for two such devices, and a \"triple gang\" is wide enough for\n  three.&nbsp;Use the provided <a\nhref=\"https://www.kyleswitchplates.com/identify-your-wall-plate-opening/\"\n    rel=\"noopener noreferrer\" target=\"_blank\">\n    link</a> for a more complete description of this naming.&nbsp;</p>\n<p>\n  <br>\n</p>\n<p>\n  I chose to replace the single gang box, which only held a switch,\n  with a double gang box&nbsp;to accommodate both a switch and a\n  duplex outlet.&nbsp;I could have used the existing box and used a\n  single gang outlet/switch combination (Like the one at the\n  provided <a\nhref=\"https://www.acehardware.com/departments/lighting-and-electrical/switches-outlets-and-plugs/outlets/3809670\"\n    rel=\"noopener noreferrer\" target=\"_blank\">\n    link</a> ), but I wanted to use a heavier duty switch and\n  outlet.&nbsp;&nbsp;</p>\n<p>\n  <br>\n</p>\n<p>\n  I mounted a new double gang box to the side of the furnace using\n  multiple sheet metal screws.&nbsp;Then I passed the Romex house\n  wiring through a knockout hole in the side of the box and a\n  protective wire clamp.&nbsp;I wired the black \"Hot\" wire from the\n  house to the brass colored screw on a commercial grade 120v 15A\n  duplex outlet.&nbsp;The neutral wire from the house went to the\n  silver colored screw on the outlet, and the bare ground wire from\n  the house connected to the green ground screw on the\n  outlet.&nbsp;This was now connected just like any other outlet in\n  the house, and controlled by the breaker in the house\'s main\n  panel.&nbsp;I wrapped this duplex outlet with electrical tape, as\n  I like to do any time I am working in a metal box or a box\n  containing more than one device.&nbsp;Then I secured the duplex\n  outlet to the box with included screws.&nbsp;&nbsp;</p>\n<p>\n  <br>\n</p>\n<p>\n  I knocked out another one of the side holes in the box, and\n  installed another wire clamp, through which I passed some heavy\n  duty 12ga (About 2mm conductor diameter)&nbsp;3 conductor flexible\n  cable.&nbsp;The black wire from this went to one screw connector\n  on the switch, and the black wire from the furnace connected to\n  the other screw connector on the switch.&nbsp;I connected the\n  white wires (from the flexible cable and from the furnace)\n  together using a wire nut, and connected the ground wire from the\n  flexible cable to the green screw on the box.&nbsp;&nbsp;</p>\n<p>\n  <br>\n</p>\n<p>\n  The final installation steps were to connect a quality, 120v 15A\n  plug to the other end of the flexible cable.&nbsp;</p>\n<p>\n  <br>\n</p>\n<p>\n  Now for the first test.&nbsp;I turned the breaker back on, and\n  used an outlet tester to verify the newly installed outlet on the\n  side of the furnace was working and wired correctly.&nbsp;I use\n  one which displays voltage along with any wiring faults, and which\n  also has a button which can be used to test ground fault circuit\n  interrupts (GFCI) like the one found at the provided <a\n    href=\"https://www.amazon.com/Receptacle-Electrical-Klein-Tools-RT250/dp/B08QW7K1JJ\n    \" rel=\"noopener noreferrer\" target=\"_blank\">\n    link</a> .&nbsp;</p>\n<p>\n  <br>\n</p>\n<p>\n  Everything checked out properly, so I plugged the furnace into the\n  outlet, using the flexible cord.&nbsp;Nothing happened, so I\n  flipped the switch to the \"On Position\".&nbsp;I&nbsp;immediately\n  saw blinking lights on the furnace controller board.&nbsp;Next, I\n  adjusted the thermostat for heat, and within a minute, the furnace\n  had ignited the burners and was blowing hot air.&nbsp;</p>\n<p>\n  <br>\n</p>\n<p>\n  Good.&nbsp;All my connections were verified, so I turned off the\n  furnace, unplugged it, and installed the faceplate on the\n  box.&nbsp;Yes, I know I&nbsp;could have done this before I plugged\n  in the furnace.&nbsp;However, with over 40 years of experience\n  building, repairing, and modifying electrical and electronic\n  devices.&nbsp;I have learned to never put back together more than\n  you must for a specific test.&nbsp;Otherwise, you will just need\n  to go back and take it apart again when your test\n  fails.&nbsp;&nbsp;</p>\n<p>\n  <br>\n</p>\n<a href=\"hpr4282_image_1.jpeg\"><img moz-do-not-send=\"true\"\n    src=\"hpr4282_image_1_tn.jpeg\" alt=\"A dual US power socket with a\n    yellow socket plugged in, next to a sticker that says\n    EnergyGuide\" height=\"494\" border=\"0\" width=\"400\"></a>\n<p>\n  <br>\n</p>\n<p>\n  What was next?&nbsp;More testing, of course.&nbsp;I needed to\n  figure out how much power the furnace used when generating\n  heat.&nbsp;Because of the way the furnace was now wired, it was\n  simple to connect an inline power meter between the outlet and the\n  furnace plug.&nbsp;I plugged one in and turned everything back on\n  again.&nbsp;The measured peak power use was 375 watts.&nbsp;The\n  solar generator can easily handle this for a couple hours and I\n  can charge it from various sources during gaps in operation.&nbsp;</p>\n<p>\n  <br>\n</p>\n<p>\n  So, I connected the solar generator and... Nothing.&nbsp;The\n  furnace would not even complete its self-test\n  sequence.&nbsp;Great... Did I break something?&nbsp;I plugged the\n  furnace back in directly to the power outlet, and everything\n  worked properly. Well, that\'s a plus, at least.&nbsp;</p>\n<p>\n  <br>\n</p>\n<p>\n  So, I spent the next several hours troubleshooting two different\n  blinking light error codes on the furnace controller board. One\n  referenced \"Hot &amp; Neutral Reversed\" while the other referenced\n  \"Open Ground\".&nbsp;That was odd.&nbsp;Well, I had never actually\n  tested the output of this brand new solar generator, so I plugged\n  my outlet tester into the solar generator, and it verified \"Open\n  Ground\".&nbsp;Time for a technical support call.&nbsp;</p>\n<p>\n  <br>\n</p>\n<p>\n  <strong>\n    <em>\n      THIS</em>\n  </strong> is when I learned something important.&nbsp;Apparently,\n  this is a common issue with solar generators, and is part of their\n  design.&nbsp;To resolve the issue, I need to simply connect a\n  bonding plug into any 120v outlet on the generator.&nbsp;&nbsp;</p>\n<p>\n  <br>\n</p>\n<p>\n  You can purchase a Generator Bonding Plug, also called a\n  Ground-Neutral Shunt, and I have included several links as\n  reference. ( <a\n    href=\"https://www.microair.net/products/generator-bonding-plug\"\n    rel=\"noopener noreferrer\" target=\"_blank\">\n    Bonding Plug</a> or&nbsp;<a\nhref=\"https://www.amazon.com/Portable-Inverter-Generator-Floating-Motorhome/dp/B0BLZ8QKLV?th=1\"\n    rel=\"noopener noreferrer\" target=\"_blank\">\n    Ground Neutral Shunt</a>\n  &nbsp;).&nbsp;I found them selling for anywhere between $10 - $35\n  USD.&nbsp;But all they are is a $1 - $2 USD plug with a wire\n  connecting the ground terminal to the neutral terminal.&nbsp;So,\n  naturally, I built one using a spare plug I had.&nbsp;I connected\n  it to the solar generator, and the outlet tester was very\n  happy.&nbsp;</p>\n<p>\n  <br>\n</p>\n<p>\n  With fingers crossed I connected the furnace back to the solar\n  generator, with the shunt installed.&nbsp;This is very difficult\n  to do, by the way, when your fingers are crossed.&nbsp;Everything\n  started up properly, and I ran the furnace for 2 hours using just\n  the generator.&nbsp;</p>\n<p>\n  <br>\n</p>\n<p>\n  Hopefully, I will not need it, but If I do, I have options.&nbsp;</p>\n<p>\n  <br>\n</p>\n<p>\n  I would love to hear your episode about what you do to prepare for\n  situations like this.&nbsp;</p>',394,0,0,'CC-BY-SA','diy, electrical, home repair',0,0,1),
(4311,'2025-02-10','LoRaWAN and the Things Stack',609,'Lee sets up some temperature and humidity sensors','    <p> I have set up some LoRaWAN temperature and humidity sensors, and\n      am using the Things Stack to collect the data.</p>\n    <p> <br>\n    </p>\n    <p> This gets processed via a web-hook and rendered as a graph.</p>\n    <p> <br>\n    </p>\n    <p> The LoRaWAN Alliance - <a href=\"https://lora-alliance.org\"\n        rel=\"noopener noreferrer\" target=\"_blank\">\n        https://lora-alliance.org</a> </p>\n    <p> <br>\n    </p>\n    <p> Mastering LoRaWAN - <a\nhref=\"https://www.amazon.com/Mastering-LoRaWAN-Comprehensive-Communication-Connectivity-ebook/dp/B0CTRH6MV6\"\n        rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.amazon.com/Mastering-LoRaWAN-Comprehensive-Communication-Connectivity-ebook/dp/B0CTRH6MV6</a>\n    </p>\n    <p> <br>\n    </p>\n    <p> The Things Industries - <a\n        href=\"https://thethingsindustries.com\" rel=\"noopener noreferrer\"\n        target=\"_blank\"> https://thethingsindustries.com</a> </p>\n    <h2> <br>\n    </h2>\n    <h2> server.py</h2>\n    <pre class=\"ql-syntax\" spellcheck=\"false\">import json\nimport sqlite3\nimport logging\nfrom http.server import BaseHTTPRequestHandler, HTTPServer\n\nrooms = {\n    \'eui-24e12*********07\': \'living-room\',\n    \'eui-24e12*********54\': \'hall\',\n    \'eui-24e12*********42\': \'downstairs-office\',\n    \'eui-24e12*********35\': \'kitchen\',\n    \'eui-24e12*********29\': \'conservatory\',\n    \'eui-24e12*********87\': \'landing\',\n    \'eui-24e12*********45\': \'main-bedroom\',\n    \'eui-24e12*********89\': \'upstairs-office\',\n    \'eui-24e12*********38\': \'spare-bedroom\',\n    \'eui-24e12*********37\': \'playroom\'\n};\n\n# Configure logging\nlogging.basicConfig(filename=\"server_log.txt\", level=logging.INFO, format=\"%(asctime)s - %(message)s\")\n\n# Define the web server handler\nclass MyServerHandler(BaseHTTPRequestHandler):\n\n    # Handle POST requests\n    def do_POST(self):\n        length = int(self.headers.get(\'Content-Length\'))\n        data = self.rfile.read(length).decode(\'utf-8\')\n\n        try:\n            # Validate and parse JSON data\n            json_data = json.loads(data)\n            logging.info(f\"Received valid JSON data: {json_data}\")\n\n            # Write the data to database\n            id = json_data[\"end_device_ids\"][\"device_id\"]\n            room = rooms.get(id)\n            readat = json_data[\"uplink_message\"][\"rx_metadata\"][0][\"time\"]\n            temp = json_data[\"uplink_message\"][\"decoded_payload\"][\"temperature\"]\n            hum = json_data[\"uplink_message\"][\"decoded_payload\"][\"humidity\"]\n            conn = sqlite3.connect(\'data.db\')\n            sql = \"\"\"CREATE TABLE IF NOT EXISTS data (\n                id INTEGER PRIMARY KEY AUTOINCREMENT,\n                room TEXT,\n                readat DATETIME,\n                temp DECIMAL(4,1),\n                hum DECIMAL(4,1)\n            );\"\"\"\n            conn.execute(sql)\n            sql = \"INSERT INTO data (room, readat, temp, hum) VALUES (?, ?, ?, ?)\"\n            conn.execute(sql, (room, readat, temp, hum))\n            conn.commit()\n            conn.close()\n\n            self.send_response(200)\n            self.send_header(\"Content-type\", \"text/html\")\n            self.end_headers()\n            self.wfile.write(bytes(\"Data received and logged!\", \"utf-8\"))\n\n        except json.JSONDecodeError:\n            logging.error(\"Invalid JSON data received.\")\n            self.send_response(400)  # Bad Request\n            self.send_header(\"Content-type\", \"text/html\")\n            self.end_headers()\n            self.wfile.write(bytes(\"Invalid JSON format.\", \"utf-8\"))\n\n        except PermissionError:\n            logging.error(\"File write permission denied.\")\n            self.send_response(500)  # Internal Server Error\n            self.send_header(\"Content-type\", \"text/html\")\n            self.end_headers()\n            self.wfile.write(bytes(\"Server error: Unable to write data to file.\", \"utf-8\"))\n\n# Start the server\nserver_address = (\'0.0.0.0\', 12345)  # Customize host and port if needed\nhttpd = HTTPServer(server_address, MyServerHandler)\nprint(\"Server started on http://localhost:12345\")\nhttpd.serve_forever()\n</pre>\n    <h2> <br>\n    </h2>\n    <h2> process.php</h2>\n    <pre class=\"ql-syntax\" spellcheck=\"false\">&lt;!DOCTYPE html&gt;\n&lt;html&gt;\n&lt;head&gt;\n&lt;script src=\"https://cdn.jsdelivr.net/npm/chart.js\"&gt;&lt;/script&gt;\n&lt;/head&gt;\n&lt;body&gt;\n&lt;canvas id=\"temp\" style=\"height:50vh\"&gt;&lt;/canvas&gt;\n&lt;canvas id=\"hum\" style=\"height:50vh\"&gt;&lt;/canvas&gt;\n&lt;script&gt;\n&lt;?php\n\n    $colors = [\n        \'#FF9999\',  // Light red\n        \'#FFCC99\',  // Light orange\n        \'#FFFF99\',  // Light yellow\n        \'#CCFF99\',  // Light lime green\n        \'#99FF99\',  // Light green\n        \'#99FFCC\',  // Light teal\n        \'#99FFFF\',  // Light sky blue\n        \'#99CCFF\',  // Light blue\n        \'#9999FF\',  // Light violet\n        \'#CC99FF\',  // Light lavender\n        \'#FF99FF\',  // Light pink\n        \'#FFCCFF\', // Light rose\n        \'#FFD5D5\',  // Light salmon\n        \'#FFDDAA\',  // Light peach\n        \'#FFE0E0\',  // Light beige\n        \'#FFF0F0\' // Light ivory\n    ];\n\n    $results = [\n        \'living-room\' =&gt; [\n            \'temperature\' =&gt; [],\n            \'humidity\' =&gt; []\n        ],\n        \'hall\' =&gt; [\n            \'temperature\' =&gt; [],\n            \'humidity\' =&gt; []\n        ],\n        \'downstairs-office\' =&gt; [\n            \'temperature\' =&gt; [],\n            \'humidity\' =&gt; []\n        ],\n        \'kitchen\' =&gt; [\n            \'temperature\' =&gt; [],\n            \'humidity\' =&gt; []\n        ],\n        \'conservatory\' =&gt; [\n            \'temperature\' =&gt; [],\n            \'humidity\' =&gt; []\n        ],\n        \'landing\' =&gt; [\n            \'temperature\' =&gt; [],\n            \'humidity\' =&gt; []\n        ],\n        \'main-bedroom\' =&gt; [\n            \'temperature\' =&gt; [],\n            \'humidity\' =&gt; []\n        ],\n        \'upstairs-office\' =&gt; [\n            \'temperature\' =&gt; [],\n            \'humidity\' =&gt; []\n        ],\n        \'spare-bedroom\' =&gt; [\n            \'temperature\' =&gt; [],\n            \'humidity\' =&gt; []\n        ],\n        \'playroom\' =&gt; [\n            \'temperature\' =&gt; [],\n            \'humidity\' =&gt; []\n        ]\n    ];\n\n    $labels = [];\n\n    $db = new SQLite3(\'data.db\');\n        $sql = \"SELECT room, readat, temp, hum FROM data\";\n        $stmt = $db-&gt;prepare($sql);\n        $result = $stmt-&gt;execute();\n\n        while ($row = $result-&gt;fetchArray(SQLITE3_ASSOC)) {\n                $where = $row[\'room\'];\n\n                                $tz = \'Europe/London\';\n                                $dt = new DateTime($row[\'readat\']);\n                                $dt-&gt;setTimezone(new DateTimeZone($tz));\n                                $when = $dt-&gt;format(\'d/m/Y, H:i\');\n\n                $u = intdiv(date_format(date_create($row[\'readat\']), \"U\"), 600);\n                $temp = number_format($row[\'temp\'], 1);\n                $hum = number_format($row[\'hum\'], 1);\n\n        $labels[$u] = \"\\\"$when\\\"\";\n\n                $results[$where][\'temperature\'][] = $temp;\n                $results[$where][\'humidity\'][] = $hum;\n        }\n\n        $stmt-&gt;close();\n        $db-&gt;close();\n\n    $c = 0;\n    foreach ($results as $key =&gt; $room) {\n        $col = $colors[$c];\n        $temp_datasets[] = \"{ label: \\\"$key °C\\\",  data: [ \".implode(\",\", $room[\'temperature\']).\" ], borderColor: \\\"$col\\\" }\";\n        $hum_datasets[] = \"{ label: \\\"$key %\\\", data: [ \".implode(\",\", $room[\'humidity\']).\" ], borderColor: \\\"$col\\\" }\";\n        $c++;\n    }\n\n?&gt;\nconst data1 = { datasets: [ &lt;?php echo implode(\",\",$temp_datasets); ?&gt; ], labels: [&lt;?php echo implode(\",\", $labels); ?&gt;] };\nconst ctx1 = document.getElementById(\"temp\").getContext(\"2d\");\nconst options1 = {\n  type: \"line\",\n  data: data1,\n  options: {\n    elements: {\n      point:{\n        radius: 0\n      }\n    }\n  }\n};\nconst chart1 = new Chart(ctx1, options1);\n\nconst data2 = { datasets: [ &lt;?php echo implode(\",\",$hum_datasets); ?&gt; ], labels: [&lt;?php echo implode(\",\", $labels); ?&gt;] };\nconst ctx2 = document.getElementById(\"hum\").getContext(\"2d\");\nconst options2 = {\n  type: \"line\",\n  data: data2,\n  options: {\n    elements: {\n      point:{\n        radius: 0\n      }\n    }\n  }\n};\nconst chart2 = new Chart(ctx2, options2);\n&lt;/script&gt;\n&lt;/body&gt;\n&lt;/html&gt;\n</pre>\n    <h2> <br>\n    </h2>\n    <h2> Temperature Chart</h2>\n    <p> <br>\n    </p>\n    <a href=\"hpr4311_image_1.png\"><img moz-do-not-send=\"true\"\n        src=\"hpr4311_image_1_tn.png\" alt=\"Graph showing temp over time in\n        various rooms\" height=\"201\" border=\"0\" width=\"400\"></a>\n    <p> <br>\n    </p>\n    <h2> Humidity Chart</h2>\n    <p> <br>\n    </p>\n    <a href=\"hpr4311_image_2.png\"><img moz-do-not-send=\"true\"\n        src=\"hpr4311_image_2_tn.png\" alt=\"Graph showing humidity over time in\n        various rooms\" height=\"201\" border=\"0\"\n        width=\"400\"></a>\n    <p> <br>\n    </p>\n',403,0,0,'CC-BY-SA','iot, lorawan',0,0,1),
(4330,'2025-03-07','GIMP: Fixing Photos',952,'How to fix some of the common problems in photos','    <p>\n      If you you take a lot of photos, some of them will show problems.\n      But you don\'t need to throw them away. With GIMP, you can fix\n      these common problems and restore your photos. In this episode I\n      look at getting rid of fingers in photos, fixing red eyes in\n      photos, and fixing common artefacts caused by a speck of dust or\n      damage to the negative.</p>\n    <a href=\"hpr4330_image_1.webp\"><img moz-do-not-send=\"true\"\n        src=\"hpr4330_image_1_tn.webp\" alt=\"The youtube thumbnail for the vieo\n        showing a lady on on half having loser written on their face,\n        and on the other it is removed. Also showing the gimp logo and X\n        Davies Media Design\" height=\"225\" border=\"0\" width=\"400\"></a>\n    <h3>\n      Links:</h3>\n    <ul>\n      <li><a href=\"https://www.youtube.com/watch?v=4VcthL001Uc\">https://www.youtube.com/watch?v=4VcthL001Uc</a>\n      </li>\n    </ul>\n',198,113,0,'CC-BY-SA','GIMP, Red eye, photo artifacts',0,0,1),
(4340,'2025-03-21','Playing Civilization IV, Part 7',833,'We demonstrate how to win a Culture victory','<p>\nCivilization IV added some new Victory types, and I decided to\nillustrate one of them, the Culture victory, by going through an\nexample of achieving this, the Culture victory.</p>\n<h3>Links:</h3>\n<ul>\n<li><a moz-do-not-send=\"true\" href=\"https://civilization.fandom.com/wiki/Speed_(Civ4)\">https://civilization.fandom.com/wiki/Speed_(Civ4)</a></li>\n<li><a moz-do-not-send=\"true\" href=\"https://civilization.fandom.com/wiki/Cottage_(Civ4)\">https://civilization.fandom.com/wiki/Cottage_(Civ4)</a></li>\n<li><a moz-do-not-send=\"true\" href=\"https://www.palain.com/gaming/civilization-iv/playing-civilization-iv-part-7/\">https://www.palain.com/gaming/civilization-iv/playing-civilization-iv-part-7/</a></li>\n</ul>\n',198,122,0,'CC-BY-SA','Computer games, strategy games, Civilization IV, Culture victory',0,0,1),
(4350,'2025-04-04','GIMP: More Photo Fixes',850,'A few more fixes to some of the common problems in photos','    <p>\n      If you you take a lot of photos, some of them will show problems.\n      But you don\'t need to throw them away. With GIMP, you can fix\n      these common problems and restore your photos. In this episode I\n      take a look at two problems that turn out to be related and to\n      have similar fixes: Dark photos, and Color problems.</p>\n    <h3>\n      Links:</h3>\n    <ul>\n      <li><a moz-do-not-send=\"true\"\n          href=\"https://www.youtube.com/watch?v=G8OJJbhNWGs\">https://www.youtube.com/watch?v=G8OJJbhNWGs\n        </a></li>\n      <li><a moz-do-not-send=\"true\"\n          href=\"https://www.youtube.com/watch?v=jbU8FqTI-A4\">https://www.youtube.com/watch?v=jbU8FqTI-A4</a></li>\n      <li><a moz-do-not-send=\"true\"\n          href=\"https://www.ahuka.com/gimp/more-photo-fixes/\">https://www.ahuka.com/gimp/more-photo-fixes/</a></li>\n    </ul>',198,113,0,'CC-BY-SA','GIMP, Dark photos, Color problems',0,0,1),
(4360,'2025-04-18','Isaac Asimov: The Robot Novels',811,'A look at the robot novels of Isaac Asimov','    <p>\n      Isaac Asimov first invented the Three Laws of Robotics in a series\n      of short stories. But he then imagined how a future society might\n      develop with robots, and he pictured this in a series of novels\n      that have become classics in their own right.</p>\n    <h3>\n      Links:</h3>\n    <ul>\n      <li><a moz-do-not-send=\"true\"\n          href=\"https://en.wikipedia.org/wiki/The_Caves_of_Steel\">https://en.wikipedia.org/wiki/The_Caves_of_Steel</a></li>\n      <li><a moz-do-not-send=\"true\"\n          href=\"https://archive.org/details/isaac-asimov-the-caves-of-steel\">https://archive.org/details/isaac-asimov-the-caves-of-steel</a></li>\n      <li><a moz-do-not-send=\"true\"\n          href=\"https://en.wikipedia.org/wiki/The_Naked_Sun\">https://en.wikipedia.org/wiki/The_Naked_Sun</a></li>\n      <li><a moz-do-not-send=\"true\"\n          href=\"https://en.wikipedia.org/wiki/The_Robots_of_Dawn\">https://en.wikipedia.org/wiki/The_Robots_of_Dawn</a></li>\n      <li><a moz-do-not-send=\"true\"\nhref=\"https://www.palain.com/science-fiction/the-golden-age/isaac-asimov-the-robot-novels/\">https://www.palain.com/science-fiction/the-golden-age/isaac-asimov-the-robot-novels/</a></li>\n    </ul>',198,124,0,'CC-BY-SA','Science fiction, Asimov, Robots',0,0,1),
(4283,'2025-01-01','Toley bone repair',358,'This is a quick episode about how I repaired vintage dog walking accessory.','<p>\n  <strong>\n    <u>\n      Background</u>\n  </strong>\n</p>\n<p>\n  <br>\n</p>\n<p>\n  This episode covers the repair of a vintage dog walking accessory.</p>\n<p>\n  <br>\n</p>\n<p>\n  <a href=\"https://www.dsl.ac.uk/entry/snd/sndns3884\" rel=\"noopener\n    noreferrer\" target=\"_blank\">\n    The word “Toley” - There seems to be multiple spellings and\n    also many other meanings that I was unaware of until now! Around\n    here in Scotland Toley is a Local term for the act or product of\n    defecation.</a>\n</p>\n<p>\n  <br>\n</p>\n<p>\n  <a href=\"https://www.dsl.ac.uk/entry/snd/lug_n1_v1\" rel=\"noopener\n    noreferrer\" target=\"_blank\">\n    Lugs – A local Scottish word for ears</a>\n</p>\n<p>\n  <br>\n</p>\n<p>\n  <a href=\"https://en.wikipedia.org/wiki/Cable_tie\" rel=\"noopener\n    noreferrer\" target=\"_blank\">\n    Wikipedia article about a Cable tie</a>\n</p>\n<p>\n  <br>\n</p>\n<p>\n  <a href=\"https://en.wikipedia.org/wiki/Carabiner\" rel=\"noopener\n    noreferrer\" target=\"_blank\">\n    Wikipedia article about a Carabiner</a>\n</p>\n<p> </p>\n<p>\n  Picture 1 shows the broken dog walking accessory.</p>\n<a href=\"hpr4283_image_1.jpeg\"><img moz-do-not-send=\"true\"\n    src=\"hpr4283_image_1_tn.jpeg\" alt=\"Picture 1 shows the broken dog\n    walking accessory.\" height=\"300\" border=\"0\" width=\"400\"></a><br>\n<p>\n  <br>\n</p>\n<p>\n  Picture 2 shows the the initial repair of the dog walking\n  accessory.</p>\n<a href=\"hpr4283_image_2.jpeg\"><img moz-do-not-send=\"true\"\n    src=\"hpr4283_image_2_tn.jpeg\" alt=\"Picture 2 shows the the initial\n    repair of the dog walking accessory.\" height=\"300\" border=\"0\"\n    width=\"400\"></a>\n<p>\n  <br>\n</p>\n<p>\n  <br>\n</p>\n<p>\n  Picture 3 shows the failure of the initial repair.</p>\n<a href=\"hpr4283_image_3.jpeg\"><img moz-do-not-send=\"true\"\n    src=\"hpr4283_image_3_tn.jpeg\" alt=\"Picture 3 shows the failure of the\n    initial repair.\" height=\"300\" border=\"0\" width=\"400\"></a>\n<p>\n  <br>\n</p>\n<p>\n  <br>\n</p>\n<p>\n  I don’t have a picture of the final repair however it’s just\n  using a slightly thicker cable tie.</p>\n<p>\n  <br>\n</p>\n',201,0,1,'CC-BY-SA','Repair, DIY, Outdoors, Walking',0,0,1),
(4288,'2025-01-08','God\'s Pantry Food Bank',1578,'Questions and Answers on What is a Food Bank and my 25 Year Career','<p> Greetings and welcome to Hacker Public Radio.</p>\n<p>My name is Peter Paterson, also known as SolusSpider, a Scotsman living in Kentucky, USA.</p>\n<p>This is my second HPR recording.</p>\n<p>The first was episode 4258 where I gave my introduction and computer history.</p>\n<p>Once again I am recording the audio on my Samsung Galaxy S21 Ultra phone, running Android 14, with Audio Recorder by Axet. The app was installed from F-Droid.</p>\n<h3 id=\"markdown\">Markdown</h3>\n<p>For my Shownotes I learned to use Markdown by using the ReText app, which allows me to write in one window and preview the result in another.</p>\n<h2 id=\"what-is-this-show-about-\">What is this show about?</h2>\n<p>When I visited <a href=\"https://hackerpublicradio.org/correspondents/0318.html\">Archer72</a>, AKA Mark Rice, in November 2024 in his University of Kentucky trauma room I reminded him that I work for <strong>God\'s Pantry Food Bank</strong>.</p>\n<p>He said he wanted to hear more, and highly suggested that I record the story as an HPR show, so here we are.</p>\n<p>I plan to ask the questions I hear from so many, and attempt to answer them as best I am able.</p>\n<h1 id=\"what-is-the-history-of-god-s-pantry-food-bank-\">What is the History of God\'s Pantry Food Bank?</h1>\n<p>Reading directly from the <a href=\"https://www.godspantry.org/learn/about-us\">About-Us</a> page of Godspantry.org</p>\n<blockquote>\n<p>Mim Hunt, the founder of God\'s Pantry Food Bank, vowed to leave \"the heartbreaking profession of social work\" behind when she returned to her hometown of Lexington after serving as a child welfare worker in 1940\'s New York City. She and her husband, Robert, opened \"Mim\'s,\" a combination gift shop, antique gallery, and health food store, but after seeing poverty in Lexington that rivaled what she\'d fought against in New York, she found herself unable to remain silent.</p>\n<p>Mim began her work in Lexington by filling her station wagon with food, clothing, and bedding, and distributing it directly to individuals in need.</p>\n<p>Soon, neighbors were bringing food donations to what became known as \"Mim\'s Pantry\" located at her home on Lexington\'s Parkers Mill Road. But Mim quickly corrected them. \"I don\'t fill these shelves,\" she said. \"God does. This is God\'s Pantry.\" God\'s Pantry Food Bank was born out of this work in 1955 and remained mobile until the first pantry was opened in 1959.</p>\n<p>Since its founding, the food bank has grown in many ways. What started with one woman attempting to do what she could to address a need is now an organization serving 50 counties in Central and Eastern Kentucky through a number of programs with a dedicated staff committed to the mission of solving hunger.</p>\n<p>Mim Hunt devoted her life to helping others, and we continue to honor her legacy at God\'s Pantry Food Bank. Her work is proof that one person, with every small action, can make a large impact. We invite you to join us in continuing Mim\'s work.</p>\n</blockquote>\n<h1 id=\"where-have-been-the-locations-of-the-main-food-bank-facility-\">Where have been the locations of the main Food Bank facility?</h1>\n<p>My ex-workmate Robert Srodulski recently wrote a reply in Facebook when our newest building was announced.</p>\n<p>He stated:</p>\n<blockquote>\n<p>&quot;If I count right, this is the 6th main warehouse location in Lexington. Congratulations!</p>\n</blockquote>\n<p>&gt;</p>\n<ul>\n<li><p>Mim\'s house and car</p>\n</li>\n<li><p>Oldham Avenue garage</p>\n</li>\n<li><p>A building next to Rupp Arena (which is now gone)</p>\n</li>\n<li><p>Forbes Road</p>\n</li>\n<li><p>Jaggie Fox Way,</p>\n</li>\n<li><p>Innovation Drive.&quot;</p>\n</li>\n</ul>\n<p>My friend Robert was employed by the Food Bank for 26 years. I am chasing his time as the longest lasting male employee.</p>\n<p>Two ladies have longer service times:</p>\n<ul>\n<li><p>Debbie Amburgey with 36.5 years in our Prestonsburg facility. She started on 19th October 1987. Sadly my good friend Debbie passed earlier this year, and I miss her greatly. She never retired.</p>\n</li>\n<li><p>Danielle Bozarth with currently just under 30 years. She started on 30th May 1995.</p>\n</li>\n</ul>\n<p>It would take me just over 11 years to catch up with Debbie\'s service record, which would take me to the age of 68. Unsure if I shall still be employed by then!</p>\n<h1 id=\"what-exactly-do-i-mean-by-food-bank-\">What exactly do I mean by Food Bank?</h1>\n<p>In February 2023 I wrote a blog post with my explanation of <a href=\"https://solusspider.w3spaces.com/SolusSpider_019_2023-02-13_What-exactly-do-I-mean-by-Food-Bank.html\">Food Bank</a>. My website is <a href=\"http://LinuxSpider.net\">LinuxSpider.net</a>, and you will find the direct link in the shownotes.</p>\n<p>The blog was written as a response to friends, mostly from the United Kingdom, asking me very this question.</p>\n<p>To many there, and indeed here in USA also, what is called a Food Bank is what I call a local Food Pantry. Nobody is wrong here at all. We all gather food from various sources and distribute it to our neighbours who are in food insecure need.</p>\n<p>Most Pantries are totally staffed by volunteers and often open limited hours.</p>\n<p>The Food Bank has a larger scope in where we source food from, the amount sourced, does have paid staff but still dependent on volunteers, and we are open at least 40 hours a week. More if you include projects that involve evenings and Saturdays.</p>\n<p>God\'s Pantry Food Bank has a service area which includes 50 of the 120 Counties of Kentucky, covering central, southern, and eastern, including part of Appalachia.</p>\n<p>When I started in 1999 we were distributing 6 million pounds weight of food per year. This is about 150 semi-truckloads. Over 25 years later we are looking at distributing about 50 million pounds this year, about 1,250 truckloads.</p>\n<p>Over 40% of our distribution is fresh produce.</p>\n<p>We are an hunger relief organisation, so this amount of food is assisting our neighbours in need.</p>\n<p>In those 50 Counties we have about 400 partner agencies. Many of these agencies are Soup Kitchens, Children\'s Programs, Senior Programs, as well as Food Pantries.</p>\n<p>God\'s Pantry Food Bank is partnered with the Feeding America network of 198 Food Banks.</p>\n<p>In my early years I knew them as America\'s Second Harvest. In 2008 they changed name to <a href=\"https://www.feedingamerica.org\">Feeding America</a>. Their website is FeedingAmerica.org</p>\n<p>What they do is outlined in their <a href=\"https://www.feedingamerica.org/our-work\">our-work</a> page, including:</p>\n<ul>\n<li><p>Ensuring everyone can get the food they need with respect and dignity.</p>\n</li>\n<li><p>Advocating for policies that improve food security for everyone.</p>\n</li>\n<li><p>Partnering to address the root causes of food insecurity, like the high cost of living and lack of access to affordable housing.</p>\n</li>\n<li><p>Working with local food banks and meal programs.</p>\n</li>\n<li><p>Ending hunger through Food Access, Food Rescue, Disaster Response, and Hunger Research.</p>\n</li>\n</ul>\n<p>I have visited a few other Food Banks, but not as many as I would have liked. We all have our own areas of service, but do often interact as the needs arise, especially in times of disaster.</p>\n<p>The Feeding America network came to Kentucky\'s aid in the past few years with the flooding in the East and tornadoes in the West.</p>\n<p>Feeding America aided the Food Banks affected by the devastation from Hurricanes Helene and Milton.</p>\n<h1 id=\"how-did-i-get-started-at-the-food-bank-\">How did I get started at the Food Bank?</h1>\n<p>As mentioned in my introduction show I moved from Scotland to Kentucky in May 1999 and married Arianna in June 1999.</p>\n<p>Before our wedding I had received my green card. My future Mother-in-Law Eva recommended I check with God\'s Pantry Food Bank to see if they were hiring.</p>\n<p>She was working for Big Lots and had applied for a warehouse job at the Food Bank. Unfortunately for her she never got the job, but she was quite impressed by the organisation. She knew that I had warehouse and driving experience.</p>\n<p>So, one day after dropping Arianna at her University of Kentucky Medical Staff Office I stopped by the Food Bank on South Forbes Road to ask.</p>\n<p>The answer was that they were indeed hiring for the warehouse, and to come back that afternoon to meet with CW Drury, the Warehouse Manager. I drove home, put on smarter clothes, and drove back.</p>\n<p>It was a pleasure meeting CW and hearing about the job. Although most of the explanation of what they did in their mission went over my head at the time, I knew needed a job, and wanted to join this company.</p>\n<p>A few days before our wedding I received a phone call from CW offering me the position. I accepted and went for my medical the next day.</p>\n<p>My first day with God\'s Pantry Food Bank was on Tuesday 6th July 1999, the day after our honeymoon.</p>\n<p>I will admit that although my previous job in Scotland was a physical one, quite a few months had passed, and the heat was hot that Summer in Kentucky! I went home exhausted everyday, but totally enjoying the work I was doing.</p>\n<p>I started off mostly picking orders, assisting Agencies that came in, going to the local Kroger supermarkets to pick up bread, deliver and pick up food barrels of donations, and all the other duties CW assigned me to.</p>\n<p>I particularly enjoyed the software part of the job. I forget the name of the software back then, but do remember learning the 10 digit Item Codes.</p>\n<ul>\n<li><p>1st is the source</p>\n</li>\n<li><p>2nd and 3rd are the category. There are 31 officially with Feeding America.</p>\n</li>\n<li><p>next 6 is the unique UPC - usually from the item bar code</p>\n</li>\n<li><p>10th is the storage code of dry, cooler, or freezer</p>\n</li>\n</ul>\n<p>The first code I memorised was Bread Products: 1040010731</p>\n<p>This broke down to Donated, Bread Category, UPC number, and Dry Storage.</p>\n<p>I must admit we did not create a new code when we started storing Bread Product in the Cooler. That is probably the only exception</p>\n<p>It has been my responsibility all these years to maintain the Item Category Code sheet with different codings we have used and had to invent.</p>\n<p>An example is that when the source digit had already used 1 to 9, we had to start using letters. Although there were concerns at the time, everything worked out well.</p>\n<p>When I started at South Forbes Road there were 11 employees there and Debbie in Prestonsburg. 12 in total, in 2 locations.</p>\n<p>These days we have over 80 employees in 5 locations: Lexington, Prestonsburg, London, Morehead, and a Volunteer Center on Winchester Road, Lexington, near the Smuckers JIF Peanut Butter plant.</p>\n<p>My time at 104 South Forbes Road was for a full 4 weeks!</p>\n<p>In August 1999 we moved to 1685 Jaggie Fox Way, into a customised warehouse with 3 pallet tall racking, and lots of office space. It felt so large back then!</p>\n<p>On my first couple of days of unloading trucks there I totally wore out a pair of trainers!!</p>\n<p>Jaggie Fox does sound like a strange name for a street, but I later learned it came from 2 ladies, Mrs Jaggie and Mrs Fox who owned the land before the business park purchase. Anyway, that\'s what I have been told by mulitple people.</p>\n<p>Technology was fun in 1999, as we had a 56K phone modem, about 10 computers, and 1 printer. You can imagine the shared internet speed.</p>\n<p>I forget how long, but we eventually got DSL, then Cable.</p>\n<h1 id=\"what-have-been-my-duties-at-the-food-bank-\">What have been my duties at the Food Bank?</h1>\n<p>For my first decade of employment I worked the warehouse and as a driver.</p>\n<p>This included delivering food to the 4 to 5 local pantries that we ran ourselves in local church buildings in Fayette County.</p>\n<p>Funny story is that a couple of years into the job, I was approached by the Development Manager and asked if I knew websites and HTML. I informed her that I was familiar, and she made me responsible for the maintenance of the website that University of Kentucky students had created. It indeed was quite basic with only HTML and images.</p>\n<p>I had this duty for a few years before a professional company was hired.</p>\n<p>I mentioned Inventory software. In early 2000 we moved to an ERP, that is an Enterprise Resource Planning suite named Navision written by a Danish company. That company was then taken over by Microsoft. For as while it was called Microsoft NAV, and these days it is part of Dynamics 365.</p>\n<p>Feeding America commissioned a module named CERES which assisted us non-profits to use profit orientated software. Inhouse, we just call the software CERES.</p>\n<p>Even though I was no longer maintaining the website, I was still involved in IT to a degree. I became the inhouse guy who would set up new employees with their own computer. Ah, the days of Active Directory. I never did like it!</p>\n<p>I was also the guy the staff came to first with their computer problems. Funny how a lot of these issues were fixed when I walked in their office. If I could not fix an issue there and then, we did have a contract company on-call.</p>\n<p>They maintained our server and other high level software.</p>\n<p>This was still when I was in the warehouse role.</p>\n<p>After that first decade I was allocated to be our Welcome Center person, which I did for 3 years.</p>\n<p>This involved welcoming agencies, guests, salespersons, volunteers, and assisting other staff members in many ways.</p>\n<p>I also went from being a driver to the person who handed out delivery and pick-up routes to the drivers.</p>\n<p>During these years I became a heavy user of CERES working with the agencies and printing out pick-sheets to our warehouse picking staff.</p>\n<p>Although I really enjoyed the work, I will openly admit that I am not always the best in heavily social situations. I did have some difficulty when the Welcome Center was full of people needing my attention and I was trying to get software and paperwork duties done. Somehow I survived!</p>\n<p>My next stage of employment was moving into the offices and becoming the assistant to the Operations Director.</p>\n<p>This is when I really took on the role of food purchaser, ordering fresh produce and food from vendors as part of our budget.</p>\n<p>I also took over the responsibility of bidding for food donations from the Feeding America portal named Choice. National Donors offer truckloads of food and other items to the network, and we Food Banks bid on them in an allocated share system. The donations are free, but we pay for the truck freight from the shipping locations.</p>\n<p>A full time IT person was hired. We are now on our 4th IT Manager. The last 2 each had assistants.</p>\n<p>Although I am grandfathered in as an admin, my duties in this regard are very low, but still have the abity to install software as needed. Quite handy on my own laptop.</p>\n<p>As well as being the Food Procurement Officer I also became the Reporting Officer.</p>\n<p>This has been greatly aided by our team receiving the ability to write our own reports from the Navision SQL database using Jet Reporting.</p>\n<p>This is an Excel extension that allows us to access field data not directly obtainable in the CERES program.</p>\n<p>The fore-mentioned Robert Srodulski used to spend a day creating a monthly report that included all of our 50 counties across multiple categories of data. He would step by step complete an Excel worksheet with all this information.</p>\n<p>I took his spreadsheet, converted it into a Jet Report, and it now runs in about 5 minutes!</p>\n<p>It is my responsibility to supply reports on a regular monthly, quarterly, and yearly basis to my Directors, fellow staff, and to Feeding America.</p>\n<p>Yes, I do have an orange mug on my desk that says &quot;I submitted my MPR&quot;. That is the Monthly Pulse Report. It sits next to my red swingline stapler!</p>\n<h1 id=\"what-are-god-s-pantry-food-bank-s-sources-of-food-\">What are God\'s Pantry Food Bank\'s sources of food?</h1>\n<p>This is probably the question I get asked the most when friends and online contacts find out what I do for a career.</p>\n<p>We receive and obtain food from various sources, including:</p>\n<ul>\n<li><p>Local donations from people like you. Thank you!</p>\n</li>\n<li><p>Local farmers.</p>\n</li>\n<li><p>Local retail companies and other businesses giving food directly to us and to our Partner Agencies. We are the official food charity of many retailers, including Walmart and Kroger.</p>\n</li>\n<li><p>National Companies, mostly through the Feeding America Choice Program.</p>\n</li>\n<li><p>The USDA, U.S. Department of Agriculture, supplies us with multiple programs of food: TEFAP (the Emergency Food Assistance Program), CCC (Commodity Credit Corporation), and CSFP (Commodity Supplemental Food Program).</p>\n</li>\n<li><p>Purchased food, including Fresh Produce, via donations and grants.</p>\n</li>\n</ul>\n<p>Without all this food coming in, we would not be able to distribute to our internal programs or to our partner agencies, allowing them to run Backpacks for Kids, Food Boxes for Seniors, Food Pantries, Mobile Distributions, Sharing Thanksgiving, and a multitude of other services we offer our neighbours.</p>\n<p>We have a team of Food Sourcers that work directly with the retail companies, so I am not fully involved there, but I am the main Food Purchaser for the majority of the food we buy. Specialised internal programs like Backpack and local Pantries do order specific foods that they need on a regular basis. I try to supply for the long term.</p>\n<p>With the USDA CSFP program I am responsible for the ordering of that food through a Government website. Often 6 to 12 months ahead of time.</p>\n<p>Here\'s a truth that staggers many people when I inform them:</p>\n<p>If you are spending cash on food donations to God\'s Pantry Food Bank, the most efficient use of those funds is to donate it to us.</p>\n<p>I truly can obtain about $10 worth of food for every $1 given.</p>\n<p>An example is that I recently obtained a full truckload donation of 40,000lb of Canned Sliced Beets (yum!) that we are paying only freight on.</p>\n<p>Do the maths.</p>\n<p>#Where is God\'s Pantry Food Bank located?</p>\n<p>As mentioned we have 5 locations, not including our own local pantries, but our main head office is at <a href=\"https://www.godspantry.org/2201innovationdrive\">2201 Innovation Drive</a></p>\n<p>Please check out our webpage at GodsPantry.org/2201innovationdrive as it includes an excellent animated walk-through tour of the offices and warehouse, including the Produce Cooler, Deli Cooler, and Freezer. They are massive!</p>\n<p>I personally waited until the very last day, Friday 13th of December, to move out of my Jaggie Fox office and into my new one at Innovation. Our official first day was on Monday 16th December 2024.</p>\n<p>What I tooted and posted on that Friday caught the eye of my CEO, Michael Halligan, and he asked me if he could share it with others. Of course he should!</p>\n<p>In the Shownotes I have included a link to my Mastodon <a href=\"https://linuxrocks.online/@SolusSpider/113645297071647882\">toot</a>. It\'s too long a number to read out.</p>\n<p>I am absolutely loving our new location.</p>\n<p>It\'s my challenge to fill the cooler, freezer, and dry warehouse with donated food!</p>\n<p>My new office is 97% set up to my workflow, including my infamous hanging report boards, and spiders everywhere.</p>\n<p>The last line of my blog says:</p>\n<blockquote>\n<p><em>All that said, it truly is the only job I have ever had which I absolutely enjoy, but totally wish did not exist!!</em></p>\n</blockquote>\n<p>This remains true.</p>\n<p>Our mission is:</p>\n<blockquote>\n<p>Reducing hunger by working together to feed Kentucky communities.</p>\n</blockquote>\n<p>Our vision is:</p>\n<blockquote>\n<p>A nourished life for every Kentuckian.</p>\n</blockquote>\n<p>#How may HPR listeners support God\'s Pantry Food Bank</p>\n<p>The quick answer is to go to our <a href=\"https://www.godspantry.org\">website</a> of GodsPantry.org and click on Take Action.</p>\n<p>From there you will be given a list to choose from:</p>\n<ul>\n<li><p>Donate Food</p>\n</li>\n<li><p>Volunteer</p>\n</li>\n<li><p>Host a Food Drive or Fundraiser</p>\n</li>\n<li><p>Become a Partner</p>\n</li>\n<li><p>Attend an Event</p>\n</li>\n<li><p>Advocate</p>\n</li>\n<li><p>Other Ways to Help</p>\n</li>\n</ul>\n<p>Thank you so much for listening to my HPR show on God\'s Pantry Food Bank.</p>\n<p>Apart from leaving a comment on the HPR show page, the easiest ways for people to contact me are via <a href=\"https://t.me/solusspider\">Telegram:</a> at t.me/solusspider or Mastodon at @SolusSpider@linuxrocks.online</p>\n<p>I look forward to hearing from you.</p>\n<p>Now go forth, be there for your fellow neighbours, and record your own HPR show!</p>\n<p>&hellip;</p>\n<p>Adding this comment to the Shownotes, that I shall not be speaking aloud.</p>\n<p>Although I consider this show topic to be <strong>Clean</strong>, as it is basically about my life and work, not my beliefs, there may be some worldwide who hear the name <strong>God\'s Pantry</strong></p>\n<p>and consider it to be religious. Therefore I am flagging the show as <strong>Explicit.</strong> just in case.</p>\n<p>It is merely the name of our non-profit Food Bank, as called by our founder Mim Hunt.</p>\n<p>Although the majority of our Partner Agencies are faith based non-profit organisations, the Food Bank itself is not faith based.</p>\n<p>&hellip;</p>\n',437,0,1,'CC-BY-SA','Food Bank,Kentucky,Career,Food Insecurity,Hunger',0,0,1),
(4284,'2025-01-02','HPR Developer Information',963,'A set of Project Principles for those wishing to contribute code to the HPR Project','<p>\nTaken from <a href=\"https://repo.anhonesthost.net/HPR/hpr_documentation/src/branch/main/developer_information.md\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://repo.anhonesthost.net/HPR/hpr_documentation/src/branch/main/developer_information.md</a>\n</p>\n<p>\n<br>\n</p>\n<h1>\nDeveloper Information.</h1>\n<p>\nHacker Public Radio (HPR) is a long term project run by volunteers.</p>\n<h2>\n<br>\n</h2>\n<h2>\nProject Principles</h2>\n<p>\nThere are a few things you need to be aware of before you decide to contribute to HPR.</p>\n<p>\nOur prime directive is that \"HPR is dedicated to sharing knowledge\".</p>\n<p>\nAny software development is done with the goal of supporting the distribution of the podcast media, <a href=\"https://repo.anhonesthost.net/HPR/hpr_documentation/src/branch/main/directory-structure.md\" rel=\"noopener noreferrer\" target=\"_blank\">\nlocally</a>\n so they can be played on as many devices as possible.</p>\n<p>\nThe priority is to keep the flow of shows coming in and going out, fix any accessibility issue that arise, then work on any other feature requests.</p>\n<p>\nSome things we can change without discussion but other things we need to get input from the <a href=\"https://hackerpublicradio.org/about.html#governance\" rel=\"noopener noreferrer\" target=\"_blank\">\nHPR Community</a>\n.</p>\n<p>\nChanges can take a long time, community approval can take several months, while other changes require a lot of work from volunteers who are focused on other priorities.</p>\n<p>\nWe allow redistribution by releasing all our content under a <a href=\"https://creativecommons.org/licenses/by-sa/4.0/\" rel=\"noopener noreferrer\" target=\"_blank\">\nCreative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)</a>\n. In the same vein all our code is released under <a href=\"https://www.gnu.org/licenses/agpl-3.0.en.html\" rel=\"noopener noreferrer\" target=\"_blank\">\naGPLv3</a>\n, or other <a href=\"https://opensource.org/licenses\" rel=\"noopener noreferrer\" target=\"_blank\">\nOSI approved licenses</a>\n .</p>\n<p>\nWe do not track statistics to the detriment of our prime directive.</p>\n<p>\nWe make the entire delivery ecosystem redundant using native Internet standards, and the cooperation of community members.</p>\n<p>\nAll Data is available by default.</p>\n<p>\nCommunity Members, sponsors, and hosting platforms will change over time.</p>\n<p>\nWe have a distrust of online platforms, libraries and niche tools (that we do not support ourselves) as they can and have <a href=\"https://killedby.tech/\" rel=\"noopener noreferrer\" target=\"_blank\">\ndisappeared overnight</a>\n.</p>\n<p>\nWe are very conservative in our choice of tech. As a rule of thumb, all software choices tend to be technology that was developed years ago, and is likely to be around for years to come.</p>\n<p>\nWe make our code as simple to understand as possible as our replacement may not have the skill set we do.</p>\n<p>\nThat said, we move with the times when there is a clear advantage to do so.</p>\n<p>\nWe run up to date patched stable software.</p>\n<p>\nWe have a long tradition of supporting and sharing hacker culture. Any identified vulnerability are fixed with credit if requested.</p>\n<p>\nWe use <a href=\"https://www.rssboard.org/rss-specification\" rel=\"noopener noreferrer\" target=\"_blank\">\nRSS</a>\n as a delivery mechanism, which is by default fault tolerant.</p>\n<p>\nOur primary domains HackerPublicRadio.com and HackerPublicRadio.org are registered with different providers, and the DNS is served from different locations.</p>\n<p>\nAll our code is on <a href=\"https://repo.anhonesthost.net/HPR\" rel=\"noopener noreferrer\" target=\"_blank\">\nGitTea</a>\n, please clone locally.</p>\n<p>\n<a href=\"https://hackerpublicradio.org/hpr.sql\" rel=\"noopener noreferrer\" target=\"_blank\">\nOur database</a>\n is updated frequently, please copy locally.</p>\n<p>\nOur media is served from our <a href=\"https://repo.anhonesthost.net/HPR/hpr_documentation/ccdn/\" rel=\"noopener noreferrer\" target=\"_blank\">\nCommunity Content Delivery Network (CCDN)</a>\n</p>\n<p>\nBug reports, and patches are welcome from anyone without commitment.</p>\n<p>\nIf you are contributing new code, or new technology we ask you commit to supporting it for a <em>\nminimum of two years</em>\n. This allows the other Janitors time to learn the new tech and support it when you leave.</p>\n<h2>\n<br>\n</h2>\n<h2>\nCreate an Account</h2>\n<p>\nIf you\'re happy with all that, then...</p>\n<p>\nIn order to contribute you need to <a href=\"https://repo.anhonesthost.net/user/sign_up\" rel=\"noopener noreferrer\" target=\"_blank\">\ncreate an account</a>\n, but you <strong>\nalso</strong>\n need to notify the admins@hpr either via email, mastodon, or matrix that you have created an account. Due to the level of spam accounts we need to approve each one by one.</p>\n<p>\n<br>\n</p>\n',30,0,0,'CC-BY-SA','HPR Project Principles',0,0,1),
(4285,'2025-01-03','What is on My Podcast Player 2024, Part 5',855,'This is an update on the podcasts Ahuka listens to.','<p>\nI listen to a lot of podcasts and so I am sharing my finds with the community</p>\n<h3>\nLinks</h3>\n<ul>\n<li>\n<a href=\"https://feeds.captivate.fm/thedownballot/\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://feeds.captivate.fm/thedownballot/</a>\n</li>\n<li>\n<a href=\"https://feed.podbean.com/journalofafricanhistory/feed.xml\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://feed.podbean.com/journalofafricanhistory/feed.xml</a>\n</li>\n<li>\n<a href=\"https://feeds.megaphone.fm/GLT4787413333\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://feeds.megaphone.fm/GLT4787413333</a>\n</li>\n<li>\n<a href=\"https://anchor.fm/s/54091f60/podcast/rss\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://anchor.fm/s/54091f60/podcast/rss</a>\n</li>\n<li>\n<a href=\"https://pinecast.com/feed/sage-and-savant\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://pinecast.com/feed/sage-and-savant</a>\n</li>\n<li>\n<a href=\"https://girlinspace.libsyn.com/rss\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://girlinspace.libsyn.com/rss</a>\n</li>\n<li>\n<a href=\"https://anchor.fm/s/24a03a74/podcast/rss\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://anchor.fm/s/24a03a74/podcast/rss</a>\n</li>\n<li>\n<a href=\"https://rss.art19.com/the-josh-marshall-podcast\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://rss.art19.com/the-josh-marshall-podcast</a>\n</li>\n<li>\n<a href=\"http://feeds.feedburner.com/science-friday\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttp://feeds.feedburner.com/science-friday</a>\n</li>\n<li>\n<a href=\"https://pinecast.com/feed/the-frommer-s-travel-show\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://pinecast.com/feed/the-frommer-s-travel-show</a>\n</li>\n<li>\n<a href=\"https://anchor.fm/s/122fa99c/podcast/rss\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://anchor.fm/s/122fa99c/podcast/rss</a>\n</li>\n<li>\n<a href=\"https://feeds.buzzsprout.com/1859919.rss\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://feeds.buzzsprout.com/1859919.rss</a>\n</li>\n<li>\n<a href=\"https://realitybomb.libsyn.com/rss\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://realitybomb.libsyn.com/rss</a>\n</li>\n<li>\n<a href=\"https://api.substack.com/feed/podcast/1176440/s/81813.rss\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://api.substack.com/feed/podcast/1176440/s/81813.rss</a>\n</li>\n<li>\n<a href=\"https://feeds.captivate.fm/thebrief/\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://feeds.captivate.fm/thebrief/</a>\n</li>\n<li>\n<a href=\"https://twominutetimelord.com/feed/podcast/\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://twominutetimelord.com/feed/podcast/</a>\n</li>\n<li>\n<a href=\"https://gallifreypublicradio.com/feed/podcast/\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://gallifreypublicradio.com/feed/podcast/</a>\n</li>\n</ul>\n<p>\n<br>\n</p>\n',198,0,0,'CC-BY-SA','Podcasts',0,0,1),
(4287,'2025-01-07','Schedule audio recordings on the command line',716,'Kevie talks about scheduling a recording with a Cron task using ffmpeg',' <p><a href=\"https://tuxjam.otherside.network/\">TuxJam</a> co-host <a href=\"https://mastodon.me.uk/@kevie\">Kevie</a> does a follow up show to episode <a href=\"https://hackerpublicradio.org/eps/hpr4249/index.html\">4249</a> with a look at scheduling a stream recording using crontab and the <a href=\"https://ffmpeg.org/\">ffmpeg</a> command. The two things that we will need to set this up are the <strong>audio stream url</strong> and the <strong>time of the show</strong>. </p>\n\n<p>To set this up we need to go setup a new Cron task: <code>crontab -e</code> and navigate to the bottom of the file.</p>\n\n<p>The first thing that it will expect you to enter is the timing for this task, this will be written as * * * * * with the information needed being converted into an appropriate number:</p>\n\n<table class=\"s-table\">\n\n<thead>\n\n<tr>\n\n<th>minute</th>\n\n<th>hour</th>\n\n<th>day of month</th>\n\n<th>month</th>\n\n<th>day of week</th>\n\n</tr>\n\n</thead>\n\n<tbody>\n\n<tr>\n\n<td>(0-59)</td>\n\n<td>(0-23)</td>\n\n<td>(1-31)</td>\n\n<td>(1-12)</td>\n\n<td>(0-7)</td>\n\n</tr>\n\n<tr>\n\n<td>*</td>\n\n<td>*</td>\n\n<td>*</td>\n\n<td>*</td>\n\n<td>*</td>\n\n</tr>\n\n</tbody>\n\n</table>\n\n<p>Then we need to enter <code>ffmpeg -i</code> followed by the stream URL.</p>\n\n<p>It is important that we include the duration of the recording, so that this doesn\'t output a huge file. To set the time enter <code>-t HH:MM:SS</code> making sure to replace the HH(hours) MM(minutes) and SS(seconds) with numbers.</p>\n\n<p>Almost done. The last thing we need to do is to enter the location for the file to go along with the name /path/filename.ogg.</p>\n\n<p>So in short form the command is <code>* * * * * ffmpeg -i https://streamurl -t HH:MM:SS /path/filename.ogg</code>.</p>\n\n<p>The example used in the show for Dan Lynch\'s Mid Week Pick and Mix: <code>00 19 * * 4 ffmpeg -i https://arrowestream.radioca.st/;?ver=737183.mp3 -t 02:00:00 ~/Recordings/DanLynchPickMix.ogg</code></p>',296,0,0,'CC-BY-SA','CLI, audio, streaming, radio, recording, ripping, music',0,0,1),
(4289,'2025-01-09','Welcome Nuudle',2490,'Sgoti brings a new friend to the table, kicking and screaming.','    <p>&nbsp;\n      <em><a moz-do-not-send=\"true\"\n          href=\"https://en.wikipedia.org/wiki/7_Days_to_Die\">7 Days to\n          Die</a></em>&nbsp; </p>\n    <p><a moz-do-not-send=\"true\" href=\"https://saltyzombies.com/\">Salty\n        Zombies Gaming Community</a></p>\n    <p>\n      Welcome Nuudle so I can drag her back here.</p>',391,0,1,'CC-BY-SA','How to make friends, 7 days, Zombies, Nuudle',0,0,1),
(4292,'2025-01-14','Firefox Add-ons',1763,'How to enhance the capabilities of Firefox','<p>\nFirefox has add-ons – these are extra features you can download and install to add more functionality to your browser. Add-ons allow you to customize your Firefox browser and enhance the way you use the web.</p>\n<p>\n<br>\n</p>\n<p>\nBookmarks Organizer <a href=\"https://github.com/cadeyrn/bookmarks-organizer\" rel=\"noopener noreferrer\" target=\"_blank\">https://github.com/cadeyrn/bookmarks-organizer</a>\n</p>\n<p>\nClearURLs <a href=\"https://docs.clearurls.xyz/1.26.1/\" rel=\"noopener noreferrer\" target=\"_blank\">https://docs.clearurls.xyz/1.26.1/</a>\n</p>\n<p>\nDon\'t fuck with copy and paste <a href=\"https://github.com/aaronraimist/DontFuckWithPaste\" rel=\"noopener noreferrer\" target=\"_blank\">https://github.com/aaronraimist/DontFuckWithPaste</a>\n</p>\n<p>\nDon\'t track me Google <a href=\"https://github.com/Rob--W/dont-track-me-google\" rel=\"noopener noreferrer\" target=\"_blank\">https://github.com/Rob--W/dont-track-me-google</a>\n</p>\n<p>\nDownload All Images <a href=\"https://webextension.org/listing/save-images.html\" rel=\"noopener noreferrer\" target=\"_blank\">https://webextension.org/listing/save-images.html</a>\n</p>\n<p>\nEnhancer for YouTube <a href=\"https://www.mrfdev.com/enhancer-for-youtube\" rel=\"noopener noreferrer\" target=\"_blank\">https://www.mrfdev.com/enhancer-for-youtube</a>\n</p>\n<p>\n<br>\n</p>\n<p>\nI still don\'t care about cookies (<a href=\"https://www.reddit.com/r/firefox/comments/1dt5yte/comment/lb98xw7/\" rel=\"noopener noreferrer\" target=\"_blank\">https://www.reddit.com/r/firefox/comments/1dt5yte/comment/lb98xw7/</a>)</p>\n<ul>\n<li>\nit is no longer maintained as of now. Use uBlock it contains a list - go to settings, Cookie, EasyList, set the tick.</li>\n</ul>\n<p>\n<br>\n</p>\n<p>\nnuMatrix - not recommended - you have to learn its use <a href=\"https://codeberg.org/arek.codes/nuMatrix\" rel=\"noopener noreferrer\" target=\"_blank\">https://codeberg.org/arek.codes/nuMatrix</a>\n</p>\n<p>\n<br>\n</p>\n<p>\nRSSPreview <a href=\"https://github.com/aureliendavid/rsspreview\" rel=\"noopener noreferrer\" target=\"_blank\">https://github.com/aureliendavid/rsspreview</a>\n</p>\n<p>\nSingleFile <a href=\"https://github.com/gildas-lormeau/SingleFile\" rel=\"noopener noreferrer\" target=\"_blank\">https://github.com/gildas-lormeau/SingleFile</a>\n</p>\n<p>\nuBlock Origin - Gold standard <a href=\"https://github.com/gorhill/uBlock%5C#ublock-origin\" rel=\"noopener noreferrer\" target=\"_blank\">https://github.com/gorhill/uBlock\\#ublock-origin</a>\n</p>\n<p>\nUser-Agent Switcher <a href=\"https://mybrowseraddon.com/useragent-switcher.html\" rel=\"noopener noreferrer\" target=\"_blank\">https://mybrowseraddon.com/useragent-switcher.html</a>\n</p>\n<p>\n<br>\n</p>\n<p>\nThe End.</p>\n<p>\n<br>\n</p>\n',421,0,1,'CC-BY-SA','Firefox, Webbrowser',0,0,1),
(4440,'2025-08-08','The HOPE conference.',58,'A quick introduction to the Hackers on Planet Earth conference.','\n    <h3>\n      Hackers on Planet Earth </h3>\n    <p>\n      Now an annual conference</p>\n    <p>\n      Inspired by 2600 magazine, a creative and diverse event.</p>\n    <p>\n      You\'ll see villages, live performances, demonstrations, vintage\n      computers, ham radio, lockpicking, learn to solder. Too much to\n      see. </p>\n    <p>\n      It\'s reasonably priced, always fun.</p>\n    <p>\n      August 15-17th in Queens New York. More details at <a\n        href=\"https://hope.net\">https://hope.net</a> If you\'re in the\n      area, try to make it!</p>',444,0,0,'CC-BY-SA','hope,hackers,NY,conference,2600',0,0,1),
(4470,'2025-09-19','HPR is twenty years old today. ',1299,'A clip show looking back over 20 years focusing on the history of HPR','\n    <p>\n      Links to the clips</p>\n    <p>\n      <a href=\"https://hackerpublicradio.org/eps/hpr0001/index.html\"\n        rel=\"noopener noreferrer\" target=\"_blank\">\n        hpr0001</a> - Introduction to HPR by StankDawg &amp; Enigma (Dec\n      31, 2007)</p>\n    <p>\n      <a href=\"https://hackerpublicradio.org/eps/hpr0720/index.html\"\n        rel=\"noopener noreferrer\" target=\"_blank\">\n        hpr0720</a> - Interview with Mark (deltaRay) about CLI Magic by\n      Klaatu (May 6, 2011)</p>\n    <p>\n      <a href=\"https://hackerpublicradio.org/eps/hpr0853/index.html\"\n        rel=\"noopener noreferrer\" target=\"_blank\">\n        hpr0853</a> - Pat Volkerding of Slackware Linux chats with\n      Klaatu (Nov 8, 2011)</p>\n    <p>\n      <a href=\"https://hackerpublicradio.org/eps/hpr0788/index.html\"\n        rel=\"noopener noreferrer\" target=\"_blank\">\n        hpr0788</a> - Bitcoin howto, JWP (Aug 9, 2011)</p>\n    <p>\n      <a href=\"https://hackerpublicradio.org/eps/hpr3439/index.html\"\n        rel=\"noopener noreferrer\" target=\"_blank\">\n        hpr3439</a> - Linux Inlaws S01E40: The One with the BSDs (Oct\n      10, 2021)</p>\n    <p>\n      <a href=\"https://hackerpublicradio.org/eps/hpr0870/index.html\"\n        rel=\"noopener noreferrer\" target=\"_blank\">\n        hpr0870</a> - Computer Memories by Deltaray (Dec 12, 2011)</p>\n    <p>\n      <a href=\"https://hackerpublicradio.org/eps/hpr1037/index.html\"\n        rel=\"noopener noreferrer\" target=\"_blank\">\n        hpr1037</a> - How to solder series, Mr X (2012-2013)</p>\n    <p>\n      <a href=\"https://hackerpublicradio.org/eps/hpr1322/index.html\"\n        rel=\"noopener noreferrer\" target=\"_blank\">\n        hpr1322</a> - Kevin O\'Brien/index.html\"&gt; - Ohio LinuxFest\n      2013 a.k.a Ahuka, by Ken Fallon (Aug 27, 2013)</p>\n    <p>\n      <a href=\"https://hackerpublicradio.org/eps/hpr1642/index.html\"\n        rel=\"noopener noreferrer\" target=\"_blank\">\n        hpr1642</a> - First Time at Oggcamp by Al (Nov 18, 2014)</p>\n    <p>\n      <a href=\"https://hackerpublicradio.org/eps/hpr1690/index.html\"\n        rel=\"noopener noreferrer\" target=\"_blank\">\n        hpr1690</a> - Arduino Introduction by Klaatu (Jan 23, 2015)</p>\n    <p>\n      <a href=\"https://hackerpublicradio.org/eps/hpr1874/index.html\"\n        rel=\"noopener noreferrer\" target=\"_blank\">\n        hpr1874</a> - Fireside chat with droops by Ken Fallon (Oct 8,\n      2015)</p>\n    <p>\n      <a href=\"https://hackerpublicradio.org/eps/hpr1890/index.html\"\n        rel=\"noopener noreferrer\" target=\"_blank\">\n        hpr1890</a> - A short walk with my son by thelovebug (Oct 30,\n      2015)</p>\n    <p>\n      <a href=\"https://hackerpublicradio.org/eps/hpr2182/index.html\"\n        rel=\"noopener noreferrer\" target=\"_blank\">\n        hpr2182</a> - why say GNU/Linux by spaceman (Dec 13, 2016)</p>\n    <p>\n      <a href=\"https://hackerpublicradio.org/eps/hpr2503/index.html\"\n        rel=\"noopener noreferrer\" target=\"_blank\">\n        hpr2503</a> - My journey into podcasting by thelovebug (Mar 7,\n      2018)</p>\n    <p>\n      <a href=\"https://hackerpublicradio.org/eps/hpr2673/index.html\"\n        rel=\"noopener noreferrer\" target=\"_blank\">\n        hpr2673</a> - Ohio Linux Fest Podcaster Roundtable by Thaj Sara\n      (Oct 31, 2018)</p>\n    <p>\n      <a href=\"https://hackerpublicradio.org/eps/hpr1703/index.html\"\n        rel=\"noopener noreferrer\" target=\"_blank\">\n        hpr1703</a> - Open Source CD Rippers, Kevie (Feb 11, 2015)</p>',403,0,0,'CC-BY-SA','HPR, podcasts, open source culture',0,0,1),
(4293,'2025-01-15','HTTrack website copier software',233,'I use the HTTrack software to get my own copy of websites.','<p>\nThe Wayback Machine by The Internet Archive is a very good resource for web sites no longer existing or older revisions of them. </p>\n<p>\n<br>\n</p>\n<p>\nHowever, sometimes I have also found it is nice and useful to have my own copy of a web site. It means I have control over the copy, it can be accessed offline and no world wide wait for the page to load.</p>\n<p>\n<br>\n</p>\n<p>\nMy most typical use case if for web sites that I am manager of myself. For one or another reason, I want to keep a snapshot of the site. I have also used it for fact based sites which I want to always have access to, like a reference book. One of my recent use cases was a magazine that has closed down and announced the web site will also soon be terminated. Although it is available in the Wayback machine, I wanted to have a copy myself for a short period of time.</p>\n<p>\n<br>\n</p>\n<p>\nThe software I use for this HTTrack. This software is available for Windows, Android, Linux and unix-like systems. It is at least for some platforms available with a graphical user interface. I have myself only used HTTrack with the terminal interface on Linux. HTTrack is a free and open source software. </p>\n<p>\n<br>\n</p>\n<p>\nIn its simplest way to operate, it is just to type \"httrack\" followed by the url to the start page of the site to be copied. </p>\n<p>\n<br>\n</p>\n<p>\nIn many cases this works well, I get a perfect copy. In other cases, it works less well. First of all, of course, I do not copy very big websites, both for the amount of time it takes and the disc space. What is stated in the robot textfile can also matter for the result. Another issue can be the folder structure of the site, HTTrack may not find all folders in its default setup, for example how images are stored. I have myself also got issues when menues and links not works normally where I instead have to right click to open the link. </p>\n<p>\n<br>\n</p>\n<p>\nThe HTTrack web site has quite a lot of information in the documentation and it also has a forum. And in the terminal, there is also good help about all additional available commands. I have in general for my usage found the simple first attempt to copy sites gives perfect or good enough result directly without need to research details. </p>\n<p>\n<br>\n</p>\n<p>\nSo, when I want to preserve snapshot of earlier releases of my own sites or when I want to have an offline and preserved copy of an important site, I consider HTTrack to be an easy to use and yet powerful tool. I am aware other similar tools exist, but this is the one I currently use.</p>\n<p>\n<br>\n</p>\n<p>\nHTTrack website copier website: <a href=\"https://www.httrack.com/\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.httrack.com/</a>\n</p>\n',429,0,0,'CC-BY-SA','httrack, website, software',0,0,1),
(4370,'2025-05-02','Playing Civilization IV, Part 8',664,'We demonstrate how to win a Culture victory','<p>\nCivilization IV added some new Victory types, and I decided to\nillustrate one of them, the Culture victory, by going through an\nexample of achieving this. This is the second part of my\ndemonstration. Then I discussed a few points about the Science and\nMilitary victories.</p>\n<h3>\nLinks:</h3>\n<ul>\n<li><a moz-do-not-send=\"true\" href=\"https://www.palain.com/gaming/civilization-iv/playing-civilization-iv-part-8/\">https://www.palain.com/gaming/civilization-iv/playing-civilization-iv-part-8/</a></li>\n</ul>',198,122,0,'CC-BY-SA','Computer games, strategy games, Civilization IV, Culture victory',0,0,1),
(4380,'2025-05-16','Isaac Asimov: The Rest of Asimov\'s Foundation Stories',757,'A look at the other Foundation-related novels of Isaac Asimov','\n    <p>\n      Isaac Asimov began with the Foundation series, but then added to\n      it. Early on, he wrote what are called the Empire novels which are\n      prequels to the rise of Trantor. Then he decided to tie his Robot\n      series into his Foundation series. So now we will take a look at\n      these remaining novels.</p>\n    <h3>\n      Links:</h3>\n    <ul>\n      <li><a moz-do-not-send=\"true\"\n          href=\"https://en.wikipedia.org/wiki/Galactic_Empire_series\">\n          https://en.wikipedia.org/wiki/Galactic_Empire_series</a></li>\n      <li><a moz-do-not-send=\"true\"\n          href=\"https://en.wikipedia.org/wiki/The_Stars,_Like_Dust\">\n          https://en.wikipedia.org/wiki/The_Stars,_Like_Dust</a></li>\n      <li><a moz-do-not-send=\"true\"\n          href=\"https://en.wikipedia.org/wiki/The_Currents_of_Space\">\n          https://en.wikipedia.org/wiki/The_Currents_of_Space</a></li>\n      <li>\n        <a moz-do-not-send=\"true\"\n          href=\"https://en.wikipedia.org/wiki/Pebble_in_the_Sky\">https://en.wikipedia.org/wiki/Pebble_in_the_Sky</a></li>\n      <li><a moz-do-not-send=\"true\"\n          href=\"https://en.wikipedia.org/wiki/Robots_and_Empire\">\n          https://en.wikipedia.org/wiki/Robots_and_Empire</a></li>\n      <li>\n        <a moz-do-not-send=\"true\"\nhref=\"https://www.palain.com/science-fiction/the-golden-age/the-rest-of-asimovs-foundation-story/\">https://www.palain.com/science-fiction/the-golden-age/the-rest-of-asimovs-foundation-story/</a></li>\n    </ul>',198,124,0,'CC-BY-SA','Science fiction, Asimov, Robots, Empire',0,0,1),
(4390,'2025-05-30','Playing Civilization IV, Part 9',952,'Using wonders to help win','    <p>\n      As we saw in the demonstration of the Culture victory, picking the\n      right Wonders to build is an important part of your strategy, so\n      in this episode we conclude our look at Civilization IV by\n      analysing which Wonders to focus on for each Victory type.</p>\n    <h3>\n      Links:</h3>\n    <ul>\n      <li><a moz-do-not-send=\"true\"\nhref=\"https://civilization.fandom.com/wiki/List_of_wonders_in_Civ4#Ancient\">https://civilization.fandom.com/wiki/List_of_wonders_in_Civ4#Ancient</a></li>\n      <li>\n        <a moz-do-not-send=\"true\"\nhref=\"https://www.palain.com/gaming/civilization-iv/playing-civilization-iv-part-9/\">https://www.palain.com/gaming/civilization-iv/playing-civilization-iv-part-9/</a></li>\n    </ul>',198,122,0,'CC-BY-SA','Computer games, strategy games, Civilization IV, Wonders',0,0,1),
(4400,'2025-06-13','Isaac Asimov: Other Asimov Novels of Interest',889,'A look at three stand-alone novels from Asimov','<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n<html>\n  <head>\n\n    <meta http-equiv=\"content-type\" content=\"text/html; charset=windows-1252\">\n  </head>\n  <body>\n    <p>\n      Isaac Asimov is best known for two series, the Foundation series\n      and the Robot series, and he eventually tied them together. But he\n      also wrote some stand-alone novels that are quite good, and I want\n      to discuss them here. They are The End Of Eternity, The Gods\n      Themselves, and Nemesis.</p>\n    <h3>\n      Links:</h3>\n    <ul>\n      <li>\n        <a moz-do-not-send=\"true\"\n          href=\"https://en.wikipedia.org/wiki/The_End_of_Eternity\">https://en.wikipedia.org/wiki/The_End_of_Eternity</a></li>\n      <li><a moz-do-not-send=\"true\"\n          href=\"https://en.wikipedia.org/wiki/The_Gods_Themselves\">\n          https://en.wikipedia.org/wiki/The_Gods_Themselves</a></li>\n      <li>\n        <a moz-do-not-send=\"true\"\n          href=\"https://en.wikipedia.org/wiki/Nemesis_(Asimov_novel)\">https://en.wikipedia.org/wiki/Nemesis_(Asimov_novel)</a></li>\n      <li><a moz-do-not-send=\"true\"\nhref=\"https://www.palain.com/science-fiction/the-golden-age/other-asimov-novels-of-interest/\">https://www.palain.com/science-fiction/the-golden-age/other-asimov-novels-of-interest/</a></li>\n    </ul>\n  </body>\n</html>',198,124,0,'CC-BY-SA','Science fiction, Asimov',0,0,1),
(4410,'2025-06-27','Civilization V',873,'A first look at the next version of Civilization from 2010, Civilization V','\n    <p>\n      Civilization V, released in 2010, was a further evolution of the\n      franchise that added interesting new features. We introduce it in\n      this episode.</p>\n    <h3>\n      Links:</h3>\n    <ul>\n      <li>\n        <a moz-do-not-send=\"true\"\n          href=\"https://en.wikipedia.org/wiki/Jon_Shafer\">https://en.wikipedia.org/wiki/Jon_Shafer</a></li>\n      <li><a moz-do-not-send=\"true\"\n          href=\"https://civilization.fandom.com/wiki/Production_(Civ5)\">\n          https://civilization.fandom.com/wiki/Production_(Civ5)</a></li>\n      <li><a moz-do-not-send=\"true\"\n          href=\"https://civilization.fandom.com/wiki/Happiness_(Civ5)\">\n          https://civilization.fandom.com/wiki/Happiness_(Civ5)</a></li>\n      <li><a moz-do-not-send=\"true\"\n          href=\"https://www.youtube.com/watch?v=xgRIdcWq_fs\">\n          https://www.youtube.com/watch?v=xgRIdcWq_fs</a></li>\n      <li><a moz-do-not-send=\"true\"\n          href=\"https://www.youtube.com/watch?v=rh6hXzW_GyA\">\n          https://www.youtube.com/watch?v=rh6hXzW_GyA</a></li>\n      <li><a moz-do-not-send=\"true\"\n          href=\"https://www.youtube.com/watch?v=DbK82-u08dw\">\n          https://www.youtube.com/watch?v=DbK82-u08dw</a></li>\n      <li><a moz-do-not-send=\"true\"\n          href=\"https://www.youtube.com/watch?v=Hyv3qJpMNIs\">\n          https://www.youtube.com/watch?v=Hyv3qJpMNIs</a></li>\n      <li><a moz-do-not-send=\"true\"\n          href=\"https://www.youtube.com/watch?v=Qgc8ZaShkR4\">\n          https://www.youtube.com/watch?v=Qgc8ZaShkR4</a></li>\n      <li><a moz-do-not-send=\"true\"\n          href=\"https://www.youtube.com/watch?v=Wy6AoOQ136Y\">\n          https://www.youtube.com/watch?v=Wy6AoOQ136Y</a></li>\n      <li><a moz-do-not-send=\"true\"\n          href=\"https://www.youtube.com/watch?v=q7VW-rGvfrs\">\n          https://www.youtube.com/watch?v=q7VW-rGvfrs</a></li>\n      <li><a moz-do-not-send=\"true\"\n          href=\"https://www.youtube.com/watch?v=xypYpI4UiEc\">\n          https://www.youtube.com/watch?v=xypYpI4UiEc</a></li>\n      <li><a moz-do-not-send=\"true\"\n          href=\"https://www.youtube.com/watch?v=I__9ZlOUG4E\">\n          https://www.youtube.com/watch?v=I__9ZlOUG4E</a></li>\n      <li><a moz-do-not-send=\"true\"\n          href=\"https://www.youtube.com/watch?v=Z3x3P8gsCFA\">\n          https://www.youtube.com/watch?v=Z3x3P8gsCFA</a></li>\n      <li><a moz-do-not-send=\"true\"\n          href=\"https://www.palain.com/gaming/civilization-v/\">\n          https://www.palain.com/gaming/civilization-v/</a></li>\n    </ul>\n    <p><br>\n      <br>\n    </p>\n    <ul>\n    </ul>',198,122,0,'CC-BY-SA','Computer games, strategy games, Civilization V',0,0,1),
(4420,'2025-07-11','The First Doctor, Part 2',706,'A continuing look at the first Doctor Who.','\n    <p>\n      This is a further look at the stories of the First Doctor,\n      portrayed by William Hartnell, during the 1960s</p>\n    <h3>\n      Links:</h3>\n    <ul>\n      <li>\n        <a moz-do-not-send=\"true\"\n          href=\"https://en.wikipedia.org/wiki/Planet_of_Giants\">https://en.wikipedia.org/wiki/Planet_of_Giants</a></li>\n      <li><a moz-do-not-send=\"true\"\n          href=\"https://en.wikipedia.org/wiki/The_Dalek_Invasion_of_Earth\">\n          https://en.wikipedia.org/wiki/The_Dalek_Invasion_of_Earth</a></li>\n      <li><a moz-do-not-send=\"true\"\n          href=\"https://en.wikipedia.org/wiki/The_Rescue_(Doctor_Who)\">\n          https://en.wikipedia.org/wiki/The_Rescue_(Doctor_Who)</a></li>\n      <li><a moz-do-not-send=\"true\"\n          href=\"https://en.wikipedia.org/wiki/The_Romans_(Doctor_Who)\">\n          https://en.wikipedia.org/wiki/The_Romans_(Doctor_Who)</a></li>\n      <li><a moz-do-not-send=\"true\"\n          href=\"https://en.wikipedia.org/wiki/The_Web_Planet\">\n          https://en.wikipedia.org/wiki/The_Web_Planet</a></li>\n      <li><a moz-do-not-send=\"true\"\n          href=\"https://en.wikipedia.org/wiki/The_Crusade_(Doctor_Who)\">\n          https://en.wikipedia.org/wiki/The_Crusade_(Doctor_Who)</a></li>\n      <li><a moz-do-not-send=\"true\"\nhref=\"https://www.palain.com/science-fiction/intro-to-doctor-who/the-first-doctor-part-2/\">https://www.palain.com/science-fiction/intro-to-doctor-who/the-first-doctor-part-2/</a></li>\n    </ul>',198,124,0,'CC-BY-SA','Science fiction, Doctor Who, William Hartnell',0,0,1),
(4430,'2025-07-25','Playing Civilization V, Part 1',747,'We start our look at the game mechanics of Civilization V.','\n    <p>\n      In our first look at the game mechanics for Civilization V we\n      start with Cities and Citizen Management, then look a Social\n      Policies.</p>\n    <h3>\n      Links:</h3>\n    <ul>\n      <li>\n        <a moz-do-not-send=\"true\"\nhref=\"https://www.palain.com/gaming/civilization-v/playing-civilization-v-part-1/\">https://www.palain.com/gaming/civilization-v/playing-civilization-v-part-1/</a></li>\n    </ul>',198,122,0,'CC-BY-SA','Computer games, strategy games, Civilization V, cities, citizens',0,0,1),
(4443,'2025-08-13','The First Doctor, Part 3',709,'A continuing look at the first Doctor Who.','\n    <p>\n      <em>\n        This episode was originally posted as hpr4440, with thanks to\n        Ahuka for allowing us to move it.</em>\n    </p>\n    <p>\n      This is a further look at the stories of the First Doctor,\n      portrayed by William Hartnell, during the 1960s.</p>\n    <h3>\n      Links:</h3>\n    <ul>\n      <li>\n        <a href=\"https://en.wikipedia.org/wiki/The_Space_Museum\"\n          rel=\"noopener noreferrer\" target=\"_blank\">\n          https://en.wikipedia.org/wiki/The_Space_Museum</a>\n      </li>\n      <li>\n        <a href=\"https://en.wikipedia.org/wiki/The_Chase_(Doctor_Who)\"\n          rel=\"noopener noreferrer\" target=\"_blank\">\n          https://en.wikipedia.org/wiki/The_Chase_(Doctor_Who)</a>\n      </li>\n      <li>\n        <a href=\"https://en.wikipedia.org/wiki/The_Time_Meddler\"\n          rel=\"noopener noreferrer\" target=\"_blank\">\n          https://en.wikipedia.org/wiki/The_Time_Meddler</a>\n      </li>\n      <li>\n        <a href=\"https://www.imdb.com/title/tt0059126/\" rel=\"noopener\n          noreferrer\" target=\"_blank\">\n          https://www.imdb.com/title/tt0059126/</a>\n      </li>\n      <li>\n        <a href=\"https://archive.org/details/doctorwhoandthedaleks1965\"\n          rel=\"noopener noreferrer\" target=\"_blank\">\n          https://archive.org/details/doctorwhoandthedaleks1965</a>\n      </li>\n      <li>\n        <a href=\"https://www.imdb.com/title/tt0060278/\" rel=\"noopener\n          noreferrer\" target=\"_blank\">\n          https://www.imdb.com/title/tt0060278/</a>\n      </li>\n      <li>\n        <a\nhref=\"https://archive.org/details/doctorwhodaleksinvasionearth2150ad1966.encoded\"\n          rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://archive.org/details/doctorwhodaleksinvasionearth2150ad1966.encoded</a>\n      </li>\n      <li>\n        <a\nhref=\"https://www.palain.com/science-fiction/intro-to-doctor-who/the-first-doctor-part-3/\"\n          rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.palain.com/science-fiction/intro-to-doctor-who/the-first-doctor-part-3/</a>\n      </li>\n    </ul>\n    <p>\n      <br>\n    </p>\n    <p>\n      <br>\n    </p>\n    <p>\n      <br>\n    </p>',198,0,0,'CC-BY-SA','Science fiction, Doctor Who, William Hartnell',0,0,1),
(4450,'2025-08-22','Playing Civilization V, Part 2',602,'We continue our look at the game mechanics of Civlization V.','\n    <p>\n      In our next look at the game mechanics for Civilization V we\n      examine the topics of Happiness and Eras.</p>\n    <h3>\n      Links:</h3>\n    <ul>\n      <li>\n        <a moz-do-not-send=\"true\"\nhref=\"https://www.palain.com/gaming/civilization-v/playing-civilization-v-part-2/\">https://www.palain.com/gaming/civilization-v/playing-civilization-v-part-2/</a></li>\n    </ul>',198,122,0,'CC-BY-SA','Computer games, strategy games, Civilization V, happiness, eras',0,0,1),
(4294,'2025-01-16','Schedule audio recordings on the command line - A bit of fine tuning',318,'Kevie tweaks the crontab command for better results with multiple recordings','<p>\n<a href=\"https://tuxjam.otherside.network/\" rel=\"noopener noreferrer\" target=\"_blank\">\nTuxJam</a>\n co-host <a href=\"https://mastodon.me.uk/@kevie\" rel=\"noopener noreferrer\" target=\"_blank\">\nKevie</a>\n follows up on HPR4287 with a bit of a tweak to the Crontab, but still using the ffmpeg command to record.</p>\n<p>\n<br>\n</p>\n<p>\nIn the previous episode, the example stream url that was given proved to be unpopular with ffmpeg due to the characters that it contained. A quick work around for this was to put it in a url shortener, for this example I\'m using <a href=\"https://tinyurl.com/\" rel=\"noopener noreferrer\" target=\"_blank\">\nTinyURL</a>\n. </p>\n<p>\n<br>\n</p>\n<p>\nAnother issue arose when the stream recorded without first removing the audio file, I could see this being an issue when you want to record a show when you will be away over multiple weeks. To overcome this we simply edit the Crontab file (command <code>\ncrontab -e</code>\n) and add the following to the end of the file, before the extension: <code>\n$(date +\"%Y_%m_%d\")</code>\n</p>\n<p>\n<br>\n</p>\n<p>\nSo the template chances from:</p>\n<p>\n<code>\n* * * * * ffmpeg -i https://streamurl -t HH:MM:SS /path/filename.ogg</code>\n</p>\n<p>\nto</p>\n<p>\n<code>\n* * * * * ffmpeg -i https://streamurl -t HH:MM:SS /path/filename$(date +\"\\%Y_\\%m_\\%d\").ogg</code>\n</p>\n<p>\nI forgot to say in the show that you need to add \\ before % in Cron or it will not behave as expected.\n</p>\n<p>\nThe example of recording Dan Lynch\'s Pic and Mix show on Arrow Radio every Thursday at 7pm would now be:</p>\n<p>\n<code>\n00 19 * * 4 ffmpeg -i https://tinyurl.com/msm6ya6f -t 02:00:00 ~/Recordings/DanLynchPickMix$(date +\"\\%Y_\\%m_\\%d\").ogg</code>\n</p>\n<p>\n<br>\n</p>\n',296,0,0,'CC-BY-SA','CLI, audio, streaming, radio, recording, ripping, music',0,0,1),
(4460,'2025-09-05','Arthur C. Clarke',709,'This begins our fist look at Arthur C. Clarke','\n    <p>\n      This begins our look at the second of the Big Three of the Gold\n      Age of Science Fiction, Arthur C. Clarke. We give some brief\n      biographical informmation, and then dig into two related early\n      novels, Againt the Fall of Night, and The City And The Stars</p>\n    <h3>\n      Links:</h3>\n    <ul>\n      <li>\n        <a moz-do-not-send=\"true\"\n          href=\"https://en.wikipedia.org/wiki/British_Interplanetary_Society\">https://en.wikipedia.org/wiki/British_Interplanetary_Society</a></li>\n      <li><a moz-do-not-send=\"true\"\nhref=\"https://en.wikipedia.org/wiki/Arthur_C._Clarke%27s_Mysterious_World\">https://en.wikipedia.org/wiki/Arthur_C._Clarke%27s_Mysterious_World</a></li>\n      <li><a moz-do-not-send=\"true\"\nhref=\"https://en.wikipedia.org/wiki/Arthur_C._Clarke%27s_World_of_Strange_Powers\">https://en.wikipedia.org/wiki/Arthur_C._Clarke%27s_World_of_Strange_Powers</a></li>\n      <li><a moz-do-not-send=\"true\"\n          href=\"https://en.wikipedia.org/wiki/Against_the_Fall_of_Night\">\n          https://en.wikipedia.org/wiki/Against_the_Fall_of_Night</a></li>\n      <li><a moz-do-not-send=\"true\"\n          href=\"https://en.wikipedia.org/wiki/The_City_and_the_Stars\">\n          https://en.wikipedia.org/wiki/The_City_and_the_Stars</a></li>\n      <li><a moz-do-not-send=\"true\"\nhref=\"https://www.palain.com/science-fiction/the-golden-age/arthur-c-clarke/\">https://www.palain.com/science-fiction/the-golden-age/arthur-c-clarke/</a></li>\n    </ul>',198,124,0,'CC-BY-SA','Science fiction, Arthur C. Clarke',0,0,1),
(4480,'2025-10-03','Arthur C. Clarke Becomes Successful',849,'A look at Arthur C. Clarke\'s rise to science fiction prominence.','\n    <p>\n      This look at Arthur C. Clarke brings us to two of the novels that\n      helped cement his place in science fiction. They are Childhood\'s\n      End, and A Fall Of Moondust.</p>\n    <h3>\n      Links:</h3>\n    <ul>\n      <li>\n        <a moz-do-not-send=\"true\"\n          href=\"https://en.wikipedia.org/wiki/Childhood%27s_End\">https://en.wikipedia.org/wiki/Childhood%27s_End</a></li>\n      <li><a moz-do-not-send=\"true\"\n          href=\"https://archive.org/details/arthur-c-clarke-childhoods-end\">\n          https://archive.org/details/arthur-c-clarke-childhoods-end</a></li>\n      <li><a moz-do-not-send=\"true\"\n          href=\"https://www.amazon.com/Childhoods-End-Charles-Dance/dp/B019329VGO\">\nhttps://www.amazon.com/Childhoods-End-Charles-Dance/dp/B019329VGO</a></li>\n      <li><a moz-do-not-send=\"true\"\n          href=\"https://en.wikipedia.org/wiki/A_Fall_of_Moondust\">\n          https://en.wikipedia.org/wiki/A_Fall_of_Moondust</a></li>\n      <li><a moz-do-not-send=\"true\"\n          href=\"https://archive.org/details/bbc-sci-fi-radio-plays-part-one\">\n          https://archive.org/details/bbc-sci-fi-radio-plays-part-one</a></li>\n      <li><a moz-do-not-send=\"true\"\nhref=\"https://www.palain.com/science-fiction/the-golden-age/arthur-c-clarke-becomes-successful/\">https://www.palain.com/science-fiction/the-golden-age/arthur-c-clarke-becomes-successful/</a></li>\n    </ul>',198,124,0,'CC-BY-SA','Science fiction, Arthur C. Clarke',0,0,1),
(4490,'2025-10-17','Playing Civilization V, Part 4',682,'We continue our look at the game mechanics of Civlization V.','\n    <p>\n      In our next look at the game mechanics for Civilization V we\n      examine the topic of Faith and Religion.</p>\n    <h3>\n      Links:</h3>\n    <ul>\n      <li>\n        <a moz-do-not-send=\"true\"\nhref=\"https://www.palain.com/gaming/civilization-v/playing-civilization-v-part-4/\">https://www.palain.com/gaming/civilization-v/playing-civilization-v-part-4/</a></li>\n    </ul>',198,122,0,'CC-BY-SA','Computer games, strategy games, Civilization V, faith, religion',0,0,1),
(4500,'2025-10-31','Arthur C. Clarke: 2001 and Sequels',1136,'A look at Arthur C. Clarke\'s most famous series.','\n    <p>\n      This brings us to a look at Arthur C. Clarke\'s most famous series,\n      2001: A Space Odyssey and its sequels.</p>\n    <h3>\n      Links:</h3>\n    <ul>\n      <li>\n        <a moz-do-not-send=\"true\"\n          href=\"https://en.wikipedia.org/wiki/2001:_A_Space_Odyssey\">https://en.wikipedia.org/wiki/2001:_A_Space_Odyssey</a></li>\n      <li><a moz-do-not-send=\"true\"\n          href=\"https://en.wikipedia.org/wiki/The_Sentinel_(short_story)\">\n          https://en.wikipedia.org/wiki/The_Sentinel_(short_story)</a></li>\n      <li><a moz-do-not-send=\"true\"\n          href=\"https://en.wikipedia.org/wiki/Encounter_in_the_Dawn\">\n          https://en.wikipedia.org/wiki/Encounter_in_the_Dawn</a></li>\n      <li><a moz-do-not-send=\"true\"\n          href=\"https://en.wikipedia.org/wiki/2001:_A_Space_Odyssey_(novel)\">\n          https://en.wikipedia.org/wiki/2001:_A_Space_Odyssey_(novel)</a></li>\n      <li><a moz-do-not-send=\"true\"\n          href=\"https://en.wikipedia.org/wiki/The_Lost_Worlds_of_2001\">\n          https://en.wikipedia.org/wiki/The_Lost_Worlds_of_2001</a></li>\n      <li><a moz-do-not-send=\"true\"\n          href=\"https://en.wikipedia.org/wiki/2010:_Odyssey_Two\">\n          https://en.wikipedia.org/wiki/2010:_Odyssey_Two</a></li>\n      <li>\n        <a moz-do-not-send=\"true\"\n          href=\"https://en.wikipedia.org/wiki/2010:_The_Year_We_Make_Contact\">https://en.wikipedia.org/wiki/2010:_The_Year_We_Make_Contact</a></li>\n      <li><a moz-do-not-send=\"true\"\n          href=\"https://en.wikipedia.org/wiki/2061:_Odyssey_Three\">\n          https://en.wikipedia.org/wiki/2061:_Odyssey_Three</a></li>\n      <li><a moz-do-not-send=\"true\"\n          href=\"https://en.wikipedia.org/wiki/3001:_The_Final_Odyssey\">\n          https://en.wikipedia.org/wiki/3001:_The_Final_Odyssey</a></li>\n      <li><a moz-do-not-send=\"true\"\nhref=\"https://www.palain.com/science-fiction/the-golden-age/arthur-c-clarke-2001-and-sequels/\">https://www.palain.com/science-fiction/the-golden-age/arthur-c-clarke-2001-and-sequels/</a></li>\n    </ul>\n    <p>\n      <br>\n    </p>',198,124,0,'CC-BY-SA','Science fiction, Arthur C. Clarke, 2001, space odyssey',0,0,1),
(4510,'2025-11-14','Playing Civilization V, Part 5',745,'We continue our look at the game mechanics of Civlization V.','\n    <p>\n      In our next look at the game mechanics for Civilization V we\n      examine the topic of Wonders and related Special Projects, and\n      consider how this should affect your strategy.</p>\n    <h3>\n      Links:</h3>\n    <ul>\n      <li>\n        <a moz-do-not-send=\"true\"\n          href=\"https://civilization.fandom.com/wiki/List_of_wonders_in_Civ5\">https://civilization.fandom.com/wiki/List_of_wonders_in_Civ5</a></li>\n      <li><a moz-do-not-send=\"true\"\nhref=\"https://www.palain.com/gaming/civilization-v/playing-civilization-v-part-5/\">https://www.palain.com/gaming/civilization-v/playing-civilization-v-part-5/</a></li>\n    </ul>',198,122,0,'CC-BY-SA','Computer games, strategy games, Civilization V, Wonders',0,0,1),
(4520,'2025-11-28','Arthur C. Clarke: Rama and Sequels',716,'A look at Arthur C. Clarke\'s other famous series.','\n    <p>\n      This brings us to a look at Arthur C. Clarke\'s other famous\n      series, Rendevous with Rama and its sequels. This is frequently\n      refered to simply as the Rama series.</p>\n    <h3>\n      Links:</h3>\n    <ul>\n      <li>\n        <a moz-do-not-send=\"true\"\n          href=\"https://en.wikipedia.org/wiki/Rendezvous_with_Rama\">https://en.wikipedia.org/wiki/Rendezvous_with_Rama</a></li>\n      <li><a moz-do-not-send=\"true\"\n          href=\"https://en.wikipedia.org/wiki/%CA%BBOumuamua\">\n          https://en.wikipedia.org/wiki/%CA%BBOumuamua</a></li>\n      <li><a moz-do-not-send=\"true\"\n          href=\"https://en.wikipedia.org/wiki/Rama_(video_game)\">\n          https://en.wikipedia.org/wiki/Rama_(video_game)</a></li>\n      <li><a moz-do-not-send=\"true\"\n          href=\"https://en.wikipedia.org/wiki/Rama_II_(novel)\">\n          https://en.wikipedia.org/wiki/Rama_II_(novel)</a></li>\n      <li><a moz-do-not-send=\"true\"\n          href=\"https://en.wikipedia.org/wiki/The_Garden_of_Rama\">\n          https://en.wikipedia.org/wiki/The_Garden_of_Rama</a></li>\n      <li><a moz-do-not-send=\"true\"\n          href=\"https://en.wikipedia.org/wiki/Rama_Revealed\">\n          https://en.wikipedia.org/wiki/Rama_Revealed</a></li>\n      <li><a moz-do-not-send=\"true\"\n          href=\"https://en.wikipedia.org/wiki/Gentry_Lee\">\n          https://en.wikipedia.org/wiki/Gentry_Lee</a></li>\n      <li><a moz-do-not-send=\"true\"\nhref=\"https://www.palain.com/science-fiction/the-golden-age/arthur-c-clarke-rama-and-sequels/\">https://www.palain.com/science-fiction/the-golden-age/arthur-c-clarke-rama-and-sequels/</a></li>\n    </ul>',198,124,0,'CC-BY-SA','Science fiction, Arthur C. Clarke, Rama',0,0,1),
(4530,'2025-12-12','Playing Civilization V, Part 6',759,'We continue our look at the game mechanics of Civilization V.','\n    <p>\n      In our next look at the game mechanics for Civilization V we\n      examine the topic of War and Combat. This is a complex topic, and\n      we are just hitting the high points here, but we also provide a\n      link to the War Academy for furhter study.</p>\n    <h3>\n      Links:</h3>\n    <ul>\n      <li>\n        <a moz-do-not-send=\"true\"\nhref=\"https://www.palain.com/gaming/civilization-v/playing-civilization-v-part-3/\">https://www.palain.com/gaming/civilization-v/playing-civilization-v-part-3/</a></li>\n      <li><a moz-do-not-send=\"true\"\n          href=\"https://civilization.fandom.com/wiki/Promotions_(Civ5)\">\n          https://civilization.fandom.com/wiki/Promotions_(Civ5)</a></li>\n      <li><a moz-do-not-send=\"true\"\n          href=\"https://forums.civfanatics.com/forums/civ5-war-academy.451/\">\n          https://forums.civfanatics.com/forums/civ5-war-academy.451/</a></li>\n      <li><a moz-do-not-send=\"true\"\nhref=\"https://www.palain.com/gaming/civilization-v/playing-civilization-v-part-6/\">https://www.palain.com/gaming/civilization-v/playing-civilization-v-part-6/</a></li>\n    </ul>',198,122,0,'CC-BY-SA','Computer games, strategy games, Civilization V, War, Combat',0,0,1),
(4540,'2025-12-26','Arthur C. Clarke: Other Novels, Part 1',860,'A look at some of Arthur C. Clarke\'s other novels.','\n    <p>\n      This brings us to a look at some of Arthur C. Clarke\'s other\n      stories, The Sands of Mars (1951), The Deep Range (1957), and The\n      Fountains of Paradise (1979). These are just a few of his\n      well-regarded stand-alone novels.</p>\n    <h3>\n      Links:</h3>\n    <ul>\n      <li>\n        <a moz-do-not-send=\"true\"\nhref=\"https://www.sffworld.com/forum/threads/the-clarke-asimov-treaty.46067/\">https://www.sffworld.com/forum/threads/the-clarke-asimov-treaty.46067/</a></li>\n      <li><a moz-do-not-send=\"true\"\n          href=\"https://en.wikipedia.org/wiki/The_Sands_of_Mars\">\n          https://en.wikipedia.org/wiki/The_Sands_of_Mars</a></li>\n      <li><a moz-do-not-send=\"true\"\n          href=\"https://en.wikipedia.org/wiki/Islands_in_the_Sky\">\n          https://en.wikipedia.org/wiki/Islands_in_the_Sky</a></li>\n      <li><a moz-do-not-send=\"true\"\n          href=\"https://en.wikipedia.org/wiki/Earthlight\">\n          https://en.wikipedia.org/wiki/Earthlight</a></li>\n      <li><a moz-do-not-send=\"true\"\n          href=\"https://en.wikipedia.org/wiki/The_Space_Trilogy\">\n          https://en.wikipedia.org/wiki/The_Space_Trilogy</a></li>\n      <li><a moz-do-not-send=\"true\"\n          href=\"https://en.wikipedia.org/wiki/The_Deep_Range\">\n          https://en.wikipedia.org/wiki/The_Deep_Range</a></li>\n      <li><a moz-do-not-send=\"true\"\n          href=\"https://en.wikipedia.org/wiki/Dolphin_Island_(novel)\">\n          https://en.wikipedia.org/wiki/Dolphin_Island_(novel)</a></li>\n      <li><a moz-do-not-send=\"true\"\n          href=\"https://en.wikipedia.org/wiki/The_Ghost_from_the_Grand_Banks\">\n          https://en.wikipedia.org/wiki/The_Ghost_from_the_Grand_Banks</a></li>\n      <li><a moz-do-not-send=\"true\"\n          href=\"https://en.wikipedia.org/wiki/The_Fountains_of_Paradise\">\n          https://en.wikipedia.org/wiki/The_Fountains_of_Paradise</a></li>\n      <li><a moz-do-not-send=\"true\"\n          href=\"https://en.wikipedia.org/wiki/Buckminsterfullerene\">\n          https://en.wikipedia.org/wiki/Buckminsterfullerene</a></li>\n      <li><a moz-do-not-send=\"true\"\n          href=\"https://en.wikipedia.org/wiki/The_Man_Who_Sold_the_Moon\">\n          https://en.wikipedia.org/wiki/The_Man_Who_Sold_the_Moon</a></li>\n      <li><a moz-do-not-send=\"true\"\nhref=\"https://www.palain.com/science-fiction/the-golden-age/arthur-c-clarke-other-novels-part-1/\">https://www.palain.com/science-fiction/the-golden-age/arthur-c-clarke-other-novels-part-1/</a></li>\n    </ul>',198,124,0,'CC-BY-SA','Science fiction, Arthur C. Clarke',0,0,1),
(4295,'2025-01-17','Three Holiday Hacks from 2023',470,'Replacing the battery, swapping a fan, and getting a new desktop','<p>\nIn this reserve show, Ken </p>\n<ol>\n<li>\nreplaces the battery in a <a href=\"https://www.gsmarena.com/sony_xperia_10-9353.php\" rel=\"noopener noreferrer\" target=\"_blank\">\nSONY A10 telephone</a>\n. </li>\n<li>\nSwaps out a loud fan for a quiet one in a <a href=\"https://rigol.com.ua/en/products/digital-oscilloscope-rigol-ds1054z/\" rel=\"noopener noreferrer\" target=\"_blank\">\nRIGOL DS1054</a>\n. </li>\n<li>\nThen replaces the desktop of an <a href=\"https://www.ikea.com/us/en/p/bekant-desk-white-s19006323/\" rel=\"noopener noreferrer\" target=\"_blank\">\nIkea BEKANT</a>\n standing desk with a narrower <a href=\"https://www.ikea.com/us/en/p/lagkapten-tabletop-white-40460815/\" rel=\"noopener noreferrer\" target=\"_blank\">\nLAGKAPTEN</a>\n table top not meant for it.</li>\n</ol>\n',30,0,0,'CC-BY-SA','IkeaHacks, diy, hardware',0,0,1),
(4298,'2025-01-22','Playing a Blu-ray disk directly from Linux.',352,'My own found solution.','<p>\nGreetings and welcome to Hacker Public Radio. </p>\n<p>\nMy name is Peter Paterson, also known as SolusSpider.</p>\n<p>\n<br>\n</p>\n<p>\nIn my spare time I like to watch scifi shows and movies, including\nthose about superheroes. </p>\n<p>\nI am so looking forward to the new Superman movie by DC, with\nJames Gunn as showrunner. In that film the actor Nathan Fillion\nplays a Green Lantern named Guy Gardner. </p>\n<p>\nRecently I remembered that I owned a Green Lantern Blu-ray\nanimated movie with Nathan Fillion as the voice of Hal Jordan.\nThat movie is named Emerald Knights.</p>\n<p>\n<br>\n</p>\n<p>\nThese days when I purchase a Blu-ray it normally comes with a\ndigital code for <a href=\"https://moviesanywhere.com/home\"\nrel=\"noopener noreferrer\" target=\"_blank\">\nMovies Anywhere</a>\n. Therefore I often never play the physical disk at all. This\nparticular disk did not have that option.</p>\n<p>\n<br>\n</p>\n<p>\nI searched the streaming services for where to watch Green\nLantern: Emerald Knights. Seems it is only available for rent or\npurchase. Obviously since I own the disk I am not going to do\nthat. </p>\n<p>\nTherefore, I tried once again to try to play the disk directly on\nmy Linux system. </p>\n<p>\nWe do have dedicated Blu-ray players in the house. One is a\nSamsung unit in our living room, but that is where my\nDragon-in-Law Eva lives. The other is a Playstation 3 in our\nbedroom. There is also the factor that I wanted to watch while\ndoing other computer projects in my own room.</p>\n<p>\n<br>\n</p>\n<p>\nMy main computer system is a <a href=\"https://system76.com\"\nrel=\"noopener noreferrer\" target=\"_blank\">\nSystem76</a> Thelio desktop running <a\nhref=\"https://www.pclinuxos.com\" rel=\"noopener noreferrer\"\ntarget=\"_blank\">\nPCLinuxOS</a> as the operating system. </p>\n<p>\nConnected via USB is an <a\nhref=\"https://www.asus.com/motherboards-components/optical-drives/external-blu-ray-drive/bw16d1hu_pro\"\nrel=\"noopener noreferrer\" target=\"_blank\">\nAsus External Blu-Ray BW-16D1H-U player</a>\n.</p>\n<p>\n<br>\n</p>\n<p>\nRather than go into detail with all that did not work, I shall\ninstead focus on informing you what worked well on my own system.\n</p>\n<p>\nMany of the forums lead you down strange paths.</p>\n<p>\n<br>\n</p>\n<p>\nIt all came down to installing all I needed from Flatpak via <a\nhref=\"https://flathub.org\" rel=\"noopener noreferrer\"\ntarget=\"_blank\">\nFlathub.org </a>\n</p>\n<p>\nHere is all that I installed:</p>\n<p>\n<br>\n</p>\n<ul>\n<li>\n<u>\nVLC</u>\n: org.videolan.VLC</li>\n<li>\n<u>\nMakeMKV</u>\n: com.makemkv.MakeMKV</li>\n<li>\n<u>\nBlu-ray java plugin</u>\n: org.videolan.VLC.Plugin.bdj</li>\n<li>\n<u>\nFDK-AAC encoding plugin</u>\n: org.videolan.VLC.Plugin.fdkaac</li>\n<li>\n<u>\nMakeMKV plugin for VLC</u>\n: org.videolan.VLC.Plugin.makemkv</li>\n</ul>\n<p>\n<br>\n</p>\n<p>\nDetailed program names are in the shownotes.</p>\n<p>\n<br>\n</p>\n<p>\nTo install these direct from terminal type: </p>\n<pre class=\"ql-syntax\" spellcheck=\"false\">flatpak install (name of program)\n</pre>\n<p>\n<br>\n</p>\n<p>\nThese instructions assume that you already have Flatpak installed\non your Linux system. </p>\n<p>\nIf you do not, then the Flathub website will give you guidance for\nyour particular distro.</p>\n<p>\n<br>\n</p>\n<p>\nI did have to uninstall VLC first from PCLinuxOS, which had been\ninstalled from the repo. This enabled all the relevant library\nfiles to be accessible across Flatpak.</p>\n<p>\n<br>\n</p>\n<p>\n<a href=\"https://www.makemkv.com\" rel=\"noopener noreferrer\"\ntarget=\"_blank\">\nMakeMKV</a> is a format converter, or transcoder, that converts\nthe files on a physical disk to MKV files. Many use this program\nto copy their Blu-Rays to a storage medium for their own\nhome-streaming purposes. I have yet to go down that road, as I\njust wanted to play the disk. Plus I don\'t have that much storage.</p>\n<p>\n<br>\n</p>\n<p>\nI originally purchased MakeMKV for $50 in 2020. </p>\n<p>\nYes, paid. </p>\n<p>\nIt is a proprietary program, but then again so is the Blu-Ray disk\nencryption. </p>\n<p>\nThese days it costs $60 for a lifetime licence. </p>\n<p>\nThat said, MakeMKV is beta software that is free to use, and they\nsupply a licence key that is good for a month. The only downside\nis that you have to visit their <a\nhref=\"https://forum.makemkv.com/forum/viewtopic.php?t=1053\"\nrel=\"noopener noreferrer\" target=\"_blank\">\nforum page</a> every month to obtain the updated key code.</p>\n<p>\n<br>\n</p>\n<p>\nOnce all this was installed, I opened VLC, clicked on \'Open\nDisk...\' from Media, selected Blu-ray from Disk Selection, then\nclicked on Play. </p>\n<p>\nFor me it just worked! </p>\n<p>\nHope it shall do for you also. </p>\n<p>\nIt\'s so great to be able to directly play Blu-rays on my Linux\nsystem again.</p>\n<p>\n<br>\n</p>\n<p>\nRemember the Green Lantern oath: </p>\n<blockquote>\n\"In brightest day, in blackest night, </blockquote>\n<blockquote>\nno evil shall escape my sight. </blockquote>\n<blockquote>\nLet those who worship evil\'s might beware my power… </blockquote>\n<blockquote>\nGreen Lantern\'s light!\"</blockquote>\n<p>\n<br>\n</p>\n<p>\nThank you so much for listening to my latest topic of interest. </p>\n<p>\nPlease leave me a comment on the HPR show page. </p>\n<p>\nI look forward to hearing from you.</p>\n<p>\n<br>\n</p>\n<p>\nNow go forth, take care of yourself, also your fellow neighbours,\nand record your own HPR show!</p>\n',437,0,0,'CC-BY-SA','Blu-ray,VLC,MakeMKV,Flatpak,Flathub,Green Lantern,Nathan Fillion,Linux',0,0,1),
