(3454,'2021-10-28','Engineering Notation',736,'Ken runs through the most common Engineering Notation used in HAM radio.','<h1 id=\"engineering-notation\">Engineering Notation</h1>\r\n<h3 id=\"learn-this-table\">Learn this table</h3>\r\n<pre>\r\n giga G 10<sup>9</sup>  1,000,000,000\r\n mega M 10<sup>6</sup>      1,000,000\r\n kilo k 10<sup>3</sup>          1,000\r\n                         1\r\nmilli m 10<sup>−3</sup>             0.001\r\nmicro μ 10<sup>−6</sup>             0.000,001\r\n nano n 10<sup>−9</sup>             0.000,000,001\r\n pico p 10<sup>−12</sup>            0.000,000,000,001\r\n</pre>\r\n<h3 id=\"links\">Links</h3>\r\n<ul>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Engineering_notation\">Engineering notation</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Metric_prefix#List_of_SI_prefixes\">List of International System of Units (SI)</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=3087\">hpr3087 :: Phonetic alphabet</a></li>\r\n</ul>\r\n',30,43,0,'CC-BY-SA','giga,mega,kilo,milli,micro,nano,pico,SI, International System of Units',0,0,1),
(3457,'2021-11-02','Tables',2260,'How and why I convert tables to lists','<p>\nMobile devices don\'t display them nicely.\nMost tables can be converted into a list:\n</p>\n\n<table>\n  <tr>\n    <th>OS</th><th>Init</th><th>Pkg</th>\n  </tr>\n<tr>\n<td>Fedora</td><td>systemd</td><td>dnf</td>\n</tr>\n<tr>\n<td>Slackware</td><td>BSD-style</td><td>slackpkg</td>\n</tr>\n<tr>\n<td>Gentoo</td><td>OpenRC</td><td>emerge</td>\n</tr>\n</table>\n\n<p>Can be represented as a list. In YAML terms, this is a <em>sequence</em> of <em>mappings</em>.\n</p>\n\n<ul><li>Fedora\n<ul><li>Init system: systemd</li>\n<li>Package manager: dnf</li>\n</ul></li>\n<li>Slackware\n<ul>\n<li>Init system: BSD-style</li>\n<li>Package manager: slackpkg</li>\n</ul></li>\n\n<li>Gentoo\n<ul>\n<li>Init system: OpenRC</li>\n<li>Package manager: emerge</li>\n</ul></li>\n</ul>\n\n<p>A table doesn\'t always translate exactly to a list, but it probably can be restructured. </p>\n\n<table>\n<tr>\n<th>OS</th><th>Open source</th><th>Landed on Mars</th></tr>\n<tr>\n<td>Linux</td><td>Yes</td><td>Yes</td>\n</tr>\n<tr>\n<td>BSD</td><td>Yes</td><td>No</td>\n</tr>\n<tr>\n<td>macOS</td><td>No</td><td>No</td>\n</tr>\n</table>\n\n<p>Could be written like this instead:</p>\n\n<p>Linux and BSD are open source operating systems, while macOS is not. Of these POSIX-compliant systems, only Linux has landed on Mars so far.</p>\n\n<p>That\'s pretty casual and loses the visual impact of a table or a list. So alternately, you could summarize what\'s common and highlight differences:</p>\n\n<p>\nThere are a few Linux systems on Mars.\nNeither BSD or macOS have yet landed on Mars.\n</p>\n\n<ul>\n<li>Linux and BSD are both open source.</li>\n<li>macOS is based partially on open source and includes components from the BSD, KDE, GNU, and other projects.</li>\n</ul>\n',78,4,0,'CC-BY-SA','data,tables,communication',0,0,1),
(3458,'2021-11-03','Living in the Terminal 2: The Obligatory Sequel',3648,'A very tired BlacKernel tries to handle feedback from the previous episode','<h2>Talking Points</h2>\r\n<ul>\r\n	<li>Listener Feedback\r\n		<ul>\r\n			<li>Dave Morriss and the Markdown/HTML debacle\r\n				<ul>\r\n					<li>Using validate_html</li>\r\n					<li>Podcast logistics etc.</li>\r\n				</ul>\r\n			</li>\r\n			<li>hackerdefo\'s suggestions\r\n				<ul>\r\n					<li>.less_termcap:<br/>\r\n					<pre>\r\nexport LESS_TERMCAP_mb=$(tput bold; tput setaf 2)\r\nexport LESS_TERMCAP_md=$(tput bold; tput setaf 6)\r\nexport LESS_TERMCAP_me=$(tput sgr0)\r\nexport LESS_TERMCAP_so=$(tput bold; tput setaf 3; tput setab 4)\r\nexport LESS_TERMCAP_se=$(tput rmso; tput sgr0)\r\nexport LESS_TERMCAP_us=$(tput smul; tput bold; tput setaf 7)\r\nexport LESS_TERMCAP_ue=$(tput rmul; tput sgr0)\r\nexport LESS_TERMCAP_mr=$(tput rev)\r\nexport LESS_TERMCAP_mh=$(tput dim)\r\nexport LESS_TERMCAP_ZN=$(tput ssubm)\r\nexport LESS_TERMCAP_ZV=$(tput rsubm)\r\nexport LESS_TERMCAP_ZO=$(tput ssupm)\r\nexport LESS_TERMCAP_ZW=$(tput rsupm)\r\n					</pre><br/>\r\n					.bashrc:<br/>\r\n					<pre>\r\nif [ -f $HOME/.less_termcap ];then\r\n	. $HOME/.less_termcap\r\nfi\r\n					</pre></li>\r\n					<li>poca, castero, and gpodder cli</li>\r\n					<li>My opinion on Python and Java</li>\r\n					<li>ProtonMail Bridge with mutt</li>\r\n				</ul>\r\n			</li>\r\n			<li>Comments from the last episode\r\n				<ul>\r\n					<li>(Please go to the last episode to read the full comments)</li>\r\n					<li>NOTE: If you want a timely response, please email me or mention me on Mastodon</li>\r\n					<li>Operat0r: Kids these days! https://www.nethack.org/</li>\r\n					<li>b-yeezi: +1 for cnus</li>\r\n					<li>sesamemucho: The text</li>\r\n					<li>Dave Morriss: Very enjoyable</li>\r\n					<li>Gumnos: Using \"c\" to pause in cmus</li>\r\n				</ul>\r\n			</li>\r\n		</ul>\r\n	</li>\r\n	<li>New Talking Points\r\n		<ul>\r\n			<li>Here Documents\r\n				<pre>\r\ncat &gt; text.txt &lt;&lt;EOF\r\nHello, World!\r\nEOF\r\n				</pre>\r\n			</li>\r\n			<li>NetHack</li>\r\n		</ul>\r\n	</li>\r\n</ul>\r\n\r\n<hr/>\r\n\r\n<h2>Show Notes</h2>\r\n<h4>Important Links:</h4>\r\n<ul>\r\n	<li><a href=\"https://hackerpublicradio.org/eps.php?id=3431\">HPR Episode 3431: Living in the Terminal by BlacKernel</a></li>\r\n	<li><a href=\"https://brian-thompson.medium.com/setting-up-the-mutt-mail-client-with-protonmail-49c042486b3\">ProtonMail Bridge with Mutt by Medium</a></li>\r\n	<li><a href=\"https://github.com/brokkr/poca/\">poca by brokkr</a></li>\r\n	<li><a href=\"https://github.com/xgi/castero\">castero by xgi</a></li>\r\n	<li><a href=\"https://gpodder.github.io/docs/user-manual.html#command-line-interface\">gpodder CLI interface</a></li>\r\n	<li><a href=\"https://www.nethack.org/\">NetHack (The best game ever)</a></li>\r\n</ul>\r\n\r\n<h4>Wikipedia Articles:</h4>\r\n<ul>\r\n	<li>None</li>\r\n</ul>\r\n\r\n<hr/>\r\n\r\n<i>Contact Me</i>\r\n<ul>\r\n<li><b>Email: </b><a href=\"mailto:izzyleibowitz@pm.me\">izzyleibowitz at pm dot me</a></li>\r\n<li><b>Mastodon: </b><a href=\"https://nixnet.social/BlacKernel\">at blackernel at nixnet dot social</a></li>\r\n</ul>\r\n',396,0,1,'CC-BY-SA','cli, linux, terminal, applications, picks, tired',0,0,1),
(3459,'2021-11-04','Linux Inlaws S01E42: The Open Source Initiative',4396,'The Open Source Initiative','<p>In this episode our two OAPs host Deb Nicholson, the general manager of the\r\nOpen Source Initiative (OSI). Apart from riveting insights into open source\r\nlicensing we discuss the greater FLOSS ecosystem and Deb\'s views on why\r\nwearing shoes is important in certain contexts, open source standards, law\r\nsuits and the differences between US and Europe among other things.</p>\r\n\r\n<h2>Links:</h2>\r\n<ul>\r\n<li>OSI: <a href=\"https://opensource.org\" target=_blank>https://opensource.org</a></li>\r\n<li>OSI\'s FLOSS definition: <a href=\"https://opensource.org/osd\" target=_blank>https://opensource.org/osd</a></li>\r\n<li>Commons Clause license: <a href=\"https://commonsclause.com\" target=_blank>https://commonsclause.com</a></li>\r\n<!-- <li>TerminusDB license change: <a href=\"https://blog.terminusdb.com/we-love-gplv3-but-are-switching-license-to-apache-2-0-terminusdb\" target=_blank>https://blog.terminusdb.com/we-love-gplv3-but-are-switching-license-to-apache-2-0-terminusdb</a></li> -->\r\n<li>TerminusDB license change: <a href=\"https://terminusdb.com/blog/we-love-gplv3-but-are-switching-license-to-apache-2-0-terminusdb/\" target=_blank>https://terminusdb.com/blog/we-love-gplv3-but-are-switching-license-to-apache-2-0-terminusdb/</a></li>\r\n<li>Open source licenses: <a href=\"https://en.wikipedia.org/wiki/Comparison_of_free_and_open-source_software_licences\" target=_blank>https://en.wikipedia.org/wiki/Comparison_of_free_and_open-source_software_licences</a></li>\r\n<li>Open Core model: <a href=\"https://en.wikipedia.org/wiki/Open-core_model\" target=_blank>https://en.wikipedia.org/wiki/Open-core_model</a></li>\r\n<li>Software Freedom Conservancy: <a href=\"https://sfconservancy.org\" target=_blank>https://sfconservancy.org</a></li>\r\n<li>Bruce Perens: <a href=\"https://en.wikipedia.org/wiki/Bruce_Perens\" target=_blank>https://en.wikipedia.org/wiki/Bruce_Perens</a></li>\r\n<li>Loki TV series: <a href=\"https://en.wikipedia.org/wiki/Loki_(TV_series)\" target=_blank>https://en.wikipedia.org/wiki/Loki_(TV_series)</a></li>\r\n<li>Luca movie: <a href=\"https://www.imdb.com/title/tt12801262/?ref_=fn_al_tt_1\" target=_blank>https://www.imdb.com/title/tt12801262/?ref_=fn_al_tt_1</a></li>\r\n<li>The Internet is made of cats: <a href=\"https://www.youtube.com/watch?v=zi8VTeDHjcM\" target=_blank>https://www.youtube.com/watch?v=zi8VTeDHjcM</a></li>\r\n<li>Gnome and systemd: <a href=\"https://blogs.gnome.org/benzea/2019/10/01/gnome-3-34-is-now-managed-using-systemd\" target=_blank>https://blogs.gnome.org/benzea/2019/10/01/gnome-3-34-is-now-managed-using-systemd</a></li>\r\n<li>Apparmor Profile: <a href=\"https://packages.debian.org/bullseye/apparmor-profiles\" target=_blank>https://packages.debian.org/bullseye/apparmor-profiles</a></li>\r\n<li>Apparmor Profile Extra: <a href=\"https://packages.debian.org/bullseye/apparmor-profiles-extra\" target=_blank>https://packages.debian.org/bullseye/apparmor-profiles-extra</a></li>\r\n</ul>\r\n\r\n<p><small><em>Editor\'s Note, 2021-12-09</em>: TerminusDB link changed as requested</small></p>\r\n',384,111,1,'CC-BY-SA','OSI, RMS, Open Core, the Cat Internet, Luca, Loki, open source licensing',0,0,1),
(3462,'2021-11-09','Metal marbles.',618,'Introduction of new host, with reference to semantic playgrounds.','<h2 id=\"title-metal-marbles.\">Title: Metal marbles.</h2>\r\n<h3 id=\"summary-introduction-of-host-with-reference-to-semantic-playgrounds.\">Summary: Introduction of host, with reference to semantic playgrounds.</h3>\r\n<p>Link to the rust converter recipe, which I found to be cheaper, and more sprayable than buckets of gel or paint-like substances which you might find elsewhere:</p>\r\n<p><a href=\"https://www.canada.ca/en/conservation-institute/services/conservation-preservation-publications/canadian-conservation-institute-notes/tannic-acid-rusted-iron-artifacts.html\" class=\"uri\">https://www.canada.ca/en/conservation-institute/services/conservation-preservation-publications/canadian-conservation-institute-notes/tannic-acid-rusted-iron-artifacts.html</a></p>\r\n<p>In case that link moves, search for tannic acid rust converters, then choose your buffers.</p>\r\n<p>Email:<br />\r\nhpr@spoons.one</p>\r\n<p>Mastodon, though very very rarely:<br />\r\n<span class=\"citation\" data-cites=\"one_of_spoons\">@one_of_spoons</span><span class=\"citation\" data-cites=\"hispagatos.space\">@hispagatos.space</span></p>',398,0,1,'CC-BY-SA','host zen',0,0,1),
(3472,'2021-11-23','consuming an AQI API',386,'just because the sky is clear, doesn\'t mean the air is safe to breathe','<h2>AQI</h2>\r\n<p>Air Quality Index - measures particles in the air</p>\r\n<ul>\r\n<li>\r\n<p>Ozone </p>\r\n<ul>\r\n<li>good at high altitudes</li>\r\n<li>bad on the earth surface <a href=\"https://en.wikipedia.org/wiki/Ozone#Low_level_ozone\">https://en.wikipedia.org/wiki/Ozone#Low_level_ozone</a></li>\r\n</ul>\r\n</li>\r\n<li>\r\n<p>PM2.5 </p>\r\n<ul>\r\n<li>Particulate Matter, 2.5 micrometers <a href=\"https://en.wikipedia.org/wiki/Particulates#Size,_shape_and_solubility_matter\">https://en.wikipedia.org/wiki/Particulates#Size,_shape_and_solubility_matter</a></li>\r\n</ul>\r\n</li>\r\n</ul>\r\n<p><a href=\"https://en.wikipedia.org/wiki/Particulates#Wildfire_smoke_risk\">https://en.wikipedia.org/wiki/Particulates#Wildfire_smoke_risk</a></p>\r\n<h2>Getting AQI data</h2>\r\n<p>Determining air quality in my area is as simple as visiting <a href=\"https://www.airnow.gov\">https://www.airnow.gov</a> and entering my zip code. Although my zip code covers 139.56 square miles, the result is accurate enough for my needs. When my zip code was submitted, the web page did not refresh. This means that the client interface made an API call to the backend server. </p>\r\n<p>It sure would be nice if the AQI status was emailed to my phone every hour, if the AQI was above a certain threshold.  </p>\r\n<p>In order to get the data from the API, it is necessary to emulate the request made by the client to the API. This can be accomplished using Firefox.</p>\r\n<ul>\r\n<li>open Firefox</li>\r\n<li>go to <a href=\"https://www.airnow.gov\">https://www.airnow.gov</a></li>\r\n<li>open the Firefox developer tools, either through the menu or with CTRL+SHIFT+i</li>\r\n<li>in the dev tools, select the Network tab</li>\r\n<li>enter the zip code in the form and submit</li>\r\n<li>watch the Network tab for a POST request to https://airnowgovapi.com/reportingarea/get</li>\r\n<li>click on the request in the network tab</li>\r\n</ul>\r\n<p>Another set of tabs are now available to display various bits of information regarding the request. From this data, it is possible to recreate the query. \r\nHowever, I took an even easier route, and right-clicked on the query in the Network tab, and selected <code>Copy > Copy as cURL</code> to get the request as a curl command complete with all necessary arguments prefilled.  Since I didn\'t want to write my entire AQI fetching script in bash, I copied the curl command into a text file and ported the request to Ruby. </p>\r\n<h2>The Finished Script</h2>\r\n<pre><code>#!/usr/bin/env ruby\r\nrequire \'net/http\'\r\nrequire \'uri\'\r\nrequire \'json\'\r\n\r\nuri =\"https://airnowgovapi.com/reportingarea/get\"\r\nparsed_uri = URI.parse(uri)\r\npayload={latitude:39.88,longitude:-120.76,stateCode:\'CA\',maxDistance:50}\r\nresponse = Net::HTTP.post_form(parsed_uri, payload)\r\ndata = JSON.parse(response.body)[0]\r\naqi=data[\"aqi\"].to_i\r\ncategory=data[\'category\']\r\nparameter=data[\'parameter\']\r\n\r\noutput= \"#{parameter}: #{aqi} - #{category}\"\r\nputs output\r\n\r\n\r\n/opt/textjezra \"#{output}\"` if aqi > 70\r\n</code></pre>\r\n',243,25,0,'CC-BY-SA','ruby, api, programming',0,0,1),
(3473,'2021-11-24','My journey into Amateur Radio',616,'Dave explains his journey into Amateur Radio, initial setup and successes.','<h2 id=\"opening\">Opening</h2>\r\n<p>Hello, my name is Dave, and welcome to another exciting episode of Hacker Public Radio. It\'s been a couple of years since my last episode, and I know that HPR is running low on shows. As I have had this one in planning for some time now, I though this was the right time to get it finished.</p>\r\n<h2 id=\"main\">Main</h2>\r\n<p>At the time of recording this, I\'ve been an <a href=\"https://en.m.wikipedia.org/wiki/Amateur_radio\">Amateur Radio</a> licence holder for 6 months. I took the notion of studying and applying for my Foundation licence (the first of three stages to a Full licence) when I read a blog post by Jon Spriggs G7VRI, back in March, entitled <a href=\"https://jon.sprig.gs/blog/post/2184\">Might Amateur Radio be a hobby for you?</a> I saw a <a href=\"https://jon.sprig.gs/blog/post/slideshow/amateur-radio\">presentation</a> by Jon at OggCamp in 2018 in Sheffield where he gave a whistle-stop tour of what Amateur Radio actually is, and how easy it is to get involved in it.</p>\r\n<p>As a bit of background, I was quite involved in the <a href=\"https://en.m.wikipedia.org/wiki/Citizens_band_radio\">CB Radio</a> scene back in the late 80s and early 90s - I was introduced to CB by my dad, whose handle was \"Screwball\", in the 70s... he had a CB rig in his car since as far back as I can remember. I picked up the hobby from him, by actually liberating him of his rig when he stopped using it. Unfortunately it got stolen from my car. C\'est la vie. Yes, my handle back then was \"The Love Bug\" - in fact, it was whilst looking for an alternative to \"Kool Kat\" as a handle that I first used the moniker \"The Love Bug\" - probably in the mid-80s - and it just stuck.</p>\r\n<p>So, after reading Jon\'s blog post, and doing some research into Amateur Radio myself, a whole bunch of things happened at the same time: I bought my first radio - a <a href=\"https://www.baofengradio.com/products/uv-5rtp\">Baofeng UV-5RTP</a> [<a href=\"https://www.amazon.co.uk/dp/B07PWGMT13\">Amazon UK</a>], I joined the <a href=\"https://rsgb.org/\">Radio Society of Great Britain</a> (not a requirement, but I would recommend it), signed up for Essex Ham\'s <a href=\"https://www.essexham.co.uk/train/online-exams/\">Foundation Training Course</a> (not a requirement, but strongly recommended as it\'s geared around the examination, and it\'s free!)</p>\r\n<p>The training took 3 weeks (in my own time), and I applied for my exam as soon as the training was complete. The exam was an hour long, under as close to exam conditions as an online exam would allow, and I was told by the online system that I\'d passed as soon as I submitted my answers. It then took a few days to get the confirmation of passing (and a certificate) in the post, which then allowed me to apply to <a href=\"https://en.m.wikipedia.org/wiki/Ofcom\">Ofcom</a> (the authority for the radio spectrum here in the UK) for my licence and callsign. I was able to choose the suffix of my callsign, and - as BUG was taken - I opted for TLB (for The Love Bug), and thus my callsign is - currently - M7TLB (Mike Seven Tango Lima Bravo). I say \"currently\" - I\'m not allowed to change my callsign, however the callsign is specific not only to me but also to the fact that I\'m a Foundation Licence holder. Therefore, when I go for my Intermediate and then Full licence, I\'ll get new callsigns for each one, each superseding the previous.</p>\r\n<p>Anyhoo, once I got my Foundation licence, I went out that Sunday to log some contacts, or <a href=\"https://en.m.wikipedia.org/wiki/Contact_(amateur_radio)\">QSO</a>s. So I parked up at a high point near to here, put a small aerial on the roof of the car (so that I didn\'t warm up my head when transmitting), and started calling <a href=\"https://en.m.wikipedia.org/wiki/CQ_(call)\">CQ</a> - essentially a way of saying \"I want to talk to somebody\" - \"Seek You\". As part of the licence conditions, you are only permitted to make contact with other identifiable and identified amateurs... general broadcasts to whomever might be listening are prohibited. <em>Except</em> when calling CQ to initiate that contact.</p>\r\n<p>So I\'d call out something akin to \"CQ, CQ, this station Mike Seven Tango Lima Bravo, Mike Seven Tango Lima Bravo Portable, calling CQ.\" The \"Portable\" indicates that I\'m not at my home station location. It\'s also a good indication that my transmission might be variable due to the portable nature of the station.</p>\r\n<p>I was transmitting using 8 watts of power, two watts fewer than the limit of my license, but significantly lower than the 400 watts that I could be using as a Full licence holder, so my hopes weren\'t high. My first contact was with a chap just outside Caistor, Lincolnshire... about 38 miles direct from where I was based. He was also using a portable station, but with a directional beam antenna, meaning that both transmission and reception from his end was able to focus on my direction. So yeah, impressed!</p>\r\n<p>My second contact was also a portable station, located at a high-point by the Woodhead Pass, in Penistone, about 18 miles direct from where I was. This contact was the gift that kept on giving, as there were two other portable stations at the same location, so I got three contacts in the log for that one.</p>\r\n<p>Things went quiet after that one, so after a further 5 calls out, I figured that was my lot. Still, I was happy with four QSOs on my first day!</p>\r\n<p>Later the same day, I went out for my daily constitutional, so I figured I\'d take the radio - with the standard short rubber-duck antenna, and an earpiece - with me. At least that way, I wouldn\'t look too silly, or a target to be fair. My intention was just to bounce around the frequencies and listen to conversations, rather than put out any CQs myself... I was in a residential area, so I didn\'t want to draw attention to myself.</p>\r\n<p>Whilst listening, I heard someone calling CQ and inviting respondents to a different frequency, so I followed and listened. There were a couple of contacts already there that I couldn\'t hear, so I waited for the initial contact to finish working the first. When he put out a call for whomever originally responded, I jumped in with my callsign, thinking that there was no way he would hear me. Consider that I was walking around town, in a reasonably built-up area, with probably the worst antenna I could have chosen for distance, and he wasn\'t exactly coming through strong. He responded to me directly, asking me to standby whilst he worked the other station that responded. Well, I was shocked to hear him say to the other contact that he was in East Yorkshire, about 33 miles from here! He was using a directional beam antenna which was pointing due west... whereas I am south-west of his location, so when you consider the other things I mentioned, the fact that he was also not pointing his antenna directly at me I was completely amazed that I was able to hold this relatively decent quality conversation with someone that far away. Well pleased was I.</p>\r\n<p>Cost-wise, I should warn that Amateur Radio <em>can</em> be an expensive hobby, but it absolutely doesn\'t have to be. At a bare minimum, to get me \"on the air\" I bought the Baofeng (£42.99), and paid for my Foundation examination (£27.50), so a little over £70 overall. I actually bought a number of accessories for the radio, and joined the RSGB, but these are in no way required expenses. The standard radio on its own is more than sufficient to gain some decent contacts, as I hope I\'ve proven with the success from that Sunday.</p>\r\n<p>Since then, I have bought an HF (or High Frequency) radio from India, it\'s a low-power model (or QRP) which is unlikely to get very far, but there are transmission modes that I can use that are specifically intended for low-power operation. My next big thing is to get an antenna up in the back garden along with a decent tuner so that I can actually use that radio!!</p>\r\n<p>By the time this episode goes out, I will have started an intensive course with <a href=\"https://oarc.uk/\">OARC</a> (Online Amateur Radio Community) which is a UK-based club - a more fantastic bunch of people you are not likely to find - so I\'ll be able to change my callsign to one beginning 2E0 or 2E1, and be able to use up to 50W to transmit, even though I don\'t have any equipment capable to transmitting 50W - yet!</p>\r\n<p>I point you to the excellent <a href=\"https://hackerpublicradio.org/series/0043.html\">Ham radio, QSK</a> series on HPR where a number of correspondents have recorded shows about Amateur Radio that you may find interesting. I\'m putting this episode into the same series.</p>\r\n<h2 id=\"questions\">Questions</h2>\r\n<p>Are you an Amateur Radio operator? Let me know.</p>\r\n<h2 id=\"call-to-action\">Call to action</h2>\r\n<p>Drop me an email to <a href=\"mailto:hpr@thelovebug.org\">hpr@thelovebug.org</a>, I\'m on Facebook and Twitter as thelovebug, or leave a comment on this episode, or record your own episode in response.</p>\r\n<p>At the time of recording this, HPR is low on shows, if you have any shows in progress, or something burning in your mind, get it recorded. Find out more over at hackerpublicradio.org.</p>\r\n<h2 id=\"close\">Close</h2>\r\n<p>So, that\'s it for today... thanks for listening. <br />\r\nWherever you are in the world, stay safe. <br />\r\nCome back again tomorrow for another exciting episode on Hacker Public Radio.</p>\r\n<p>73 de M7TLB</p>\r\n',314,43,0,'CC-BY-SA','amateur radio, baofeng, rsgb, qso, cq, ham, ham radio, hf',0,0,1),
(3476,'2021-11-29','My mutt email setup',765,'My humble mutt email setup','\r\n<ol type=\"1\">\r\n<li>Get app password and enter it in a file call pass</li>\r\n</ol>\r\n<pre><code>    set my_gpass= &quot;MyAppPassword&quot;</code></pre>\r\n<ol start=\"2\" type=\"1\">\r\n<li><p>Encrypt pass file with <code>\'gpg -e pass\'</code></p></li>\r\n<li><p>Shred pass file with \'shred -uv pass\', which uses verbose mode</p></li>\r\n</ol>\r\n<pre><code>    shred - overwrite a file to hide its contents, and optionally delete it\r\n      -u deallocate and remove file after overwriting\r\n      -v, --verbose, show progress</code></pre>\r\n<ol start=\"4\" type=\"1\">\r\n<li><p>Use gpg encrypted key to open Gmail</p>\r\n<ul>\r\n<li>in .muttrc <code> source \"gpg -d ~/.mutt/pass.gpg |\" </code></li>\r\n</ul></li>\r\n<li><p>Source colors file: Custom color scheme</p></li>\r\n</ol>\r\n<pre><code>    ## Custom - Shows a gray line on tagged emails\r\n    color index yellow brightblack &quot;~T ~N | ~T&quot;</code></pre>\r\n<p><em>Tagged emails</em><br />\r\n<img src=\"https://hackerpublicradio.org/eps/hpr3476/tagged_emails.png\" alt=\"Tagged emails\" /></p>\r\n<ol start=\"6\" type=\"1\">\r\n<li>Source hooks file: Redirect default save path for email sorting</li>\r\n</ol>\r\n<pre><code>      ## Newsletters - Technology ##\r\n      save-hook &#39;~f lists.linuxjournal.com&#39; =&#39;Linux&#39;\r\n      save-hook &#39;~f arch-dev-public&#39;  =Newsletters\r\n      save-hook &#39;~f noreply@mmorpg.com&#39; =Newsletters\r\n      save-hook &#39;~f ocw@mit.edu&#39;|&#39;~b Opencourseware&#39; =Newsletters\r\n      save-hook &#39;~s Linux&#39;|&#39;~s Foundation&#39; =&#39;Newsletters&#39;\r\n      save-hook &#39;~f weekly@raspberrypi.org&#39; =Newsletters\r\n      save-hook &#39;~f hackspace@raspberrypi.org&#39; =Newsletters\r\n      save-hook &#39;~f @pragmaticbookshelf.com&#39; =Newsletters\r\n      save-hook &#39;~f comixology@e.comixology.com&#39; =Newsletters\r\n      save-hook &#39;~f mrgroove@groovypost.com&#39; =Newsletters\r\n      save-hook &#39;~f oreilly@post.oreilly.com&#39; =Newsletters\r\n      save-hook &#39;~f mark ~s arduino&#39; =Bookmarks/Arduino\r\n      save-hook &#39;~f smith@torproject.org&#39; =Newsletters/TorProject\r\n      save-hook &#39;~f info@torproject.org&#39; =Newsletters/TorProject\r\n      save-hook &#39;~f editor@eff.org&#39; =Newsletters.EFFdotOrg\r\n      save-hook &#39;~f contact@diyodemag.com&#39; =Newsletters/DIYODE-Magazine\r\n      save-hook &#39;~f weekly-update@allaboutcircuits.com&#39; =Newsletters/Circuits\r\n\r\n      ## Recipes ##\r\n      save-hook &#39;~f dora ~s Recipe | ~s Recipe | ~B recipe | ~B casserole | ~B bake | ~B &quot;omaha steaks&quot; &#39; =&#39;dabrat1972/Recipes&#39;</code></pre>\r\n<ol start=\"7\" type=\"1\">\r\n<li>Source aliases file: Frequently used contacts</li>\r\n</ol>\r\n<pre><code>      alias tags tags@hackerpublicradio.org\r\n      alias Dave_Morriss Dave Morriss &lt;perloid@autistici.org&gt;</code></pre>\r\n<ul>\r\n<li>HTML email\r\n<ul>\r\n<li>Install lynx</li>\r\n</ul></li>\r\n<li>Open URL\'s\r\n<ul>\r\n<li>Install urlscan</li>\r\n<li>Capital \'U\' open URL dialog</li>\r\n</ul></li>\r\n<li>Open pictures\r\n<ul>\r\n<li>Install feh</li>\r\n</ul></li>\r\n<li>PDF reader\r\n<ul>\r\n<li>Zathura\r\n<ul>\r\n<li><a href=\"https://bbs.archlinux.org/viewtopic.php?id=220572\" class=\"uri\">https://bbs.archlinux.org/viewtopic.php?id=220572</a></li>\r\n<li>Install zathura-pdf-mupdf and zathura-pdf-poppler\r\n<ul>\r\n<li>Just needed zathura-pdf-mupdf, zathura-pdf-poppler was included with zathura.</li>\r\n</ul></li>\r\n</ul></li>\r\n</ul></li>\r\n</ul>\r\n<pre><code>mailcap - metamail capabilities file\r\n\r\nDESCRIPTION\r\n         The mailcap file is read by the metamail program to determine how to display non-text at the local site.</code></pre>\r\n<pre><code>  image/*; feh %s; test=test -n &quot;$DISPLAY&quot;;\r\n  text/html; lynx -nonumbers -dump %s; copiousoutput; nametemplate=%s.html\r\n  application/pdf; zathura /dev/stdin</code></pre>\r\n<h2 id=\"more-reading\">More reading</h2>\r\n<ul>\r\n<li>Regex question\r\n<ul>\r\n<li><a href=\"https://www.techrepublic.com/article/10-helpful-tips-for-mutt-e-mail-client-power-users\" class=\"uri\">https://www.techrepublic.com/article/10-helpful-tips-for-mutt-e-mail-client-power-users</a></li>\r\n</ul></li>\r\n<li>Colors\r\n<ul>\r\n<li><a href=\"https://www.rdrop.com/docs/mutt/manual29.html\" class=\"uri\">https://www.rdrop.com/docs/mutt/manual29.html</a></li>\r\n</ul></li>\r\n</ul>\r\n<h2 id=\"contact-me\">Contact me:</h2>\r\n<p>Email: ricemark20.nospam@nospam.gmail.com<br />\r\nMastodon: <a href=\"https://mastodon.sdf.org/@archer72\" class=\"uri\">https://mastodon.sdf.org/@archer72</a><br />\r\nMatrix: <span class=\"citation\" data-cites=\"archer72:matrix.org\">@archer72:matrix.org</span><br />\r\nHPR Matrix room: <a href=\"https://app.element.io/#/room/#hpr:matrix.org\" class=\"uri\">https://app.element.io/#/room/#hpr:matrix.org</a><br />\r\nOggcastplanet Matrix room: <a href=\"https://app.element.io/#/room/!oIafedhXUbEidMzeTt:libera.chat\" class=\"uri\">https://app.element.io/#/room/!oIafedhXUbEidMzeTt:libera.chat</a></p>\r\n<h2 id=\"links\">Links</h2>\r\nExample files:\r\n<ul>\r\n<li>\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3476/colors\">colors</a>\r\n</li>\r\n<li>\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3476/gmail\">gmail</a>\r\n</li>\r\n<li>\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3476/mailcap\">mailcap</a>\r\n</li>\r\n<li>\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3476/muttrc\">muttrc</a>\r\n</li>\r\n</ul>\r\n',318,11,0,'CC-BY-SA','mutt,email, gpg,accessibility ',0,0,1),
(3485,'2021-12-10','50 years since the 1st Edition of Unix was published',747,'Ken (Fallon not Thompson) checks his unix like computer to see how many commands still exist.','<h1 id=\"top-ten-of-the-first-unix-commands\">top ten of the first unix commands</h1>\r\n<p>50 years after the 1st Edition of Unix was published, Ken (Fallon not Thompson) checks his unix like computer to see how many commands still exist (38) and how many are not installed by default (23).</p>\r\n<p>Thanks to <a href=\"https://twitter.com/bsdimp\">@bsdimp</a> on twitter for the post. Also to <a href=\"https://fosstodon.org/@atoponce/107219163009353638\">@atoponce@fosstodon.org</a> and <a href=\"https://mastodon.social/@obra/107217491430371868\">@obra@mastodon.social</a> for the tip.</p>\r\n<h3 id=\"packages-i-dont-have-installed\">Packages I don\'t have installed</h3>\r\n<p>Many are available under another name but I have not installed them. Seven of the of the twenty two relates to tapes.</p>\r\n<pre>\r\nB     -- language\r\nbas   -- basic\r\nbcd   -- binary coded decimal conversion\r\nboot  -- reboot system\r\nchdir -- change working directory\r\ncheck -- file system consistency check\r\ndb    -- debug\r\ndbppt -- dump binary paper tape\r\ndsw   -- delete interactively\r\ndtf   -- DECtape format\r\nfor   -- fortran\r\nform  -- form letter generator\r\nhup   -- hang up typewriter\r\nlbppt -- load binary paper tapes\r\nrew   -- rewind tape\r\nrkd   -- dump RK disk to tape\r\nrkf   -- format RKO3 disk pack\r\nrkl   -- reload RK disk from tape\r\nroff  -- format text\r\nsdate -- set date and time\r\ntap   -- manipulate DECtape\r\ntm    -- provide time information\r\nun    -- undefined symbols\r\n</pre>\r\n\r\n<h3 id=\"top-10-most-popular-50-year-old-commands-\">Top 10 most popular 50 year old commands !</h3>\r\n<pre>\r\n     1  10108 ls\r\n     2   2847 find\r\n     3   1985 rm\r\n     4   1482 mv\r\n     5    887 cat\r\n     6    649 for\r\n     7    544 mkdir\r\n     8    341 cp\r\n     9    280 rmdir\r\n    10    202 df\r\n</pre>\r\n',30,0,1,'CC-BY-SA','unix, unix commands',0,0,1),
(3474,'2021-11-25','H P R and Audio Fun',671,'Comments on show and audio processing ','<p><a href=\"https://matrix.to/#/#HPR:matrix.org\" class=\"uri\">https://matrix.to/#/#HPR:matrix.org</a></p>\r\n<ul>\r\n<li><p>media &gt; text &gt; keywords<br />\r\n<a href=\"https://github.com/freeload101/SCRIPTS/blob/master/Bash/Stream_to_Text_with_Keywords.sh\" class=\"uri\">https://github.com/freeload101/SCRIPTS/blob/master/Bash/Stream_to_Text_with_Keywords.sh</a></p></li>\r\n<li><p>NICE !<br />\r\n<a href=\"https://hackerpublicradio.org/rss-future.php\" class=\"uri\">https://hackerpublicradio.org/rss-future.php</a></p></li>\r\n<li><p>broken ?<br />\r\n<a href=\"https://gitlab.anhonesthost.com/HPR/HPR_Public_Code/\" class=\"uri\">https://gitlab.anhonesthost.com/HPR/HPR_Public_Code/</a> ( broken ? )</p></li>\r\n<li><p>Donate!<br />\r\n<a href=\"https://secure.anhonesthost.com/store/hpr-hosting-cost-donations\" class=\"uri\">https://secure.anhonesthost.com/store/hpr-hosting-cost-donations</a></p></li>\r\n<li><p>android compressor / limiter<br />\r\n<a href=\"https://play.google.com/store/apps/details?id=io.github.kushiheim.glycox\" class=\"uri\">https://play.google.com/store/apps/details?id=io.github.kushiheim.glycox</a></p></li>\r\n<li><p>notes on Linux Audio<br />\r\n<a href=\"https://docs.google.com/document/d/1E1xAwWpq-C4vEh8LCRw7MD7jnaclX9Faf2L3dZWiqQY/edit#heading=h.wp1n4j8ybidv\" class=\"uri\">https://docs.google.com/document/d/1E1xAwWpq-C4vEh8LCRw7MD7jnaclX9Faf2L3dZWiqQY/edit#heading=h.wp1n4j8ybidv</a></p></li>\r\n<li><p>possible automated silence detection to be used for noise profile !!!! ( let\'s talk about it ! )<br />\r\n<a href=\"https://stackoverflow.com/questions/45526996/split-audio-files-using-silence-detection/46001755\" class=\"uri\">https://stackoverflow.com/questions/45526996/split-audio-files-using-silence-detection/46001755</a></p></li>\r\n</ul>\r\n',36,0,1,'CC-BY-SA','audio',0,0,1),
(3491,'2021-12-20','My Github and flickmetrix',1553,'Bear with me as I go though my github over the past year some real gems in here','<ul>\r\n<li><p>main github (other stuff one there like SC_BADGER etc)<br />\r\n<a href=\"https://github.com/freeload101\" class=\"uri\">https://github.com/freeload101</a></p></li>\r\n<li><p>flickmetrix script<br />\r\n<a href=\"https://github.com/freeload101/SCRIPTS/blob/7279338b610c914812169e107cbbea45e4ca5254/fu.txt#L102\" class=\"uri\">https://github.com/freeload101/SCRIPTS/blob/7279338b610c914812169e107cbbea45e4ca5254/fu.txt#L102</a></p></li>\r\n<li><p>High_Contrast_Toggle_AutoHotkey.ahk<br />\r\n<a href=\"https://github.com/freeload101/SCRIPTS/tree/master/AutoHotkey\" class=\"uri\">https://github.com/freeload101/SCRIPTS/tree/master/AutoHotkey</a></p></li>\r\n<li><p>smart nmap<br />\r\n<a href=\"https://github.com/freeload101/SCRIPTS/blob/master/Bash/NMAP_SMART_FAST.sh\" class=\"uri\">https://github.com/freeload101/SCRIPTS/blob/master/Bash/NMAP_SMART_FAST.sh</a></p></li>\r\n<li><p>clean up script for media cool find regex here<br />\r\n<a href=\"https://raw.githubusercontent.com/freeload101/SCRIPTS/master/Bash/RMEMPTY.sh\" class=\"uri\">https://raw.githubusercontent.com/freeload101/SCRIPTS/master/Bash/RMEMPTY.sh</a></p></li>\r\n<li><p>good movies page<br />\r\n<a href=\"https://github.com/freeload101/SCRIPTS/blob/master/Bash/flickmetrix_good_movies.sh\" class=\"uri\">https://github.com/freeload101/SCRIPTS/blob/master/Bash/flickmetrix_good_movies.sh</a></p></li>\r\n<li><p>mobile mass SSL depinning script<br />\r\n<a href=\"https://github.com/freeload101/SCRIPTS/blob/master/JS/universal-android-ssl-pinning-bypass-with-frida.js\" class=\"uri\">https://github.com/freeload101/SCRIPTS/blob/master/JS/universal-android-ssl-pinning-bypass-with-frida.js</a></p></li>\r\n<li><p>android debloat and dump app names/ with file names<br />\r\n<a href=\"https://github.com/freeload101/SCRIPTS/blob/master/Windows_Batch/Android_Debloat_N_Dump.bat\" class=\"uri\">https://github.com/freeload101/SCRIPTS/blob/master/Windows_Batch/Android_Debloat_N_Dump.bat</a></p></li>\r\n<li><p>help debug CPU hogging apps in android logs<br />\r\n<a href=\"https://github.com/freeload101/SCRIPTS/blob/master/Windows_Batch/Android_logcat_cat.sh\" class=\"uri\">https://github.com/freeload101/SCRIPTS/blob/master/Windows_Batch/Android_logcat_cat.sh</a></p></li>\r\n<li><p>script that kills all processes and then cleans temp files etc<br />\r\n<a href=\"https://github.com/freeload101/SCRIPTS/blob/master/Windows_Batch/BleachBit_Quickkill.bat\" class=\"uri\">https://github.com/freeload101/SCRIPTS/blob/master/Windows_Batch/BleachBit_Quickkill.bat</a></p></li>\r\n<li><p>Cool script that debloats,hardends,installs cygwin and chocolatey apps<br />\r\n<a href=\"https://github.com/freeload101/SCRIPTS/blob/master/Windows_Batch/Chocolatey_Cygwin.cmd\" class=\"uri\">https://github.com/freeload101/SCRIPTS/blob/master/Windows_Batch/Chocolatey_Cygwin.cmd</a></p></li>\r\n<li><p>dump windows system info ,dxdiag info and battery info<br />\r\n<a href=\"https://github.com/freeload101/SCRIPTS/blob/master/Windows_Batch/DUMP_WINDOWS_INFO.bat\" class=\"uri\">https://github.com/freeload101/SCRIPTS/blob/master/Windows_Batch/DUMP_WINDOWS_INFO.bat</a></p></li>\r\n<li><p>youtube downloader (now yt-dlp) script to mass download multi threaed media all at the same time.<br />\r\n<a href=\"https://github.com/freeload101/SCRIPTS/blob/master/Windows_Batch/Youtube-dl-ffmpeg-aria2c-updater-downloader.bat\" class=\"uri\">https://github.com/freeload101/SCRIPTS/blob/master/Windows_Batch/Youtube-dl-ffmpeg-aria2c-updater-downloader.bat</a></p></li>\r\n<li><p>bunch of \'old\' one liners etc<br />\r\n<a href=\"https://github.com/freeload101/SCRIPTS/blob/master/fu.txt\" class=\"uri\">https://github.com/freeload101/SCRIPTS/blob/master/fu.txt</a></p></li>\r\n</ul>\r\n',36,0,1,'CC-BY-SA','scripts,hacking,github,windows,linux',0,0,1),
(3467,'2021-11-16','Protonmail in the terminal',2262,'One way of doing Protonmail in the terminal.','<p>I use email in the terminal with a combination of:</p>\r\n<dl>\r\n<dt>protonmail-bridge-cli</dt>\r\n<dd>local IMAP server to fetch Protonmail mails\r\n</dd>\r\n<dt>tmux</dt>\r\n<dd>to run protonmail-bridge in\r\n</dd>\r\n<dt>isync (or offlineimap etc)</dt>\r\n<dd>to sync IMAP with maildirs\r\n</dd>\r\n<dt>notmuch</dt>\r\n<dd>to tag and search mails\r\n</dd>\r\n<dt>afew</dt>\r\n<dd>to move mails found by certain notmuch queries in certain maildirs\r\n</dd>\r\n<dt>alot</dt>\r\n<dd>to read, compose, search and tag mails\r\n</dd>\r\n<dt>msmtp</dt>\r\n<dd>to send mails\r\n</dd>\r\n<dt>w3m (or lynx etc)</dt>\r\n<dd>to read HTML mails in the terminal\r\n</dd>\r\n<dt>rsync</dt>\r\n<dd>to copy archived mails\r\n</dd>\r\n<dt>a shell function and an alias</dt>\r\n<dd>to make it all less ridiculous\r\n</dd>\r\n</dl>\r\n<p>To most, Thunderbird will be suitable, the target audience here is unreasonable people.</p>\r\n<h3>Complete Show Notes</h3>\r\n<p>\r\nFollow this link for the complete show notes: <a href=\"https://hackerpublicradio.org/eps/hpr3467/\">https://hackerpublicradio.org/eps/hpr3467/</a>\r\n</p>',399,0,1,'CC-BY-SA','email,protonmail,alot,afew,notmuch,mbsync',0,0,1),
(3475,'2021-11-26','How I Watch Everything Using Open Source Software',878,'Using Libreelec, Kodi, a tuner, and a Raspberry Pi to create a great media center','<p>I\'ve been using this setup or one similar for several years now and it has worked out very well.</p>\r\n<p>Hardware:</p>\r\n<ul>\r\n<li>Clearstream TV antenna</li>\r\n<li>Coax cable</li>\r\n<li>Hauppage WinTV-dual HD USB Dual Tuner</li>\r\n<li>Raspberry Pi 4 4GB</li>\r\n<li>1 TB SSD connected via USB 3</li>\r\n<li>HDMI cable</li>\r\n</ul>\r\n<p>Software:</p>\r\n<ul>\r\n<li>Libreelec OS</li>\r\n<li>Kodi</li>\r\n<li>TVheadend server</li>\r\n<li>TVheadend client</li>\r\n<li>Debrid addon media streamer</li>\r\n</ul>\r\n<p>Any questions or comments you can reach me at minnix at minnix dot dev</p>\r\n',375,0,0,'CC-BY-SA','libreelec,kodi,raspberry pi,tvheadend',0,0,1),
(3477,'2021-11-30','Picking a Forth',1313,'Available forths, old and new','<ul>\r\n<li><p>arduino as a sketch download pdf at <a href=\"https://wiki.forth-ev.de\">wiki.forth-ev.de</a>, then cut and paste $</p></li>\r\n<li><p>the arduino controlled by eforth, search for this ter$</p></li>\r\n<li><p>amforth<br />\r\n<a href=\"https://amforth.sourceforge.net\">amforth.sourceforge.net</a></p></li>\r\n<li><p>flashforth<br />\r\n<a href=\"https://flashforth.com\">flashforth.com</a></p></li>\r\n<li><p>resources<br />\r\n<a href=\"https://arduino-forth.com\">arduino-forth.com</a><br />\r\n<a href=\"https://forth.org\">forth.org</a><br />\r\n<a href=\"https://forth.org/eforth.html\">forth.org/eforth.html</a><br />\r\n</p></li>\r\n</ul>\r\n',326,0,0,'CC-BY-SA','forth, arduino, history',0,0,1),
(3478,'2021-12-01','Audio Wiring Hack on a Classroom Podium',1093,'Listen in while I hack the wiring on our classroom podium for custom audio routing.','<p>In this episode I take you along for the ride as I hack the wiring in a classroom podium so that I can show musical scores on the Elmo document camera while playing audio through the podium\'s laptop VGA audio source. Without this hack, the students could either see the score, or they could hear the music, but not both. This simple hack installing two jumper wires allows them to see the score and hear the music at the same time, which is important in my classes. I could already do this by using a PDF music score on my laptop while playing the audio file, but this allows me to use a paper score and audio from my laptop at once. It essentially acts as an audio splitter, sending the audio signal to two channels at once.</p>\r\n\r\n<h2>Links</h2>\r\n\r\n<ul>\r\n	<li>Music from Kimiko Ishizaka\'s <em>The Open Well-Tempered Clavier</em>: <a href=\"https://www.welltemperedclavier.org/\">https://www.welltemperedclavier.org/</a>, used by permission of its <a href=\"https://creativecommons.org/publicdomain/zero/1.0/\">CC0 1.0 Universal (CC0 1.0) Public Domain Dedication license</a>.</li>\r\n	<li><a href=\"https://www.flickr.com/gp/137675441@N05/0K3EVq\">Pictures of the <em>Podium Audio Wiring Hack</em></a></li>\r\n</ul>\r\n\r\n',238,0,0,'CC-BY-SA','audio, wiring, higher education',0,0,1),
(3484,'2021-12-09','My vim setup with GnuPG',501,'My vim setup with the GnuPG vim plugin','<h2 id=\"using-the-gnupg-vim-plugin-to-edit-encrypted-files.\">Using the GnuPG vim plugin to edit encrypted files.</h2>\r\n<ul>\r\n<li><p>See show hpr3476 My mutt email setup<br />\r\n<a href=\"https://www.hackerpublicradio.org/eps.php?id=3476\" class=\"uri\">https://www.hackerpublicradio.org/eps.php?id=3476</a></p></li>\r\n<li><p>GnuPG Vim Plugin on vim.org<br />\r\n<a href=\"https://www.vim.org/scripts/script.php?script_id=3645\" class=\"uri\">https://www.vim.org/scripts/script.php?script_id=3645</a></p></li>\r\n<li><p>GnuPG Vim Plugin on Github<br />\r\n<a href=\"https://github.com/vim-scripts/gnupg.vim\" class=\"uri\">https://github.com/vim-scripts/gnupg.vim</a></p></li>\r\n</ul>\r\n<p><em>Line to directly clone from github</em></p>\r\n<pre><code>  git clone https://github.com/vim-scripts/gnupg.vim</code></pre>\r\n<p>From <code>man 1 gpg-agent</code>:</p>\r\n<blockquote>\r\n<p>You should always add the following lines to your <code>.bashrc</code> or whatever initialization file is used for all shell invocations:</p>\r\n<pre><code>GPG_TTY=`tty`\r\nexport GPG_TTY</code></pre>\r\n<p>It is important that this environment variable always reflects the output of the tty command.</p>\r\n</blockquote>\r\n<p><em>.bashrc snippet</em></p>\r\n<pre><code>  ## GPG Vim\r\n  GPG_TTY=`tty`\r\n  export GPG_TTY\r\n  export EDITOR=vim</code></pre>\r\n<p><em>GnuPG folder structure</em></p>\r\n<pre><code>  [mark@fedora-lt ~]$ tree .vim\r\n  .vim\r\n  &#x251C;&#x2500;&#x2500; plugin\r\n  &#x2502;   &#x2514;&#x2500;&#x2500; vim-gnupg\r\n  &#x2502;       &#x251C;&#x2500;&#x2500; autoload\r\n  &#x2502;       &#x2502;   &#x2514;&#x2500;&#x2500; gnupg.vim\r\n  &#x2502;       &#x251C;&#x2500;&#x2500; doc\r\n  &#x2502;       &#x2502;   &#x2514;&#x2500;&#x2500; gnupg.txt\r\n  &#x2502;       &#x251C;&#x2500;&#x2500; plugin\r\n  &#x2502;       &#x2502;   &#x2514;&#x2500;&#x2500; gnupg.vim\r\n  &#x2502;       &#x2514;&#x2500;&#x2500; README.md\r\n  &#x2514;&#x2500;&#x2500; spell\r\n      &#x251C;&#x2500;&#x2500; en.utf-8.add\r\n      &#x2514;&#x2500;&#x2500; en.utf-8.add.spl</code></pre>\r\n<p><em>vimrc</em></p>\r\n<pre><code>set tabstop=2 softtabstop=0 expandtab shiftwidth=2 smarttab textwidth=80\r\nsyntax on\r\nautocmd BufRead,BufNewFile   *.log set filetype=logtalk\r\nset spell spelllang=en_us</code></pre>\r\n<p>Generate gpg full key<br />\r\n<code>gpg --full-generate-key</code></p>\r\n<p>or just a regular one, with less options<br />\r\n<code>gpg --gen-key</code></p>\r\n<p>Encrypt the file in question, with -r as the recipient<br />\r\nIn this case, I used part of the comment as the recipient</p>\r\n<p><em>Picture 1</em><br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3484/picture001.png\"><img src=\"https://hackerpublicradio.org/eps/hpr3484/picture001_thumbnail.png\" alt=\"Picture 1\" /></a> <br/><small><small><em>Click the thumbnail to see the full-sized image</em></small></small></p>\r\n<p>This is more like it.<br />\r\n<code>gpg -e -r test thisIsMyTestFile.txt</code></p>\r\n<p>Now test edit the file<br />\r\n<code>vim thisIsMyTestFile.txt.gpg</code></p>\r\n<p><em>Picture 2</em><br />\r\n<img src=\"https://hackerpublicradio.org/eps/hpr3484/picture002.png\" alt=\"Picture 2\" /></p>\r\n<p>It is a good idea to shred the original text file</p>\r\n<pre><code>      shred - overwrite a file to hide its contents, and optionally delete it\r\n      -u deallocate and remove file after overwriting\r\n      -v, --verbose, show progress</code></pre>\r\n<p>Example: <code>shred -u -v foo.txt</code></p>\r\n',318,11,0,'CC-BY-SA','vim, plugin, lightweight',0,0,1),
(3486,'2021-12-13','Unleash the true potential of GNU nano text editor',516,'Turn GNU nano text editor into a fancy, good looking & powerful editor','<p>Text editors are highly subjective and highly opinionated commodities. Everyone is aware of infamous rivalry between users of Emacs and Vi/Vim. Every single text editor has its own strengths and weaknesses. At the end of the day it\'s the question of your personal preferences and muscle memory when it comes to default key-bindings. Both Emacs and Vim have a learning curve. Steepness of that curve depends on the person\'s background and interests. Hey, but today I\'m not here to talk about Emacs and Vim. I\'m here to talk about a simple, easy to use and almost ever present text editor called <code>GNU nano</code>. So what exactly is this <code>nano</code> text editor? Well, according to documentation available on <code>GNU nano</code>\'s <a href=\"https://nano-editor.org/\">website</a>,</p>\r\n<blockquote>\r\n<p>GNU nano was designed to be a free replacement for the Pico text editor, part of the Pine email suite from The University of Washington. It aimed to \"emulate Pico as closely as is reasonable and then include extra functionality\".</p>\r\n</blockquote>\r\n<p>Pico and Pine email suites are still around so what was the need to create <code>nano</code> in the first place? The answer is license. Pico and Pine email suites nowadays are available under Apache-2.0 license but that always wasn\'t the case and this ambiguity in the original licensing terms of the Pico editor led to the creation of <code>nano</code>. It was first created in 1999 with the name TIP (an acronym for TIP Isn\'t Pico), by Chris Allegretta. The name was changed to <code>nano</code> on January 10th, 2000 to avoid a naming conflict with the existing Unix utility tip. The name comes from the system of SI prefixes, in which <code>nano</code> is 1000 times larger than pico. In February 2001, <code>nano</code> became a part of the GNU Project. BTW if you want to know more about SI prefixes, I\'d highly recommend you to listen to <a href=\"https://hackerpublicradio.org/eps.php?id=3454\">HPR episode 3453 - Engineering notation</a> by Ken Fallon.</p>\r\n<p><code>nano</code> is really small in footprint and is relatively easy to use compared to Emacs and Vim and perhaps this is the reason why you\'d invariably find it already installed on almost all GNU/Linux distributions. If you have ever used <code>nano</code> before you might have noticed that it looks kinda boring; there are no line-numbers nor there is any syntax highlighting and spell-checking also seems absent. But this is not true. <code>nano</code> has all of these features and even some more like regex searches, indentation, multiple buffers, available at its disposal. Then why does it come across as a plain Jane? The short answer is, I honestly don\'t know! For some unknown and obscure reasons many of <code>nano</code>\'s cool features are disabled by default. This results in <code>nano</code> coming across as a plain Jane little text editor that is uncool. And as I mentioned earlier, that is not true. But worry not! It is so darn easy to unleash the true potential of <code>nano</code> and make it shine. Are you ready? Great! Let\'s do it together then!</p>\r\n<p>First thing we need to to do is create a file with the name <code>.nanorc</code> in the <code>$HOME</code> directory. Open your terminal emulator and run,</p>\r\n<pre class=\"text\"><code>touch $HOME/.nanorc\r\n</code></pre>\r\n<p>We\'d also need to create a directory called <code>Nano_Backups</code> in our <code>Documents</code> directory. To do so run the following command,</p>\r\n<pre class=\"text\"><code>mkdir -p $HOME/Documents/Nano_Backups\r\n</code></pre>\r\n<p>Next open that <code>.nanorc</code> file and simply paste the following content in it,</p>\r\n<pre class=\"text\"><code>set atblanks\r\nset autoindent\r\nset backup\r\nset backupdir &quot;/home/USERNAME/Documents/Nano_Backups&quot;\r\nset boldtext\r\nset constantshow\r\nset cutfromcursor\r\nset indicator\r\nset linenumbers\r\nset magic\r\nset minibar\r\nset mouse\r\nset showcursor\r\nset softwrap\r\nset speller &quot;aspell -x -c&quot;\r\nset trimblanks\r\nset whitespace &quot;&#187;&middot;&quot;\r\nset zap\r\nset multibuffer\r\n\r\nset titlecolor bold,lightwhite,blue\r\nset promptcolor lightwhite,lightblack\r\nset statuscolor bold,lightwhite,green\r\nset errorcolor bold,lightwhite,red\r\nset spotlightcolor black,lime\r\nset selectedcolor lightwhite,magenta\r\nset stripecolor ,yellow\r\nset scrollercolor cyan\r\nset numbercolor cyan\r\nset keycolor cyan\r\nset functioncolor green\r\n\r\ninclude &quot;/usr/share/nano/*.nanorc&quot;\r\n\r\nbind ^Q exit all\r\nbind ^S savefile main\r\nbind ^W writeout main\r\nbind ^O insert main\r\nbind ^H help all\r\nbind ^H exit help\r\nbind ^F whereis all\r\nbind ^G findnext all\r\nbind ^B wherewas all\r\nbind ^D findprevious all\r\nbind ^R replace main\r\nbind ^X cut main\r\nbind ^C copy main\r\nbind ^V paste all\r\nbind ^P location main\r\nbind ^E execute main\r\nbind ^A mark main\r\nunbind ^K main\r\nunbind ^U all\r\nunbind ^N main\r\nunbind ^Y all\r\nunbind M-J main\r\nunbind M-T main\r\nbind ^T gotoline main\r\nbind ^T gotodir browser\r\nbind ^T cutrestoffile execute\r\nbind ^L linter execute\r\nbind M-U undo main\r\nbind M-R redo main\r\nbind ^Z undo main\r\nbind ^Y redo main\r\n</code></pre>\r\n<p>You\'ll have to replace <code>USERNAME</code> in the line number four, <code>set backupdir \"/home/USERNAME/Documents/Nano_Backups/\"</code> with your actual <code>username</code> and then save this file.</p>\r\n<p>Wouldn\'t it be nice if the colors in <code>nano</code> were different for a normal user and a root user? Yes, for sure. To do so create an empty <code>.nanorc</code> file in the root\'s directory,</p>\r\n<pre class=\"text\"><code>sudo touch /root/.nanorc\r\n</code></pre>\r\n<p>Next create the backup directory <code>Nano_Backups</code> in root\'s <code>Documents</code> directory. To do so run the following command,</p>\r\n<pre class=\"text\"><code>sudo mkdir -p /root/Documents/Nano_Backups\r\n</code></pre>\r\n<p>Open that <code>/root/.nanorc</code>file and paste this content in it and save the changes,</p>\r\n<pre class=\"text\"><code>set atblanks\r\nset autoindent\r\nset backup\r\nset backupdir &quot;/root/Documents/Nano_Backups/&quot;\r\nset boldtext\r\nset constantshow\r\nset cutfromcursor\r\nset indicator\r\nset linenumbers\r\nset magic\r\nset minibar\r\nset mouse\r\nset showcursor\r\nset softwrap\r\nset speller &quot;aspell -x -c&quot;\r\nset trimblanks\r\nset whitespace &quot;&#187;&middot;&quot;\r\nset zap\r\nset multibuffer\r\n\r\nset titlecolor bold,lightwhite,magenta\r\nset promptcolor black,yellow\r\nset statuscolor bold,lightwhite,magenta\r\nset errorcolor bold,lightwhite,red\r\nset spotlightcolor black,orange\r\nset selectedcolor lightwhite,cyan\r\nset stripecolor ,yellow\r\nset scrollercolor magenta\r\nset numbercolor magenta\r\nset keycolor lightmagenta\r\nset functioncolor magenta\r\n\r\ninclude &quot;/usr/share/nano/*.nanorc&quot;\r\n\r\nbind ^Q exit all\r\nbind ^S savefile main\r\nbind ^W writeout main\r\nbind ^O insert main\r\nbind ^H help all\r\nbind ^H exit help\r\nbind ^F whereis all\r\nbind ^G findnext all\r\nbind ^B wherewas all\r\nbind ^D findprevious all\r\nbind ^R replace main\r\nbind ^X cut main\r\nbind ^C copy main\r\nbind ^V paste all\r\nbind ^P location main\r\nbind ^E execute main\r\nbind ^A mark main\r\nunbind ^K main\r\nunbind ^U all\r\nunbind ^N main\r\nunbind ^Y all\r\nunbind M-J main\r\nunbind M-T main\r\nbind ^T gotoline main\r\nbind ^T gotodir browser\r\nbind ^T cutrestoffile execute\r\nbind ^L linter execute\r\nbind M-U undo main\r\nbind M-R redo main\r\nbind ^Z undo main\r\nbind ^Y redo main\r\n</code></pre>\r\n<p>What we have just done is, we have enabled some useful features of <code>nano</code> and changed the default keybindings to the more familiar ones like <code>Ctrl+C</code> for copying, <code>Ctrl+X</code> for cutting, <code>Ctrl+V</code> for pasting and a bunch of other key combinations. We\'ve also enabled automatic backing-up of documents. Backups will get saved in the user\'s <code>Documents/Nano_Backups</code> directory.</p>\r\n<p>Spell checker is enabled in <code>nano</code> via this configuration but to utilize it you\'ll have to install <code>aspell</code> and <code>aspell-dictionary</code> from your package manager.</p>\r\n<p>Kudos! We have turned a timid <code>GNU nano</code> into a powerful wildebeest. Try this configuration and if possible leave your feedback.</p>\r\n<p>A word of warning. Package maintainers often ship stripped down versions of <code>nano</code> so one of these features might not be present in your installation and in that case, <code>nano</code> will throw some errors and refuse to start. You have two choices in that scenario; first, disable that feature by deleting the corresponding line from <code>.nanorc</code> file. Your second option is to download the <code>nano</code> <a href=\"https://nano-editor.org/download.php\">source code</a> and compile it yourself with all the features intact. If I were you, I\'d go with the second option as compiling <code>nano</code> is really simple and straightforward. Only extra packages that you will need are <code>libncurses-dev</code> and <code>libmagic-dev</code>.</p>\r\n<p>I\'ll leave you guys with a quote from some wise man,</p>\r\n<blockquote>\r\n<p>Good Things Come in Small Packages.</p>\r\n</blockquote>\r\n',397,11,1,'CC-BY-SA','text-editor, terminal, linux, nano, pico, pine, nanorc',0,0,1),
(3488,'2021-12-15','Binaural 3d audio recording, please listen at normal speed with good head phones.',302,'recorded November 19 2021 quick storm.','<p>Recorded November 19 2021 quick storm. Please search Binaural on HPR for similar recordings and description of procedure, enjoy and have a glorious 2022.</p>\r\n<h2 id=\"links\">Links</h2>\r\n<ul>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=0785\">hpr0785 :: binaural recording</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=0792\">hpr0792 :: Binaural Recording</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2338\">hpr2338 :: Binaural recording 2 off to work</a></li>\r\n</ul>\r\n',110,101,0,'CC-BY-SA','Binaural, storm, thunder',0,0,1),
(3479,'2021-12-02','Linux Inlaws S01E49: Version Control Systems and why bother',3414,'Version Control Systems and why bother','<p>In this episode our two heroes contemplate the ins and outs of version\r\ncontrol systems (VCS) and how to maintain sanity using them. Particular focus\r\nis on the newer generation of such as git which enabled large-scale community\r\nprojects such as the Linux kernel, programming languages like Rust and Python\r\nand other shenanigans. Including a crash course on version control systems\r\n- you may credits at your local third-level education facility for listening\r\nto this episode. Just tell them the Inlaws sent you :-). Plus Martin reveals\r\nhis favourite Pay TV channel and his gun-buying habits being a minor. Don\'t\r\nmiss this episode if you\'re a minor and want to buy a gun in certain countries\r\n(details as part of the episode! :-).</p>\r\n\r\n<h2>Links:</h2>\r\n<ul>\r\n<li>V-Model: <a href=\"https://en.wikipedia.org/wiki/V-Model\" target=_blank>https://en.wikipedia.org/wiki/V-Model</a></li>\r\n<li>Mercurial: <a href=\"https://www.mercurial-scm.org\" target=_blank>https://www.mercurial-scm.org</a></li>\r\n<li>Concurrent Version Control System (CVS): <a href=\"https://cvs.nongnu.org\" target=_blank>https://cvs.nongnu.org</a></li>\r\n<li>Minix: <a href=\"https://www.minix3.org\" target=_blank>https://www.minix3.org</a></li>\r\n<li>Bazaar: <a href=\"https://bazaar.canonical.com/en\" target=_blank>https://bazaar.canonical.com/en</a></li>\r\n<li>Subversion (SVN): <a href=\"https://subversion.apache.org\" target=_blank>https://subversion.apache.org</a></li>\r\n<li>Git: <a href=\"https://git-scm.com\" target=_blank>https://git-scm.com</a></li>\r\n<li>Bitkeeper: <a href=\"https://www.bitkeeper.org\" target=_blank>https://www.bitkeeper.org</a></li>\r\n<li>IBM 390: <a href=\"https://www.ibm.com/ibm/history/exhibits/mainframe/mainframe_PP9000.html\" target=_blank>https://www.ibm.com/ibm/history/exhibits/mainframe/mainframe_PP9000.html</a></li>\r\n<li>gitea: <a href=\"https://gitea.io\" target=_blank>https://gitea.io</a></li>\r\n<li>Special K: <a href=\"https://en.wikipedia.org/wiki/Special_K\" target=_blank>https://en.wikipedia.org/wiki/Special_K</a></li>\r\n<li>Special K (song): <a href=\"https://en.wikipedia.org/wiki/Special_K_(song)\" target=_blank>https://en.wikipedia.org/wiki/Special_K_(song)</a></li>\r\n<li>Special K (former country, the Wikipedia page is slightly outdated): <a href=\"https://en.wikipedia.org/wiki/United_Kingdom\" target=_blank>https://en.wikipedia.org/wiki/United_Kingdom</a></li>\r\n<li>Imperium: <a href=\"https://www.imdb.com/title/tt4781612/?ref_=fn_al_tt_2\" target=_blank>https://www.imdb.com/title/tt4781612/?ref_=fn_al_tt_2</a></li>\r\n</ul>\r\n',384,111,1,'CC-BY-SA','Version control systems, git, subversion, mercurial, bazaar, how to buy guns as a minor in NL',0,0,1),
(3483,'2021-12-08','Pinephone64 review',563,'Sigflup got a pinephone and wants to talk about it. ','<p>ringtone location: <code>/usr/share/sounds/freedesktop/stereo</code></p>\r\n\r\n<p>\r\n<img src=\"https://hackerpublicradio.org/eps/hpr3483/hpr_pine.jpg\" /><br />\r\nGimp on a cellphone, for obvious reasons.</p>\r\n\r\n\r\n<h3>Links</h3>\r\n\r\n<ul>\r\n<li><a href=\"https://en.wikipedia.org/wiki/PinePhone\">wikipedia: https://en.wikipedia.org/wiki/PinePhone</a></li>\r\n<li><a href=\"https://www.pine64.org/pinephone/\">Official website: https://www.pine64.org/pinephone/</a></li>\r\n<li><a href=\"https://wiki.pine64.org/index.php/PinePhone\">PinePhone Wiki: https://wiki.pine64.org/index.php/PinePhone</a></li>\r\n</ul>\r\n',115,0,0,'CC-BY-SA','linux,cellphone,pinephone,mobie phone',0,0,1),
(3505,'2022-01-07','A DX with Hotel Bravo 9 Hotel November Tango',2890,'Ken (PA7KEN) and Beni (HB9HNT) talk about getting your HAM ticket in Switzerland','<h3>HAM Radio Organizations</h3>\r\n<p>\r\nThe HAM Page of the  Swiss Federal Office of Communications, BAKOM: <a href=\"https://www.bakom.admin.ch/bakom/de/home/frequenzen-antennen/frequenznutzung-mit-oder-ohne-konzessionen/amateurfunk.html\">https://www.bakom.admin.ch/bakom/de/home/frequenzen-antennen/frequenznutzung-mit-oder-ohne-konzessionen/amateurfunk.html</a>\r\n</p>\r\n<p>\r\nUnion of Swiss Short Wave Amateurs, they manage the local associations and the use of the frequencies for relays and automated stations: <a href=\"https://www.uska.ch/en/\">https://www.uska.ch/en/</a>\r\n</p>\r\n\r\n<h3>Training</h3>\r\n\r\n<p>\r\nMost likely the best way to prepare for the exam is attending a preparation course from a local Association, of have a brother who did and forwarded all the background info and documents to me. ;) But apart from having a brother I did the following:\r\n</p>\r\n<p>\r\nThe online version of the books I read: <a href=\"https://www.darc.de/der-club/referate/ajw/darc-online-lehrgang/\">https://www.darc.de/der-club/referate/ajw/darc-online-lehrgang/</a> - again in German. They\'re mainly geared towards the German exams but the knowledge contained is useful for the Swiss exams, too.\r\n</p>\r\n<p>\r\nI mainly used the HamRadioTrainer to prepare for the exam. This is a Windows application which however works pretty well in wine. I was told that the Swiss questions are rather old, 2017ish.\r\n</p>\r\n<p>\r\nI was told that there are mobile apps with more recent questions but I couldn\'t be bothered to check whether they exist on F-Droid.\r\n</p>\r\n<p>\r\nThe BAKOM also has a site about the exams, containing PDFs with example questions, of course again everything in German: <a href=\"https://www.bakom.admin.ch/bakom/de/home/frequenzen-antennen/funkerpruefungen/amateurfunk-pruefungen.html\">https://www.bakom.admin.ch/bakom/de/home/frequenzen-antennen/funkerpruefungen/amateurfunk-pruefungen.html</a>\r\n</p>',288,43,0,'CC-BY-SA','Swiss,BAKOM,HamRadioTrainer,HB9',0,0,1),
(3482,'2021-12-07','Introduction to Post Apocalyptic Robotics Meta Technology',810,'Building robots from junk parts and tech prepping','<p><a href=\"https://solarbotics.net/bftgu/default.htm\" class=\"uri\">https://solarbotics.net/bftgu/default.htm</a><br />\r\n<a href=\"https://www.bitchute.com/video/jwD4sZhnXrEk/\" class=\"uri\">https://www.bitchute.com/video/jwD4sZhnXrEk/</a></p>\r\n<p>Hail to my Loyal Henchmen and fellow SuperVillains, welcome new recruits and greetings to the hackers of HPR.</p>\r\n<p>This is Mechatroniac the mechatronics maniac with the zeroth installment of Robot Warlords of the Apocalypse, where I will talk about post apocalyptic robotics and share my projects, philosophy and future ambitions.</p>\r\n<p>I am doing this podcast contribution for hacker public radio.</p>\r\n<p>hackerpublicradio.org</p>\r\n<p>After this has aired on HPR I will be adding video and to this presentation which will be uploaded to my channel at:</p>\r\n<p><a href=\"https://bitchute.com/channel/mechatroniac\" class=\"uri\">https://bitchute.com/channel/mechatroniac</a> point youtube-dl at it and download them all.</p>\r\n<p>Mechatronics is code, electronics and mechanics working together as a system. I am weak in all 3, but have built mini battlebot style robots completely from scratch, with every chassis part, every motor and wheel, and every circuit that drives them sourced for free from junk like discarded printers, dvds, tvs, computers and UPS.</p>\r\n<p>I am calling this ethos and the resultant aesthetic, Post Apocalyptic Robotics, that is robots that can be built by reclaiming existing post consumer products to create something new.</p>\r\n<p>Currently they are confined to smooth surfaces like battlebot arenas, but more rugged terrain bots are currently also being worked on, and I want to work towards autonomous and swarm robots as well.</p>\r\n<p>The recipes I release here, can be followed by anyone to build their own robots and devices, by simply gathering the required scrap units or similar as described; then disassembling, then finally reassembling into a new meta technological device.</p>\r\n<p>I hope that others will do the same, and come up with their own innovations and new recipes that can be added to our incipient swarms of meta-technological bots as they evolve ever more sophistication.</p>\r\n<p>Welcome to post apocalyptic robotics.</p>\r\n<p>Introduction to Post-Apocalypse Robotics Meta-technology</p>\r\n<p>Tech Prepping, Building a \'battlebot\' out of junk</p>\r\n<p>Meteors, asteroids, comets. Cataclysmic solar flares, massive volcanic eruptions and earthquakes triggering massive tsunamis, social unrest, runaway climate change, ransomware and EMPs attacks striking electric grids, deadly viral pandemics, mass hysteria, big boats blocking waterways, obscured malware in a systemd update, management engines at the heart of CPUs providing backdoors to Intel and AMD hardware at root -3 privilege... what could go wrong there?</p>\r\n<p>There are a large number of looming events which could collapse technological society as it is, wiping out most of the internet and shipping and transport and hopefully maybe even the government.</p>\r\n<p>Tech Prepping is more important than food prepping</p>\r\n<p>While most survivalist and prepper types concentrate on stacking cans of beans, seeds, fuel and ammo, the robot prepper will also be hoarding books on pdf, component datasheets, software libraries, breakout boards and every post EOL electronics product they can get their hands on.</p>\r\n<p>In a semi apocalyptic scenario where the trucks stop rolling, a lot of people who save seeds will be able to grow food in their communities, so food won\'t be such a big deal.</p>\r\n<p>There might even be some that figure out how to make petroleum from wood like mrteslonian channel on youtube.</p>\r\n<p>But a real crux will be analog, digital electronics technology, IT and mechatronics. Those communities with working electronics, mechatronics, and information technology infrastructure, will be at a distinct competitive advantage. They will be able to leverage this in such things as automation of agriculture, from watering schedules to weed pulling along with many other applications that will make the PAR communities ascendant. All else being equal, PAR will be a force multiplier vs hostile neighbours starved of their slaveslabs swiping because facebook no longer exists, or remnants of the tyrannical state coming out of their DUMB bunkers and thinking they still have the right to rule.</p>\r\n<p>It\'s a good thing then, that we have a boost up to a mechatronic technological society all around us in the electronic consumer devices that although they may be decrepit, soiled and/or dead, nonetheless contain a wealth of component parts -most of which are hardy enough to function for a very long time, components that can be reused in new applications.</p>\r\n<p>It\'s like there is a supply chain for robot factories all around us. It\'s not infinite but it is very plentiful at the moment. Sadly, our society is blind to the current and future worth of the technological legacy in our midst and the electronics recycling is electronics destruction.</p>\r\n<p>Meta technology</p>\r\n<p>Antecedents: BEAM, cyberpunk, road warrior</p>\r\n<p>Fellow Travellers/Parallels: Maker, Right to repair, hardware hacking(Valerio De Giampietro - Hardware Hacking Tutorial), CollapseOS</p>\r\n<p>One of this new meta technology\'s main antecedents is BEAM(Biology Evolution Aesthetics Mechanics) robotics, Mark Tilden\'s robot projects that eschewed microprocessors in favour of circuits built of discrete components that mimic biological nerves and can react to environmental stimuli. There is a nice archive of BEAM related documents on the solarbotics site.</p>\r\n<p>Mark Tilden even wrote a book called \'Junk Bots\', so must have had some of the same ideas I have... but where Mark uses transistors as the nerves and brains, I am using arduino since microprocessors are now very inexpensive.</p>\r\n<p>The use of arduino is the only thing keeping my projects from being completely PAR, but one day wish to have entirely PAR</p>\r\n<p>Thus right to repair and hardware hacking are thus two important aspects to utilizing the processors inside consumer products to run other operating systems for our use. Unless we hoard thousands of atmega328p chips, it will be difficult to find processors that we can use unless they have been liberated via techniques described by Valerio De Giampietro. Reusing processors from printers and other products is a goal for the future, but right now, let\'s have some fun.</p>\r\n<p>FUN and Education The first arduino PAR battlebot I built - the herald/interceptor; is powered by 5 18650 cells from trashed laptops, powertrain is a custom hybrid relay/MOSFET H-bridge, and it is driven by four electric motors and wheels harvested from PA printers. It has IR remote control and is very fast to the extent that I had to add rubber bumpers to it to keep it and others safe.</p>\r\n<p>I departed somewhat from the PAR ethos, with added front and rear ultrasonic sensors, and an mp3 player powering a tv speaker. Hence, it is the herald/interceptor</p>\r\n<p>I think it has an interesting road warrior cyberpunk aesthetic, with the grey steel, aluminum and black ABS parts, and but for the wheels; star wars for the bolted on look of it</p>\r\n<p>Can we set up PAR tournaments where we can bring our bots and battle it out? Cost is no longer a barrier.</p>\r\n<p>I could see a challenging new sport that is a cross between battlebots and junkyard wars, where contestants would have a set amount of time to build a bot from junk, and then compete in racing or sumo matches.</p>\r\n<p>Obviously you are going to learn a lot building a robot and the best way to learn is by doing.</p>\r\n<p>Alright, now that I have shown some of the important strategic and fun implications of PAR meta technology, by raiding trashed consumer electronics for their components: I hope at the very least that everyone hearing this never again take their post use electronics to one of those recycling centers where all those precious components are destroyed, instead of keeping it in your basement where it belongs. You\'d do better taking it to a landfill where perhaps some future wretched mutant can discover and make use of it, than take it to electronics recycling.</p>\r\n<p>Next episode I\'ll show you how to build your PAR laboratory and give you the ingredients to the herald/interceptor battlebot, but if you\'re already excited to get started you can order an arduino Uno or nano, or an arduino kit with a bunch of sensors like I did when I got started. You can also start gathering things like printers, tvs, dvds, UPS and other waste, and get a soldering station if you don\'t already have one.</p>\r\n<p>In the coming episodes I will share the detailed recipe for my first post apocalyptic battlebot style robot I built complete with arduino code, and will show you how to build your own robot for free except for the arduino*. I\'ll also do email tech support for anyone having problems.</p>\r\n<p>I also want to go further into other tech prepper archiving, in case all or large parts of the internet are no longer accessible, and this may be where you programming specialists might be able to help. They kind of gave me weird looks on the arduino forums when I asked for a way to download all the libraries but was finally able to beg a script that let me download a lot of them, if not all.</p>\r\n<p>Also, all the component datasheets would be handy... it seems it would be prudent to have datasheets on all the components and microprocessors that you possibly can, and to have all the software libraries it would be practical to archive.</p>\r\n<p>I\'ll also go into more aspects and implications of this exciting meta technology, and I hope you will join me in building post apocalypse robotics and mechatronics fun.</p>\r\n',401,0,1,'CC-BY-SA','beam,righttorepair,robots,mechatronics',0,0,1),
(3489,'2021-12-16','Equality of structured errors',776,'Tuula talks about equality in Haskell','<p>Equality of structured errors</p>\r\n<h2 id=\"background\">Background</h2>\r\n<p>In previous episode, I built a system where error codes weren\'t defined in one huge type. This made compilation times faster and maintenance quite a bit more easier.</p>\r\n<h2 id=\"problem\">Problem</h2>\r\n<p>I wanted to write a test to see that parameters passed to <code>validatePatchApiPersonR</code> are validated correctly. <code>patchApiPersonR</code> is used by client to do partial updates on a <code>Person</code> entity. There\'s three different cases I wanted to check:</p>\r\n<ul>\r\n<li>trying to change life focus too soon (there\'s 5 year cooldown)</li>\r\n<li>trying to select same life focus that has already been selected</li>\r\n<li>trying to modify somebody else\'s avatar</li>\r\n</ul>\r\n<p>Code is shown below and the last 2 lines are the interesting ones. There I\'m using equality to compare if a given error exists in a list of errors created by <code>validatePatchApiPersonR</code>.</p>\r\n<pre><code>spec :: Spec\r\nspec = do\r\n    describe &quot;people&quot; $ do\r\n        describe &quot;life focus&quot; $ do\r\n            describe &quot;Validating requests&quot; $ do\r\n                it &quot;All errors are reported&quot; $ do\r\n                    forAll anyCompletelyFaultyRequest $\r\n                        \\(userE, personE, msg, date) -&gt;\r\n                            let res = validatePatchApiPersonR (userE ^. entityKeyL, userE ^. entityValL, personE, msg, date)\r\n                                newFocus = msg ^? patchPersonRequestLifeFocus . _Just . _Just\r\n                            in\r\n                                case res of\r\n                                    V.Success _ -&gt;\r\n                                        expectationFailure &quot;Invalid request was not detected&quot;\r\n\r\n                                    V.Failure errs -&gt; do\r\n                                        errs `shouldSatisfy` (\\xs -&gt; any (\\x -&gt; &quot;CanNotChangeLifeFocusSoSoon&quot; `isInfixOf` (pack $ show x)) xs)\r\n                                        errs `shouldContain` [ canNotReselectSameLifeFocus newFocus ]\r\n                                        errs `shouldContain` [ insufficientRights ]\r\n</code></pre>\r\n<h2 id=\"detour-on-equality\">Detour on equality</h2>\r\n<p>Equality in Haskell works slightly differently compared to for example C#. There is no built in, default implementation that gets used when the programmer hasn\'t written their own. If you want to compare equality, there needs to be implementation specific to your data types. This is done by making an instance of type class <code>Eq</code> (<a href=\"https://hackage.haskell.org/package/base-4.15.0.0/docs/Data-Eq.html\">https://hackage.haskell.org/package/base-4.15.0.0/docs/Data-Eq.html</a>).</p>\r\n<pre><code>class Eq a where\r\n  (==) :: a -&gt; a -&gt; Bool\r\n  (/=) :: a -&gt; a -&gt; Bool\r\n</code></pre>\r\n<p>There\'s two functions: <code>==</code> for equality and <code>/=</code> for inequality. You need to implement either one.</p>\r\n<h2 id=\"back-to-problem\">Back to problem</h2>\r\n<p><code>ECode</code> is our structured error code type and defined as follows (this is short recap of previous episode):</p>\r\n<pre><code>data ECode where\r\n    ECode :: (ErrorCodeClass a, ToJSON a, Eq a, Show a) =&gt; a -&gt; ECode\r\n</code></pre>\r\n<p>It can wrap anything that has correct type class instances and you will always get <code>ECode</code> as a result. It hides the specific type of thing being wrapped and only functions defined in type classes are available.</p>\r\n<h2 id=\"first-try\">First try</h2>\r\n<p>Peel away <code>ECode</code> and compare what\'s inside and compare wrapped values:</p>\r\n<pre><code>instance Eq ECode where\r\n    ECode a == ECode b =\r\n        a == b\r\n</code></pre>\r\n<p>This will lead into a error \"Couldn\'t match expected type &#x2018;a&#x2019; with actual type &#x2018;a1&#x2019;. &#x2018;a1&#x2019; is a rigid type variable bound by a pattern with constructor...\". This is because <code>ECode</code> can wrap many different types, there is no quarantee that you\'re comparing values of same type. The whole error is show below for reference:</p>\r\n<pre><code>[35 of 76] Compiling Errors           ( src/Errors.hs, .stack-work/dist/x86_64-linux/Cabal-2.2.0.1/build/Errors.o )\r\n\r\n/home/tuula/programming/sky/src/Errors.hs:148:14: error:\r\n    &#x2022; Couldn&#39;t match expected type &#x2018;a&#x2019; with actual type &#x2018;a1&#x2019;\r\n      &#x2018;a1&#x2019; is a rigid type variable bound by\r\n        a pattern with constructor:\r\n          ECode :: forall a.\r\n                   (ErrorCodeClass a, ToJSON a, Eq a, Show a) =&gt;\r\n                   a -&gt; ECode,\r\n        in an equation for &#x2018;==&#x2019;\r\n        at src/Errors.hs:147:16-22\r\n      &#x2018;a&#x2019; is a rigid type variable bound by\r\n        a pattern with constructor:\r\n          ECode :: forall a.\r\n                   (ErrorCodeClass a, ToJSON a, Eq a, Show a) =&gt;\r\n                   a -&gt; ECode,\r\n        in an equation for &#x2018;==&#x2019;\r\n        at src/Errors.hs:147:5-11\r\n    &#x2022; In the second argument of &#x2018;(==)&#x2019;, namely &#x2018;b&#x2019;\r\n      In the expression: a == b\r\n      In an equation for &#x2018;==&#x2019;: ECode a == ECode b = a == b\r\n    &#x2022; Relevant bindings include\r\n        b :: a1 (bound at src/Errors.hs:147:22)\r\n        a :: a (bound at src/Errors.hs:147:11)\r\n    |\r\n148 |         a == b\r\n    |\r\n</code></pre>\r\n<h2 id=\"second-try\">Second try</h2>\r\n<p>We can use <code>Show</code> to turn <code>ECode</code> into string and compare them. This is what I did initially.</p>\r\n<pre><code>instance Eq ECode where\r\n    a == b = show a == show b\r\n</code></pre>\r\n<p>While this works, it feels hacky. It relies on string representations being different. If you accidentally write <code>Show</code> instance in a way that produces same string with two different values, the comparison breaks down.</p>\r\n<h2 id=\"third-time-is-a-charm\">Third time is a charm</h2>\r\n<p>After pondering a bit, I asked myself a question \"When are two <code>ECode</code> equal?\". The answer I arrived is \"When they have same http status code and description.\" Then I could write yet different take on equality:</p>\r\n<pre><code>instance Eq ECode where\r\n    a == b =\r\n        httpStatusCode a == httpStatusCode b\r\n        &amp;&amp;  description a == description b\r\n</code></pre>\r\n<p>This states that to two <code>ECode</code> values are equal, if they have same <code>httpStatusCode</code> and <code>description</code>.</p>\r\n<p>Thanks for listening, if you have any questions or comments, you can reach me via email or in fediverse, where I\'m <code>Tuula@tech.lgbt</code>. Or even better, you could record your own hacker public radio episode.</p>\r\n<p>Ad astra!</p>\r\n',364,107,1,'CC-BY-SA','haskell, eq',0,0,1),
(3487,'2021-12-14','Installing a cat door',1446,'Rho`n installs a cat door in his interior basement door','<h1>Synopsis</h1>\r\n<p>In today\'s episode, Rho`n installs a cat door in the basement door separating the finished side of the basement from the utility side. Follow along as he learns once again that it is best to read all the instructions before starting a project, and also learns that modern, inexpensive, interior doors are not made of wood.</p>\r\n\r\n<p>The following are the pictures taken during the project.</p>\r\n<style>\r\ndiv#figures {\r\n	display: flex;\r\n	flex-direction: row;\r\n	flex-wrap: wrap;\r\n	justify-content: center;\r\n}\r\ndiv#figures figure { max-width: 492px; }\r\ndiv#figures img { max-width: 50vw; padding-bottom: 0.15em }\r\n</style>\r\n<div id=\"figures\">\r\n<figure>\r\n	<a href=\"https://hackerpublicradio.org/eps/hpr3487/01.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3487/01-sm.jpg\"\r\n         alt=\"Basement door laid out on a table with the cat door template applied\"></a>\r\n    <figcaption>Basement door laid out on a table with the cat door template applied</figcaption>\r\n</figure>\r\n<figure>\r\n    <a href=\"https://hackerpublicradio.org/eps/hpr3487/02.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3487/02-sm.jpg\"\r\n								   alt=\"Basement door after cutting a hole through it. Showing the hole and the interior of the door.\"></a>\r\n    <figcaption>Basement door after cutting a hole through it. Showing the hole and the interior of the door.</figcaption>\r\n</figure>\r\n<figure>\r\n    <a href=\"https://hackerpublicradio.org/eps/hpr3487/03.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3487/03-sm.jpg\"\r\n								   alt=\"View from the finished side of the basement showing the installed cat door.\"></a>\r\n    <figcaption>View from the finished side of the basement showing the installed cat door.</figcaption>\r\n</figure>\r\n<figure>\r\n    <a href=\"https://hackerpublicradio.org/eps/hpr3487/04.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3487/04-sm.jpg\"\r\n								   alt=\"View from the utility side of the basement showing the installed cat door.\"></a>\r\n    <figcaption>View from the utility side of the basement showing the installed cat door.</figcaption>\r\n</figure>\r\n</div>\r\n<h1>Attribution</h1>\r\n\r\n<p>The transition sound used between audio clips is found on <a href=\"https://freesound.org/\">freesound.org</a>:<br>\r\nName: <a href=\"https://freesound.org/people/DanJFilms/sounds/529064/\">Harp Transition Music Cue</a><br>\r\nAuthor: <a href=\"https://freesound.org/people/DanJFilms/\">DanJFilms</a><br>\r\nLicense: <a href=\"https://creativecommons.org/publicdomain/zero/1.0/\">Creative Commons Zero</a></p>\r\n',293,0,0,'CC-BY-SA','Install, cat door',0,0,1),
(3492,'2021-12-21','Linux Inlaws S01E44: Pipewire Just another audio server Think again',3170,'Pipewire - Just another audio server? - Think again!','<p>In this episode - sadly missing Martin as he buggered off to do something\r\nelse - the remaining Inlaw hosts Wim Taymans, inventor and brain behind\r\nPipewire, a new approach to Linux audio. Don\'t miss out on this episode if\r\nyou\'re fed up with Pulseaudio (hello Martin :-) or find Jack just too\r\ncomplicated for every-day usage - you may see audio on Linux from a different\r\nperspective after this episode... Never mind those of you who are looking for\r\na crash-course on audio on Linux - this episode is for you!</p>\r\n\r\n<h2>Links:</h2>\r\n<ul>\r\n<li>Pipewire: <a href=\"https://github.com/PipeWire/pipewire\" target=_blank>https://github.com/PipeWire/pipewire</a></li>\r\n<li>gstreamer: <a href=\"https://gstreamer.freedesktop.org\" target=_blank>https://gstreamer.freedesktop.org</a></li>\r\n<li>ALSA: <a href=\"https://alsa-project.org/wiki/Main_Page\" target=_blank>https://alsa-project.org/wiki/Main_Page</a></li>\r\n<li>PulseAudio: <a href=\"https://www.freedesktop.org/wiki/Software/PulseAudio\" target=_blank>https://www.freedesktop.org/wiki/Software/PulseAudio</a></li>\r\n<li>Jack: <a href=\"https://jackaudio.org\" target=_blank>https://jackaudio.org</a></li>\r\n<li>eventfd: <a href=\"https://man7.org/linux/man-pages/man2/eventfd.2.html\" target=_blank>https://man7.org/linux/man-pages/man2/eventfd.2.html</a></li>\r\n<li>Rubik\'s Cube: <a href=\"https://www.rubiks.com/en-us\" target=_blank>https://www.rubiks.com/en-us</a></li>\r\n<li>And how to solve this: <a href=\"https://ruwix.com/the-rubiks-cube/advanced-cfop-fridrich\" target=_blank>https://ruwix.com/the-rubiks-cube/advanced-cfop-fridrich</a></li>\r\n<li>How to make Kefir: <a href=\"https://www.twopeasandtheirpod.com/how-to-make-kefir\" target=_blank>https://www.twopeasandtheirpod.com/how-to-make-kefir</a></li>\r\n</ul>\r\n',384,111,1,'CC-BY-SA','Linux audio, Pipewire, PulseAudio, Jack, gstreamer, Rubik\'s Cube, Kefir',0,0,1),
(3499,'2021-12-30','Fixing a noisy blower motor',264,'I fix a noisy blower motor that I put off since last winter.','<p>A brief description of fixing a problem I put off from last winter, on the 2013 Hyundai Elantra.</p>\r\n<p><em>Motor with the electrical plug still attached</em><br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3499/20211119_171709.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3499/20211119_171709_thumbnail.jpg\" alt=\"Motor with the electrical plug still attached\" /></a> <br/><small><small><em>Click the thumbnail to see the full-sized image</em></small></small></p>\r\n<p><em>12 volt plug showing where to press the clip to remove it</em><br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3499/20211120_134626.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3499/20211120_134626_thumbnail.jpg\" alt=\"12 volt plug showing where to press the clip to remove it\" /></a> <br/><small><small><em>Click the thumbnail to see the full-sized image</em></small></small></p>\r\n<p><em>Mess left by the lithium grease spray</em><br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3499/20211119_172040.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3499/20211119_172040_thumbnail.jpg\" alt=\"Mess left by the lithium grease spray\" /></a> <br/><small><small><em>Click the thumbnail to see the full-sized image</em></small></small></p>\r\n<p><em>Broken clip: Don\'t try this</em><br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3499/20211120_135727.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3499/20211120_135727_thumbnail.jpg\" alt=\"Broken clip: Don&#39;t try this\" /></a> <br/><small><small><em>Click the thumbnail to see the full-sized image</em></small></small></p>\r\n<p><em>Motor cage apart, showing the bearing</em><br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3499/20211120_143842.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3499/20211120_143842_thumbnail.jpg\" alt=\"Motor cage apart, showing the bearing\" /></a> <br/><small><small><em>Click the thumbnail to see the full-sized image</em></small></small></p>\r\n<!-- ![Motor with the electrical plug still attached.](20211119_171709.jpg) -->\r\n\r\n<!-- Motor with the electrical plug still attached. -->\r\n\r\n<!-- ![12 volt plug showing where to press the clip to remove it.](20211120_134626.jpg) -->\r\n\r\n<!-- 12 volt plug showing where to press the clip to remove it. -->\r\n\r\n<!-- ![Mess left by the lithium grease spray.](20211119_172040.jpg) -->\r\n\r\n<!-- Mess left by the lithium grease spray. -->\r\n\r\n<!-- ![Broken clip: Don\'t try this.](20211120_135727.jpg) -->\r\n\r\n<!-- Broken clip: Don\'t try this. -->\r\n\r\n<!-- ![Motor cage apart, showing the bearing.](20211120_143842.jpg) -->\r\n\r\n<!-- Motor cage apart, showing the bearing. -->\r\n\r\n<h2 id=\"attribution\">Attribution</h2>\r\n<p>The transition sound used between audio clips is found on <a href=\"https://freesound.org/\">freesound.org</a>:<br>\r\nName: <a href=\"https://freesound.org/people/juanto9889/sounds/414870\"> efectos de sonido cartoon &#xBB; transition </a><br>\r\nAuthor: <a href=\"https://freesound.org/people/juanto9889\">juanto9889</a><br>\r\nLicense: <a href=\"https://creativecommons.org/publicdomain/zero/1.0/\">Creative Commons Zero</a></p>\r\n',318,0,0,'CC-BY-SA','car,repair,maintenance,bearing',0,0,1),
(3508,'2022-01-12','Differences between C# and Haskell',1712,'Tuula talks about some of the differences between C# and Haskell','<p>This episode covers some of the differences between C# and Haskell. I\'m probably going to omit lot of things accidentally.</p>\r\n<ul>\r\n<li>Origin: practical language for solving real world problems vs. programming language research</li>\r\n<li>Main paradigm: object oriented vs purely functional</li>\r\n<li>Changing data: mutability vs. immutability</li>\r\n<li>Data structures: inheritance vs. composition</li>\r\n<li>Execution model: strict vs. nonstrict</li>\r\n<li>Side effects: anywhere vs. specifically marked areas in the code</li>\r\n</ul>\r\n<p>Thanks for listening, if you have any questions or comments, you can reach me via email or in fediverse, where I\'m <code>Tuula@tech.lgbt</code>. Or even better, you could record your own hacker public radio episode.</p>\r\n',364,107,0,'CC-BY-SA','haskell, c#, programming',0,0,1),
(3515,'2022-01-21','ADB and scrcpy',565,'Some useful tools for working with Android Devices','<h1 id=\"android-debugging\">Android Debugging</h1>\r\n<ul>\r\n<li><a href=\"https://developer.android.com/studio/command-line/adb\">Android Debug Bridge (adb) homepage</a></li>\r\n</ul>\r\n<h2 id=\"install-adb-tools\">Install ADB Tools</h2>\r\n<p>There are multiple guides online as to how to install, but I found <code>dnf install android-tools.x86_64 adb-enhanced.noarch</code> the easiest. Similar commands are available for the other distros. Use your package manager to search for <code>adb</code>.</p>\r\n<ul>\r\n<li><a href=\"https://www.xda-developers.com/install-adb-windows-macos-linux/\">https://www.xda-developers.com/install-adb-windows-macos-linux/</a></li>\r\n</ul>\r\n<h2 id=\"enable-developer-options\">Enable Developer options</h2>\r\n<p>Go to Settings. Usually via the pulldown menu from the top twice, and click the cog icon. Search for \'Build Number\', it\'s usually in Click on \'About Phone\' Click on \'Build Number\' seven times.</p>\r\n<p>Go back and then search for \'Developer options\' it\'s usually in the System section</p>\r\n<p>You\'ll need to turn on two features \'Android Debugging\' and \'ADB over network\'</p>\r\n<p>While we are at it, go back and then search for \'IP Address\' it\'s usually in the <code>About phone</code> section. You should see a IPv4 address eg: 192.168.1.100. Make note of the IP address as we\'ll use it later.</p>\r\n<h2 id=\"using-adb\">Using ADB</h2>\r\n<p>To get help use the command <code>adb help</code></p>\r\n<ul>\r\n<li>global options: Tell you how to connect to the phone</li>\r\n<li>general commands: Shows your devices, and gives help</li>\r\n<li>networking: Allows you to connect over the network but also to port forward and reverse traffic</li>\r\n<li>file transfer: The only reliable way to get files to and from your device.</li>\r\n<li>internal debugging: Shows how to control the server</li>\r\n</ul>\r\n<h3 id=\"usb\">USB</h3>\r\n<p>Plug your phone using a usb cable. There will be a notification and a popup to allow the connection.</p>\r\n<p>Run <code>adb shell</code> and all going well you should see your phone. Commands like <code>ls</code>, <code>cd</code>, and <code>find</code> work well. For example <code>find /storage/self/primary/</code>.</p>\r\n<h3 id=\"network\">Network</h3>\r\n<p>Unfortunately if you unplug your phone you no longer have a connection to it, but you can enable network access via tcp. Leave your phone connected to USB and then tell it to use a TCP/IP connection with the command <code>adb tcpip 5555</code>.</p>\r\n<p>Then connect to the phone using the phones IP address and port 5555, <code>adb connect 192.168.1.100:5555</code>. It should reply with a connected to message</p>\r\n<pre><code>$ adb connect 192.168.1.100:5555\r\nconnected to 192.168.1.100:5555</code></pre>\r\n<p>Now commands like <code>adb shell</code> should allow you to access the phone even if it\'s not physically connected via usb.</p>\r\n<h3 id=\"multiple-devices\">Multiple devices</h3>\r\n<p>Got multiple devices then you can connect them all in the same way as shown above. The only issue is you need to tell adb which one you want to address.</p>\r\n<p>The first thing you need to do is list the devices</p>\r\n<pre><code>$ adb devices -l\r\nList of devices attached\r\n192.168.1.100:5555   device product:XXXX model:XXXX device:XXXX transport_id:9\r\n192.168.1.101:5555   device product:YYYY:ZZZZ device:ZZZZ transport_id:14</code></pre>\r\n<p>The important bit is the <code>transport_id</code> at the end. You can then use the <code>adb</code> command as normal but specifying the <code>-t</code> option</p>\r\n<pre><code>-t: allocate a pty if on a tty (-tt: force pty allocation)</code></pre>\r\n<p>So for example <code>adb -t 14 shell</code> would connect to phone <em>YYYY</em></p>\r\n<p>So that\'s it for remote control from the shell, but what if you want to see and interact with the screen itself ?</p>\r\n<h2 id=\"remote-screen-sharing-with-scrcpy\">Remote screen sharing with <code>scrcpy</code></h2>\r\n<p>From <a href=\"https://en.wikipedia.org/wiki/scrcpy\">Wikipedia</a></p>\r\n<p><em>scrcpy is a free and open-source screen mirroring application that allows control of an Android device from a Windows, macOS, or Linux desktop computer. The software is currently developed by Genymobile, which also developed Genymotion, an Android emulator.</em></p>\r\n<p>The <a href=\"https://github.com/Genymobile/scrcpy\">source code is available on github</a>. It\'s available via <code>apt install scrcpy</code> on Ubuntu. In Fedora you\'ll need to enable it from the copr repo.</p>\r\n<pre><code>dnf copr enable zeno/scrcpy\r\ndnf install scrcpy</code></pre>\r\n<p>With only one phone connected you can just type <code>scrcpy</code> and the screen will appear. Remember right click is power, and the mouse is your finger ;-).</p>\r\n<p>If you have multiple devices connected you can connect using <code>scrcpy --tcpip=192.168.1.101:5555</code></p>\r\n<p>scrcpy is a wonderful tool that deserves a show in itself, but in short it lets you interact with your phone as if it was a VNC/Remote Desktop session. You can copy text <em>from</em> the phone as well.</p>\r\n<p>It allows for control of the screen, as well as screen recording.</p>\r\n',30,0,0,'CC-BY-SA','adb,scrcpy,android Debug Bridge',0,0,1),
(3493,'2021-12-22','My First Spanish HPR Episode',302,'A short Spanish episode inspired by discussions about non-English episodes on the HPR mailing list.','<ul>\r\n<li>Mendoza, Argentina - <a href=\"https://en.wikipedia.org/wiki/Mendoza,_Argentina\">https://en.wikipedia.org/wiki/Mendoza,_Argentina</a></li>\r\n<li>Spanish (Castilian/Castellano) Language - <a href=\"https://en.wikipedia.org/wiki/Spanish_language\" class=\"uri\">https://en.wikipedia.org/wiki/Spanish_language</a></li>\r\n<li>Texto-Plano - <a href=\"https://texto-plano.xyz\" class=\"uri\">https://texto-plano.xyz</a></li>\r\n<li>El Podcast de Texto-Plano - <a href=\"https://podcast.texto-plano.xyz/\" class=\"uri\">https://podcast.texto-plano.xyz/</a></li>\r\n<li>SDF - <a href=\"https://sdf.org\" class=\"uri\">https://sdf.org</a></li>\r\n</ul>\r\n',152,0,0,'CC-BY-SA','spanish,languages,castellano,espanol,pubnix,textoplano,podcast',0,0,1),
(3498,'2021-12-29','Linux Inlaws S01E45: The Big Xmas New Year bash with the Grumpies',8076,'the same as the title so I\'m not going to repeat it','<p>In this end of year episode / Xmas bumper our two aging heroes host the Grumpy Old Coders\r\nonce again. Apart from having lots of fun, our four eclectic panelists discuss the year in\r\nreview and some obscure predictions the Inlaws made at the end of last year in S01E20 to\r\nsee if these became true or not. Plus a seriously long commercial break on mainframes\r\ndone by our own Chris (Arvind / Jim / IBM: If you\'re listening: the sponsor mail address\r\nis ibm_sponsor@linuxinlaws.eu). Plus some juicy competitive knowledge about some hyperscalers.\r\nBeans spilled right from the inside... In addition to cloud nightmares. So if you\'re into\r\nhorror after never mind beyond Halloween this is your episode... There might be the odd open source\r\nangle to this episode but we are not sure and this of course is purely by accident - just find out for yourself! :-)\r\n</p>\r\n\r\n<h2>Links:</h2>\r\n<ul>\r\n<li>Grumpy Old Coders (incuding the Darkside and Women in Tech episodes): <a href=\"https://grumpy-old-coders.org\" target=_blank>https://grumpy-old-coders.org</a></li>\r\n<li>Broken CentOS 8 promise: <a href=\"https://blog.centos.org/2020/12/future-is-centos-stream\" target=_blank>https://blog.centos.org/2020/12/future-is-centos-stream</a></li>\r\n<li>Mainframes and the cloud: <a href=\"https://www.forbes.com/sites/tomtaulli/2021/01/23/will-the-cloud-take-down-the-mainframe\" target=_blank>https://www.forbes.com/sites/tomtaulli/2021/01/23/will-the-cloud-take-down-the-mainframe</a></li>\r\n<li>Woman in the red dress: <a href=\"https://matrix.fandom.com/wiki/Woman_in_Red\" target=_blank>https://matrix.fandom.com/wiki/Woman_in_Red</a></li>\r\n<li>Goedel\'s theorems: <a href=\"https://en.wikipedia.org/wiki/G%C3%B6del%27s_incompleteness_theorems\" target=_blank>https://en.wikipedia.org/wiki/G%C3%B6del%27s_incompleteness_theorems</a></li>\r\n<li>Veritasium video on incompleteness: <a href=\"https://www.youtube.com/watch?v=HeQX2HjkcNo\" target=_blank>https://www.youtube.com/watch?v=HeQX2HjkcNo</a></li>\r\n<li>Bezos laughing after divorce: <a href=\"https://www.youtube.com/watch?v=MU8AyKO7qX4\" target=_blank>https://www.youtube.com/watch?v=MU8AyKO7qX4</a></li>\r\n<li>KGB (I): <a href=\"https://stackoverflow.com/questions/19904683/passing-a-kernel-global-buffer-to-a-local-function-in-opencl\" target=_blank>https://stackoverflow.com/questions/19904683/passing-a-kernel-global-buffer-to-a-local-function-in-opencl</a></li>\r\n<li>KGB (II): <a href=\"https://www.google.com/search?channel=fs&client=ubuntu&q=%22kellogs+greatest+beer%22\" target=_blank>https://www.google.com/search?channel=fs&client=ubuntu&q=%22kellogs+greatest+beer%22</a></li>\r\n<li>Shameless Zig plug (dedicated to Loris :-): <a href=\"https://ziglang.org\" target=_blank>https://ziglang.org</a></li>\r\n<li>TIOBE index: <a href=\"https://www.tiobe.com/tiobe-index\" target=_blank>https://www.tiobe.com/tiobe-index</a></li>\r\n</ul>\r\n',384,111,1,'CC-BY-SA','Mainframes, IBM, Hyperscaler secrets, Rust, old men, programming languages',0,0,1),
(3495,'2021-12-24','Podcast Recommendation: The Retroist',92,'Podcast Recommendation: The Retroist number 243 - Die Hard','<p>Retroist Podcast Episode 243 (Die Hard)</p>\r\n<ul>\r\n<li><a href=\"https://retroist.com/retroist-die-hard-podcast\" class=\"uri\">https://retroist.com/retroist-die-hard-podcast<a/></li>\r\n<li><a href=\"https://archive.org/details/retroist-podcast-episode-243-die-hard\" class=\"uri\">https://archive.org/details/retroist-podcast-episode-243-die-hard</a></li>\r\n</ul>\r\n<p>A nostalgic look at the action film Die Hard, released in 1988. Also a look at whether or not Die Hard is a Christmas movie.</p>\r\n<ul>\r\n<li>Comments to this subject are welcome.</li>\r\n<li>Based on the book, Nothing Lasts Forever\r\n<ul>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Nothing_Lasts_Forever_(Thorp_novel)\" class=\"uri\">https://en.wikipedia.org/wiki/Nothing_Lasts_Forever_(Thorp_novel)</a></li>\r\n<li><a href=\"https://diehard.fandom.com/wiki/Nothing_Lasts_Forever\" class=\"uri\">https://diehard.fandom.com/wiki/Nothing_Lasts_Forever</a></li>\r\n</ul></li>\r\n<li>Bruce Willis was previously known for the TV Series, Moonlighting\r\n<ul>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Moonlighting_(TV_series)\" class=\"uri\">https://en.wikipedia.org/wiki/Moonlighting_(TV_series)</a></li>\r\n</ul></li>\r\n</ul>\r\n',318,75,0,'CC-BY-SA','retro,retroist,nostalgia,1988,die hard,bruce willis,podcast',0,0,1),
(3494,'2021-12-23','Recent Generator Repairs and Maintenance',1080,'I talk about my Generac 4000XL gasoline-powered generator and what I\'ve done to get it running right','<p>In this episode I talk about some work I\'ve done recently on my Generac 4000xl portable generator. Here are some images to accompany the episode. First a beefcake shot of the unit:</p>\r\n\r\n<p><img src=\"https://hackerpublicradio.org/eps/hpr3494/01Generac4000xl.jpeg\" /></p>\r\n\r\n\r\n<p>This is the power panel on the generator</p>\r\n<p><img src=\"https://hackerpublicradio.org/eps/hpr3494/02PowerPanel.jpeg\" /></p>\r\n\r\n<p>Here\'s the receptacle for the fat cable with a 4-prong plug. This goes right into my main electrical panel.</p>\r\n\r\n<p><img src=\"https://hackerpublicradio.org/eps/hpr3494/04ReceptableGoingtoBox.jpeg\" /></p>\r\n\r\n<p>Here\'s the interlock switch on my panel, which allows you to plug the generator into your panel safely.</p>\r\n\r\n<p><img src=\"https://hackerpublicradio.org/eps/hpr3494/03Interlock.jpeg\" /></p>\r\n\r\n<h2>Links</h2>\r\n\r\n<ul>\r\n	<li>James Condon\'s YouTube Channel on small-engine repair (mostly generators) <a href=\"https://www.youtube.com/user/jcondon2007\">https://www.youtube.com/user/jcondon2007</a></li>\r\n	<li>Wikipedia article about <a href=\"https://en.wikipedia.org/wiki/Hydrolock\">hydrolock</a> in engines\r\n</ul>\r\n\r\n',238,0,0,'CC-BY-SA','Engine repair, generators, electricity, emergency preparedness',0,0,1),
(3509,'2022-01-13','Linux Inlaws S01E46: The Matrix Project (Without Neo)',4315,'The Matrix Project Without Neo','<p>In this episode, the Inlaws are hosting Neil Johnson, VP of Engineering at Element. But this is\r\nnot just about this popular Matrix graphical user interface but rather about this federated communication\r\nnetwork dubbed as the next big thing after Mastodon and Discord, soon to take over the world (pretty\r\nmuch like the Inlaws themselves - it\'s gonna get crowded... :-).</p>\r\n\r\n<h2>Links:</h2>\r\n<ul>\r\n<li>The Matrix Foundation: <a href=\"https://matrix.org/foundation\" target=_blank>https://matrix.org/foundation</a></li>\r\n<li>Element: <a href=\"https://github.com/vector-im/element-web\" target=_blank>https://github.com/vector-im/element-web</a></li>\r\n<li>Synapse (Matrix reference implementation in Python): <a href=\"https://github.com/matrix-org/synapse\" target=_blank>https://github.com/matrix-org/synapse</a></li>\r\n<li>Dendrite (Matrix implementation in Gloang): <a href=\"https://github.com/matrix-org/dendrite\" target=_blank>https://github.com/matrix-org/dendrite</a></li>\r\n<li>Conduit (Matrix implementation in Rust): <a href=\"https://github.com/timokoesters/conduit\" target=_blank>https://github.com/timokoesters/conduit</a></li>\r\n<li>EU interoperability: <a href=\"https://ec.europa.eu/isa2/sites/default/files/eif_brochure_final.pdf\" target=_blank>https://ec.europa.eu/isa2/sites/default/files/eif_brochure_final.pdf</a></li>\r\n<li>Terry Pratchett: <a href=\"https://en.wikipedia.org/wiki/Terry_Pratchett#Works\" target=_blank>https://en.wikipedia.org/wiki/Terry_Pratchett#Works</a></li>\r\n</ul>\r\n',384,111,1,'CC-BY-SA','Matrix, Element, federated social network, peer-to-peer communication',0,0,1),
(3496,'2021-12-27','How I record HPR Episodes',1707,'Some python to record short segments of audio.','<p><a href=\"https://gitlab.com/norrist/solocast\">https://gitlab.com/norrist/solocast</a></p>\r\n<h3 id=\"sample-scripttxt\">Sample script.txt</h3>\r\n<pre class=\"txt\"><code>This is a sample script for solocast.\r\nSeparate the segments with a blank line\r\n\r\nBulleted lists are OK, but keep the items together by not skipping a line\r\n- Item 1\r\n- Item 2\r\n\r\n### Markdown Formatting is OK\r\nBut the Formatting gets lost in the script\r\nso you can write show notes in loosely formatted markdown\r\n\r\nDon&#39;t have more than 1 blank line separating segments\r\n</code></pre>\r\n<h3 id=\"solocastpy\">solocast.py</h3>\r\n<pre class=\"python\"><code>#! /usr/bin/env python3\r\n\r\nimport click\r\nimport os\r\nfrom shutil import which\r\n\r\nscript_file = &quot;script.txt&quot;\r\nrecording_directory_name = &quot;Recordings&quot;\r\nrecording_format = &quot;wav&quot;\r\nscript_segments = {}\r\n\r\n\r\ndef test_sox_exists():\r\n    try:\r\n        assert which(&quot;sox&quot;)\r\n    except AssertionError:\r\n        print(&quot;Cant find sox.  Install sox somewhere in your path.&quot;)\r\n        exit(1)\r\n\r\n\r\ndef get_recording_file_name(slug):\r\n    return f&quot;{recording_directory_name}/{slug}.{recording_format}&quot;\r\n\r\n\r\ndef project_prep():\r\n    if not os.path.exists(recording_directory_name):\r\n        os.makedirs(recording_directory_name)\r\n    if not os.path.exists(f&quot;{recording_directory_name}/Archive&quot;):\r\n        os.makedirs(f&quot;{recording_directory_name}/Archive&quot;)\r\n\r\n\r\ndef wait_for_input():\r\n    click.echo(&quot;*&quot; * 40)\r\n    _ = input(&quot;Press ENTER to Continue&quot;)\r\n\r\n\r\ndef add_slug_text(slug, text):\r\n    script_segments[slug] = text\r\n\r\n\r\ndef recording_exists(slug):\r\n    if os.path.isfile(get_recording_file_name(slug)):\r\n        return True\r\n    return False\r\n\r\n\r\ndef noise_profile_missing():\r\n    if os.path.isfile(f&quot;{recording_directory_name}/noise.prof&quot;):\r\n        return False\r\n    return True\r\n\r\n\r\ndef truncate_audio(slug):\r\n    recording = get_recording_file_name(slug)\r\n    new_recording = f&quot;{recording_directory_name}/{slug}-truncated.{recording_format}&quot;\r\n    click.echo(f&quot;truncating {recording}&quot;)\r\n\r\n    SOX_CMD = (\r\n        f&quot;sox -V2 {recording}  {new_recording}   silence -l 1 0.1 .1% -1 1.0 .1%   stat&quot;\r\n    )\r\n    click.echo(SOX_CMD)\r\n    os.system(SOX_CMD)\r\n    os.system(\r\n        f&quot; mv -v {recording} {recording_directory_name}/Archive/{slug}.{recording_format}&quot;\r\n    )\r\n    os.rename(new_recording, recording)\r\n    review_audio(slug)\r\n\r\n\r\ndef play_audio(slug):\r\n    recording = get_recording_file_name(slug)\r\n    click.echo(f&quot;Playing {recording}&quot;)\r\n    os.system(f&quot;play {recording}&quot;)\r\n    review_audio(slug)\r\n\r\n\r\ndef delete_audio(slug):\r\n    recording = get_recording_file_name(slug)\r\n    os.remove(recording)\r\n\r\n\r\ndef review_audio(slug):\r\n    review_menu = [&quot;(p)lay&quot;, &quot;(a)ccept&quot;, &quot;(r)eccord again&quot;, &quot;(t)runcate&quot;]\r\n    click.echo(slug)\r\n    for i in review_menu:\r\n        click.echo(i)\r\n    menu_action = input(&quot;&gt;&gt; &quot;)\r\n    if menu_action == &quot;p&quot;:\r\n        play_audio(slug)\r\n    elif menu_action == &quot;a&quot;:\r\n        exit()\r\n    elif menu_action == &quot;r&quot;:\r\n        delete_audio(slug)\r\n        find_and_record_next()\r\n    elif menu_action == &quot;t&quot;:\r\n        truncate_audio(slug)\r\n    else:\r\n        review_audio(slug)\r\n\r\n\r\ndef record_audio(slug):\r\n    new_recording = get_recording_file_name(slug)\r\n    click.echo(f&quot;Creating {new_recording}&quot;)\r\n    click.echo(&quot;press Enter to start then CRTL-C to quit&quot;)\r\n    wait_for_input()\r\n    os.system(f&quot;rec {new_recording}&quot;)\r\n\r\n\r\ndef record_silent_audio():\r\n    silent_recording = f&quot;{recording_directory_name}/silence.{recording_format}&quot;\r\n    click.echo(&quot;RECORD 5 SECONDS OF SILENCE \\n&quot; * 5)\r\n    click.echo(&quot;press Enter to start&quot;)\r\n    wait_for_input()\r\n    os.system(f&quot;rec {silent_recording} trim 0 5&quot;)\r\n    os.system(\r\n        f&quot;sox {silent_recording} -n noiseprof {recording_directory_name}/noise.prof&quot;\r\n    )\r\n\r\n\r\ndef load_script():\r\n    linetext = &quot;&quot;\r\n    with open(script_file) as script_file_reader:\r\n        for line in script_file_reader.readlines():\r\n\r\n            if not line.strip():\r\n\r\n                slug = linetext[:40].title()\r\n                segment_name = &quot;&quot;.join(filter(str.isalnum, slug))\r\n                add_slug_text(segment_name, linetext)\r\n                linetext = &quot;&quot;\r\n\r\n            else:\r\n                linetext += f&quot;{line}  \\n&quot;\r\n\r\n\r\ndef combine_recordings_for_export():\r\n    recording_list = []\r\n    combined_recording = f&quot;{recording_directory_name}/combined.{recording_format}&quot;\r\n    for slug, text in script_segments.items():\r\n        recording = get_recording_file_name(slug)\r\n        recording_list.append(recording)\r\n    recording_list_string = &quot; &quot;.join(recording_list)\r\n    print(recording_list_string)\r\n    SOX_CMD = f&quot;sox -V3 {recording_list_string}  {combined_recording} noisered {recording_directory_name}/noise.prof 0.21 norm -10&quot;\r\n    click.echo(SOX_CMD)\r\n    os.system(SOX_CMD)\r\n\r\n\r\ndef find_and_record_next():\r\n    for slug, text in script_segments.items():\r\n        if recording_exists(slug):\r\n            continue\r\n        click.clear()\r\n        click.echo(slug)\r\n        click.echo(&quot;*&quot; * 40)\r\n        click.echo(text)\r\n        click.echo(&quot;*&quot; * 40)\r\n        record_audio(slug)\r\n        review_audio(slug)\r\n\r\n\r\n@click.group()\r\ndef cli():\r\n    test_sox_exists()\r\n    pass\r\n\r\n\r\n@cli.command()\r\ndef combine():\r\n    &quot;Combine Segments into single audio file&quot;\r\n    combine_recordings_for_export()\r\n\r\n\r\n@cli.command()\r\ndef record():\r\n    &quot;Record next unrecorded segment&quot;\r\n    if noise_profile_missing():\r\n        record_silent_audio()\r\n    find_and_record_next()\r\n\r\n\r\n@cli.command()\r\ndef silence():\r\n    &quot;Generate noise profile&quot;\r\n    record_silent_audio()\r\n\r\n\r\n\r\n@cli.command()\r\ndef review():\r\n    &quot;Print segments&quot;\r\n\r\n    for slug, text in script_segments.items():\r\n        click.clear()\r\n        click.echo(slug)\r\n        click.echo(&quot;*&quot; * 40)\r\n        click.echo()\r\n        click.echo(text)\r\n        wait_for_input()\r\n\r\n\r\nif __name__ == &quot;__main__&quot;:\r\n    project_prep()\r\n    load_script()\r\n    cli()\r\n</code></pre>\r\n',342,0,0,'CC-BY-SA','python,sox',0,0,1),
(3518,'2022-01-26','Linux Inlaws S01E47: BigBlueButton and NAT',3272,'Our two OAPs discuss running conferencing systems like BigBlueButton behind NAT','<p>In this episode of your favourite FLOSS podcast our two OAPs discuss the challenges of running\r\nconferencing systems like BigBlueButton behind a network address translation\r\n(NAT) configuration, something that the Inlaws have been struggeling (?) with\r\nfor quite some time but now have arrived a solution which might just work :-).\r\nIf you face similar challenges or just want to refresh your knowledge about\r\nintricate network architectures never mind their pitfalls, stay tuned.  All\r\nwill be revealed (hopefully :-). But beware: This show is highly technical and\r\ngeek-only.  Which may come in handy if you\'re not technical but suffer from\r\ninsomnia or similar sleep disorders - this is your show!</p>\r\n\r\n<h2>Links:</h2>\r\n<ul>\r\n<li>Network Address Translation (NAT): <a href=\"https://en.wikipedia.org/wiki/Network_address_translation\" target=_blank>https://en.wikipedia.org/wiki/Network_address_translation</a></li>\r\n<li>BigBlueButton (BBB): <a href=\"https://github.com/bigbluebutton/bigbluebutton\" target=_blank>https://github.com/bigbluebutton/bigbluebutton</a></li>\r\n<li>TURN server: <a href=\"https://gabrieltanner.org/blog/turn-server\" target=_blank>https://gabrieltanner.org/blog/turn-server</a></li>\r\n<li>STUN and more: <a href=\"https://en.wikipedia.org/wiki/STUN\" target=_blank>https://en.wikipedia.org/wiki/STUN</a></li>\r\n<li>Google TURN servers: <a href=\"https://gist.github.com/sagivo/3a4b2f2c7ac6e1b5267c2f1f59ac6c6b\" target=_blank>https://gist.github.com/sagivo/3a4b2f2c7ac6e1b5267c2f1f59ac6c6b</a></li>\r\n<li>Dehydrated: <a href=\"https://github.com/dehydrated-io/dehydrated\" target=_blank>https://github.com/dehydrated-io/dehydrated</a></li>\r\n<li>WebRTC: <a href=\"https://webrtc.org/getting-started/overview\" target=_blank>https://webrtc.org/getting-started/overview</a></li>\r\n<li>Parallels: <a href=\"https://www.imdb.com/title/tt3479316/?ref_=nv_sr_srsg_0\" target=_blank>https://www.imdb.com/title/tt3479316/?ref_=nv_sr_srsg_0</a></li>\r\n<li>Philip K. Dick\'s Vulcan Hammer: <a href=\"https://en.wikipedia.org/wiki/Vulcan%27s_Hammer\" target=_blank>https://en.wikipedia.org/wiki/Vulcan%27s_Hammer</a></li>\r\n<li>The Ice Road: <a href=\"https://www.imdb.com/title/tt3758814/?ref_=nm_flmg_act_7\" target=_blank>https://www.imdb.com/title/tt3758814/?ref_=nm_flmg_act_7</a></li>\r\n<li>Sorcerer: <a href=\"https://www.imdb.com/title/tt0076740/?ref_=fn_tt_tt_8\" target=_blank>https://www.imdb.com/title/tt0076740/?ref_=fn_tt_tt_8</a></li>\r\n</ul>\r\n',384,111,1,'CC-BY-SA','BigBlueButton, Network Address Translation, TURN, STUN, WebRTC, Parallels, Vulcan\'s Hammer, The Ice ',0,0,1),
(3497,'2021-12-28','Jankilators.',1275,'Follow the wail of the janky scissor monster into the muddy flux of headtorch borderlands. ','<p>Three phase alternating current generated from an axial flux alternator.</p>\r\n<p>I did find plans which seem to describe themselves as open. I might get around to posting them at a web site, but that exists much less than other comprehensive banks of searchable information on the internet.</p>\r\n<p>Someone suggested some alternators constructed with as many wooden parts as possible, which makes the whole endeavour more accessible and energy efficient. Thank you HPR new year show, for that.</p>\r\n<p>Wind turbine towers are the difficult part, and obviously dangerous.</p>\r\n<p>Tiny generators are cool to cobble from discarded equipment junk.</p>\r\n<p>A solid axial alternator is easy and robust. They can channel a lot of power if the wires are thick enough. Gears exist.</p>\r\n<p>Pedal, and hang sacks.</p>\r\n',398,0,1,'CC-BY-SA','oscillators,complexity,flux,alternator,3phase,field,trees,sky',0,0,1),
(3502,'2022-01-04','New year Greetings and a short review of my new Juno PC',291,'I just ramble for a few minutes about my new Juno PC','<p>Hi to all HPR listeners this is a short show just to say Hi and a happy New Year to those in HPR land I may not have talked to over the Mumble marathon (and that is most of you). My main news is my new Juno PC which I got just before Christmas and It is a massive upgrade for me from my old Gen 3 i7 PC I was using. In real world tests it is about 5 times faster than my old PC and editing Audio and images is a breeze. I got the Brutus 5000 with a Ryzen 9 5900 CPU 32Gb RAM and a 1TB Nvme SSD. It came pre loaded with Ubuntu 20.04 but I installed Linux Mint 20.2 and after getting the details of the PPA for the Juno Drivers everything is working fine. Ports wise for a tiny PC it is OK but I have added a USB 3 powered Hub with 4 extra ports and in the new year will get one with a few more to help me tidy up the wiring snakes on the desk.</p>\r\n<p>For some reason it no longer sees any bootable USB drives at boot after pressing of the boot menu key so a bit of investigation is needed to get that to work again, but on the whole I am a happy camper.</p>\r\n<p>Well that\'s me for this show short as it was if you want more of my ramblings along with my fellow hosts Moss and Dale pop over to Distrohoppers\' Digest and see what we have been up to, we record a new show about once a month.</p>\r\n<ul>\r\n<li><p><a href=\"https://junocomputers.com/product/brutus-5000/\" class=\"uri\">https://junocomputers.com/product/brutus-5000/</a></p></li>\r\n<li><p><a href=\"https://distrohoppersdigest.blogspot.com/\" class=\"uri\">https://distrohoppersdigest.blogspot.com/</a></p></li>\r\n</ul>\r\n',338,0,0,'CC-BY-SA','Ubuntu, Linux Mint, Juno computers, Ryzen 5900, New Year Greetings',0,0,1),
(3503,'2022-01-05','Configuring Mumble',906,'In this episode we will show you how to connect to the HPR Community Room on Mumble.','<p>\r\nThe complete shownotes are available in <a href=\"/mumble-howto\">our mumble how-to</a>. \r\n</p>\r\n<p>\r\nWhen using Mumble <strong><em>you should always use a microphone and headset</em></strong> positioned close to your mouth but slightly off to the side.\r\n</p>\r\n<p>\r\nThe <a href=\"https://www.mumble.info/downloads/\">Mumble website offers download and install instructions</a> for different operating systems.\r\n</p>\r\n<p>\r\nOnce you have installed the client then connect to the <a href=\"mumble://chatter.skyehaven.net:64738/Hacker%20Public%20Radio?version=1.2.0\">HPR Room on Mumble</a>.\r\n<p>\r\nThere is a first run wizard that will step you through the process of configuring Mumble the first time. This will open up a series of configuration options.\r\n</p>\r\n<p>\r\nIt is <strong>very important</strong> that you set <strong>Push to Talk (PTT)</strong> and you <strong>Disable Text-To-Speech</strong>, as you will disturb the other people in the room if you select the other methods. It may seem to be working fine to you, but it <em>will</em> result in issues for the others.\r\n</p>\r\n<p>\r\nYou are expected to have a digital certificate when connecting to Mumble servers. An automatically created one is usually fine.\r\n</p>\r\n<p>\r\nOnce you have the Mumble client set up we can now start the process of connecting to the <a href=\"mumble://chatter.skyehaven.net:64738/Hacker%20Public%20Radio?version=1.2.0\">HPR Room on Mumble</a>.\r\n</p>\r\n<p>\r\nIf at any time you need to add the HPR server open mumble and press <strong>Server - Connect</strong>, press <strong>Add New...</strong>and enter the following information for the HPR server:\r\n</p>\r\n<ul>\r\n<li>Address: <strong>chatter.skyehaven.net</strong></li>\r\n<li>Port: 64738</li>\r\n<li>Username: <strong><em>Your Username</em></strong></li>\r\n<li>Label: chatter.skyehaven.net</li>\r\n</ul>\r\n<p>\r\nThink about your username a bit as if you register it on the server you will not be able to change it again.\r\n</p>\r\n<p>\r\nBefore connecting to any room it\'s good etiquette to make sure your audio is working correctly. The room <strong>Audio Test</strong> will allow you to speak and the <strong>OpieTheRepeatherBot</strong> will record your speech and after 10 seconds will play it back for you.\r\n</p>\r\n\r\n',30,0,0,'CC-BY-SA','mumble,hpr mumble, new year show',0,0,1),
(3761,'2023-01-02','HPR Community News for December 2022',2695,'HPR Volunteers talk about shows released and comments posted in December 2022','<style>\ntable td.shrink {\n    white-space:nowrap\n}\n</style>\n\n<h2>New hosts</h2>\n<p>\nThere were no new hosts this month.\n</p>\n\n<h2>Last Month\'s Shows</h2>\n<table id=\"t01\">\n<tr>\n<th>Id</th>\n<th>Day</th>\n<th>Date</th>\n<th>Title</th>\n<th>Host</th>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3739\" target=\"_blank\">3739</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2022-12-01</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3739\" target=\"_blank\">Multipactors for the masses.</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.php?id=3740\" target=\"_blank\">3740</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2022-12-02</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3740\" target=\"_blank\">Batch File Variables; Nested Batch Files</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0198.html\" target=\"_blank\">Ahuka</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3741\" target=\"_blank\">3741</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2022-12-05</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3741\" target=\"_blank\">HPR Community News for November 2022</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0159.html\" target=\"_blank\">HPR Volunteers</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3742\" target=\"_blank\">3742</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2022-12-06</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3742\" target=\"_blank\">Battery</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0030.html\" target=\"_blank\">Ken Fallon</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3743\" target=\"_blank\">3743</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2022-12-07</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3743\" target=\"_blank\">HPR News</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0391.html\" target=\"_blank\">Some Guy On The Internet</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3744\" target=\"_blank\">3744</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2022-12-08</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3744\" target=\"_blank\">Advent of code Day 1 - 4</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0382.html\" target=\"_blank\">Daniel Persson</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3745\" target=\"_blank\">3745</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2022-12-09</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3745\" target=\"_blank\">Pinecil walkthrough</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0318.html\" target=\"_blank\">Archer72</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3746\" target=\"_blank\">3746</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2022-12-12</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3746\" target=\"_blank\">Cpuinfo</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0078.html\" target=\"_blank\">Klaatu</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3747\" target=\"_blank\">3747</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2022-12-13</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3747\" target=\"_blank\">Twitter and Dinner with the Humans</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0377.html\" target=\"_blank\">Zen_Floater2</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3748\" target=\"_blank\">3748</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2022-12-14</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3748\" target=\"_blank\">The Squirrels gift to HPR</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0377.html\" target=\"_blank\">Zen_Floater2</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3749\" target=\"_blank\">3749</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2022-12-15</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3749\" target=\"_blank\">Making your own parts</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0194.html\" target=\"_blank\">Deltaray</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3750\" target=\"_blank\">3750</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2022-12-16</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3750\" target=\"_blank\">Southern Arizona</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0198.html\" target=\"_blank\">Ahuka</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3751\" target=\"_blank\">3751</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2022-12-19</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3751\" target=\"_blank\">Using Noisetorch</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0194.html\" target=\"_blank\">Deltaray</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3752\" target=\"_blank\">3752</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2022-12-20</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3752\" target=\"_blank\">It only took me 2 years to record using some \'new\' hardware</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0243.html\" target=\"_blank\">Jezra</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3753\" target=\"_blank\">3753</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2022-12-21</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3753\" target=\"_blank\">Some thoughts on \"Numeronyms\"</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0225.html\" target=\"_blank\">Dave Morriss</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3754\" target=\"_blank\">3754</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2022-12-22</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3754\" target=\"_blank\">GOD probably will use a Chromebook</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0377.html\" target=\"_blank\">Zen_Floater2</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3755\" target=\"_blank\">3755</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2022-12-23</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3755\" target=\"_blank\">Synergy over ssh</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0030.html\" target=\"_blank\">Ken Fallon</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3756\" target=\"_blank\">3756</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2022-12-26</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3756\" target=\"_blank\">Verify yourself on Mastodon with PGP and Keyoxide</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0078.html\" target=\"_blank\">Klaatu</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3757\" target=\"_blank\">3757</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2022-12-27</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3757\" target=\"_blank\">Career changes.</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0391.html\" target=\"_blank\">Some Guy On The Internet</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3758\" target=\"_blank\">3758</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2022-12-28</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3758\" target=\"_blank\">First sysadmin job - war story</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0342.html\" target=\"_blank\">norrist</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3759\" target=\"_blank\">3759</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2022-12-29</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3759\" target=\"_blank\">Chatting with dnt.</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0391.html\" target=\"_blank\">Some Guy On The Internet</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3760\" target=\"_blank\">3760</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2022-12-30</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3760\" target=\"_blank\">Bookwyrm</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 14 comments in total.</p>\n<h3>Past shows</h3>\n<p>There is 1 comment on\n1 previous show:</p>\n<ul>\n<li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3737#comments\" target=\"_blank\">hpr3737</a></strong>\n(2022-11-29) \"<em>Review of KOBO Libra H20 e-reader</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0293.html\" target=\"_blank\">Rho`n</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3737#1\" target=\"_blank\">Comment 1</a>:\nAaron Cocker on 2022-12-05:\n\"Kobo e-readers\"</li></ul><br/>\n</li></ul>\n<h3>This month\'s shows</h3>\n<p>There are 13 comments on 8 of this month\'s shows:</p>\n<ul><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3740#comments\" target=\"_blank\">hpr3740</a></strong>\n(2022-12-02) \"<em>Batch File Variables; Nested Batch Files</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0198.html\" target=\"_blank\">Ahuka</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3740#1\" target=\"_blank\">Comment 1</a>:\nHipernike on 2022-09-01:\n\"Forkbomb\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3740#2\" target=\"_blank\">Comment 2</a>:\nKevin O&#39;Brien on 2022-09-01:\n\"You are most welcome\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3741#comments\" target=\"_blank\">hpr3741</a></strong>\n(2022-12-05) \"<em>HPR Community News for November 2022</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0159.html\" target=\"_blank\">HPR Volunteers</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3741#1\" target=\"_blank\">Comment 1</a>:\nZen_floater2 on 2022-12-05:\n\"Freedom VS Free\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3744#comments\" target=\"_blank\">hpr3744</a></strong>\n(2022-12-08) \"<em>Advent of code Day 1 - 4</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0382.html\" target=\"_blank\">Daniel Persson</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3744#1\" target=\"_blank\">Comment 1</a>:\nTrey on 2022-12-08:\n\"Fun with Advent of Code (AoC)\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3746#comments\" target=\"_blank\">hpr3746</a></strong>\n(2022-12-12) \"<em>Cpuinfo</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0078.html\" target=\"_blank\">Klaatu</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3746#1\" target=\"_blank\">Comment 1</a>:\nzloster on 2022-12-12:\n\"A tool with very detailed information about the cache configuration of the CPUs\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3750#comments\" target=\"_blank\">hpr3750</a></strong>\n(2022-12-16) \"<em>Southern Arizona</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0198.html\" target=\"_blank\">Ahuka</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3750#1\" target=\"_blank\">Comment 1</a>:\nWindigo on 2022-12-17:\n\"Ajo\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3750#2\" target=\"_blank\">Comment 2</a>:\nbrian-in-ohio on 2022-12-17:\n\"history\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3754#comments\" target=\"_blank\">hpr3754</a></strong>\n(2022-12-22) \"<em>GOD probably will use a Chromebook</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0377.html\" target=\"_blank\">Zen_Floater2</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3754#1\" target=\"_blank\">Comment 1</a>:\nBill Dietrich on 2022-12-24:\n\"Twitter\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3756#comments\" target=\"_blank\">hpr3756</a></strong>\n(2022-12-26) \"<em>Verify yourself on Mastodon with PGP and Keyoxide</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0078.html\" target=\"_blank\">Klaatu</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3756#1\" target=\"_blank\">Comment 1</a>:\nKen Fallon on 2022-12-27:\n\"I have done this\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3756#2\" target=\"_blank\">Comment 2</a>:\nnorrist on 2022-12-27:\n\"Me too\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3757#comments\" target=\"_blank\">hpr3757</a></strong>\n(2022-12-27) \"<em>Career changes.</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0391.html\" target=\"_blank\">Some Guy On The Internet</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3757#1\" target=\"_blank\">Comment 1</a>:\nTrey on 2022-12-27:\n\"Thanks for sharing.\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3757#2\" target=\"_blank\">Comment 2</a>:\njanedoc on 2022-12-27:\n\"Thanks for an informative show\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3757#3\" target=\"_blank\">Comment 3</a>:\nbinrc on 2022-12-28:\n\"binrc@protonmail.com\"</li></ul><br/>\n</li></ul>\n\n<h2>Mailing List discussions</h2>\n<p>\nPolicy decisions surrounding HPR are taken by the community as a whole. This\ndiscussion takes place on the <a href=\"https://hackerpublicradio.org/maillist\"\ntarget=\"_blank\">Mail List</a> which is open to all HPR listeners and\ncontributors. The discussions are open and available on the HPR server under\n<a href=\"https://hackerpublicradio.org/pipermail/hpr_hackerpublicradio.org/\">Mailman</a>.\n</p>\n<p>The threaded discussions this month can be found here:</p>\n<a href=\"https://hackerpublicradio.org/pipermail/hpr_hackerpublicradio.org/2022-December/thread.html\" target=\"_blank\">https://hackerpublicradio.org/pipermail/hpr_hackerpublicradio.org/2022-December/thread.html</a>\n\n\n<h2>Events Calendar</h2>\n<p>With the kind permission of <strong>LWN.net</strong> we are linking to\n<a href=\"https://lwn.net/Calendar/\" target=\"_blank\">The LWN.net Community Calendar</a>.</p>\n<p>Quoting the site:</p>\n<blockquote>This is the LWN.net community event calendar, where we track\nevents of interest to people using and developing Linux and free software.\nClicking on individual events will take you to the appropriate web\npage.</blockquote>\n\n<h2>Any other business</h2>\n<h3 id=\"older-hpr-shows-on-archive.org-phase-2\">Older HPR shows on\narchive.org, phase 2</h3>\n<p>Now that all shows from number 1 to the latest have been uploaded to\nthe Internet Archive there are other tasks to perform. We are\nreprocessing and re-uploading shows in the range 871 to 2429 as\nexplained in the Community News show notes released in <a\nhref=\"http://hackerpublicradio.org/eps.php?id=3586#older-hpr-shows-on-archive.org-phase-2\">May\n2022</a>. We are keeping a running total here to show progress:</p>\n<table>\n<tr>\n<th>\nMonth\n</th>\n<th>\nMonth count\n</th>\n<th>\nRunning total\n</th>\n<th>\nRemainder\n</th>\n</tr>\n<tr>\n<td>\n2022-04\n</td>\n<td>\n130\n</td>\n<td>\n130\n</td>\n<td>\n1429\n</td>\n</tr>\n<tr>\n<td>\n2022-05\n</td>\n<td>\n140\n</td>\n<td>\n270\n</td>\n<td>\n1289\n</td>\n</tr>\n<tr>\n<td>\n2022-06\n</td>\n<td>\n150\n</td>\n<td>\n420\n</td>\n<td>\n1139\n</td>\n</tr>\n<tr>\n<td>\n2022-07\n</td>\n<td>\n155\n</td>\n<td>\n575\n</td>\n<td>\n984\n</td>\n</tr>\n<tr>\n<td>\n2022-08\n</td>\n<td>\n155\n</td>\n<td>\n730\n</td>\n<td>\n829\n</td>\n</tr>\n<tr>\n<td>\n2022-09\n</td>\n<td>\n150\n</td>\n<td>\n880\n</td>\n<td>\n679\n</td>\n</tr>\n<tr>\n<td>\n2022-10\n</td>\n<td>\n155\n</td>\n<td>\n1035\n</td>\n<td>\n524\n</td>\n</tr>\n<tr>\n<td>\n2022-11\n</td>\n<td>\n230\n</td>\n<td>\n1265\n</td>\n<td>\n294\n</td>\n</tr>\n<tr>\n<td>\n2022-12\n</td>\n<td>\n294\n</td>\n<td>\n1559\n</td>\n<td>\n0\n</td>\n</tr>\n</table>\n<p>\n<small><small>Table updated: 2022-12-29 20:54:45</small></small>\n</p>\n<h3>\nThanks to all 51 HPR contributors in 2022!\n</h3>\n<p>\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/correspondents/0198.html\">Ahuka</a>,\n<a href=\"https://hackerpublicradio.org/correspondents/0268.html\">Andrew\nConway</a>,\n<a href=\"https://hackerpublicradio.org/correspondents/0318.html\">Archer72</a>,\n<a href=\"https://hackerpublicradio.org/correspondents/0300.html\">b-yeezi</a>,\n<a href=\"https://hackerpublicradio.org/correspondents/0246.html\">Beeza</a>,\n<a href=\"https://hackerpublicradio.org/correspondents/0288.html\">beni</a>,\n<a href=\"https://hackerpublicradio.org/correspondents/0406.html\">binrc</a>,\n<a href=\"https://hackerpublicradio.org/correspondents/0396.html\">BlacKernel</a>,\n<a href=\"https://hackerpublicradio.org/correspondents/0326.html\">Brian\nin Ohio</a>,\n</li>\n<li>\n<a href=\"https://hackerpublicradio.org/correspondents/0380.html\">Carl</a>,\n<a href=\"https://hackerpublicradio.org/correspondents/0413.html\">CCHits.net\nTeam</a>,\n<a href=\"https://hackerpublicradio.org/correspondents/0407.html\">Celeste</a>,\n<a href=\"https://hackerpublicradio.org/correspondents/0152.html\">Claudio\nMiranda</a>,\n<a href=\"https://hackerpublicradio.org/correspondents/0382.html\">Daniel\nPersson</a>,\n<a href=\"https://hackerpublicradio.org/correspondents/0225.html\">Dave\nMorriss</a>,\n<a href=\"https://hackerpublicradio.org/correspondents/0194.html\">Deltaray</a>,\n<a href=\"https://hackerpublicradio.org/correspondents/0399.html\">dnt</a>,\n<a href=\"https://hackerpublicradio.org/correspondents/0309.html\">folky</a>,\n</li>\n<li>\n<a href=\"https://hackerpublicradio.org/correspondents/0410.html\">Hipernike</a>,\n<a href=\"https://hackerpublicradio.org/correspondents/0269.html\">Honkeymagoo</a>,\n<a href=\"https://hackerpublicradio.org/correspondents/0159.html\">HPR\nVolunteers</a>,\n<a href=\"https://hackerpublicradio.org/correspondents/0369.html\">Jeroen\nBaten</a>,\n<a href=\"https://hackerpublicradio.org/correspondents/0243.html\">Jezra</a>,\n<a href=\"https://hackerpublicradio.org/correspondents/0129.html\">JWP</a>,\n<a href=\"https://hackerpublicradio.org/correspondents/0030.html\">Ken\nFallon</a>,\n<a href=\"https://hackerpublicradio.org/correspondents/0414.html\">Kinghezy</a>,\n<a href=\"https://hackerpublicradio.org/correspondents/0078.html\">Klaatu</a>,\n</li>\n<li>\n<a href=\"https://hackerpublicradio.org/correspondents/0111.html\">knightwise</a>,\n<a href=\"https://hackerpublicradio.org/correspondents/0403.html\">Lee</a>,\n<a href=\"https://hackerpublicradio.org/correspondents/0405.html\">Lurking\nPrion</a>,\n<a href=\"https://hackerpublicradio.org/correspondents/0412.html\">m0dese7en</a>,\n<a href=\"https://hackerpublicradio.org/correspondents/0401.html\">Mechatroniac</a>,\n<a href=\"https://hackerpublicradio.org/correspondents/0384.html\">monochromec</a>,\n<a href=\"https://hackerpublicradio.org/correspondents/0201.html\">MrX</a>,\n<a href=\"https://hackerpublicradio.org/correspondents/0342.html\">norrist</a>,\n<a href=\"https://hackerpublicradio.org/correspondents/0398.html\">one_of_spoons</a>,\n</li>\n<li>\n<a href=\"https://hackerpublicradio.org/correspondents/0036.html\">operat0r</a>,\n<a href=\"https://hackerpublicradio.org/correspondents/0411.html\">Paul\nJ</a>,\n<a href=\"https://hackerpublicradio.org/correspondents/0128.html\">pokey</a>,\n<a href=\"https://hackerpublicradio.org/correspondents/0293.html\">Rho`n</a>,\n<a href=\"https://hackerpublicradio.org/correspondents/0404.html\">Sarah</a>,\n<a href=\"https://hackerpublicradio.org/correspondents/0391.html\">Some\nGuy On The Internet</a>,\n<a href=\"https://hackerpublicradio.org/correspondents/0408.html\">Stache_AF</a>,\n<a href=\"https://hackerpublicradio.org/correspondents/0402.html\">takov751</a>,\n<a href=\"https://hackerpublicradio.org/correspondents/0392.html\">timttmy</a>,\n</li>\n<li>\n<a href=\"https://hackerpublicradio.org/correspondents/0338.html\">Tony\nHughes AKA TonyH1212</a>,\n<a href=\"https://hackerpublicradio.org/correspondents/0394.html\">Trey</a>,\n<a href=\"https://hackerpublicradio.org/correspondents/0389.html\">TrumpetJohn</a>,\n<a href=\"https://hackerpublicradio.org/correspondents/0364.html\">Tuula</a>,\n<a href=\"https://hackerpublicradio.org/correspondents/0196.html\">Windigo</a>,\n<a href=\"https://hackerpublicradio.org/correspondents/0377.html\">Zen_Floater2</a>.\n</li>\n</ul>\n</p>\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
(3504,'2022-01-06','James Webb Space Telescope',2718,'Andrew and Dave watch the launch of the JWST','<h2 id=\"overview\">Overview</h2>\r\n<p>On Christmas Day 2021 at 12:20 UTC the James Webb Space Telescope was launched. This is the largest telescope ever sent into space and the project has been delayed for many years. The entire astronomical community was very nervous about the launch and about the phase that will follow as the telescope is set up for use.</p>\r\n<p><a href=\"https://hackerpublicradio.org/correspondents/0268.html\" title=\"Andrew Conway\">Andrew Conway</a> was previously a professional Astronomer, and <a href=\"https://hackerpublicradio.org/correspondents/0225.html\" title=\"Dave Morriss\">Dave</a> is very interested in the subject as an amateur. They got together on Mumble to witness the launch, and the dialogue was recorded and is presented here.</p>\r\n<h2 id=\"the-jwst\">The JWST</h2>\r\n<p>Quote from <a href=\"https://en.wikipedia.org/wiki/James_Webb_Space_Telescope\" title=\"James Webb Space Telescope\">Wikipedia</a> (a page that is being updated as the project proceeds):</p>\r\n<blockquote>\r\n<p>The James Webb Space Telescope (JWST) is a space telescope developed by NASA with contributions from the European Space Agency (ESA), and the Canadian Space Agency (CSA). The telescope is named after James E. Webb, who was the administrator of NASA from 1961 to 1968 and played an integral role in the Apollo program. It is intended to succeed the Hubble Space Telescope as NASA’s flagship mission in astrophysics. JWST was launched 25 December 2021 on Ariane flight VA256. It is designed to provide improved infrared resolution and sensitivity over Hubble, and will enable a broad range of investigations across the fields of astronomy and cosmology, including observations of some of the most distant events and objects in the Universe such as the formation of the first galaxies, and allowing detailed atmospheric characterization of potentially habitable exoplanets.</p>\r\n<p>JWST’s primary mirror, the Optical Telescope Element, consists of 18 hexagonal mirror segments made of gold-plated beryllium which combine to create a 6.5 meter (21 ft 4 inch) diameter mirror – considerably larger than Hubble’s 2.4 m (7.9 ft) mirror. Unlike Hubble, which observes in the near ultraviolet, visible, and near infrared (0.1–1.0 μm) spectra, JWST will observe in a lower frequency range, from long-wavelength visible light (red) through mid-infrared (0.6–28.3 μm). This will enable it to observe high-redshift objects that are too old and too distant for Hubble. The telescope must be kept very cold to observe in the infrared without interference, so it will be deployed in space near the Sun–Earth L2 Lagrange point, about 1.5 million kilometers (930,000 mi) from Earth. A large sunshield made of silicon- and aluminum-coated Kapton will keep its mirror and instruments below 50 K (−223 °C; −370 °F).</p>\r\n<p>The NASA Goddard Space Flight Center (GSFC) in Maryland managed the development and the Space Telescope Science Institute is operating JWST. The prime contractor was Northrop Grumman.</p>\r\n<p>Development began in 1996 for a launch that was initially planned for 2007 with a US$500 million budget. There were many delays and cost overruns, including a major redesign in 2005, a ripped sunshield during a practice deployment, a recommendation from an independent review board, the COVID-19 pandemic, issues with the Ariane 5 rocket and the telescope itself, and communications issues between the telescope and the launch vehicle. Concerns among the involved scientists and engineers about the launch and deployment of the telescope have been well-described.</p>\r\n<p>Construction was completed in late 2016, when an extensive testing phase began. JWST was launched 12:20 UTC 25 December 2021 by an Ariane 5 launch vehicle from Kourou, French Guiana and was released from the upper stage 27 minutes later. The telescope was confirmed to be receiving power, and as of December 2021 is traveling to its target destination.</p>\r\n</blockquote>\r\n<h2 id=\"witnessing-the-launch\">Witnessing the launch</h2>\r\n<p>Andrew and Dave came up with the idea of watching the launch and talking about it on Mumble. Although this was not originally planned, the audio was recorded, and is included here.</p>\r\n<p><small>Note: Dave’s audio had a background hum which has been reduced a little with Audacity’s <em>notch filter</em>. Hopefully it’s not too distracting.</small></p>\r\n<p>We were puzzled that the altitude of the final stage of the rocket plus telescope decreased during launch. See the link below to a YouTube episode from Anton Petrov explaining what was going on.</p>\r\n<p>In the context of orbital mechanics, Dave spoke of another mission which is heading to Mercury but passing by inner planets to adjust speed. The name couldn’t be recalled at the time, but it was <a href=\"https://en.wikipedia.org/wiki/BepiColombo\" title=\"BeliColombo mission to Mercury\">BepiColombo</a> which is taking a 7-year path to its destination.</p>\r\n<h2 id=\"deployment-after-launch\">Deployment after launch</h2>\r\n<p>At the time of preparing these notes (2022-01-02) the JWST is en route to the (Sun-Earth) <a href=\"https://en.wikipedia.org/wiki/Lagrange_point\" title=\"Lagrange point\">L2</a> point, about 1 million miles (1.5 million kilometres) from Earth. Along the way it is preparing itself for use, deploying the features which were folded up or stowed away when it was being launched. See the <a href=\"https://www.jwst.nasa.gov/content/webbLaunch/deploymentExplorer.html\" title=\"JWST Deployment Explorer\"><em>deployment explorer</em></a> site for details of what is happening.</p>\r\n<p>There are enormous amounts of information about this project on the web, some examples of which are linked below. Searching with your favourite search engine will certainly reveal more.</p>\r\n<h2 id=\"links\">Links</h2>\r\n<ul>\r\n<li>Wikipedia article on the <a href=\"https://en.wikipedia.org/wiki/James_Webb_Space_Telescope\">James Webb Space Telescope</a></li>\r\n<li><a href=\"https://www.youtube.com/watch?v=7nT7JGZMbtM\">James Webb Space Telescope Launch — Official NASA Broadcast</a></li>\r\n<li><a href=\"https://www.youtube.com/watch?v=_abdV-HtEJQ\">YouTube video explaining why the JWST lost altitude during launch</a></li>\r\n<li>Wikipedia article on <a href=\"https://en.wikipedia.org/wiki/Lagrange_point\">Lagrange points</a></li>\r\n<li>NASA <a href=\"https://www.jwst.nasa.gov/content/webbLaunch/deploymentExplorer.html\">JWST Deployment Explorer</a></li>\r\n<li>Wikipedia article on <a href=\"https://en.wikipedia.org/wiki/BepiColombo\">BepiColombo mission</a></li>\r\n</ul>\r\n',225,0,1,'CC-BY-SA','astronomy,telescope,rocket launch,JWST,NASA,ESA,CSA',0,0,1),
(3506,'2022-01-10','HPR CONTEST 2022 01',119,'I give away 50$ prize !','<h3 id=\"upload-today\">Upload today!</h3>\r\n<p><a href=\"https://hackerpublicradio.org/calendar.php\" class=\"uri\">https://hackerpublicradio.org/calendar.php</a></p>\r\n<h3 id=\"rules\">RULES:</h3>\r\n<ul>\r\n<li>only new host or existing host interviewing a 3rd party</li>\r\n<li>I pick the winner</li>\r\n<li>don\'t abuse the system to win the prize ;P</li>\r\n</ul>\r\n',36,0,1,'CC-BY-SA','contest',0,0,1),
(3529,'2022-02-10','Linux Inlaws S01E48: Year Two of the Five Year Plan',3127,'The two ageing heroes discuss the past year in review','<p>Right into the third year of the first five-year plan our two ageing heroes\r\ndiscuss the past year in review (blatantly stealing this concept from other\r\npopular podcasts), focussing on the hotter episodes of second year and\r\nprogress with increasing the number of active listeners from two to five and\r\nbeyond. Also, major fuck-ups and lessons learned from them are revealed\r\nincluding some ranting about badly designed and implemented software never\r\nmind documentation.</p>\r\n<h2>Links:</h2>\r\n<ul>\r\n<li>Shameless self-promoting link to the Redis presentation at the 2021 MiniDebConf in Regensburg (among other things): <a href=\"https://meetings-archive.debian.net/pub/debian-meetings/2021/MiniDebConf-Regensburg\" target=_blank>https://meetings-archive.debian.net/pub/debian-meetings/2021/MiniDebConf-Regensburg</a></li>\r\n<li>Grumpy Old Coders: <a href=\"https://grumpy-old-coders.org\" target=_blank>https://grumpy-old-coders.org</a></li>\r\n</ul>\r\n',384,111,1,'CC-BY-SA','2021, review, communism, five year plan, Grumpy Old Coders, MiniDebConf',0,0,1),
(3514,'2022-01-20','Hacking Stories: Soft Drink',1270,'I talk about old pentest stories','<p>Mass unlock/powershell</p>\r\n<p>Link to <a href=\"https://github.com/freeload101/SCRIPTS/blob/ab7f96678e488f7ac6209ac45d4cfe8ca090920b/Windows_Powershell_ps/NOTES.ps1#L175\">NOTES.ps1</a></p>\r\n',36,0,1,'CC-BY-SA','hacking stories',0,0,1),
(3535,'2022-02-18','template Haskell',2849,'turturto talks how she\'s using template Haskell to cut down amount of code she writes','<p>There\'s certain amount of boilerplate code in my game that keeps repeating time after time. I can\'t quite remove it, but I can hide it with template haskell.</p>\r\n<h2 id=\"newtype-recap\">newtype recap</h2>\r\n<p>I\'ll be using <code>PlanetName</code> as an example throughout the show. <code>newtype</code> is Haskell\'s way of defining a new type, that wraps around an old type. This lets us to give better meaning to the wrapped type. Instead of talking about <code>Text</code>, we can talk about <code>PlanetName</code> and we won\'t accidentally mix it up with <code>StarName</code> or <code>ContentsOfAlexandrianLibrary</code>. It comes with no performance cost at all, as the wrapping is removed during the compilation.</p>\r\n<p>Below is how our <code>PlanetName</code> is defined:</p>\r\n<pre><code>newtype PlanetName\r\n   = MkPlanetName {_unPlanetName :: Text}\r\n   deriving (Show, Read, Eq)\r\n</code></pre>\r\n<p>It has:</p>\r\n<ul>\r\n<li>type constructor <code>PlanetName</code></li>\r\n<li>data constructor <code>MkPlanetName</code></li>\r\n<li>single field <code>_unPlanetName</code></li>\r\n<li>type for that field <code>Text</code></li>\r\n<li>deriving clause, telling compiler to automatically generate <code>Show</code>, <code>Read</code> and <code>Eq</code> instances</li>\r\n</ul>\r\n<p>If it were wrapping a <code>Integer</code>, we would add <code>Ord</code> and <code>Num</code> instances too.</p>\r\n<p>These instances give us some basic functions that we can use to turn out value into <code>String</code> and back or compare two values to see if they\'re equal or not. <code>Ord</code> lets us compare their relative size and <code>Num</code> adds some basic arithmetics like addition and subtraction.</p>\r\n<p>Remember, type constructor is used when talking about the type (function signatures, declaring type of a value, etc.), while data constructor is used to create values of the type (\"Earth\", \"Mars\", etc.). <code>isPlanet :: PlanetName -&gt; Bool</code> states that <code>isPlanet</code> function takes one parameter of type <code>PlanetName</code> and returns value of type <code>Bool</code>. <code>planet = MkPlanetName \"Earth\"</code> creates a new value <code>planet</code>, that has type <code>PlanetName</code> and which value is <code>MkPlanetName \"Earth\"</code>.</p>\r\n<h2 id=\"boilerplate\">Boilerplate</h2>\r\n<p>When <code>PlanetName</code> is defined, I need to add some instances by hand: <code>IsString</code>, <code>ToJSON</code>, <code>FromJSON</code>, <code>PersistField</code> and <code>PersistFieldSql</code>.</p>\r\n<p><code>IsString</code> lets me use string literals in code, without having to call the data constructor. Compiler is smart enough to infer from context if string I typed should be <code>PlanetName</code> or something else.</p>\r\n<p><code>ToJSON</code> and <code>FromJSON</code> are used to turn value to and from json for transferring back and forth between client and server. In json our value is just simple string, but we still need to program that transformation.</p>\r\n<p><code>PersistFieldSql</code> tells Persistent (database layer I\'m using) what type of database field should be created to hold this data in database.</p>\r\n<p><code>PersistField</code> contains functions for serializing our value to database and loading it from there.</p>\r\n<p>Below is full code that I want to abstract out as much as I can:</p>\r\n<pre><code>newtype PlanetName\r\n   = MkPlanetName {_unPlanetName :: Text}\r\n   deriving (Show, Read, Eq)\r\n\r\ninstance IsString PlanetName where\r\n   fromString = (MkPlanetName . fromString)\r\n\r\ninstance ToJSON PlanetName where\r\n   toJSON = (toJSON . _unPlanetName)\r\n\r\ninstance FromJSON PlanetName where\r\n   parseJSON = (withText &quot;PlanetName&quot;) (return . MkPlanetName)\r\n\r\ninstance PersistField PlanetName where\r\n   toPersistValue (MkPlanetName s) = PersistText s\r\n   fromPersistValue (PersistText s) = (Right $ MkPlanetName s)\r\n   fromPersistValue _ = Left &quot;Failed to deserialize&quot;\r\n\r\ninstance PersistFieldSql PlanetName where\r\n   sqlType _ = SqlString\r\n</code></pre>\r\n<h2 id=\"template-haskell\">Template Haskell</h2>\r\n<p>Template Haskell is an extension that adds metaprogramming capabilities to Haskell. One can write function that generates Haskell code and call it in appropriate place in source file. During compilation the function gets executed and resulting code injected in source file. After this source file is compiled normally. If you have used lisp macros, this is the similar thing.</p>\r\n<h2 id=\"generating-the-code\">Generating the code</h2>\r\n<p>We want a function that can be called like <code>$(makeDomainType \"PlanetName\" \'\'Text)</code> and it will create all the boiler plate for us.</p>\r\n<p>The function is show below:</p>\r\n<pre><code>makeDomainType :: String -&gt; Name -&gt; Q [Dec]\r\nmakeDomainType name fType = do\r\n    tq &lt;- reify fType\r\n    case tq of\r\n        TyConI (DataD _ tName _ _ _ _) -&gt;\r\n            selectDomainType name tName\r\n        _ -&gt; do\r\n            Language.Haskell.TH.reportError &quot;Only simple types are supported&quot;\r\n            return []\r\n</code></pre>\r\n<p><code>reify</code> is interesting function. When called during compile time and given a name, it\'ll figure what the name refers to and construct datastructure that contains relevant information about the thing. If you were to give it name of a function, you would have access to code inside of the function and could introspect it.</p>\r\n<p>Here we\'re using <code>tq &lt;- reify fType</code> to find out what kind of type our code should wrap. Code uses pattern matching to match <code>TyConI (DataD _ tName _ _ _ _)</code>. This is referring to a type constructor. In all other cases (more complex types, functions and so on), code reports and error.</p>\r\n<p>Since code should support different types of types and the respective generated code differs, next there\'s check to find out what kind of code to generate:</p>\r\n<pre><code>selectDomainType :: String -&gt; Name -&gt; Q [Dec]\r\nselectDomainType name fType\r\n    | fType == &#39;&#39;Text = makeTextDomainType name\r\n    | fType == &#39;&#39;Int  = makeIntDomainType name\r\n    | otherwise = do\r\n                    Language.Haskell.TH.reportError &quot;Unsupported type&quot;\r\n                    return []\r\n</code></pre>\r\n<p>This uses guard clause to check if <code>fType</code> is <code>Text</code> or <code>Int</code> and call respective function to generate it. Again, if there\'s no match, code reports an error.</p>\r\n<p>I could have written a function that generates all the code, but that would have been pretty long and hard to maintain. Instead of that, I opted to split generation in parts. <code>makeTextDomainType</code> calls these functions, one at a time and combines the results together to form the final code to be generated.</p>\r\n<pre><code>makeTextDomainType :: String -&gt; Q [Dec]\r\nmakeTextDomainType name = do\r\n    td &lt;- makeNewTypeDefinition name &#39;&#39;Text\r\n    si &lt;- makeIsStringInstance name\r\n    tj &lt;- makeToJSONInstance name\r\n    fj &lt;- makeFromJSONInstanceForText name\r\n    mp &lt;- makePersistFieldInstanceForText name\r\n    mps &lt;- makePersistFieldSqlInstance name &#39;&#39;Text\r\n    return $ td ++ si ++ tj ++ fj ++ mp ++ mps\r\n</code></pre>\r\n<p>Some of the functions called are specific for <code>Text</code> type, while others are written to work with <code>Text</code> and <code>Int</code>. The latter ones have extra parameter passed in to indicate which type of code should be generated.</p>\r\n<h2 id=\"actual-code-generation\">Actual code generation</h2>\r\n<p>Now we\'re getting into actual code generation. First one is <code>makeNewTypeDefinition</code>, which generates code for <code>newtype</code>.</p>\r\n<pre><code>makeNewTypeDefinition :: String -&gt; Name -&gt; Q [Dec]\r\nmakeNewTypeDefinition name fType = do\r\n    deriv &lt;- derivClausForNewType fType\r\n    return $\r\n        [NewtypeD []\r\n                 (mkName name)\r\n                 []\r\n                 Nothing\r\n                 (RecC (mkName $ &quot;Mk&quot; ++ name)\r\n                       [(mkName $ &quot;_un&quot; ++ name, Bang NoSourceUnpackedness NoSourceStrictness, (ConT fType))])\r\n                 [ DerivClause Nothing deriv]]\r\n</code></pre>\r\n<p>First step is to call <code>derivClausForNewType</code> to create deriving clause (we\'ll look into that just in a bit). The major part of the code consist of generating newtype definition. There\'s two ways for code generation: quoting (which works very similar to lisp macros) and writing abstract syntax tree by hand. No matter what I tried, I couldn\'t get the quoting work for newtype, so I had to write the AST out by hand. And as you can see, it\'s not particularly pleasant experience. Constructor names are short and cryptic and there\'s plenty of them there. Some major parts:</p>\r\n<ul>\r\n<li><code>NewtypeD</code> starts definition for newtype</li>\r\n<li><code>(mkName name)</code> creates <code>Name</code> for the newtype, <code>PlanetName</code> in our example</li>\r\n<li><code>RecC</code> record constuctor. We have a single record in our newtype, remember?</li>\r\n<li><code>DerivClause</code> deriving clause, which istructs compiler to autogenerate some useful instances for us</li>\r\n</ul>\r\n<p>And <code>RecC</code> takes a bunch of parameters to guide what kind of record we\'re actually creating:</p>\r\n<ul>\r\n<li><code>(mkName $ \"Mk\" ++ name)</code> creates <code>Name</code> for our record constructor, <code>MkPlanetName</code> in our case</li>\r\n<li>then there\'s a list of tuples defining fields of constructor, which has only one element in our case</li>\r\n<li>first is name of the field <code>mkName $ \"_un\" ++ name</code>, which is <code>_unPlanetName</code> in our case</li>\r\n<li><code>Bang</code> controls source packedness (that I don\'t know what it really is) and strictness (when value should be computed)</li>\r\n<li>finally, <code>ConT fType</code> creates type constructor call, indicating type of the field: <code>Text</code> in our case</li>\r\n</ul>\r\n<p>That\'s quite lot to write and keep track of. It\'s especially tedious to come back to code and figure out what it is exactly doing.</p>\r\n<p>Lets not forget our deriving clause:</p>\r\n<pre><code>derivClausForNewType :: Name -&gt; Q [Type]\r\nderivClausForNewType fType\r\n    | fType == &#39;&#39;Text = return $ (ConT . mkName) &lt;$&gt; [ &quot;Show&quot;, &quot;Read&quot;, &quot;Eq&quot; ]\r\n    | fType == &#39;&#39;Int = return $ (ConT . mkName) &lt;$&gt; [ &quot;Show&quot;, &quot;Read&quot;, &quot;Eq&quot;, &quot;Ord&quot;, &quot;Num&quot; ]\r\n    | otherwise = do Language.Haskell.TH.reportError &quot;Unsupported type&quot;\r\n                     return []\r\n</code></pre>\r\n<p>Again we\'re using guard to check if we\'re working with <code>Text</code> or <code>Int</code> and in any other case signal an error. <code>&lt;$&gt;</code> is used to call <code>(ConT . mkName)</code> function to elements in list of strings, getting back a list of type constructors.</p>\r\n<p>Next step, we create <code>IsString</code> instance for turning string literals into our domain type.</p>\r\n<pre><code>makeIsStringInstance :: String -&gt; Q [Dec]\r\nmakeIsStringInstance name = do\r\n    [d|instance IsString $(conT $ mkName name) where\r\n            fromString = $(conE $ mkName $ &quot;Mk&quot; ++ name) . fromString|]\r\n</code></pre>\r\n<p>Here I could get quoting to work. In the example, everything inside of <code>[d| ... |]</code> is quoted literally, ie. I don\'t have to bother with AST, but can just write in plain Haskell what I want the result to be. <code>$</code> that is immediately followed with another symbol is used to unquote. <code>$(conT $ mkName name)</code> executes <code>conT $ mkName name</code> and splices result inside the quote. Because <code>name</code> is a <code>String</code>, we can create a new <code>String</code> by appending <code>\"Mk\"</code> at the start of it. This creates our data constructor <code>MkPlanetName</code>. Notice how we use <code>conT</code> when creating a type constructor and <code>conE</code> for applying data constructor.</p>\r\n<p>For transforming our domain type to and from json we need <code>ToJSON</code> and <code>FromJSON</code> instances. Generating them is very similar than generating <code>IsString</code> instance, but I have included them below for sake of completeness.</p>\r\n<pre><code>makeToJSONInstance :: String -&gt; Q [Dec]\r\nmakeToJSONInstance name = do\r\n    [d|instance ToJSON $(conT $ mkName name) where\r\n            toJSON = toJSON . $(varE $ mkName $ &quot;_un&quot; ++ name)|]\r\n\r\nmakeFromJSONInstanceForText :: String -&gt; Q [Dec]\r\nmakeFromJSONInstanceForText name = do\r\n    [d|instance FromJSON $(conT $ mkName name) where\r\n            parseJSON =\r\n                withText name\r\n                    (return . $(conE $ mkName $ &quot;Mk&quot; ++ name))|]\r\n</code></pre>\r\n<p>Next we\'ll take serializing to and from database. Since Persistent takes care of the details, it\'s enough that we have two instances that interface with Persistent. First one of them is <code>PersistField</code> as show below:</p>\r\n<pre><code>makePersistFieldInstanceForText :: String -&gt; Q [Dec]\r\nmakePersistFieldInstanceForText name = do\r\n    let constName = mkName $ &quot;Mk&quot; ++ name\r\n        constPatt = conP constName [varP $ mkName &quot;s&quot;]\r\n        pTextPatt = conP (mkName &quot;PersistText&quot;) [varP $ mkName &quot;s&quot;]\r\n    [d|instance PersistField $(conT $ mkName name) where\r\n            toPersistValue $constPatt =\r\n                PersistText s\r\n\r\n            fromPersistValue $pTextPatt =\r\n                Right $ $(conE constName) s\r\n\r\n            fromPersistValue _ =\r\n                Left &quot;Failed to deserialize&quot;|]\r\n</code></pre>\r\n<p>This has more code into it as the type class requires us to implement three functions. Imagine how tedious this would be to write out as plain AST. But thanks to quoting, we can write most of the code as it were regular Haskell and just splice in the parts that vary.</p>\r\n<p>First notable part in it is <code>constPatt = conP constName [varP $ mkName \"s\"]</code>, which creates a pattern used in pattern matching. When <code>toPersistValue</code> is called with <code>MkPlanetName s</code> as parameter, our pattern matches and we have access to <code>s</code>. When then call data constructor <code>PersistText s</code> and let Persistent to save this newly created value into database.</p>\r\n<p>Second pattern in the code is <code>conP (mkName \"PersistText\") [varP $ mkName \"s\"]</code> and we use it in <code>fromPersistValue</code> function. So when that function is called with <code>PersistText s</code>, our pattern matches and we have access to <code>s</code>. Which we then use to call <code>MkPlanetName s</code> to construct our domain type. If <code>fromPersistValue</code> would be called with something else, say numeric value from database, <code>fromPersistValue _</code> pattern matches and we\'ll report an error. This normally shouldn\'t happen, but it\'s good practice to always cover all patterns, otherwise we get a nasty runtime exception and whole program grinds to halt.</p>\r\n<p>Last piece in our long puzzle is <code>PersistFieldSql</code>, which tells Persistent the type of the backing field in database.</p>\r\n<pre><code>makePersistFieldSqlInstance :: String -&gt; Name -&gt; Q [Dec]\r\nmakePersistFieldSqlInstance name fType = do\r\n    let typeName = mkName name\r\n    let backingType = selectBackingSqlType fType\r\n    [d|instance PersistFieldSql $(conT typeName) where\r\n            sqlType _ = $backingType|]\r\n\r\nselectBackingSqlType :: Name -&gt; ExpQ\r\nselectBackingSqlType fType\r\n    | fType == &#39;&#39;Text = conE $ mkName &quot;SqlString&quot;\r\n    | fType == &#39;&#39;Int  = conE $ mkName &quot;SqlInt64&quot;\r\n    | otherwise = do Language.Haskell.TH.reportError &quot;Unsupported type&quot;\r\n                     return $ ConE $ mkName &quot;SqlString&quot;\r\n</code></pre>\r\n<p>This is probably starting to look familiar to you by now. We create instance of <code>PersistFieldSql</code> for our domain type. For <code>Text</code> we want to save data as <code>SqlString</code> and for <code>Int</code> we use <code>SqlInt64</code>. The actual, concrete and definite, column type is actually selected by Persistent based on this information. Persistent supports different kinds of databases, so it\'ll take care of mapping this information for the actual database product we\'re using.</p>\r\n<h2 id=\"in-closing\">In closing</h2>\r\n<p>Using template Haskell can cut down amount of boiler plate code. It also lets you create new abstractions that might not be possible with the tools offered by regular Haskell. All this is nice until things don\'t work as planned and you have to figure out why. Debugging complicated template Haskell, especially if written by somebody else, can be tedious.</p>\r\n<p>As usual, if you have any questions, comments or feedback, feel free to reach out for me via email or in fediverse where I\'m <code>Tuula@tech.lgbt</code>. Or even better, record your own episode telling us where you use template Haskell or why did you choose not to use it at all.</p>\r\n<p>ad astra!</p>\r\n',364,0,0,'CC-BY-SA','haskell, metaprogramming, template haskell',0,0,1),
(3516,'2022-01-24','Rant about RX',1303,'This is a rant mostly about prescriptions and health care','<p>It\'s a rant mostly about prescriptions and health care</p>\r\n',36,100,1,'CC-BY-SA','rant',0,0,1),
(3507,'2022-01-11','USB Turntable fix and sound journey',528,'USB Turntable fix and sound journey with arecord, asound and ffmpeg','<p>Partial list of albums</p>\r\n<ul>\r\n<li>Journey - Frontiers</li>\r\n<li>Journey - Evolution</li>\r\n<li>Journey - Greatest Hits</li>\r\n<li>Journey - Departure</li>\r\n<li>Chicago - 2 albums - unknown titles</li>\r\n<li>John Denver - Rocky Mountain Christmas</li>\r\n<li>Inside Star Trek (1976)\r\n<ul>\r\n<li>SIDE I Inside Star Trek Star Trek Theme William Shatner Meets Captain Kirk The Origin of Spock Sarek\'s Son Spock The Questor Affair</li>\r\n<li>SIDE II The Enterprise Runs Aground McCoy\'s Rx for Life The Star Trek Philosophy Asimov\'s World of Science Fiction A Letter From a Network Censor The Star Trek Dream Ballad I/Ballad II)*</li>\r\n</ul></li>\r\n</ul>\r\n<p><em>Inside Star Trek album: Cover</em><br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3507/image_001.png\"><img\r\nsrc=\"https://hackerpublicradio.org/eps/hpr3507/image_001_thumbnail.png\"\r\nalt=\"Inside Star Trek album: Cover\" /></a> <br/><small><small><em>Click the\r\nthumbnail to see the full-sized image</em></small></small> -  -  </p>\r\n<p><em>Inside Star Trek album: Contents</em><br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3507/image_002.png\"><img src=\"https://hackerpublicradio.org/eps/hpr3507/image_002_thumbnail.png\" alt=\"Inside Star Trek album: Contents\" /></a> <br/><small><small><em>Click the thumbnail to see the full-sized image</em></small></small> -  - </p>\r\n<p>I found a turntable at the thrift store, and the spindle ran, but the platter did not. The belt had slipped off, and here is the fix.</p>\r\n<ul>\r\n<li><a href=\"https://www.youtube.com/watch?app=desktop&amp;v=rXkOoaIVsvE\" class=\"uri\">https://www.youtube.com/watch?app=desktop&amp;v=rXkOoaIVsvE</a></li>\r\n</ul>\r\n<p><em>How to remove platter</em><br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3507/image_003.png\"><img src=\"https://hackerpublicradio.org/eps/hpr3507/image_003_thumbnail.png\" alt=\"How to remove platter\" /></a> <br/><small><small><em>Click the thumbnail to see the full-sized image</em></small></small> -  - </p>\r\n<p><em>Belt placement</em><br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3507/image_004.png\"><img src=\"https://hackerpublicradio.org/eps/hpr3507/image_004_thumbnail.png\" alt=\"Belt placement\" /></a> <br/><small><small><em>Click the thumbnail to see the full-sized image</em></small></small> -  - </p>\r\n<h2 id=\"routing-audio-from-a-usb-turntable-to-hdmi-using-a-raspberry-pi\">Routing Audio from a USB Turntable to HDMI using a Raspberry Pi</h2>\r\n<ul>\r\n<li><a href=\"https://www.rickmakes.com/routing-audVmmsio-from-a-usb-turntable-to-hdmi-using-a-raspberry-pi\" class=\"uri\">https://www.rickmakes.com/routing-audVmmsio-from-a-usb-turntable-to-hdmi-using-a-raspberry-pi</a></li>\r\n</ul>\r\n<p>Send input to output</p>\r\n<pre><code>alsaloop -t 500000 -C hw:CARD=CODEC,DEV=0 -P default:CARD=b1</code></pre>\r\n<h2 id=\"alsaloop-man-page\">alsaloop man page</h2>\r\n<ul>\r\n<li><p><a href=\"https://linux.die.net/man/1/alsaloop\" class=\"uri\">https://linux.die.net/man/1/alsaloop</a></p>\r\n<p>-t <usec> | --tlatency=<usec> Requested latency in usec (1/1000000sec).</p></li>\r\n</ul>\r\n<p>Parameter b1 is found by</p>\r\n<pre><code>pi@retropie:~ $ aplay -l\r\n**** List of PLAYBACK Hardware Devices ****\r\ncard 0: b1 [bcm2835 HDMI 1], device 0: bcm2835 HDMI 1 [bcm2835 HDMI 1]</code></pre>\r\n<h2 id=\"raspberry-pi-as-a-usb-audio-capture-device\">Raspberry Pi as a USB audio capture device</h2>\r\n<ul>\r\n<li><p><a href=\"https://scruss.com/blog/2012/11/20/raspberry-pi-as-a-usb-audio-capture-device\" class=\"uri\">https://scruss.com/blog/2012/11/20/raspberry-pi-as-a-usb-audio-capture-device</a></p>\r\n<p>arecord -D \'pulse\' -V stereo -c 2 -f dat -d 900 out.wav</p>\r\n<p>arecord -D \'hw:CARD=CODEC,DEV=0\' -V stereo -c 2 -f dat -d 900 out.wav</p></li>\r\n</ul>\r\n<p>Used <code>hw:CARD=CODEC,DEV=0</code> derived from \'arecord -L\'</p>\r\n<pre><code>hw:CARD=CODEC,DEV=0\r\nUSB Audio CODEC, USB Audio\r\nDirect hardware device without any conversions</code></pre>\r\n<h2 id=\"arecord-man-page\">arecord man page</h2>\r\n<ul>\r\n<li><a href=\"https://linux.die.net/man/1/arecord\" class=\"uri\">https://linux.die.net/man/1/arecord</a></li>\r\n</ul>\r\n<pre><code>   -D, --device=NAME\r\n    Select PCM by name\r\n    -V, --vumeter=TYPE\r\n    Specifies the VU-meter type, either stereo or mono. The stereo VU-meter is available only for 2-channel stereo samples with interleaved format.\r\n    -c, --channels=#\r\n    The number of channels. The default is one channel. Valid values are 1 through 32.\r\n    -f --format=FORMAT\r\n    Sample format\r\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 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 S20_3BE U20_3LE U20_3BE S18_3LE S18_3BE U18_3LE\r\n    Some of these may not be available on selected hardware\r\n    The available format shortcuts are:\r\n\r\n    -f cd (16 bit little endian, 44100, stereo) [-f S16_LE -c2 -r44100]\r\n    -f cdr (16 bit big endian, 44100, stereo) [-f S16_BE -c2 -f44100]\r\n    -f dat (16 bit little endian, 48000, stereo) [-f S16_LE -c2 -r48000]</code></pre>\r\n<h2 id=\"recording-to-flac\">Recording to FLAC</h2>\r\n<ul>\r\n<li><a href=\"https://unix.stackexchange.com/questions/583892/how-can-one-record-mic-audio-straight-to-a-flac-file\" class=\"uri\">https://unix.stackexchange.com/questions/583892/how-can-one-record-mic-audio-straight-to-a-flac-file</a></li>\r\n</ul>\r\n<p>How can one record mic audio straight to a FLAC file?</p>\r\n<pre><code>ffmpeg -f alsa -ar 48000 -ac 1 -i hw:0 testfile.flac</code></pre>\r\n<h3 id=\"took-out-the--ac-1-which-downmixed-the-input-to-mono\">Took out the \"-ac 1\", which downmixed the input to mono</h3>\r\n<p>Change hw:0 to hw:2 based on</p>\r\n<pre><code>pi@retropie:~/vinyl $ arecord -l\r\n**** List of CAPTURE Hardware Devices ****\r\ncard 2: USB20 [AV TO USB2.0], device 0: USB Audio [USB Audio]\r\nSubdevices: 1/1\r\nSubdevice #0: subdevice #0\r\n\r\nffmpeg -f alsa -ar 48000 -i hw:2 testfile_stereo.flac</code></pre>\r\n<h2 id=\"ffmpeg-audio-channel-manipulation\">FFmpeg Audio Channel Manipulation</h2>\r\n<ul>\r\n<li><a href=\"https://trac.ffmpeg.org/wiki/AudioChannelManipulation\" class=\"uri\">https://trac.ffmpeg.org/wiki/AudioChannelManipulation</a></li>\r\n</ul>\r\n',318,0,0,'CC-BY-SA','Vinyl, album, Vinyl album, record album, aplay, arecord, alsaloop, ffmpeg,retro, USB turntable',0,0,1),
(3511,'2022-01-17','Podman like Vagrant',1160,'This is how I use Podman on the desktop','<p>I used to use Vagrant to spin up minimal virtual machines when I needed to test code on a different distro than what I ran. Lately I\'ve switched to <a href=\"https://podman.io\" target=\"_blank\">Podman</a>.</p>\r\n\r\n<p>Install Podman with your distribution\'s package manager.</p>\r\n\r\n<p>Configure it:</p>\r\n\r\n<pre><code>\r\n$ sudo --add-subuids 200000-265536 \\\r\n--add-subgids 200000-265536 \\\r\n$USER\r\n</code></pre>\r\n\r\n<p>Create a directory to share data between your container and your localhost:</p>\r\n\r\n<pre><code>\r\n$ mkdir data\r\n</code></pre>\r\n\r\n<p>Run a container, with your <strong>.&#47;data</strong> directory mapped to <strong>&#47;storage</strong> in the container:</p>\r\n\r\n<pre><code>\r\n$ podman run -it --volume ./data:/storage:Z busybox\r\n</code></pre>\r\n\r\n\r\n',78,8,0,'CC-BY-SA','containers, podman, docker, vagrant',0,0,1),
(3512,'2022-01-18','Auld Acquaintance',659,'flappin gums aboot auld hardware and how I use it.','<p>Toshiba Satellite L455-S5000<br />\r\n<a href=\"https://www.ifixit.com/Device/Toshiba_Satellite_L455-S5975\" class=\"uri\">https://www.ifixit.com/Device/Toshiba_Satellite_L455-S5975</a></p>\r\n<p>The script!</p>\r\n<pre><code>#!/bin/bash\r\n\r\n# target dir is ~/Photos/YYYY-MM-DD_Hm\r\ntargetDir=&quot;/home/$USER/Photos/$(date +&quot;%F_%H%M&quot;)&quot;\r\n\r\n# create the dir\r\nmkdir $targetDir\r\n\r\n# cd to dir\r\ncd $targetDir\r\n\r\n# kill all gphoto stuff\r\npkill -f gphoto2\r\n\r\n# get the files\r\ngphoto2 --get-all-files\r\n\r\n# delete all files on camera recursively\r\ngphoto2 -DR</code></pre>\r\n',243,0,0,'CC-BY-SA','auld hardware, photography',0,0,1),
(3513,'2022-01-19','HB9HNT and PA7KEN on SOTA, Summits on the Air',2595,'Summits on the Air is the combination of mountain climbing and amateur radio','<h2 id=\"links\">Links</h2>\r\n<p>You\'ll find further information under the following links:</p>\r\n<ul>\r\n<li><a href=\"https://de.wikipedia.org/wiki/Summits_on_the_Air\">Summits on the Air on Wikipedia</a></li>\r\n<li><a href=\"https://www.sota.org.uk/\">The main SOTA website</a></li>\r\n<li><a href=\"https://sotawatch.sota.org.uk/en/\">SotaWatch 3</a> where you post spots and alerts</li>\r\n<li><a href=\"https://www.sotadata.org.uk/en/\">SotaData</a> where you post your activation and chaser reports to claim points</li>\r\n<li><a href=\"https://reflector.sota.org.uk/\">SOTA Reflector</a> the SOTA internet forums</li>\r\n<li><a href=\"https://sotl.as\">SOTLAS</a> a map of SOTA summits with activations and other info</li>\r\n</ul>\r\n',288,0,1,'CC-BY-SA','ham, ham radio, hamradio, sota',0,0,1),
(3521,'2022-01-31','Upgrades to Acer Aspire 5 Slim',344,'Upgrades to Aspire 5 Slim and Specs','<h3 id=\"upgrades-to-aspire-5-slim-a515-43-r19l\">Upgrades to Aspire 5 Slim A515-43-R19L</h3>\r\n<p>Replacement for the Acer Aspire 5750</p>\r\n<p>Aspire A515-43 How to Install an Additional Hard Drive<br />\r\n<a href=\"https://www.youtube.com/watch?v=XiadRhJ70Rs\" class=\"uri\">https://www.youtube.com/watch?v=XiadRhJ70Rs</a></p>\r\n<h4 id=\"specs\">Specs</h4>\r\n<pre><code>{\r\n CPU: AMD Ryzen 3 3200U\r\n    GPU: AMD Radeon RX Vega 3\r\n    Display: 15.6&#x201D;, Full HD (1920 x 1080), IPS\r\n    Storage: 128GB SSD, NMVE\r\n    RAM: 4GB DDR4, upgradeable to 32Gb\r\n    Weight: 1.90 kg (4.2 lbs)\r\n Ports and connectivity\r\n    2x USB Type-A 2.0\r\n    1x USB Type-A 3.2 Gen 1 (5 Gbps)\r\n    HDMI\r\n}</code></pre>\r\n<h4 id=\"why\">Why?</h4>\r\n<ul>\r\n<li>The system would randomly kick me out, back to the login screen.</li>\r\n<li>This was due to low RAM (4Gb) and high RAM usage from Firefox</li>\r\n</ul>\r\n<h4 id=\"what\">What?</h4>\r\n<ul>\r\n<li>RAM: 16Gb DDR4</li>\r\n<li>HD: 500Gb spinning drive</li>\r\n</ul>\r\n<h4 id=\"other-uses-for-the-upgrade\">Other uses for the upgrade</h4>\r\n<ul>\r\n<li>Room for Virtual Machines</li>\r\n</ul>\r\n<h4 id=\"future-upgrade\">Future upgrade</h4>\r\n<ul>\r\n<li>SSD</li>\r\n</ul>\r\n<p><em>Screw locations</em><br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3521/image_001.png\"><img src=\"https://hackerpublicradio.org/eps/hpr3521/image_001_thumbnail.png\" alt=\"Screw locations\" /></a> <br/><small><small><em>Click the thumbnail to see the full-sized image</em></small></small></p>\r\n<p><em>Inside the laptop</em><br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3521/image_002.png\"><img src=\"https://hackerpublicradio.org/eps/hpr3521/image_002_thumbnail.png\" alt=\"Inside the laptop\" /></a> <br/><small><small><em>Click the thumbnail to see the full-sized image</em></small></small></p>\r\n<p><em>Power/Battery plug location</em><br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3521/image_003.png\"><img src=\"https://hackerpublicradio.org/eps/hpr3521/image_003_thumbnail.png\" alt=\"Power/Battery plug location\" /></a> <br/><small><small><em>Click the thumbnail to see the full-sized image</em></small></small></p>\r\n<p><em>Legend for inside the laptop</em><br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3521/image_004.png\"><img src=\"https://hackerpublicradio.org/eps/hpr3521/image_004_thumbnail.png\" alt=\"Legend for inside the laptop\" /></a> <br/><small><small><em>Click the thumbnail to see the full-sized image</em></small></small></p>\r\n',318,57,0,'CC-BY-SA','laptop, hardware, hardware upgrades, RAM, hard drive',0,0,1),
(3517,'2022-01-25','Hp stream laptop with Lubuntu 20.04',2257,'Laptop update','<p>Just a simple check of an old laptop with update</p>\r\n',129,0,0,'CC-BY-SA','Hp stream,Lubuntu,geko,Linux,pine64',0,0,1),
(3519,'2022-01-27','Rust 101: Episode 2 - Rolling With the Errors',3234,'In this episode, BlacKernel helps you construct a simple dice rolling application in rust.','<p>GitLab Repository: <a href=\"https://gitlab.com/BlacKernel/rust-roller\">https://gitlab.com/BlacKernel/rust-roller</a></p>\r\n<h2 id=\"rust-roller-dice-roller-tutorial-application\">Rust-Roller Dice Roller Tutorial Application</h2>\r\n<p>This is a simple dice rolling application that follows along with my <a href=\"https://hackerpublicradio.org\">Hacker Public Radio</a> course on learning the <a href=\"https://rust-lang.org\">rust programming language</a>.</p>\r\n<p>I will attempt to make the commits follow the episodes pretty closely with one commit after every episode with the episode number in the commit message.</p>\r\n<h3 id=\"usage\">Usage:</h3>\r\n<p><code>rust-roller &lt;number-of-dice&gt; &lt;number-of-sides-per-die&gt;</code></p>\r\n<h3 id=\"output\">Output:</h3>\r\n<p><code>Dice: &lt;value-of-die-1&gt; &lt;value-of-die-2&gt; ...</code></p>\r\n<p><code>Total: &lt;sum-of-all-dice-values&gt;</code></p>\r\n<hr />\r\n<h2 id=\"list-of-episodes\">List of Episodes</h2>\r\n<p><a href=\"https://hackerpublicradio.org/eps.php?id=3426\">Rust 101: Episode 0 - What in Tarnishing?</a></p>\r\n<p><a href=\"https://hackerpublicradio.org/eps.php?id=3453\">Rust 101: Episode 1 - Hello, World!</a></p>\r\n<p><a href=\"https://hackerpublicradio.org/eps.php?id=3519\">Rust 101: Episode 2 - Rolling With the Errors</a></p>\r\n<hr />\r\n<p>Contact Info:</p>\r\n<p><a href=\"https://nixnet.social/BlacKernel\">at blackernel at nixnet dot social</a></p>\r\n<p><a href=\"mailto@izzyleibowitz@pm.me\">izzyleibowitz at pm dot me</a></p>\r\n',396,25,1,'CC-BY-SA','rust, programming, dice, learning',0,0,1),
(3522,'2022-02-01','Set up your Robot Building Lab and build a $0 Robot Platform',1580,'Ep 1 of Robot Warlords of the Apocalypse, build a free robot platform/crash buggy from old printers ','<h2 id=\"be-the-assimilator-not-the-assimilated\"><em>be the assimilator not the assimilated</em></h2>\r\n<h2 id=\"setting-up-your-robot-building-lab-and-building-your-first-platform-crash-buggy.\">Setting up your robot building lab and building your first platform/ crash buggy.</h2>\r\n<h3 id=\"getting-started\">Getting started</h3>\r\n<ol type=\"a\">\r\n<li>stuff to buy:<br />\r\n\r\n<ul>\r\n<li>order Arduino Uno or kit (recommended)<br />\r\nKit is highly recommended because you can work through projects for the various sensors and relays and gain experience using sensors. This makes it easier to integrate sensors into your robot, enabling it to more effectively interact with it\'s environment. Kit should come with a case, booklet, and have links to the code involved.</li>\r\n<li>order extra Arduinos (for when you blow up the first one)</li>\r\n<li>small machine screws of various lengths with nuts and washers</li>\r\n<li>18650 4 cell battery compartment</li>\r\n<li>2 18650 1 cell compartments*</li>\r\n<li>18650 chargers (wavgat) - these plug into a usb device</li>\r\n<li>solder/flux/solder sucker (tree sap)</li>\r\n<li>perfboard</li>\r\n<li>extra dupont wires (male to male)</li>\r\n<li>extra resistors</li>\r\n<li>optional\r\n<ul>\r\n<li>ultrasonic sensors (or hack out of something)</li>\r\n<li>mp3 module</li>\r\n</ul></li>\r\n<li>L298N h-bridge modules</li>\r\n</ul></li>\r\n<li>get tools and acc:\r\n<ul>\r\n<li>solder station</li>\r\n<li>computer with internet (raspberry pi works too) - should have listened...</li>\r\n<li>adruino.cc download and install arduino IDE</li>\r\n<li>various screwdrivers, pliers, straight airplane snips, drill with assorted bits. hacksaw, ruler, soldering station, multimeter,</li>\r\n<li>parts drawers for organizing small parts,</li>\r\n<li>several rubbermaid bins or cardboard boxes for cct boards, ABS pieces, etc.</li>\r\n</ul></li>\r\n<li>Collect and disassemble post apocalyptic scraps:\r\n<ul>\r\n<li><em>safety note</em>: Be careful when disassembling; use pliers rather than your fingers as much as possible. Printers and other products can sometimes be tricky to take apart. There may not be any visible screws to remove. The case cover may just snap into place and sometimes it feels like you are going to break the part before it unsnaps. Be aware that the ABS can snap if you force it past its breaking point, it is strong but when it breaks it can have sharp edges. Be especially careful when taking apart laptop batteries. Try not to short any circuits, and watch out because the metal strips that connect the 18650 cells are very sharp. Use pliers and metal cutters and remember not to create any circuits with your metal tools!</li>\r\n</ul></li>\r\n</ol>\r\n<h3 id=\"ingredients\">Ingredients</h3>\r\n<ul>\r\n<li><p>Printers are a great source of mechanical and chassis parts, including motors. The best are the ones with scanners built-in, which means an extra stepper motor.</p>\r\n<ul>\r\n<li>motors A mid sized printer will usually have two electric motors of the same size along with a few other smaller motors and stepper motors. Have two identical printers and you will have the 4 identical motors needed. It is OK to have 2 smaller and 2 larger motors and put one pair in front and one pair in back.</li>\r\n<li>steel rods, wheels with rubber tires, gears, specialty steel plates, reed switches, rotary encoders, ir switches</li>\r\n<li>ABS parts including a power supply cover that can hold Arduino.</li>\r\n<li>Glass panel can be repurposed as solar panel with cheap Chinese solar cells.</li>\r\n</ul></li>\r\n<li><p>UPS - for relays and opto isolators</p></li>\r\n<li><p>TVs - wire, speakers, optoisolators, lots of transistors and other components in older tvs.</p></li>\r\n<li><p>laptops, power tools, cell phones - lithium ion batteries</p></li>\r\n<li><p>books: libgen.is</p>\r\n<ul>\r\n<li><a href=\"https://designingelectronics.com/\" class=\"uri\">https://designingelectronics.com/</a></li>\r\n</ul></li>\r\n</ul>\r\n<p><em>Example of useful parts</em><br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3522/20200715_184540.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3522/20200715_184540_thumbnail.jpg\" alt=\"Example of useful parts\" /></a> <br/><small><small><em>Click the thumbnail to see the full-sized image</em></small></small></p>\r\n',401,0,1,'CC-BY-SA','beam,righttorepair,robots,mechatronics,apocalypse',0,0,1),
(3545,'2022-03-04','How I make coffee',302,'Making coffee, and a podcast recommendation','<h4 id=\"coffeemaker\">Coffeemaker</h4>\r\n<ul>\r\n<li>Bunn model: Speedbrew</li>\r\n<li>Heats a reservoir to 200 &#x2109;</li>\r\n<li>Displaces a minimum of 4 cups for a fresh pot</li>\r\n</ul>\r\n<p><em>Bunn Coffeemaker and grinder</em><br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3545/image_001.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3545/image_001_thumbnail.jpg\" alt=\"Bunn Coffeemaker and grinder\" /></a> <br/><small><small><em>Click the thumbnail to see the full-sized image</em></small></small>  </p>\r\n<p><em>This was too coarse, but still had a good taste</em><br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3545/image_002.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3545/image_002_thumbnail.jpg\" alt=\"This was too coarse, but still had a good taste\" /></a> <br/><small><small><em>Click the thumbnail to see the full-sized image</em></small></small>  </p>\r\n<h4 id=\"coffee-of-the-day\">Coffee of the day</h4>\r\n<ul>\r\n<li>Door County Coffee and Tea Co.: Jingle Bell Java\r\n<ul>\r\n<li>Located in the U.S., in Sturgeon Bay, Wisconsin</li>\r\n</ul></li>\r\n</ul>\r\n<p><em>Jingle Bell Java</em><br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3545/image_003.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3545/image_003_thumbnail.jpg\" alt=\"Jingle Bell Java\" /></a> <br/><small><small><em>Click the thumbnail to see the full-sized image</em></small></small>  </p>\r\n<h4 id=\"ham-radio-crash-course\">Ham Radio Crash Course</h4>\r\n<ul>\r\n<li><p>Started by Josh Nass (KI6NAZ) as a YouTube channel,</p></li>\r\n<li><p>Ham Radio Crash Course (HRCC) has evolved into a rapidly growing community of radio enthusiasts that are excited to grow in the hobby, and help others grow as well.</p></li>\r\n<li><p><a href=\"https://www.qrz.com/db/ki6naz\" class=\"uri\">https://www.qrz.com/db/ki6naz</a></p></li>\r\n<li><p>RSS Feed</p>\r\n<ul>\r\n<li><a href=\"https://feed.podbean.com/hamradiocrashcourse/feed.xml\" class=\"uri\">https://feed.podbean.com/hamradiocrashcourse/feed.xml</a></li>\r\n</ul></li>\r\n<li><p>Youtube channel</p>\r\n<ul>\r\n<li><a href=\"https://www.youtube.com/channel/UChAu6Cof9KlfFxSbL9ytosQ\" class=\"uri\">https://www.youtube.com/channel/UChAu6Cof9KlfFxSbL9ytosQ</a></li>\r\n</ul></li>\r\n</ul>\r\n',318,88,0,'CC-BY-SA','coffee, podcast, ham radio',0,0,1),
(3538,'2022-02-23','Installing the Tenacity audio editor',272,'Installing Tenacity, and the reasons behind the fork.','<h4 id=\"audacity-vs.-tenacity\">Audacity vs. Tenacity</h4>\r\n<ul>\r\n<li><a href=\"https://www.engadget.com/audacity-privacy-policy-spyware-accusations-data-collection-210001803.html\" class=\"uri\">https://www.engadget.com/audacity-privacy-policy-spyware-accusations-data-collection-210001803.html</a></li>\r\n<li><a href=\"https://hackaday.com/2021/07/23/new-privacy-policy-gets-audacity-back-on-track\" class=\"uri\">https://hackaday.com/2021/07/23/new-privacy-policy-gets-audacity-back-on-track</a></li>\r\n</ul>\r\n<h4 id=\"tenacity-project-page\">Tenacity project page</h4>\r\n<ul>\r\n<li><a href=\"https://tenacityaudio.org\" class=\"uri\">https://tenacityaudio.org</a></li>\r\n</ul>\r\n<h5 id=\"reason-for-forking-the-audacity-project\">Reason for forking the Audacity project</h5>\r\n<p>Motivation</p>\r\n<p>Our project initially started as a fork of Audacity as a result of multiple controversies and public relation crises, which you can find out more about here:</p>\r\n<ul>\r\n<li><p><a href=\"https://github.com/audacity/audacity/issues/1213\">Privacy policy which may violate the original project\'s GPL license</a></p></li>\r\n<li><p><a href=\"https://github.com/audacity/audacity/discussions/932\">Contributor\'s License Agreement (CLA) which may violate the same GPL license</a></p></li>\r\n<li><p><a href=\"https://github.com/audacity/audacity/pull/835\">Attempts at adding telemetry using Google services for data collection</a></p></li>\r\n</ul>\r\n<p>Nevertheless, the goal of this project is to pick up what the original developers of Audacity the decades-long work by the original creators of Audacity and create an audio editor that is fresh, more modern, convenient and practical to use, with the help and the guidance of our users and our community.</p>\r\n<ul>\r\n<li><a href=\"https://github.com/tenacityteam/tenacity#motivation\" class=\"uri\">https://github.com/tenacityteam/tenacity#motivation</a></li>\r\n</ul>\r\n<h5 id=\"community-section\">Community section</h5>\r\n<ul>\r\n<li><a href=\"https://tenacityaudio.org/#community-buttons\" class=\"uri\">https://tenacityaudio.org/#community-buttons</a></li>\r\n</ul>\r\n<h5 id=\"flatpak-nightly-build\">Flatpak nightly build</h5>\r\n<ul>\r\n<li><a href=\"https://github.com/tenacityteam/tenacity-flatpak-nightly/blob/main/README.md\" class=\"uri\">https://github.com/tenacityteam/tenacity-flatpak-nightly/blob/main/README.md</a></li>\r\n</ul>\r\n<pre><code>flatpak remote-add tenacity oci+https://tenacityteam.github.io/tenacity-flatpak-nightly\r\nflatpak install tenacity org.tenacityaudio.Tenacity</code></pre>\r\n<ul>\r\n<li><h5 id=\"update-flatpak\">Update Flatpak</h5>\r\n<ul>\r\n<li><code>flatpak update tenacity org.tenacityaudio.Tenacity</code></li>\r\n</ul></li>\r\n</ul>\r\n<h4 id=\"build-instructions-for-cmake\">Build instructions for Cmake</h4>\r\n<ul>\r\n<li><a href=\"https://gist.github.com/ricemark20/17382125f04083b3cdcda3d8bed64e4a\" class=\"uri\">https://gist.github.com/ricemark20/17382125f04083b3cdcda3d8bed64e4a</a></li>\r\n</ul>\r\n<pre><code>Clone Tenacity from the Tenacity GitHub project.\r\n\r\n    $ git clone https://github.com/tenacityteam/tenacity/\r\n    $ cd tenacity\r\n\r\n    Configure Tenacity using CMake:\r\n\r\n    $ mkdir build &amp;&amp; cd build\r\n    $ cmake -G &quot;Unix Makefiles&quot; -Duse_ffmpeg=loaded ..\r\n\r\n    By default, Debug build will be configured. To change that, pass -DCMAKE_BUILD_TYPE=Release to CMake.\r\n\r\n    Build Tenacity:\r\n\r\n    $ make -j`nproc`\r\n\r\n    $ sudo make install</code></pre>\r\n<p><em>Current version:3.0.2-895-g0665614</em><br />\r\n<img src=\"https://hackerpublicradio.org/eps/hpr3538/inmage_001.png\" alt=\"Current version:3.0.2-895-g0665614\" /></p>\r\n',318,0,0,'CC-BY-SA','Tenacity, Audacity, Github, Cmake, make, audio editor, telemetry, Google, tracking',0,0,1),
(3523,'2022-02-02','The Compose key',406,'What is the compose key, and how to set it up on X, GNOME and Windows.','<p>The Compose key allows you to input any character or sequence of characters regardless what keyboard layout you use, by typing the Compose key followed by a sequence of other keys. To use it, you must activate it in your system and choose what key you want to serve as the Compose key.</p>\r\n<p>If on Windows, we don\'t judge, we understand it\'s because, like me, you have no choice, and that\'s OK, one day we\'ll all get to live the dream, until then we\'ll just make do... WinCompose enables the compose key on that wretched environment. It comes with a ton of additional sequences, plus a fancy GUI for creating your own.</p>\r\n<p>If you use X, I suggest looking at the ArchLinux Wiki: <a href=\"https://wiki.archlinux.org/title/Xorg/Keyboard_configuration#Configuring_compose_key\">https://wiki.archlinux.org/title/Xorg/Keyboard_configuration#Configuring_compose_key</a></p>\r\n<p>If you are a GNOME user, install GNOME Tweaks to activate the Compose key.</p>\r\n<p>$HOME/.XCompose</p>\r\n<pre><code>include &quot;%L&quot;\r\n&lt;Multi_key&gt; &lt;Multi_key&gt; &lt;braceleft&gt; : &quot;&amp;#123;&quot;\r\n&lt;Multi_key&gt; &lt;Multi_key&gt; &lt;braceright&gt; : &quot;&amp;#125;&quot;\r\n&lt;Multi_key&gt; &lt;Multi_key&gt; &lt;t&gt; &lt;f&gt; : &quot;(&#x256F;&#xB0;&#x25A1;&#xB0;&#xFF09;&#x256F;&#xFE35; &#x253B;&#x2501;&#x253B;&quot;\r\n&lt;Multi_key&gt; &lt;C&gt; &lt;C&gt; &lt;C&gt; &lt;P&gt; : &quot;&#x262D;&quot;\r\n</code></pre>\r\n<p>Note that that last one actually comes with X by default. In ArchLinux, all the default sequences can be found in <code>/usr/share/X11/locale/&lt;your-locale&gt;/Compose</code>. Also good to find out what to call your keys when writing your own sequences.</p>\r\n<p><code>/etc/X11/xorg.conf.d/00-keyboard.conf</code> is the file that makes the Compose key happen in X.</p>\r\n<pre><code>Section &quot;InputClass&quot;\r\n    Identifier &quot;system-keyoard&quot;\r\n    MatchIsKeyboard &quot;on&quot;\r\n    Option &quot;XkbLayout&quot; &quot;us&quot;\r\n    Option &quot;XkbModel&quot; &quot;acer_laptop&quot;\r\n    Option &quot;XkbOptions&quot; &quot;compose:ralt,ctrl:nocaps&quot;\r\nEndSection\r\n</code></pre>\r\n<p>Note that it is not recommended to edit the file above, but use <code>localectl</code> to edit it. I don\'t know why that is. To learn more about that, and all the many options available, start with <a href=\"https://wiki.archlinux.org/title/Xorg/Keyboard_configuration#Using_localectl\">https://wiki.archlinux.org/title/Xorg/Keyboard_configuration#Using_localectl</a></p>\r\n',399,0,0,'CC-BY-SA','Xorg,X11,compose,composekey',0,0,1),
(3524,'2022-02-03','Wheels Addendum - How to Reliably Attach Wheels to PAR Robot Platform',393,'The most difficult part of Post Apocalyptic Robotics - how to keep the wheels on','<p><a href=\"https://hackerpublicradio.org/eps.php?id=3522\">https://hackerpublicradio.org/eps.php?id=3522</a></p>\r\n<p>Video is already uploaded <a href=\"https://www.bitchute.com/video/HyT5Yz5bhjfS/\">https://www.bitchute.com/video/HyT5Yz5bhjfS/</a></p>\r\n<p><em>Picture 1</em><br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3524/IMG_20220121_114225.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3524/IMG_20220121_114225_thumbnail.jpg\" alt=\"Picture 1\" /></a> <br/><small><small><em>Click the thumbnail to see the full-sized image</em></small></small></p>\r\n<p><em>Picture 2</em><br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3524/IMG_20220121_114332.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3524/IMG_20220121_114332_thumbnail.jpg\" alt=\"Picture 2\" /></a> <br/><small><small><em>Click the thumbnail to see the full-sized image</em></small></small></p>\r\n<p><em>Picture 3</em><br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3524/IMG_20220121_114438.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3524/IMG_20220121_114438_thumbnail.jpg\" alt=\"Picture 3\" /></a> <br/><small><small><em>Click the thumbnail to see the full-sized image</em></small></small></p>\r\n<p><em>Picture 4</em><br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3524/IMG_20220121_114501.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3524/IMG_20220121_114501_thumbnail.jpg\" alt=\"Picture 4\" /></a> <br/><small><small><em>Click the thumbnail to see the full-sized image</em></small></small></p>\r\n<p><em>Picture 5</em><br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3524/IMG_20220121_114514.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3524/IMG_20220121_114514_thumbnail.jpg\" alt=\"Picture 5\" /></a> <br/><small><small><em>Click the thumbnail to see the full-sized image</em></small></small></p>\r\n<p><em>Picture 6</em><br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3524/IMG_20220121_114545.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3524/IMG_20220121_114545_thumbnail.jpg\" alt=\"Picture 6\" /></a> <br/><small><small><em>Click the thumbnail to see the full-sized image</em></small></small></p>\r\n<p><em>Picture 7</em><br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3524/IMG_20220121_114717.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3524/IMG_20220121_114717_thumbnail.jpg\" alt=\"Picture 7\" /></a> <br/><small><small><em>Click the thumbnail to see the full-sized image</em></small></small></p>\r\n<p><em>Picture 8</em><br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3524/IMG_20220121_114723.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3524/IMG_20220121_114723_thumbnail.jpg\" alt=\"Picture 8\" /></a> <br/><small><small><em>Click the thumbnail to see the full-sized image</em></small></small></p>\r\n<p><em>Picture 9</em><br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3524/IMG_20220121_114731.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3524/IMG_20220121_114731_thumbnail.jpg\" alt=\"Picture 9\" /></a> <br/><small><small><em>Click the thumbnail to see the full-sized image</em></small></small></p>\r\n<p><em>Picture 10</em><br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3524/IMG_20220121_114739.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3524/IMG_20220121_114739_thumbnail.jpg\" alt=\"Picture 10\" /></a> <br/><small><small><em>Click the thumbnail to see the full-sized image</em></small></small></p>\r\n<p><em>Picture 11</em><br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3524/IMG_20220121_114940.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3524/IMG_20220121_114940_thumbnail.jpg\" alt=\"Picture 11\" /></a> <br/><small><small><em>Click the thumbnail to see the full-sized image</em></small></small></p>\r\n<p><em>Picture 12</em><br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3524/IMG_20220121_115057.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3524/IMG_20220121_115057_thumbnail.jpg\" alt=\"Picture 12\" /></a> <br/><small><small><em>Click the thumbnail to see the full-sized image</em></small></small></p>\r\n',401,0,0,'CC-BY-SA','beam,righttorepair,robots,mechatronics,apocalypse',0,0,1),
(3525,'2022-02-04','Battling with English - part 4',920,'Some confusion with English plurals; strange language changes','<h2 id=\"confusing-plurals\">Confusing plurals</h2>\r\n<p>In this episode, the fourth of this series, I’m looking at some words that have singular and plural forms that are very different. These lead to a lot of confusion as we’ll see.</p>\r\n<p>I also want to look at the way that English is evolving in some very strange and apparently senseless ways!</p>\r\n<p><small><b>Personal note:</b> I notice I started preparing this show in 2019; unfortunately, COVID messed up my productivity for the next two years, but I hope I can now begin to be productive again! </small></p>\r\n<h2 id=\"long-notes\">Long notes</h2>\r\n<p>I have provided detailed notes as usual for this episode, and these can be viewed by following <a href=\"https://hackerpublicradio.org/eps/hpr3525/full_shownotes.html\">the full notes link</a>.</p>\r\n<h2 id=\"links\">Links</h2>\r\n<ul>\r\n<li>Plural of <em>thesis</em>:\r\n<ul>\r\n<li><a href=\"https://www.grammar-monster.com/plurals/plural_of_thesis.htm\">Grammar Monster</a>\r\n<ul>\r\n<li>This link has some good advice for dealing with weird plurals, though some you just have to remember, there are no rules!</li>\r\n</ul></li>\r\n</ul></li>\r\n</ul>\r\n<ul>\r\n<li>Irregular plurals which end with <code>\"ae\"</code> (or <code>\"æ\"</code>):\r\n<ul>\r\n<li><a href=\"https://en.wiktionary.org/wiki/Category:English_irregular_plurals_ending_in_%22-ae%22\">Wiktionary</a>\r\n<ul>\r\n<li>This is a list of these plurals, 159 of them at the time of writing. Many of these are obsolete however.</li>\r\n</ul></li>\r\n</ul></li>\r\n</ul>\r\n<ul>\r\n<li>The “is is” problem:\r\n<ul>\r\n<li><a href=\"https://english.stackexchange.com/questions/36683/why-do-some-people-say-the-reason-is-is-that-with-is-twice-in-a-row\">StackExchange: <em>Why do some people say “the reason is is that,” with “is” twice in a row?</em></a></li>\r\n<li><a href=\"https://www.grammarbook.com/blog/effective-writing/what-is-is-is-is-exasperating/\">GrammarBook.com: What Is-Is Is, Is Exasperating</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Double_copula\">Wikipedia article on the <em>Double Copula</em></a></li>\r\n</ul></li>\r\n</ul>\r\n<ul>\r\n<li>“Honing in”:\r\n<ul>\r\n<li><a href=\"https://www.merriam-webster.com/dictionary/hone%20in\">Merriam-Webster: <em>hone in</em></a></li>\r\n<li><a href=\"https://www.youtube.com/watch?v=JZ07FbgQkqk\"><em>Me Ears Are Alight</em> old British advertisement</a></li>\r\n</ul></li>\r\n</ul>\r\n<ul>\r\n<li>Previous episodes in this series:\r\n<ul>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2558\">Battling with English - part 1</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2596\">Battling with English - part 2</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2751\">Battling with English - part 3</a></li>\r\n</ul></li>\r\n</ul>\r\n',225,120,1,'CC-BY-SA','grammar,spelling,plurals,word misuse,English,language evolution',0,0,1),
(3539,'2022-02-24','Linux Inlaws S01E50: The OpenSUSE Project',4079,'An interview with Doug DeMaio and Axel Braun from the OpenSUSE project','<p>In this episode of the Inlaws our two ageing heroes host Doug DeMaio and Axel Braun, both intimately\r\nassociated with and actively supporting the OpenSUSE project, the foundation of one of the popular Linux distros\r\napart from RedHat and Debian for companies of all sizes (yes, and Ubuntu before I get any hate mails\r\nfrom Mark Shuttleworth or Cannonical in general :-). Apologies for not mentioning Alma, CentOS or\r\nRocky Linux. Topics of discussion include the advantages of hipster concepts like rolling releases,\r\nthe year of the Linux desktop, other people\'s computers (aka Clouds) and philosophical things like\r\nIT security, all things cloud-native (well, almost) and Apple laptop users drinking fancy coffee\r\nderivatives. Never mind containers, edge-computing operating systems and live kernel patching.</p>\r\n\r\n<h2>Links:</h2>\r\n<ul>\r\n<li>OpenSUSE: <a href=\"https://www.opensuse.org\" target=_blank>https://www.opensuse.org</a></li>\r\n<li>SUSE: <a href=\"https://www.suse.com\" target=_blank>https://www.suse.com</a></li>\r\n<li>openQA: <a href=\"https://open.qa\" target=_blank>https://open.qa</a></li>\r\n<li>Open Build Service: <a href=\"https://openbuildservice.org\" target=_blank>https://openbuildservice.org</a></li>\r\n<li>CentOS debacle: <a href=\"https://arstechnica.com/gadgets/2020/12/centos-shifts-from-red-hat-unbranded-to-red-hat-beta\" target=_blank>https://arstechnica.com/gadgets/2020/12/centos-shifts-from-red-hat-unbranded-to-red-hat-beta</a></li>\r\n<li>OpenSUSE conference: <a href=\"https://events.opensuse.org\" target=_blank>https://events.opensuse.org</a></li>\r\n<li>MicroOS: <a href=\"https://microos.opensuse.org\" target=_blank>https://microos.opensuse.org</a></li>\r\n<li>Kubic: <a href=\"https://kubic.opensuse.org\" target=_blank>https://kubic.opensuse.org</a></li>\r\n<li>Rancher: <a href=\"https://www.suse.com/products/rancher-kubernetes-engine\" target=_blank>https://www.suse.com/products/rancher-kubernetes-engine</a></li>\r\n<li>OpenSUSE mailing lists: <a href=\"https://lists.opensuse.org/archives\" target=_blank>https://lists.opensuse.org/archives</a></li>\r\n<li>OpenSUSE bar: <a href=\"https://meet.opensuse.org/bar\" target=_blank>https://meet.opensuse.org/bar</a></li>\r\n<li>OpenSUSE social media: <a href=\"https://en.opensuse.org/openSUSE:Social_media_contacts\" target=_blank>https://en.opensuse.org/openSUSE:Social_media_contacts</a></li>\r\n<li>OpenSUSE IRC: <a href=\"https://en.opensuse.org/openSUSE:IRC_list\" target=_blank>https://en.opensuse.org/openSUSE:IRC_list</a></li>\r\n</ul>\r\n',384,111,1,'CC-BY-SA','OpenSUSE, Kubic, MicroOS, Clouds, Lattes, Desktops',0,0,1),
(3527,'2022-02-08','My gEeeky Experiment - Part 3',816,'Claudio talks about how he upgraded the SSD on his Asus Eee PC 901 netbook.','<ul>\r\n<li><p>hpr3383 :: My gEeeky Experiment - Part 1<br />\r\n<a href=\"https://hackerpublicradio.org/eps.php?id=3383\" class=\"uri\">https://hackerpublicradio.org/eps.php?id=3383</a></p></li>\r\n<li><p>hpr3418 :: My gEeeky Experiment - Part 2<br />\r\n<a href=\"https://hackerpublicradio.org/eps.php?id=3418\" class=\"uri\">https://hackerpublicradio.org/eps.php?id=3418</a></p></li>\r\n<li><p>Blog post: <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></p></li>\r\n</ul>\r\n<p>Contact: claudiom@bsd.network (Mastodon)<br />\r\nIRC: ClaudioM on #oggcastplanet (Libera.chat)</p>\r\n',152,0,0,'CC-BY-SA','openbsd,netbook,asus,eeepc,upgrades,ssd',0,0,1),
(3528,'2022-02-09','Slackware on a netbook',346,'A response show to HPR3512','<h3 id=\"installed-slackware-on-acer-aspire-one\">Installed Slackware on Acer Aspire One</h3>\r\n<ul>\r\n<li><p>4.4.14-smp #2 SMP Fri Jun 24 14:44:24 CDT 2016 i686 Intel(R) Atom(TM) CPU N270 @ 1.60GHz GenuineIntel GNU/Linux</p></li>\r\n<li><p>1 Gb ram</p>\r\n<pre><code>[mark@archer72:~ ] $ free total --mega\r\n    total    used  free  shared  buff/cache   available\r\nMem:           1009         172         376           0         459         692\r\nSwap:          1048           0        1048</code></pre></li>\r\n<li><p>Runs a little warm</p>\r\n<pre><code>[mark@archer72:~ ] $ sensors\r\n\r\ncoretemp-isa-0000\r\nAdapter: ISA adapter\r\nCore 0:       +45.0 &amp;#8451;  (crit = +90.0 &amp;#8451;)</code></pre></li>\r\n<li><p>Ignore lid switch</p>\r\n<p><code>echo on &gt;/sys/bus/acpi/drivers/button/$PLATFORM\\:00/power/control</code></p>\r\n<p>Or in this case</p>\r\n<p><code>echo on &gt; /bus/acpi/drivers/button/LNXPWRBN\\:00/power/control</code></p></li>\r\n<li><p>Clear screen in BASH</p>\r\n<ul>\r\n<li><p>Enter in ~/.bashrc the line:</p>\r\n<p><code>bind -x $\'\"\\C-l\":clear;\'</code></p></li>\r\n<li><p>Not working between reboots</p></li>\r\n</ul></li>\r\n</ul>\r\n<p><quote></p>\r\n<p>If you always want the content of your .bashrc file processed, you can add the following lines to your .bash_profile file, creating that file if it does not already exist:</p>\r\n<pre><code>if [ -f ~/.bashrc ]; then\r\n    . ~/.bashrc\r\nfi</code></pre>\r\n<p>Per its man page, bash \"[...] looks for ~/.bash_profile, ~/.bash_login, and ~/.profile, in that order, and reads and executes commands from the first one that exists and is readable.\" Conventions and policies of your local system will determine which, if any, of these files already exist.</p>\r\n<p>A word of caution: be aware that creating a new .bash_profile in your home directory could have the unintended side-effect of preventing the reading and executing of commands in a .bash_login or .profile file already present, changing further the behavior of subsequent logins. </quote></p>\r\n<p><a href=\"https://stackoverflow.com/questions/18393521/bashrc-not-loading-until-run-bash-command\" class=\"uri\">https://stackoverflow.com/questions/18393521/bashrc-not-loading-until-run-bash-command</a></p>\r\n<ul>\r\n<li><p>Change lilo menu timeout to 5 seconds</p>\r\n<ul>\r\n<li><p>edit /etc/lilo.conf</p>\r\n<pre><code>.\r\n.\r\n# This is given in tenths of a second, so 600 for every minute:\r\n# timeout = 1200\r\ntimeout = 50\r\n.\r\n.</code></pre></li>\r\n</ul></li>\r\n<li><p>Add custom bash prompt.</p>\r\n<pre><code>  PS1=&quot;&quot;[\\d \\t \\u@\\h:\\w ]&quot; $ &quot;\r\n  [Sat Feb 05 18:11:15 mark@archer72:~ ] $</code></pre></li>\r\n<li><p>For a more concise prompt:</p>\r\n<pre><code>  PS1=&quot;[\\u@\\h:\\w ] $\r\n  [mark@archer72:~ ] $</code></pre></li>\r\n<li><p>Not authorized to control networking</p>\r\n<p><code>sudo usermod -G netdev -a yourusername</code></p>\r\n<ul>\r\n<li><a href=\"https://askubuntu.com/questions/304159/not-authorized-to-control-networking#304181\" class=\"uri\">https://askubuntu.com/questions/304159/not-authorized-to-control-networking#304181</a></li>\r\n</ul></li>\r\n</ul>\r\n',318,0,0,'CC-BY-SA','Slackware, Auld hardware, netbook',0,0,1),
(3531,'2022-02-14','Barrier: Software KVM',1039,'A brief inroduction to the Barrier software KVM','<p>This episode is a quick software recommendation/introduction to <a href=\"https://github.com/debauchee/barrier\">Barrier</a>. Barrier is a software KVM, forked from <a href=\"https://symless.com/synergy\">Synergy</a>. It sends your keystrokes and mouse input over the network, so that you can share your input devices between computers.</p>\r\n',196,0,0,'CC-BY-SA','kvm,Barrier,network,keyboard,mouse',0,0,1),
(3532,'2022-02-15','Self-hosting in small scale E0: Disclaimer and general idea',545,'This ep is just explanation of the general idea and introducing useful communities around the topic','<p>By the end of the series I would like to end up with an example repository on Github/Gitlab with scenarios and example configuration file which makes them easy to replicate and modify to your need. I am interested in your opinion what type of service would you fancy to self-host yourself. So don\'t hesitate to contact me on twitter, matrix.org or in email.</p>\r\n<p>Twitter: <span class=\"citation\" data-cites=\"takov751\">@takov751</span><br />\r\nmatrix: takov751:matrix.org<br />\r\nemail: takov751+hpr@protonmail.com</p>\r\n<p>Few interesting communities/project:</p>\r\n<ul>\r\n<li><p>Community around making a curated list of their own docker images and maintain them:<br />\r\n<a href=\"https://linuxserver.io\" class=\"uri\">https://linuxserver.io</a></p></li>\r\n<li><p>Open source project for home automation: <a href=\"https://www.home-assistant.io/\" class=\"uri\">https://www.home-assistant.io/</a></p></li>\r\n</ul>\r\n',402,0,0,'CC-BY-SA','self-host, devsecops, docker',0,0,1),
(3533,'2022-02-16','Porridge',1741,'A show about porridge','<p>This is a show about porridge.</p>\r\n<p>Episodes mentioned in this episode:</p>\r\n<ul>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=3272\">hpr3272 :: In GNU/Linux, there is no \"diversity\", we\'re all just data. hosted by Some Guy On The Internet </a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=3257\">hpr3257 :: Lack of diversity in Linux and other open source communities hosted by swift110 </a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=3251\">hpr3251 :: Opposing Views on Alcohol hosted by Windigo </a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=3247\">hpr3247 :: Saturday Morning Automotive Routine hosted by TrumpetJohn </a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=3223\">hpr3223 :: My COVID year summary hosted by b-yeezi </a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=3121\">hpr3121 :: Opposing Views on Tattoos hosted by Windigo </a></li>\r\n</ul>\r\n<p>Island mentioned in this episode: <a href=\"https://en.wikipedia.org/wiki/St_Kilda,_Scotland\">https://en.wikipedia.org/wiki/St_Kilda,_Scotland</a></p>\r\n<p>All the porridge: <a href=\"https://en.wikipedia.org/wiki/List_of_porridges\">https://en.wikipedia.org/wiki/List_of_porridges</a></p>\r\n',399,0,0,'CC-BY-SA','porridge',0,0,1),
(3534,'2022-02-17','Vernier caliper',519,'Ken recommends a very useful tool for measuring stuff','<p>\r\nIn today\'s show Ken recommends a fairly affordable tool for measuring all sorts of dimensions.\r\n</p>\r\n\r\n<img src=\"/eps/hpr3534/Vernier_caliper.svg.png\" alt=\"An image of a Vernier caliper\" />\r\n\r\n<p>\r\nFrom <a href=\"https://en.wikipedia.org/wiki/Calipers#Vernier_caliper\">Wikipedia</a>\r\n</p>\r\n\r\n<ol>\r\n\r\n<li>Outside large jaws: used to measure external diameter of an object (like a hollow cylinder) or width of an object (like a rod), diameter of an object (like a sphere).</li>\r\n<li>Inside small jaws: used to measure the internal diameter of an object (like a hollow cylinder or pipe).</li>\r\n<li>Depth probe/rod: used to measure depths of an object (like a small beaker) or a hole.</li>\r\n<li>Main scale (Metric): marked every millimeter and helps to measure length correct up to 1 mm.</li>\r\n<li>Main scale (Imperial): marked in inches and fractions.</li>\r\n<li>Vernier scale (Metric) gives interpolated measurements to 0.1 mm or better.</li>\r\n<li>Vernier scale (Imperial) gives interpolated measurements in fractions of an inch.</li>\r\n<li>Retainer: used to block movable part to allow the easy transferring of a measurement.</li>\r\n</ol>\r\n',30,0,0,'CC-BY-SA','Vernier Caliper,measurement',0,0,1),
(3565,'2022-04-01','Heavy Hacking down in the quarry. ',468,'How to adjust a toggle plate on a MOBICAT MC 120 PRO Jaw Crusher','<p>Another trip down the quarry with Marshall aka Timtimmy. Today he\'s changing the toggle plate on a MOBICAT MC 120 PRO Jaw Crusher. We\'ve already covered it before but there is a brief refresher about the hydraulic, and pneumatic systems before we get to changing the plate itself. As always be sure you follow the safety instructions provided by the manufacturer.</p>\r\n\r\n<p>\r\n<img width=\"70%\" src=\"/eps/hpr3565/IMG_20220328_165606.jpg\" alt=\"Photo of the MOBICAT MC 120 PRO Jaw Crusher\" />\r\n</p>\r\n<p>\r\n<img width=\"70%\" src=\"/eps/hpr3565/IMG_20220328_165709.jpg\" alt=\"Photo of the MOBICAT MC 120 PRO Jaw Crusher\" />\r\n</p>\r\n\r\n<h3>Links</h3><ul><li><a href=\"https://www.wirtgen-group.com/ocs/en-in/kleemann/mc-120-pro-138-p/\">MOBICAT MC 120 PRO Jaw Crusher</a></li><li><a href=\"https://www.terex.com/evoquip/en/product/bison/bison-120\">Bison 120 Jaw Crusher</a></li><li><a href=\"https://www.hse.gov.uk/pubns/books/l118.htm\">Health and safety at quarries. The Quarries Regulations 1999. Approved Code of Practice </a></li><li><a href=\"https://en.wikipedia.org/wiki/British_Standard_Whitworth\">British Standard Whitworth (BSW)</a></li></ul>',392,0,0,'CC-BY-SA','quarry,hacking,Health and Safety',0,0,1),
(3536,'2022-02-21','Laptop power problems',1398,'This is a story of a laptop with two power problems.','<p>This is a story of a laptop with two power problems.</p>\r\n<p>The first and less severe is that sometimes the charging of the battery will get stuck at a certain percentage. This is not simply due to the effect commonly found with aging batteries but a fault with the laptop\'s charging hardware. A full reset of the charging system can fix it, which for this ASUS Zenbook UX550vd laptop requires a long press &#x2014; meaning 40 seconds &#x2014; from its shutdown state.</p>\r\n<p>The second and more serious issue is that the laptop thinks that it is plugged into AC power even when it is running only on battery. I ruled out an operating system or software issue because the issue remains whether running GNU/linux or Windows. The problem is serious because the power management software, in my case in KDE, will not respond to critically low battery levels by suspending or gracefully shutting down. It may be that a sudden loss of power damaged the previous SSD in this laptop, which was the subject of <a href=\"https://hackerpublicradio.org/eps.php?id=3428\">HPR 3428</a>.</p>\r\n<p>My first attempt to fool KDE into seeing accurate battery information under <code>/sys/class/power_supply/BAT0</code> using an overlay filesystem failed presumably because KDE\'s power system is listening out for some kind of event rather than simply monitoring those files. My second and successful attempt involved writing my own bash scripts run by cron to monitor battery levels and initiate actions when they got too low. There were errors with comedic consequences along the way. In fact, while writing these shownotes after I finished recording the audio, the laptop suspended itself because of a bug in my script - I used <code>le</code> (less than or equal to) rather than <code>lt</code> (less than) in my test for a change in the battery charge leading to unintended and fun consequences when the battery was fully charged.</p>\r\n',268,0,0,'CC-BY-SA','laptop,linux,power',0,0,1),
(3647,'2022-07-26','Weekend projects',1004,'Rho`n rambles about some weekend projects','<h1>Synopsis</h1>\r\n\r\n<p>In this episode, Rho`n rambles about some recent weekend repair projects. The main focus of this episode is fixing a bent patio table umbrella pole, along with his attempts to fix a punctured basketball. There are some successes, some failures, and some side stories along the way.</p>\r\n<style>\r\ndiv#figures {\r\n	display: flex;\r\n	flex-direction: row;\r\n	flex-wrap: wrap;\r\n	justify-content: center;\r\n}\r\ndiv#figures figcaption { max-width: 490px; }\r\ndiv#figures img { max-width: 50vw; padding-bottom: 0.15em }\r\n</style>\r\n<div id=\"figures\">\r\n<figure>\r\n	<a href=\"./eps/hpr3647/01.jpg\"><img src=\"./eps/hpr3647/01-sm.jpg\"\r\n         alt=\"Initial fixed umbrella pole.\"></a>\r\n	<br>\r\n    <figcaption>Intial fix using 1.25\" dowel rod and wood screws.</figcaption>\r\n</figure>\r\n<figure>\r\n    <a href=\"./eps/hpr3647/02.jpg\"><img src=\"./eps/hpr3647/02-sm.jpg\"\r\n								   alt=\"Fixed pole with epoxy resin wrap\"></a>\r\n	<br>\r\n    <figcaption>Fixed pole with epoxy resin wrap.</figcaption>\r\n</figure>\r\n<figure>\r\n    <a href=\"./eps/hpr3647/03.jpg\"><img src=\"./eps/hpr3647/03-sm.jpg\"\r\n								   alt=\"Fixed pole in regular standing position\"></a>\r\n	<br>\r\n    <figcaption>Fixed pole in regular position.</figcaption>\r\n</figure>\r\n</div>\r\n',293,0,0,'CC-BY-SA','diy, repairs, umbrella, basketball',0,0,1),
(3858,'2023-05-17','The Oh No! News.',873,'Sgoti talks about Toyota\'s data leak and more, on the Oh No! News.','<h2 id=\"the-oh-no-news.\">The <em>Oh No!</em> news.</h2>\n<h2 id=\"oh-no-news-is-good-news.\"><em>Oh No!</em> News is Good\nNews.</h2>\n<ul>\n<li><p><strong>Threat analysis; your attack surface.</strong></p></li>\n<li><p><strong>Article:</strong> <a\nhref=\"https://www.ic3.gov/Media/Y2023/PSA230407\"\ntitle=\"...coerce sextortion victims into paying for their services.\">For-Profit\nCompanies Charging Sextortion Victims for Assistance and Using Deceptive\nTactics to Elicit Payments.</a><br />\n</p>\n<ul>\n<li><strong>Author:</strong> FBI Internet Crime Complaint Center. (2023,\nApr 7).<br />\n</li>\n<li>The companies use deceptive tactics&#x2014;including threats, manipulation,\nand providing false information&#x2014;to coerce sextortion victims into paying\nfor their services. Some of the services for which the companies charge\nfees, such as sending the perpetrators cease and desist orders, make\nvictims feel better but are not legally enforceable. The companies may\nalso attempt to discourage victims from reporting the sextortion to law\nenforcement. Limited reporting indicates the companies are directly or\nindirectly involved in the sextortion activity.<br />\n</li>\n</ul></li>\n<li><p><strong>Article:</strong> <a\nhref=\"https://www.bleepingcomputer.com/news/security/former-ubiquiti-dev-who-extorted-the-firm-gets-six-years-in-prison/\"\ntitle=\"Attempting to extort his employer.\">Former Ubiquiti dev who\nextorted the firm gets six years in prison.</a><br />\n</p>\n<ul>\n<li><strong>Author:</strong> <a\nhref=\"https://www.bleepingcomputer.com/author/bill-toulas/\"\ntitle=\"Technology writer and infosec news reporter.\">Bill Toulas</a>.\n(2023, May 11).<br />\n</li>\n<li>Nickolas Sharp, a former senior developer of Ubiquiti, was sentenced\nto six years in prison for stealing company data, attempting to extort\nhis employer, and aiding the publication of misleading news articles\nthat severely impacted the firm\'s market capitalization.<br />\n</li>\n</ul></li>\n<li><p><strong>Article:</strong> <a\nhref=\"https://www.bleepingcomputer.com/news/security/toyota-car-location-data-of-2-million-customers-exposed-for-ten-years/\"\ntitle=\"Misconfiguration of the cloud environment.\">Toyota: Car location\ndata of 2 million customers exposed for ten years.</a><br />\n</p>\n<ul>\n<li><strong>Author:</strong> <a\nhref=\"https://www.bleepingcomputer.com/author/bill-toulas/\"\ntitle=\"Technology writer and infosec news reporter.\">Bill Toulas</a>.\n(2023, May 12).<br />\n</li>\n<li>Toyota Motor Corporation disclosed a data breach on its cloud\nenvironment that exposed the car-location information of 2,150,000\ncustomers for ten years, between November 6, 2013, and April 17,\n2023.<br />\n</li>\n</ul></li>\n<li><p><strong>Article:</strong> <a\nhref=\"https://www.gov.uk/government/news/failure-to-comply-with-bus-open-data-regulations-leads-to-financial-penalty-for-operator\"\ntitle=\"Financial penalty under section 155 of the Transport Act 2000.\">Failure\nto comply with Bus Open Data regulations leads to financial penalty for\noperator.</a><br />\n</p>\n<ul>\n<li><strong>Author:</strong> Traffic Commissioners for Great Britain.\n(2023, May 4).<br />\n</li>\n<li>The Traffic Commissioner for the West Midlands, Miles Dorrington,\nimposed a financial penalty under section 155 of the Transport Act 2000\nof &#xA3;1500, based on a &#xA3;100 penalty for each of the vehicles authorised on\nthe operator&#x2019;s licence.<br />\n</li>\n</ul></li>\n<li><p><strong>Article:</strong> <a\nhref=\"https://www.ic3.gov/Media/Y2023/PSA230410\"\ntitle=\"The FBI warns of criminal actors posing as Chinese law enforcement.\">Criminals\nPose as Chinese Authorities to Target US-based Chinese\nCommunity.</a><br />\n</p>\n<ul>\n<li><strong>Author:</strong> FBI Internet Crime Complaint Center. (2023,\nApr 10).<br />\n</li>\n<li>The FBI warns of criminal actors posing as Chinese law enforcement\nofficials or prosecutors in financial fraud schemes targeting the\nUS-based Chinese community. Criminals tell victims they are suspects in\nfinancial crimes and threaten them with arrest or violence if they do\nnot pay the criminals. Criminals exploit widely publicized efforts by\nthe People&#x2019;s Republic of China government to harass and facilitate\nrepatriation of individuals living in the United States to build\nplausibility for their fraud. Criminals typically call victims,\nsometimes using spoofed numbers to appear as if the call is from the\nChinese Ministry of Public Security, one of its localized Public\nSecurity Bureaus, or a US-based Chinese Consulate. Criminals may also\ncommunicate through online applications.<br />\n</li>\n</ul></li>\n</ul>\n<hr />\n<ul>\n<li><p><strong>User space.</strong></p></li>\n<li><p><strong>Article:</strong> <a\nhref=\"https://www.bleepingcomputer.com/news/security/twitter-rolls-out-encrypted-dms-but-only-for-paying-accounts/\"\ntitle=\"End-to-end encrypted DMs on Twitter.\">Twitter rolls out encrypted\nDMs, but only for paying accounts.</a><br />\n</p>\n<ul>\n<li><strong>Author:</strong> <a\nhref=\"https://www.bleepingcomputer.com/author/bill-toulas/\"\ntitle=\"Technology writer and infosec news reporter.\">Bill Toulas</a>\n(2023, May 11).<br />\n</li>\n<li>Twitter has launched its \'Encrypted Direct Messages\' feature\nallowing paid Twitter Blue subscribers to send end-to-end encrypted\nmessages to other users on the platform.<br />\n</li>\n<li>The private decryption key is only stored on the sender\'s device and\nis not shared with anyone else. However, the public encryption key is\nshared with others who want to send you encrypted data.<br />\n</li>\n</ul></li>\n<li><p><strong>Article:</strong> <a\nhref=\"https://www.bleepingcomputer.com/news/security/discord-discloses-data-breach-after-support-agent-got-hacked/\"\ntitle=\"third-party support agent was compromised.\">Discord discloses\ndata breach after support agent got hacked.</a><br />\n</p>\n<ul>\n<li><strong>Author:</strong> <a\nhref=\"https://www.bleepingcomputer.com/author/sergiu-gatlan/\"\ntitle=\"Sergiu Gatlan has covered cybersecurity, technology, and other news beats for more than a decade.\">Sergiu\nGatlan</a>. (2023, May 12).<br />\n</li>\n<li>Discord is notifying users of a data breach that occurred after the\naccount of a third-party support agent was compromised.<br />\n</li>\n<li>The security breach exposed the agent\'s support ticket queue, which\ncontained user email addresses, messages exchanged with Discord support,\nand any attachments sent as part of the tickets.<br />\n</li>\n</ul></li>\n</ul>\n<hr />\n<ul>\n<li><strong>Additional Information.</strong>\n<ul>\n<li><a href=\"https://en.wikipedia.org/wiki/Data_breach\"\ntitle=\"From Wikipedia, the free encyclopedia.\">What is a \"Data\nBreach\"?</a> A data breach is a security violation, in which sensitive,\nprotected or confidential data is copied, transmitted, viewed, stolen,\naltered or used by an individual unauthorized to do so.<br />\n</li>\n<li><a href=\"https://en.wikipedia.org/wiki/Malware\"\ntitle=\"From Wikipedia, the free encyclopedia\">What is \"Malware\"?</a>\nMalware (a <a href=\"https://en.wikipedia.org/wiki/Portmanteau\"\ntitle=\"From Wikipedia, the free encyclopedia\">portmanteau</a> for\nmalicious software) is any software intentionally designed to cause\ndisruption to a computer, server, client, or computer network, leak\nprivate information, gain unauthorized access to information or systems,\ndeprive access to information, or which unknowingly interferes with the\nuser\'s computer security and privacy.<br />\n</li>\n<li><a href=\"https://en.wikipedia.org/wiki/Payload_(computing)\"\ntitle=\"From Wikipedia, the free encyclopedia\">What is a \"Payload\"?</a>\nIn the context of a computer virus or worm, the payload is the portion\nof the malware which performs malicious action; deleting data, sending\nspam or encrypting data. In addition to the payload, such malware also\ntypically has overhead code aimed at simply spreading itself, or\navoiding detection.<br />\n</li>\n<li><a href=\"https://en.wikipedia.org/wiki/Phishing\"\ntitle=\"From Wikipedia, the free encyclopedia.\">What is \"Phishing\"?</a>\nPhishing is a form of <a\nhref=\"https://en.wikipedia.org/wiki/Social_engineering_(security)\"\ntitle=\"From Wikipedia, the free encyclopedia\">social engineering</a>\nwhere attackers deceive people into revealing sensitive information or\ninstalling malware such as <a\nhref=\"https://en.wikipedia.org/wiki/Ransomware\"\ntitle=\"From Wikipedia, the free encyclopedia\">ransomware</a>. Phishing\nattacks have become increasingly sophisticated and often transparently\nmirror the site being targeted, allowing the attacker to observe\neverything while the victim is navigating the site, and transverse any\nadditional security boundaries with the victim.<br />\n</li>\n<li><a href=\"https://en.wikipedia.org/wiki/Information_security\"\ntitle=\"From Wikipedia, the free encyclopedia\">What is \"Information\nSecurity\" (InfoSec)?</a> Information security, sometimes shortened to\nInfoSec, is the practice of protecting information by mitigating <a\nhref=\"https://en.wikipedia.org/wiki/Information\"\ntitle=\"From Wikipedia, the free encyclopedia\">information</a> risks. It\nis part of <a\nhref=\"https://en.wikipedia.org/wiki/Risk_management_information_systems\"\ntitle=\"From Wikipedia, the free encyclopedia\">information risk\nmanagement</a>.\n<ul>\n<li><strong>Information Security Attributes:</strong> <a\nhref=\"https://en.wikipedia.org/wiki/Confidentiality\"\ntitle=\"From Wikipedia, the free encyclopedia\">Confidentiality</a>, <a\nhref=\"https://en.wikipedia.org/wiki/Data_integrity\"\ntitle=\"From Wikipedia, the free encyclopedia\">Integrity</a> and <a\nhref=\"https://en.wikipedia.org/wiki/Availability\"\ntitle=\"From Wikipedia, the free encyclopedia\">Availability</a> (C.I.A.).\nInformation Systems are composed in three main portions, hardware,\nsoftware and communications with the purpose to help identify and apply\ninformation security industry standards, as mechanisms of protection and\nprevention, at three levels or layers: physical, personal and\norganizational. Essentially, procedures or policies are implemented to\ntell administrators, users and operators how to use products to ensure\ninformation security within the organizations.<br />\n</li>\n</ul></li>\n<li><a href=\"https://en.wikipedia.org/wiki/Risk_management\"\ntitle=\"From Wikipedia, the free encyclopedia\">What is \"Risk\nmanagement\"?</a> Risk management is the identification, evaluation, and\nprioritization of risks followed by coordinated and economical\napplication of resources to minimize, monitor, and control the\nprobability or impact of unfortunate events or to maximize the\nrealization of opportunities.<br />\n</li>\n<li><a href=\"https://en.wikipedia.org/wiki/Vulnerability_(computing)\"\ntitle=\"From Wikipedia, the free encyclopedia\">What is a \"Vulnerability\"\n(computing)?</a> Vulnerabilities are flaws in a computer system that\nweaken the overall security of the device/system. Vulnerabilities can be\nweaknesses in either the hardware itself, or the software that runs on\nthe hardware.<br />\n</li>\n<li><a href=\"https://en.wikipedia.org/wiki/Attack_surface\"\ntitle=\"From Wikipedia, the free encyclopedia\">What is an \"Attack\nSurface\"?</a> The attack surface of a software environment is the sum of\nthe different points (for \"attack vectors\") where an unauthorized user\n(the \"attacker\") can try to enter data to or extract data from an\nenvironment. Keeping the attack surface as small as possible is a basic\nsecurity measure.<br />\n</li>\n<li><a href=\"https://en.wikipedia.org/wiki/Attack_vector\"\ntitle=\"From Wikipedia, the free encyclopedia\">What is an \"Attack\nVector\"?</a> In computer security, an attack vector is a specific path,\nmethod, or scenario that can be exploited to break into an IT system,\nthus compromising its security. The term was derived from the\ncorresponding notion of vector in biology. An attack vector may be\nexploited manually, automatically, or through a combination of manual\nand automatic activity.<br />\n</li>\n<li><a href=\"https://en.wikipedia.org/wiki/Standardization\"\ntitle=\"From Wikipedia, the free encyclopedia\">What is\n\"Standardization\"?</a> Standardization is the process of implementing\nand developing technical standards based on the consensus of different\nparties that include firms, users, interest groups, standards\norganizations and governments. Standardization can help maximize\ncompatibility, interoperability, safety, repeatability, or quality. It\ncan also facilitate a normalization of formerly custom processes.\n<ul>\n<li><a href=\"https://en.wikipedia.org/wiki/List_of_computer_standards\"\ntitle=\"From Wikipedia, the free encyclopedia\">List of computer\nstandards.</a><br />\n</li>\n<li><a\nhref=\"https://en.wikipedia.org/wiki/List_of_technical_standard_organizations\"\ntitle=\"From Wikipedia, the free encyclopedia\">List of technical standard\norganizations.</a><br />\n</li>\n</ul></li>\n<li><a href=\"https://en.wikipedia.org/wiki/Replay_attack\"\ntitle=\"From Wikipedia, the free encyclopedia\">What is a \"Replay\nattack\"?</a> A replay attack is a form of network attack in which valid\ndata transmission is maliciously or fraudulently repeated or delayed.\nAnother way of describing such an attack is: \"an attack on a security\nprotocol using a replay of messages from a different context into the\nintended (or original and expected) context, thereby fooling the honest\nparticipant(s) into thinking they have successfully completed the\nprotocol run.\"<br />\n</li>\n<li><a href=\"https://en.wikipedia.org/wiki/Man-in-the-middle_attack\"\ntitle=\"From Wikipedia, the free encyclopedia\">What is a\n\"Man-in-the-middle attack\"?</a> In cryptography and computer security, a\nman-in-the-middle, ..., attack is a cyberattack where the attacker\nsecretly relays and possibly alters the communications between two\nparties who believe that they are directly communicating with each\nother, as the attacker has inserted themselves between the two\nparties.<br />\n</li>\n<li><a href=\"https://en.wikipedia.org/wiki/Transport_Layer_Security\"\ntitle=\"From Wikipedia, the free encyclopedia\">What is \"Transport Layer\nSecurity\" (TLS)?</a> Transport Layer Security (TLS) is a cryptographic\nprotocol designed to provide communications security over a computer\nnetwork. The protocol is widely used in applications such as email,\ninstant messaging, and voice over IP, but its use in securing HTTPS\nremains the most publicly visible.<br />\n</li>\n<li><a href=\"https://en.wikipedia.org/wiki/Handshake_(computing)\"\ntitle=\"From Wikipedia, the free encyclopedia\">What is a \"Handshake\"\n(computing)?</a>. In computing, a handshake is a signal between two\ndevices or programs, used to, e.g., authenticate, coordinate. An example\nis the handshaking between a hypervisor and an application in a guest\nvirtual machine.</li>\n</ul></li>\n</ul>\n<hr />\n<ul>\n<li><strong>License:</strong> <a\nhref=\"https://creativecommons.org/licenses/by-sa/4.0/legalcode\">Creative\nCommons Attribution-ShareAlike 4.0 International</a><br />\n<a rel=\"license\" href=\"http://creativecommons.org/licenses/by-sa/4.0/\"><img alt=\"Creative Commons License\" style=\"border-width:0\" src=\"https://i.creativecommons.org/l/by-sa/4.0/88x31.png\" /></a><br />This\nwork is licensed under a\n<a rel=\"license\" href=\"http://creativecommons.org/licenses/by-sa/4.0/\">Creative\nCommons Attribution-ShareAlike 4.0 International License</a>.</li>\n</ul>\n',391,74,0,'CC-BY-SA','Ubiquiti dev, Toyota, Sextortion, Twitter, Discord',0,0,1),
(3549,'2022-03-10','Linux Inlaws S01E51: git and static site generators',3206,'git and static site generators','<p> Another fortnight, another episode of our beloved podcast called Linux\r\nInlaws :-). What starts as an episode on the history of Central Europe and the\r\nrole of the Netherlands and Germany in the greater scheme of things rapidly\r\nmoves sideways into a discussion of git-powered static HTML website generators\r\nin contrast to context management systems (CMSs) and their advantages,\r\ndisadvantages and why the hell even think about this.  Chris uses an innocent\r\n(?) Linux User Group (LUG) as an example for a successful site migration from\r\na Python-powered CMS to a version of the website based on a static site\r\ngenerator written in Go and called Hugo.  Even if you may find this boring to\r\ntears stay tuned as there may be an unexpected ending of this ditty in the\r\nshape of two interesting poxes...  </p>\r\n\r\n<h2>Links:</h2>\r\n<ul>\r\n<li>CMS: <a href=\"https://en.wikipedia.org/wiki/Content_management_system\" target=_blank>https://en.wikipedia.org/wiki/Content_management_system</a></li>\r\n<li>Adam and Eve: <a href=\"https://www.adam-and-eve.org\" target=_blank>https://www.adam-and-eve.org</a></li>\r\n<li>MoinMoin: <a href=\"https://moinmo.in\" target=_blank>https://moinmo.in</a></li>\r\n<li>WordPress: <a href=\"https://wordpress.org\" target=_blank>https://wordpress.org</a></li>\r\n<li>PEP 404: <a href=\"https://www.python.org/dev/peps/pep-0404\" target=_blank>https://www.python.org/dev/peps/pep-0404</a></li>\r\n<li>Python Enhancement Proposals: <a href=\"https://www.python.org/dev/peps\" target=_blank>https://www.python.org/dev/peps</a></li>\r\n<li>Static site generators (overview): <a href=\"https://kinsta.com/blog/static-site-generator\" target=_blank>https://kinsta.com/blog/static-site-generator</a></li>\r\n<li>Linux User Group Frankfurt: <a href=\"https://lugfrankfurt.de/en/Home\" target=_blank>https://lugfrankfurt.de/en/Home</a></li>\r\n<li>Gitea: <a href=\"https://gitea.io/en-us\" target=_blank>https://gitea.io/en-us</a></li>\r\n<li>HUGO: <a href=\"https://gohugo.io\" target=_blank>https://gohugo.io</a></li>\r\n<li>HUGO source code: <a href=\"https://github.com/gohugoio/hugo\" target=_blank>https://github.com/gohugoio/hugo</a></li>\r\n<li>Git (web)hooks: <a href=\"https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks\" target=_blank>https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks</a></li>\r\n<li>Reacher: <a href=\"https://en.wikipedia.org/wiki/Reacher_(TV_series)\" target=_blank>https://en.wikipedia.org/wiki/Reacher_(TV_series)</a></li>\r\n<li>The Comeback Trail: <a href=\"https://www.imdb.com/title/tt5420210/?ref_=nv_sr_srsg_0\" target=_blank>https://www.imdb.com/title/tt5420210/?ref_=nv_sr_srsg_0</a></li>\r\n</ul>\r\n',384,111,1,'CC-BY-SA','git, content management systems, MoinMoin, HUGO, static site generators, HPR, PEPs, gitea, Reacher',0,0,1),
(3543,'2022-03-02','Idle thoughts on web browsers',476,'and a call for your own on the same','<p>Mentioned in this episode were:</p>\r\n<p>Sweet Maria\'s Coffee: Personal Brewing Routines &amp; The Weirdness of Coffee Culture <br />\r\n<a href=\"https://sweetmarias.libsyn.com/personal-brewing-routines-the-weirdness-of-coffee-culture\">https://sweetmarias.libsyn.com/personal-brewing-routines-the-weirdness-of-coffee-culture</a></p>\r\n<p>Hacker Public Radio 3273: Embrace Firefox, by Some Guy On The Internet <br />\r\n<a href=\"https://hackerpublicradio.org/eps.php?id=3273\">https://hackerpublicradio.org/eps.php?id=3273</a></p>\r\n<p>To contribute your own idle thoughts in voice message form, join #thoughtsonbrowsers:matrix.org and leave your voice message. Then join #hpr:matrix.org and say hello.</p>\r\n',399,0,1,'CC-BY-SA','browsers,firefox,qutebrowser,tridactyl',0,0,1),
(3537,'2022-02-22','getting to blinky with flashforth',1708,'making an arduino board useful','<ul>\r\n<li>intro <a href=\"https://www.paypal.com/donate/?item_name=Donation+to+FlashForth%3A+for+PIC+and+Atmega&amp;cmd=_donations&amp;business=mikael.nordman%40flashforth.com\">Donation link</a></li>\r\n<li>what you\'ll need\r\n<ul>\r\n<li>hardware\r\n<ul>\r\n<li>arduino uno or nano</li>\r\n<li>programmer<br />\r\n<a href=\"https://hackerpublicradio.org/eps.php?id=2799\" class=\"uri\">https://hackerpublicradio.org/eps.php?id=2799</a></li>\r\n<li>cables</li>\r\n</ul></li>\r\n<li>software\r\n<ul>\r\n<li>flashforth <a href=\"https://www.sourceforge.net/projects/flashforth\" class=\"uri\">https://www.sourceforge.net/projects/flashforth</a></li>\r\n<li>avrdude <a href=\"https://www.nongnu.org/avrdude/\" class=\"uri\">https://www.nongnu.org/avrdude/</a></li>\r\n<li>terminal program<br />\r\nemacs: M-x serial-term</li>\r\n</ul></li>\r\n<li><a href=\"https://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-7810-Automotive-Microcontrollers-ATmega328P_Datasheet.pdf\">datasheet</a></li>\r\n</ul></li>\r\n<li>the install\r\n<ul>\r\n<li>the guide <a href=\"https://flashforth.com/atmega.html\" class=\"uri\">https://flashforth.com/atmega.html</a></li>\r\n<li>did it work?\r\n<ul>\r\n<li>troubleshooting\r\n<ul>\r\n<li>check connections</li>\r\n<li>permission issues</li>\r\n<li>set fuses separately, one at a time</li>\r\n<li>double checkterminal baud rate</li>\r\n</ul></li>\r\n</ul></li>\r\n</ul></li>\r\n<li>hello-world</li>\r\n</ul>\r\n<pre><code>: hw1 .&quot; Hello, world!&quot; ;\r\n: led-on %00100000 PORTB mset ;\r\n: led-off %00100000 PORTB mclr ;\r\n: flash-led begin led-on #1000 ms led-off #1000 ms again ;</code></pre>\r\n',326,0,0,'CC-BY-SA','arduino, forth',0,0,1),
(3786,'2023-02-06','HPR Community News for January 2023',2881,'HPR Volunteers talk about shows released and comments posted in January 2023','<style>\ntable td.shrink {\n    white-space:nowrap\n}\n</style>\n\n<h2>New hosts</h2>\n<p>\nWelcome to our new host: <br />\n\n    <a href=\"https://hackerpublicradio.org/correspondents/0415.html\" target=\"_blank\">enistello</a>.\n</p>\n\n<h2>Last Month\'s Shows</h2>\n<table id=\"t01\">\n<tr>\n<th>Id</th>\n<th>Day</th>\n<th>Date</th>\n<th>Title</th>\n<th>Host</th>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3761\" target=\"_blank\">3761</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2023-01-02</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3761\" target=\"_blank\">HPR Community News for December 2022</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0159.html\" target=\"_blank\">HPR Volunteers</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3762\" target=\"_blank\">3762</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2023-01-03</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3762\" target=\"_blank\">Existence is pain</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0036.html\" target=\"_blank\">operat0r</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3763\" target=\"_blank\">3763</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2023-01-04</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3763\" target=\"_blank\">The Baader-Meinhof Phenomenon</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.php?id=3764\" target=\"_blank\">3764</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2023-01-05</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3764\" target=\"_blank\">My text-focused journey into tech</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0415.html\" target=\"_blank\">enistello</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3765\" target=\"_blank\">3765</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2023-01-06</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3765\" target=\"_blank\">Fixing clock events in GBA pokemon cartridges</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0407.html\" target=\"_blank\">Celeste</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3766\" target=\"_blank\">3766</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2023-01-09</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3766\" target=\"_blank\">ACER Nitro 5 laptop review</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0365.html\" target=\"_blank\">Bookewyrmm</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3767\" target=\"_blank\">3767</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2023-01-10</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3767\" target=\"_blank\">LP article from Wikipedia</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0318.html\" target=\"_blank\">Archer72</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3768\" target=\"_blank\">3768</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2023-01-11</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3768\" target=\"_blank\">Jeep Ignition Repair</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0408.html\" target=\"_blank\">Stache_AF</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3769\" target=\"_blank\">3769</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2023-01-12</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3769\" target=\"_blank\">Crouching laptop, hidden server (part 0).</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0391.html\" target=\"_blank\">Some Guy On The Internet</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3770\" target=\"_blank\">3770</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2023-01-13</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3770\" target=\"_blank\">Tucson</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0198.html\" target=\"_blank\">Ahuka</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3771\" target=\"_blank\">3771</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2023-01-16</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3771\" target=\"_blank\">How I eliminated pain naturally</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0383.html\" target=\"_blank\">Paul Quirk</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3772\" target=\"_blank\">3772</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2023-01-17</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3772\" target=\"_blank\">Adventures with a small solar panel</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0268.html\" target=\"_blank\">Andrew Conway</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3773\" target=\"_blank\">3773</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2023-01-18</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3773\" target=\"_blank\">My Public Speaking Rules</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.php?id=3774\" target=\"_blank\">3774</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2023-01-19</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3774\" target=\"_blank\">Emergency Show posted in 2014. Chump Car Report</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0209.html\" target=\"_blank\">David Whitman</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3775\" target=\"_blank\">3775</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2023-01-20</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3775\" target=\"_blank\">Emergency Show posted in 2014. How to make a punch-card computer</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.php?id=3776\" target=\"_blank\">3776</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2023-01-23</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3776\" target=\"_blank\">A linux distro review</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0365.html\" target=\"_blank\">Bookewyrmm</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3777\" target=\"_blank\">3777</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2023-01-24</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3777\" target=\"_blank\">Running Haiku on Bhyve, the BSD Hypervisor</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0152.html\" target=\"_blank\">Claudio Miranda</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3778\" target=\"_blank\">3778</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2023-01-25</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3778\" target=\"_blank\">A Squirrel Beeing on Google Products and Google Security</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0377.html\" target=\"_blank\">Zen_Floater2</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3779\" target=\"_blank\">3779</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2023-01-26</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3779\" target=\"_blank\">Just Because You Can Do a Thing... </a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0394.html\" target=\"_blank\">Trey</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3780\" target=\"_blank\">3780</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2023-01-27</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3780\" target=\"_blank\">Fediverse Update May 2022</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0198.html\" target=\"_blank\">Ahuka</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3781\" target=\"_blank\">3781</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2023-01-30</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3781\" target=\"_blank\">The Joule Thief</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0268.html\" target=\"_blank\">Andrew Conway</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3782\" target=\"_blank\">3782</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2023-01-31</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3782\" target=\"_blank\">Content Format article from Wikipedia</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0318.html\" target=\"_blank\">Archer72</a></td>\n</tr>\n</table>\n\n<h2>Comments this month</h2>\n\n<p>These are comments which have been made during the past month, either to shows released during the month or to past shows.\nThere are 27 comments in total.</p>\n<h3>Past shows</h3>\n<p>There are 8 comments on\n6 previous shows:</p>\n<ul>\n<li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=1240#comments\" target=\"_blank\">hpr1240</a></strong>\n(2013-05-03) \"<em>Doomsday Rule</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0229.html\" target=\"_blank\">Charles in NJ</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=1240#1\" target=\"_blank\">Comment 1</a>:\nCharles in NJ on 2023-01-20:\n\"Doomsday Python Code\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3751#comments\" target=\"_blank\">hpr3751</a></strong>\n(2022-12-19) \"<em>Using Noisetorch</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0194.html\" target=\"_blank\">Deltaray</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3751#1\" target=\"_blank\">Comment 1</a>:\nKen Fallon on 2023-01-22:\n\"Wow this actually works\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3753#comments\" target=\"_blank\">hpr3753</a></strong>\n(2022-12-21) \"<em>Some thoughts on \"Numeronyms\"</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0225.html\" target=\"_blank\">Dave Morriss</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3753#1\" target=\"_blank\">Comment 1</a>:\ndnt on 2023-01-16:\n\"Pure obscurantism\"</li>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3753#2\" target=\"_blank\">Comment 2</a>:\nDave Morriss on 2023-01-18:\n\"Thanks dnt\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3754#comments\" target=\"_blank\">hpr3754</a></strong>\n(2022-12-22) \"<em>GOD probably will use a Chromebook</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0377.html\" target=\"_blank\">Zen_Floater2</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3754#2\" target=\"_blank\">Comment 2</a>:\ndnt on 2023-01-18:\n\"Trippy as hell\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3758#comments\" target=\"_blank\">hpr3758</a></strong>\n(2022-12-28) \"<em>First sysadmin job - war story</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0342.html\" target=\"_blank\">norrist</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3758#1\" target=\"_blank\">Comment 1</a>:\nWindigo on 2023-01-12:\n\"What a \"whodunit\"!\"</li>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3758#2\" target=\"_blank\">Comment 2</a>:\nbrian-in-ohio on 2023-01-25:\n\"love the show\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3759#comments\" target=\"_blank\">hpr3759</a></strong>\n(2022-12-29) \"<em>Chatting with dnt.</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0391.html\" target=\"_blank\">Some Guy On The Internet</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3759#1\" target=\"_blank\">Comment 1</a>:\none_of_spoons on 2023-01-28:\n\"RISC V emulators.\"</li></ul><br/>\n</li></ul>\n<h3>This month\'s shows</h3>\n<p>There are 19 comments on 11 of this month\'s shows:</p>\n<ul><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3762#comments\" target=\"_blank\">hpr3762</a></strong>\n(2023-01-03) \"<em>Existence is pain</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0036.html\" target=\"_blank\">operat0r</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3762#1\" target=\"_blank\">Comment 1</a>:\nTrey on 2023-01-03:\n\"Thanks for sharing.\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3762#2\" target=\"_blank\">Comment 2</a>:\none_of_spoons on 2023-01-28:\n\"Character entry devices.\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3763#comments\" target=\"_blank\">hpr3763</a></strong>\n(2023-01-04) \"<em>The Baader-Meinhof Phenomenon</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0282.html\" target=\"_blank\">Mike Ray</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3763#1\" target=\"_blank\">Comment 1</a>:\nViv on 2023-01-05:\n\"Meta Baader-Meinhof\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3763#2\" target=\"_blank\">Comment 2</a>:\nMike Ray on 2023-01-06:\n\"I rest my case\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3764#comments\" target=\"_blank\">hpr3764</a></strong>\n(2023-01-05) \"<em>My text-focused journey into tech</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0415.html\" target=\"_blank\">enistello</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3764#1\" target=\"_blank\">Comment 1</a>:\nbrian-in-ohio on 2023-01-25:\n\"emacs rocks\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3766#comments\" target=\"_blank\">hpr3766</a></strong>\n(2023-01-09) \"<em>ACER Nitro 5 laptop review</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0365.html\" target=\"_blank\">Bookewyrmm</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3766#1\" target=\"_blank\">Comment 1</a>:\nClaudioM on 2023-01-12:\n\"Good Review, but Still Avoiding Gaming Laptops\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3766#2\" target=\"_blank\">Comment 2</a>:\nbookeyrmm on 2023-01-13:\n\"reply to claudio\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3767#comments\" target=\"_blank\">hpr3767</a></strong>\n(2023-01-10) \"<em>LP article from Wikipedia</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0318.html\" target=\"_blank\">Archer72</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3767#1\" target=\"_blank\">Comment 1</a>:\nCeleste on 2023-01-10:\n\"Riaa curve and italian youtuber video\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3768#comments\" target=\"_blank\">hpr3768</a></strong>\n(2023-01-11) \"<em>Jeep Ignition Repair</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0408.html\" target=\"_blank\">Stache_AF</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3768#1\" target=\"_blank\">Comment 1</a>:\none_of_spoons on 2023-01-28:\n\"Ear pieces.\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3771#comments\" target=\"_blank\">hpr3771</a></strong>\n(2023-01-16) \"<em>How I eliminated pain naturally</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0383.html\" target=\"_blank\">Paul Quirk</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3771#1\" target=\"_blank\">Comment 1</a>:\nbrian-in-ohio on 2023-01-25:\n\"music\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3772#comments\" target=\"_blank\">hpr3772</a></strong>\n(2023-01-17) \"<em>Adventures with a small solar panel</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.php?id=3772#1\" target=\"_blank\">Comment 1</a>:\nbrian-in-ohio on 2023-01-25:\n\"good info\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3773#comments\" target=\"_blank\">hpr3773</a></strong>\n(2023-01-18) \"<em>My Public Speaking Rules</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0282.html\" target=\"_blank\">Mike Ray</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3773#1\" target=\"_blank\">Comment 1</a>:\nmpardo on 2023-01-18:\n\"A \"must listen\" to all who aspire to speak to an audience\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3773#2\" target=\"_blank\">Comment 2</a>:\nTrey on 2023-01-18:\n\"Thanks for sharing.\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3773#3\" target=\"_blank\">Comment 3</a>:\none_of_spoons on 2023-01-19:\n\"Professional demeanour.\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3773#4\" target=\"_blank\">Comment 4</a>:\nMike Ray on 2023-01-20:\n\"Thanks very much to everybody. I listened back to this when it was published. I hope the Christmas b\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3773#5\" target=\"_blank\">Comment 5</a>:\nMike Ray on 2023-01-21:\n\"Messed up that last comment\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3776#comments\" target=\"_blank\">hpr3776</a></strong>\n(2023-01-23) \"<em>A linux distro review</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0365.html\" target=\"_blank\">Bookewyrmm</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3776#1\" target=\"_blank\">Comment 1</a>:\nbrian-in-ohio on 2023-01-25:\n\"how to do it\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3778#comments\" target=\"_blank\">hpr3778</a></strong>\n(2023-01-25) \"<em>A Squirrel Beeing on Google Products and Google Security</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0377.html\" target=\"_blank\">Zen_Floater2</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3778#1\" target=\"_blank\">Comment 1</a>:\nbrian-in-ohio on 2023-01-25:\n\"2fa\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3778#2\" target=\"_blank\">Comment 2</a>:\nJohnnyLawrence on 2023-01-26:\n\"Whoafully misinformed\"</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-January/thread.html\" target=\"_blank\">https://hackerpublicradio.org/pipermail/hpr_hackerpublicradio.org/2023-January/thread.html</a>\n\n\n<h2>Events Calendar</h2>\n<p>With the kind permission of <strong>LWN.net</strong> we are linking to\n<a href=\"https://lwn.net/Calendar/\" target=\"_blank\">The LWN.net Community Calendar</a>.</p>\n<p>Quoting the site:</p>\n<blockquote>This is the LWN.net community event calendar, where we track\nevents of interest to people using and developing Linux and free software.\nClicking on individual events will take you to the appropriate web\npage.</blockquote>\n\n<h2>Any other business</h2>\n<h3 id=\"show-transcripts\">Show transcripts</h3>\n<p>Transcripts of audio have been generated for shows since December\n2022, using the <a\nhref=\"https://openai.com/blog/whisper/\"><code>Whisper</code></a> tool.\nKen Fallon has been working on this project, and has also been\ntranscribing the older shows from <code>hpr0001</code> to the present\nday. This part of the project is complete.</p>\n<p>The transcripts have been attached to each show on the HPR website,\nand are in the process of being added on archive.org.</p>\n<ul>\n<li><a href=\"https://github.com/openai/whisper\">Whisper on\nGitHub</a></li>\n</ul>\n<h3 id=\"older-hpr-shows-on-archive.org-phase-2\">Older HPR shows on\narchive.org, phase 2</h3>\n<p>This \"re-upload\" <a\nhref=\"http://hackerpublicradio.org/eps.php?id=3586#older-hpr-shows-on-archive.org-phase-2\">project</a>\nis now ended. All shows from 871 to 2429 have been re-uploaded with all\naudio files and other assets.</p>\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
(3806,'2023-03-06','HPR Community News for February 2023',4592,'HPR Volunteers talk about shows released and comments posted in February 2023','<style>\ntable td.shrink {\n    white-space:nowrap\n}\n</style>\n\n<h2>New hosts</h2>\n<p>\nWelcome to our new hosts: <br />\n\n    <a href=\"https://hackerpublicradio.org/correspondents/0416.html\" target=\"_blank\">screwtape</a>, \n    <a href=\"https://hackerpublicradio.org/correspondents/0417.html\" target=\"_blank\">StarshipTux</a>, \n    <a href=\"https://hackerpublicradio.org/correspondents/0418.html\" target=\"_blank\">David Thrane Christiansen</a>.\n</p>\n\n<h2>Last Month\'s Shows</h2>\n<table id=\"t01\">\n<tr>\n<th>Id</th>\n<th>Day</th>\n<th>Date</th>\n<th>Title</th>\n<th>Host</th>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3783\" target=\"_blank\">3783</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2023-02-01</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3783\" target=\"_blank\">Accessibility, and Navigating the HPR Web Pages with a Screen Reader</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.php?id=3784\" target=\"_blank\">3784</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2023-02-02</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3784\" target=\"_blank\">Two factor authentication without a phone number</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0407.html\" target=\"_blank\">Celeste</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3785\" target=\"_blank\">3785</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2023-02-03</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3785\" target=\"_blank\">Hacking Boba Bubble Tapioca Pearls Fail </a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0036.html\" target=\"_blank\">operat0r</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3786\" target=\"_blank\">3786</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2023-02-06</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3786\" target=\"_blank\">HPR Community News for January 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.php?id=3787\" target=\"_blank\">3787</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2023-02-07</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3787\" target=\"_blank\">It shouldn\'t crackle like that</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0293.html\" target=\"_blank\">Rho`n</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3788\" target=\"_blank\">3788</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2023-02-08</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3788\" target=\"_blank\">Nitecore Tube torch</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0225.html\" target=\"_blank\">Dave Morriss</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3789\" target=\"_blank\">3789</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2023-02-09</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3789\" target=\"_blank\">Common lisp portable games including acl2 formal logic</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0416.html\" target=\"_blank\">screwtape</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3790\" target=\"_blank\">3790</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2023-02-10</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3790\" target=\"_blank\">Tucson, Part 2</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0198.html\" target=\"_blank\">Ahuka</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3791\" target=\"_blank\">3791</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2023-02-13</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3791\" target=\"_blank\">My Hardware Problem - Keyboards</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0417.html\" target=\"_blank\">StarshipTux</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3792\" target=\"_blank\">3792</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2023-02-14</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3792\" target=\"_blank\">Learning to read music, part one</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0415.html\" target=\"_blank\">enistello</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3793\" target=\"_blank\">3793</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2023-02-15</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3793\" target=\"_blank\">RE: Zen_Floater2</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0391.html\" target=\"_blank\">Some Guy On The Internet</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3794\" target=\"_blank\">3794</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2023-02-16</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3794\" target=\"_blank\">Retro Karaoke machine restored</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0318.html\" target=\"_blank\">Archer72</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3795\" target=\"_blank\">3795</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2023-02-17</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3795\" target=\"_blank\">2022-2023 New Years Show Episode 1</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0159.html\" target=\"_blank\">HPR Volunteers</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3796\" target=\"_blank\">3796</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2023-02-20</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3796\" target=\"_blank\">Dependent Types</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0418.html\" target=\"_blank\">David Thrane Christiansen</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3797\" target=\"_blank\">3797</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2023-02-21</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3797\" target=\"_blank\">How to submit changes to HPR</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0030.html\" target=\"_blank\">Ken Fallon</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3798\" target=\"_blank\">3798</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2023-02-22</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3798\" target=\"_blank\">Laptop Second SSD MXLinux Install</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0401.html\" target=\"_blank\">Mechatroniac</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3799\" target=\"_blank\">3799</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2023-02-23</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3799\" target=\"_blank\">My home router history</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0342.html\" target=\"_blank\">norrist</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3800\" target=\"_blank\">3800</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2023-02-24</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3800\" target=\"_blank\">NIST Quantum Cryptography Update 20221008</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0198.html\" target=\"_blank\">Ahuka</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3801\" target=\"_blank\">3801</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2023-02-27</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3801\" target=\"_blank\">Enter the gopher</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0416.html\" target=\"_blank\">screwtape</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3802\" target=\"_blank\">3802</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2023-02-28</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3802\" target=\"_blank\">Attack of the Squishmallow</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0293.html\" target=\"_blank\">Rho`n</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 30 comments in total.</p>\n<h3>Past shows</h3>\n<p>There are 2 comments on\n2 previous shows:</p>\n<ul>\n<li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3776#comments\" target=\"_blank\">hpr3776</a></strong>\n(2023-01-23) \"<em>A linux distro review</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0365.html\" target=\"_blank\">Bookewyrmm</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3776#2\" target=\"_blank\">Comment 2</a>:\nbookewyrmm on 2023-02-08:\n\"RE: How to do it\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3781#comments\" target=\"_blank\">hpr3781</a></strong>\n(2023-01-30) \"<em>The Joule Thief</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0268.html\" target=\"_blank\">Andrew Conway</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3781#1\" target=\"_blank\">Comment 1</a>:\none_of_spoons on 2023-02-01:\n\"Candle power.\"</li></ul><br/>\n</li></ul>\n<h3>This month\'s shows</h3>\n<p>There are 28 comments on 11 of this month\'s shows:</p>\n<ul><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3783#comments\" target=\"_blank\">hpr3783</a></strong>\n(2023-02-01) \"<em>Accessibility, and Navigating the HPR Web Pages with a Screen Reader</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0282.html\" target=\"_blank\">Mike Ray</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3783#1\" target=\"_blank\">Comment 1</a>:\nMechatroniac on 2023-02-03:\n\"HPR\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3783#2\" target=\"_blank\">Comment 2</a>:\nKen Fallon on 2023-02-04:\n\"Podcast Clients\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3783#3\" target=\"_blank\">Comment 3</a>:\nMechatroniac on 2023-02-12:\n\"gpodder\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3783#4\" target=\"_blank\">Comment 4</a>:\nMechatroniac on 2023-02-12:\n\"awkward web site\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3783#5\" target=\"_blank\">Comment 5</a>:\nMechatroniac on 2023-02-13:\n\"nm\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3783#6\" target=\"_blank\">Comment 6</a>:\nKen Fallon on 2023-02-14:\n\"Fixed.\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3784#comments\" target=\"_blank\">hpr3784</a></strong>\n(2023-02-02) \"<em>Two factor authentication without a phone number</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0407.html\" target=\"_blank\">Celeste</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3784#1\" target=\"_blank\">Comment 1</a>:\nZen_floater2 on 2023-02-07:\n\"Thank you for making this podcast\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3789#comments\" target=\"_blank\">hpr3789</a></strong>\n(2023-02-09) \"<em>Common lisp portable games including acl2 formal logic</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0416.html\" target=\"_blank\">screwtape</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3789#1\" target=\"_blank\">Comment 1</a>:\nClaudioM on 2023-02-09:\n\"Great First Episode!\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3789#2\" target=\"_blank\">Comment 2</a>:\nZen_floater2 on 2023-02-09:\n\"Nice show\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3791#comments\" target=\"_blank\">hpr3791</a></strong>\n(2023-02-13) \"<em>My Hardware Problem - Keyboards</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0417.html\" target=\"_blank\">StarshipTux</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3791#1\" target=\"_blank\">Comment 1</a>:\nTrey on 2023-02-13:\n\"Keyboard Addiction\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3792#comments\" target=\"_blank\">hpr3792</a></strong>\n(2023-02-14) \"<em>Learning to read music, part one</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0415.html\" target=\"_blank\">enistello</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3792#1\" target=\"_blank\">Comment 1</a>:\nTrey on 2023-02-14:\n\"What fun!\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3792#2\" target=\"_blank\">Comment 2</a>:\njezra on 2023-02-15:\n\"quite possibly the most toe-tapping episode of HPR\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3793#comments\" target=\"_blank\">hpr3793</a></strong>\n(2023-02-15) \"<em>RE: Zen_Floater2</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0391.html\" target=\"_blank\">Some Guy On The Internet</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3793#1\" target=\"_blank\">Comment 1</a>:\nZen_floater2 on 2023-02-15:\n\"Appraising the show!\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3793#2\" target=\"_blank\">Comment 2</a>:\nSome Guy on The Internet on 2023-02-21:\n\"You are welcome kind Squirrel.\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3796#comments\" target=\"_blank\">hpr3796</a></strong>\n(2023-02-20) \"<em>Dependent Types</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0418.html\" target=\"_blank\">David Thrane Christiansen</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3796#1\" target=\"_blank\">Comment 1</a>:\nmcnalu on 2023-02-22:\n\"Concise and clear\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3797#comments\" target=\"_blank\">hpr3797</a></strong>\n(2023-02-21) \"<em>How to submit changes to HPR</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0030.html\" target=\"_blank\">Ken Fallon</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3797#1\" target=\"_blank\">Comment 1</a>:\nMechatroniac on 2023-02-22:\n\"Very cool\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3797#2\" target=\"_blank\">Comment 2</a>:\nnorrist on 2023-02-22:\n\"Repo Location\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3797#3\" target=\"_blank\">Comment 3</a>:\nnorrist on 2023-02-24:\n\"Automated build on Gitlab\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3797#4\" target=\"_blank\">Comment 4</a>:\nrho`n on 2023-02-25:\n\"Sweet! nice work norrist\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3797#5\" target=\"_blank\">Comment 5</a>:\nrho`n on 2023-02-25:\n\"RE: Registering at https://repo.anhonesthost.net\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3798#comments\" target=\"_blank\">hpr3798</a></strong>\n(2023-02-22) \"<em>Laptop Second SSD MXLinux Install</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0401.html\" target=\"_blank\">Mechatroniac</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3798#1\" target=\"_blank\">Comment 1</a>:\nMechatroniac on 2023-02-22:\n\"lol\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3798#2\" target=\"_blank\">Comment 2</a>:\nZen_floater2 on 2023-02-23:\n\"OBS-STUDIO comment.\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3798#3\" target=\"_blank\">Comment 3</a>:\nMechatroniac on 2023-02-25:\n\"reply to zenfloater2\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3798#4\" target=\"_blank\">Comment 4</a>:\nLuna bittin Jernberg on 2023-02-27:\n\"Slackware Grub\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3799#comments\" target=\"_blank\">hpr3799</a></strong>\n(2023-02-23) \"<em>My home router history</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0342.html\" target=\"_blank\">norrist</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3799#1\" target=\"_blank\">Comment 1</a>:\nZen_floater2 on 2023-02-26:\n\"Extremely entertaining\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3799#2\" target=\"_blank\">Comment 2</a>:\nWindigo on 2023-02-26:\n\"Custom Routers\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3800#comments\" target=\"_blank\">hpr3800</a></strong>\n(2023-02-24) \"<em>NIST Quantum Cryptography Update 20221008</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0198.html\" target=\"_blank\">Ahuka</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3800#1\" target=\"_blank\">Comment 1</a>:\nbrian-in-ohio on 2023-02-26:\n\"moore\'s law\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3800#2\" target=\"_blank\">Comment 2</a>:\nZen_floater2 on 2023-02-26:\n\"Very Interesting\"</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-February/thread.html\" target=\"_blank\">https://hackerpublicradio.org/pipermail/hpr_hackerpublicradio.org/2023-February/thread.html</a>\n\n\n<h2>Events Calendar</h2>\n<p>With the kind permission of <strong>LWN.net</strong> we are linking to\n<a href=\"https://lwn.net/Calendar/\" target=\"_blank\">The LWN.net Community Calendar</a>.</p>\n<p>Quoting the site:</p>\n<blockquote>This is the LWN.net community event calendar, where we track\nevents of interest to people using and developing Linux and free software.\nClicking on individual events will take you to the appropriate web\npage.</blockquote>\n\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
(3554,'2022-03-17','Guide to the Science and Technology Section of Bitchute',775,'Guide to some cool science and tech channels on Bitchute','<p>Forgot to mention this channel in the podcast<br />\r\n<a href=\"https://www.bitchute.com/channel/yourprivacytv/\" class=\"uri\">https://www.bitchute.com/channel/yourprivacytv/</a></p>\r\n<p>Cozytime<br />\r\n<a href=\"https://www.bitchute.com/channel/2mM8L9mZnvjt/\" class=\"uri\">https://www.bitchute.com/channel/2mM8L9mZnvjt/</a></p>\r\n<p>Grassroots Mechanic Movement<br />\r\n<a href=\"https://www.bitchute.com/channel/miGkQfBM24NZ/\" class=\"uri\">https://www.bitchute.com/channel/miGkQfBM24NZ/</a></p>\r\n<p>too lazy to add any more channels... make an account and you can browse and subscribe too.</p>\r\n',401,0,1,'CC-BY-SA','bitchute,videos,technology,science',0,0,1),
(3541,'2022-02-28','The case of missing ideas.',940,'With negotiation painful barely legible robotic voices will develop into beautiful expressive music ','<p>Just a mixed up overview of cases in the natural human languages of Russian and English types.</p>',398,0,1,'CC-BY-SA','language , cases , russian , grammar , ideas',0,0,1),
(3542,'2022-03-01','The Worst Car I Ever Had',651,'Beeza releases 30 years of frustration about a particularly dreadful car he once owned.','<p>Most of us who drive have probably owned a number of cars over the years. Some are inevitably better than others but there may be one which stands head and shoulders above the rest as the WORST car we\'ve ever owned.</p>\r\n<p>In this episode Beeza gets off his chest a tale of woe regarding a rogue car he had the misfortune to own in the mid 80s.</p>\r\n<p>Maybe other HPR listeners will care to tell their own horror stories in due course......</p>\r\n',246,0,0,'CC-BY-SA','Cars, automobiles',0,0,1),
(3544,'2022-03-03','All my microphones',655,'A show recording using every microphone I had to hand.','<p>I used the following microphones in roughly reverse order of my expectations of their quality:</p>\r\n<ul>\r\n<li><a href=\"https://www.bluemic.com/en-gb/products/yeti/\">Blue Yeti</a> via USB</li>\r\n<li>Plantronics headset via USB (no link as over 10 years old)</li>\r\n<li>Laptop (ASUS ZenBook UX550VD) internal mic</li>\r\n<li>Desktop mic on a Windows 10 PC via a jack plug (no link as over 10 years old)</li>\r\n<li>Phone (Samsung S9+) internal microphone</li>\r\n<li>Same phone but with <a href=\"https://www.willful.info/willful/products/earbuds/40.html\">T1 bluetooth earbuds</a></li>\r\n</ul>\r\n<p>All audio is mono. I used Audacity to record on my laptop at 44.1kHz. For the desktop mic I had to resort to using my son\'s desktop Windows 10 PC and Windows recording app which defaulted to 48kHz and I think it was the app rather than the mic that resulted in the surprisingly poor quality. It definitely sounds like some kind of noise gate is being applied but I didn\'t dig around to see what settings were available. For my phone\'s built-in mic I used Samsung\'s voice recording app which I presume came pre-installed on the phone. Recording via bluetooth on an android phone turned out to be tricky as the OS only wants you to use a bluetooth microphone for calls however I found an app called <a href=\"https://play.google.com/store/apps/details?id=com.wimlog.bluvoicerecorder&amp;hl=en_GB&amp;gl=US\">Bluetooth Headset Voice Recorder</a> and then enabled call audio on bluetooth and was able to record (the rubbish) audio.</p>\r\n<p>I edited this show in audacity and contrary to my normal practice I did <em>not</em> remove noise from any of the recordings so that you can hear any hiss in all its glory. I did however tweak the gain on each track manually so that they were about the same volume.</p>\r\n',268,0,1,'CC-BY-SA','audio,microphone,headset,Plantronics,ASUS ZenBook UX550VD',0,0,1),
(3548,'2022-03-09','Make a custom Git command',1177,'Make Git subcommands with shell scripts and Git rev-parse','<p>\r\nHow to make your own Git subcommands with shell scripts, and then how to pass arguments to them with git rev-parse. </p>\r\n\r\n<p>\r\nFor a real-world example of Git in scripts and hooks, see <a href=\"https://gitlab.com/slackermedia/git-portal\" target=\"_blank\">Git-portal</a>.</p>\r\n\r\n<p>The joke site Klaatu mentions in the episode is \r\n<a href=\"https://git-man-page-generator.lokaltog.net\" target=\"_blank\">git-man-page-generator</a>. It\'s a <strong>joke</strong> site. Do not attempt to run these commands. However, it could be fun inspiration on what Git command you could make next&#33;</p>\r\n',78,81,0,'CC-BY-SA','git',0,0,1),
(3547,'2022-03-08','Password Managers',811,'How I manage password security.','<h2 id=\"how-i-manage-password-security\">How I manage password security.</h2>\r\n<ol>\r\n<li><strong><a href=\"https://bitwarden.com/\">Bitwarden</a></strong></li>\r\n</ol>\r\n<ul>\r\n<li><a href=\"https://bitwarden.com/download/\">Bitwarden Download Options</a></li>\r\n<li><a href=\"https://bitwarden.com/compliance/\">Bitwarden Security and Compliance</a></li>\r\n</ul>\r\n<ol start=\"2\">\r\n<li><strong><a href=\"https://keepassxc.org/\">KeePassXC</a></strong></li>\r\n</ol>\r\n<ul>\r\n<li><a href=\"https://keepassxc.org/download/#linux\">KeePassXC Downloads</a></li>\r\n<li><a href=\"https://keepassxc.org/docs/KeePassXC_GettingStarted.html\">KeePassXC Documentations</a></li>\r\n</ul>\r\n<hr />\r\n<p><a rel=\"license\" href=\"https://creativecommons.org/licenses/by-sa/4.0/\"><img alt=\"Creative Commons License\" style=\"border-width:0\" src=\"https://i.creativecommons.org/l/by-sa/4.0/88x31.png\" /></a><br />This work is licensed under a <a rel=\"license\" href=\"https://creativecommons.org/licenses/by-sa/4.0/\">Creative Commons Attribution-ShareAlike 4.0 International License</a>.</p>\r\n',391,74,0,'CC-BY-SA','Password Managers, Online Security, Bitwarden, KeePassXC',0,0,1),
(3552,'2022-03-15','Unboxing a PineTime development kit',1684,'Rho`n talks about his new PineTime smart watch development kit','<h1>Synopsis</h1>\r\n\r\n<p>In this episode, Rho`n unboxes his new PineTime smart watch development kit, and gives his initial impressions. The development kit consists of two watches. One watch is fully assembled and ready for daily use. The other watch is disassembled, consisting of a watch band, the watch back cover, and the assembled display, system on a chip (SOC), CPU, and battery. The kit also comes with a serial cable for connecting from your computer to the SOC.</p>\r\n\r\n<p>The following are the photographs taken during the unboxing.</p>\r\n\r\n<style>\r\ndiv#figures {\r\n	display: flex;\r\n	flex-direction: row;\r\n	flex-wrap: wrap;\r\n	justify-content: center;\r\n}\r\ndiv#figures figcaption { max-width: 490px; }\r\ndiv#figures img { max-width: 50vw; padding-bottom: 0.15em }\r\n</style>\r\n\r\n<div id=\"figures\">\r\n<figure>\r\n	<a href=\"https://hackerpublicradio.org/eps/hpr3552/01.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3552/01-sm.png\"\r\n         alt=\"Box containing PrimeTime development kit beside PineTime Pogopin Jig\"></a>\r\n	<br>\r\n    <figcaption>Box containing PrimeTime development kit beside PineTime Pogopin Jig</figcaption>\r\n</figure>\r\n<figure>\r\n    <a href=\"https://hackerpublicradio.org/eps/hpr3552/02.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3552/02-sm.png\"\r\n								   alt=\"Open box displaying watch faces\"></a>\r\n	<br>\r\n    <figcaption>Open box displaying watch faces</figcaption>\r\n</figure>\r\n<figure>\r\n    <a href=\"https://hackerpublicradio.org/eps/hpr3552/03.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3552/03-sm.png\"\r\n								   alt=\"Contents of the development kit\"></a>\r\n	<br>\r\n    <figcaption>Contents of the development kit</figcaption>\r\n</figure>\r\n<figure>\r\n    <a href=\"https://hackerpublicradio.org/eps/hpr3552/04.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3552/04-sm.png\"\r\n								   alt=\"Assembled watch on a charger\"></a>\r\n	<br>\r\n    <figcaption>Assembled watch on a charger</figcaption>\r\n</figure>\r\n</div>\r\n\r\n<h1>References</h1>\r\n\r\n<ul>\r\n	<li>InfiniTime firmware - <a href=\"https://github.com/InfiniTimeOrg/InfiniTime\">https://github.com/InfiniTimeOrg/InfiniTime</a></li>\r\n	<li>PineTime watch - <a href=\"https://www.pine64.org/pinetime/\">https://www.pine64.org/pinetime/</a></li>\r\n	<li>PineTime development kit - <a href=\"https://pine64.com/product/pinetime-dev-kit/\">https://pine64.com/product/pinetime-dev-kit/</a></li>\r\n	<li>PineTime forum - <a href=\"https://forum.pine64.org/forumdisplay.php?fid=134\">https://forum.pine64.org/forumdisplay.php?fid=134</a></li>\r\n	<li>PineTime Pogopin Jig - <a href=\"https://pine64.com/product/pinetime-pogopin-jig/\">https://pine64.com/product/pinetime-pogopin-jig/</a></li>\r\n</ul>\r\n\r\n',293,0,0,'CC-BY-SA','pinetime, pine64, smart watch, InfiniTime',0,0,1),
(3551,'2022-03-14','Bash snippet - some possibly helpful hints',1475,'Using \'eval\', \'mapfile\' and environment variables','<h2 id=\"overview\">Overview</h2>\r\n<p>I write a moderate number of Bash scripts these days. Bash is not a programming language as such, but it’s quite powerful in what it can do by itself, and with other tools it’s capable of many things.</p>\r\n<p>I have enjoyed writing such scripts for many years on a variety of hardware and operating systems, and Bash is my favourite - partly because Linux itself is so flexible.</p>\r\n<p>This is just a short show describing three things I tend to do in Bash scripts to assist with some tasks I find I need to undertake.</p>\r\n<ol type=\"1\">\r\n<li>Generate Bash variables from a text file - usually output from a program</li>\r\n<li>Fill Bash arrays with data from a file or other source</li>\r\n<li>Use environment variables to control the Bash script’s execution</li>\r\n</ol>\r\n<h2 id=\"long-notes\">Long notes</h2>\r\n<p>Follow this link to <a href=\"https://hackerpublicradio.org/eps/hpr3551/full_shownotes.html\">read the detailed notes</a> associated with this episode.</p>\r\n<h2 id=\"links\">Links</h2>\r\n<ul>\r\n<li>Various links:\r\n<ul>\r\n<li><a href=\"https://unix.stackexchange.com/questions/23111/what-is-the-eval-command-in-bash\">What is the “eval” command in bash?</a></li>\r\n<li><a href=\"https://www.shell-tips.com/bash/arrays/\">A Complete Guide on How To Use Bash Arrays</a></li>\r\n<li><a href=\"https://www.computerhope.com/unix/bash/mapfile.htm\">Bash mapfile builtin command</a></li>\r\n<li><a href=\"https://www.gnu.org/software/bash/manual/html_node/Simple-Command-Expansion.html\">Bash manual 3.7.1 Simple Command Expansion</a></li>\r\n</ul></li>\r\n</ul>\r\n<ul>\r\n<li>Previous episodes in this series about arrays:\r\n<ul>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2709\">Bash Tips - 16</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2719\">Bash Tips - 17</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2729\">Bash Tips - 18</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2739\">Bash Tips - 19</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2756\">Bash Tips - 20</a></li>\r\n</ul></li>\r\n</ul>\r\n',225,42,1,'CC-BY-SA','Bash,eval,mapfile,environment variables',0,0,1),
(3559,'2022-03-24','Linux Inlaws S01E52: The Zig Project',4151,'An interview with Loris Cro of Zig Fame','<p>In this episode Martin and Chris have a very special guest: Loris Cro of\r\nZig fame. Zig fame?  Stay tuned. Not only is Loris an ex-colleague of our two\r\naging heroes, he is also the community vice president at the Zig Software\r\nFoundation. So this episode will be all about this new programming language,\r\nwhy you should use it (and perhaps why you shouldn\'t) and life, the universe\r\nand the rest. And Rust. Of course. :-) Full disclosure: In contrast to other\r\nepisodes, this one is really tech-heavy and may offend the less technical\r\nlisteners. Listen at your own discretion if you want to into the weeds of\r\nClang, LLVM, typing and cross-compilation - you have been warned. If this is\r\nup alley, you may want consider seeking professional help just in case :-).</p>\r\n\r\n<h2>Links:</h2>\r\n<ul>\r\n<li>Zig: <a href=\"https://ziglang.org\" target=_blank>https://ziglang.org</a></li>\r\n<li>Zig Foundation financial update: <a href=\"https://ziglang.org/news/financials-update\" target=_blank>https://ziglang.org/news/financials-update</a></li>\r\n<li>Clang / LLVM: <a href=\"https://clang.llvm.org\" target=_blank>https://clang.llvm.org</a></li>\r\n<li>Rust: <a href=\"https://www.rust-lang.org\" target=_blank>https://www.rust-lang.org</a></li>\r\n<li>Cargo: <a href=\"https://doc.rust-lang.org/cargo\" target=_blank>https://doc.rust-lang.org/cargo</a></li>\r\n<li>Mitchell\'s Tweet: <a href=\"https://twitter.com/mitchellh/status/1481441162871279618?s=20&t=OBGncJWN4B0N7mhflxlAbg\" target=_blank>https://twitter.com/mitchellh/status/1481441162871279618?s=20&t=OBGncJWN4B0N7mhflxlAbg</a></li>\r\n<li>501cs (only read this if you can\'t get to sleep!): <a href=\"https://en.wikipedia.org/wiki/501(c)_organization\" target=_blank>https://en.wikipedia.org/wiki/501(c)_organization</a></li>\r\n<li>Miami Vice: <a href=\"https://www.imdb.com/title/tt0086759\" target=_blank>https://www.imdb.com/title/tt0086759</a></li>\r\n<li>Lord of the Rings Trilogy: <a href=\"https://www.imdb.com/list/ls072068350\" target=_blank>https://www.imdb.com/list/ls072068350</a></li>\r\n<li>Land of the Blind: <a href=\"https://www.imdb.com/title/tt0433405/?ref_=fn_al_tt_1\" target=_blank>https://www.imdb.com/title/tt0433405/?ref_=fn_al_tt_1</a></li>\r\n</ul>\r\n',384,111,1,'CC-BY-SA','Zig, Zig Software Foundation, Rust, Money, Miami Vice, US Non-Profits',0,0,1),
(3553,'2022-03-16','Freedom of speech in open source',1432,'Is it free speech if you have to leave?','<ol>\r\n<li><strong><a href=\"https://constitution.congress.gov/constitution/\">First Amendment</a></strong> <em>(United States Constitution)</em>.<br />\r\nCongress shall make no law respecting an establishment of religion, or prohibiting the free exercise thereof; or abridging the freedom of speech, or of the press; or the right of the people peaceably to assemble, and to petition the Government for a redress of grievances.</li>\r\n</ol>\r\n<hr />\r\n<ol start=\"2\">\r\n<li>Read arch users the riot act.</li>\r\n</ol>\r\n<ul>\r\n<li><p><strong><a href=\"https://librivox.org/\">LibriVox</a></strong></p>\r\n<ul>\r\n<li><a href=\"https://librivox.org/the-riot-act-by-british-parliament/\">LibriVox: The Riot Act Download</a></li>\r\n<li><a href=\"https://www.youtube.com/watch?v=Cw6RtudEPl8\">Youtube: The Riot Act by LibriVox</a></li>\r\n</ul></li>\r\n<li><p><a href=\"https://en.wikipedia.org/wiki/Riot_Act\">Wikipedia</a></p>\r\n<ul>\r\n<li><a href=\"https://www.gutenberg.org/files/8142/8142-h/8142-h.htm\">Full text of the Riot Act</a></li>\r\n</ul></li>\r\n</ul>\r\n',391,69,1,'CC-BY-SA','Free Speech',0,0,1),
(3562,'2022-03-29','Creating a new project with Haskell and Stack',1230,'Tuula explains how to create a new haskell project and build it','<h1 id=\"stack\">Stack</h1>\r\n<p><a href=\"https://docs.haskellstack.org/en/stable/README/\">Stack</a> is a cross-platform program for developing Haskell projects. It features:</p>\r\n<ul>\r\n<li>Installing GHC automatically, in an isolated location.</li>\r\n<li>Installing packages needed for your project.</li>\r\n<li>Building your project.</li>\r\n<li>Testing your project.</li>\r\n<li>Benchmarking your project.</li>\r\n</ul>\r\n<p>Follow <a href=\"https://docs.haskellstack.org/en/stable/README/\">installation instructions</a> to get it installed in your system.</p>\r\n<h1 id=\"starting-a-new-project\">Starting a new project</h1>\r\n<p>Our game will be called Treasure Dungeon. After installing stack, we\'ll open a new terminal window, change into some suitable directory and use stack to create our project: <code>stack new treasure-dungeon rio</code>.</p>\r\n<p>This will create directory <code>treasure-dungeon</code> and initialize it by using <code>rio</code> template. <a href=\"https://hackage.haskell.org/package/rio\">rio</a> is a standard library that I have recently started using. There\'s a <a href=\"https://www.fpcomplete.com/haskell/library/rio/\">tutorial</a> available if you want to learn more about it. We\'ll cover only very basics while writing the game.</p>\r\n<h2 id=\"package.yaml\">package.yaml</h2>\r\n<p>Next step is to modify the project settings for the project that was created for us. Have a look at license file and change that to your liking. Then open up <code>package.yaml</code> and edit some of the metadata:</p>\r\n<ul>\r\n<li><code>git</code> this should point to your public repository</li>\r\n<li><code>license</code> this has machine readable info about the license terms</li>\r\n<li><code>author</code> here you should fill in your info</li>\r\n<li><code>maintainer</code> this is the person currently maintaining the package</li>\r\n<li><code>copyright</code> Copyright information</li>\r\n<li><code>executablebles</code> this section lists executable, you may want to edit the name</li>\r\n</ul>\r\n<p>I have a repository at <a href=\"https://codeberg.org/Tuula/treasure-dungeon\">codeberg</a> if you want to have a look what settings I ended up with.</p>\r\n<h2 id=\"stack.yaml\">stack.yaml</h2>\r\n<p>Having finished with <code>package.yaml</code>, save it and start editing <code>stack.yaml</code>. Here we change only one setting: - resolver: lts-18.27, this specifies which set of libraries to use. These are fetched from <a href=\"https://www.stackage.org/\">Stackage</a>.</p>\r\n<p>Final step is to edit <code>README.md</code> to suit your needs.</p>\r\n<h1 id=\"using-stack\">Using stack</h1>\r\n<p>Now we can work on our project. Lets start by building it: <code>stack build</code>. This will build the example code. There\'s one library and one executable there. If everything went correctly, we can start our executable with <code>stack exec -- treasure-dungeon</code>. This should print a little message on screen and exit. We can also turn on verbose logging, by starting the project with <code>stack exec -- treasure-dungeon --verbose 2&gt; log.txt</code>.</p>\r\n<p>Another useful command is <code>stack test</code>, which will compile and run tests for the project. There\'s couple simple ones as an example created by the template.</p>\r\n<p>And if you want to clean up your project of intermediate files and exes, you can use <code>stack clean</code>.</p>\r\n<h1 id=\"project-structure\">Project structure</h1>\r\n<p>Final thing before finishing, let\'s have a look at the project structure. There\'s three directories: <code>app</code>, <code>src</code> and <code>test</code>.</p>\r\n<p><code>app</code> contains code for our executable. This is where we will be placing big portion of the code, mainly one that deals with user interactions.</p>\r\n<p><code>src</code> contains code for our library. This is where we will be placing code that codifies rules of the game. We want to keep this part of the code oblivious about outside world, like screens, user input and such.</p>\r\n<p><code>test</code> this is where tests live. We aren\'t going to do much with them most likely.</p>\r\n<h1 id=\"in-closing\">In closing</h1>\r\n<p>We started our card game project. It doesn\'t do much yet, but we already have an executable that we can build and run. Next time we\'ll look into how to roll a new character and get them equipped before venturing into treasure dungeon.</p>\r\n<p>ad astra!</p>\r\n',364,107,0,'CC-BY-SA','haskell, programming, getting started',0,0,1),
(3555,'2022-03-18','PopKorn Episode 1: The Fallacy of the Unreasonable Effectiveness of Mathematics in the ETC',969,'BlacKernel tries talking off the cuff with mixed results','<h1>Talking Points</h1>\r\n<ul>\r\n	<li>The concept of PopKorn</li>\r\n	<li>The statement of \"The Unreasonable Effectiveness of Mathematics in the Natural Sciences\"</li>\r\n	<li>The Fine-structure Constant</li>\r\n	<li>The Axiom of Extentionality</li>\r\n	<li>Why proofs of God are crap</li>\r\n	<li>The \"First Mover\" argument of St. Thomas Aquinus</li>\r\n	<li>The Blind Watchmaker by Dawkins</li>\r\n</ul>\r\n\r\n<hr>\r\n\r\n<h1>Show Notes</h1>\r\n<h4>Important Links:</h4>\r\n<ul>\r\n	<li><a href=\"https://apps.kde.org/kwave/\">KWave</a></li>\r\n	<li><a href=\"https://freesound.org/people/Trollarch2/sounds/331656/\">Keyboard Typing - FreeSound.org</a></li>\r\n	<li><a href=\"https://rationalwiki.org/wiki/Non_sequitur\">Non-Sequitur Argument</a></li>\r\n	<li><a href=\"https://rationalwiki.org/wiki/Circular_reasoning\">Circular Reasoning</a></li>\r\n</ul>\r\n\r\n<h4>Wikipedia Articles:</h4>\r\n<ul>\r\n	<li><a href=\"https://en.wikipedia.org/wiki/The_Unreasonable_Effectiveness_of_Mathematics_in_the_Natural_Sciences\">The Unreasonable Effectiveness of Mathematics in the Natural Sciences</a></li>\r\n	<li><a href=\"https://en.wikipedia.org/wiki/Fine-structure_constant\">Fine-structure Constant</a></li>\r\n	<li><a href=\"https://en.wikipedia.org/wiki/Axiom_of_extensionality\">Axiom of Extentionality</a></li>\r\n	<li><a href=\"https://en.wikipedia.org/wiki/Cosmological_argument\">\"First Mover\" or Cosmological Argument</a></li>\r\n	<li><a href=\"https://en.wikipedia.org/wiki/Watchmaker_analogy\">Watchmaker Analogy</a></li>\r\n	<li><a href=\"https://en.wikipedia.org/wiki/The_Blind_Watchmaker\">The Blind Watchmaker by Dawkins</a></li>\r\n</ul>\r\n\r\n<hr>\r\n\r\n<i>Contact Me</i>\r\n<ul>\r\n<li><b>Email: </b><a href=\"mailto:izzyleibowitz@pm.me\">izzyleibowitz at pm dot me</a></li>\r\n<li><b>Mastodon: </b><a href=\"https://nixnet.social/BlacKernel\">at blackernel at nixnet dot social</a></li>\r\n</ul>\r\n',396,0,1,'CC-BY-SA','improv, math, popkorn, fallacy',0,0,1),
(3556,'2022-03-21','TTS for HPR',226,'Few voice samples to swap espeak TTS in HPR intro','<p>Used the <a href=\"https://github.com/synesthesiam/opentts\">opentts</a> Project with default settings. The voices you will hear in order:</p>\r\n<ul>\r\n<li>coqui_en_ljspeech</li>\r\n<li>larynx_northern_english_male</li>\r\n<li>larynx_southern_english_female</li>\r\n<li>larynx_scottish_english_male</li>\r\n<li>larynx_glados</li>\r\n</ul>\r\n<p>I found the gladOS voice funny, hence I included that one, but these are the best sounding to my knowledge so far.</p>\r\n<p>I have seen that with there will be a new mimic release version 3 soon, which has a really great voice. And example with the voice of Alan Pope <a href=\"https://www.youtube.com/watch?v=QZmf1jk86y0\">mycroft_demo</a>. And synesthesiam who\'s working on these projects said that there will be hopefully a model, which can be trained with actual voice, which would fine tune the voice to sounds more like someone else.</p>\r\n',402,0,0,'CC-BY-SA','tts, hpr',0,0,1),
(3563,'2022-03-30','Home Coffee Roasting, part 1',1123,'What it\'s like to roast coffee at home','<h2 id=\"links\">Links</h2>\r\n<p><a href=\"https://www.sweetmarias.com/guatemala-huehuetenango-boqueroncito-6846.html\">Example of a coffee page</a></p>\r\n<p><a href=\"https://library.sweetmarias.com/green-coffee-outlook-march-2022-for-sweet-marias-and-coffee-shrub/\">Green coffee outlook for March</a></p>\r\n<p><a href=\"https://www.youtube.com/watch?v=r9xMarGcGp8\">A neat video of first crack</a></p>\r\n<p><a href=\"https://library.sweetmarias.com/glossary/\">Coffee Glossary</a></p>\r\n<p><a href=\"https://library.sweetmarias.com/good-reads-what-happened-to-zimbabwe-coffee/\">Article on Zimbabwe coffee</a></p>\r\n<p><a href=\"https://library.sweetmarias.com/ethiopian-cini-coffee-cups-at-sweet-marias/\">Ethiopian Cini cups</a></p>\r\n<p>If I left anything out, let me know in the comments or email me.</p>\r\n<p>I think I mentioned in the show that I would put in the sound of first crack, but then it didn\'t work because the motor was too loud and you couldn\'t hear anything. Sorry.</p>\r\n<p>For part 2, see <a href=\"https://hackerpublicradio.org/eps.php?id=3573\">hpr3573</a></p>\r\n',399,88,0,'CC-BY-SA','coffee,\"coffee roasting\"',0,0,1),
(3573,'2022-04-13','Home Coffee Roasting, part 2',1230,'How I\'ve roasted and brewed coffee','<h2 id=\"roasting\">Roasting</h2>\r\n<p>Popcorn popper</p>\r\n<p>Stovepop</p>\r\n<p><a href=\"https://behmor.com/\">Behmor 2000AB Plus</a></p>\r\n<p><a href=\"https://www.roastmasters.com/sr700.html\">FreshRoast SR700</a> (has been discontinued, newer models are available but the 700 I think was the last one or the only one with USB control)</p>\r\n<p><a href=\"https://github.com/Roastero/Openroast\">Openroast</a></p>\r\n<h2 id=\"brewing\">Brewing</h2>\r\n<p><a href=\"https://en.wikipedia.org/wiki/Moka_pot\">Moka pot</a></p>\r\n<p><a href=\"https://en.wikipedia.org/wiki/French_press\">French Press</a></p>\r\n<p><a href=\"https://en.wikipedia.org/wiki/Brewed_coffee#/media/File:Kaffeefilter.jpg\">Pour Over</a></p>\r\n<p><a href=\"https://www.bruer.co/\">Bruer</a></p>\r\n<p><a href=\"https://flairespresso.com/\">Flair</a></p>\r\n<p><a href=\"https://aeropress.com/\">Aeropress</a></p>\r\n<hr />\r\n<p>If I left anything out, let me know in the comments or email me.</p>\r\n<p>For part 1, see <a href=\"https://hackerpublicradio.org/eps.php?id=3563\">hpr3563</a></p>\r\n',399,88,0,'CC-BY-SA','coffee,\"coffee roasting\"',0,0,1),
(3561,'2022-03-28','Employment security',410,'Phone system for the state of Illinois','<p>Going through the phone system for the state of Illinois in the United States.</p>\r\n<p>Feel free to record your experience with various states/countries.</p>\r\n',318,0,0,'CC-BY-SA','Phone call, IDES, Unemployment, Government, Firefox, Internet Explorer',0,0,1),
(3557,'2022-03-22','A short story about Lenovo and laptop batteries',580,'How Lenovo is spicing up the life of their user with strange challenges','<ul>\r\n<li><strong>kvalitetsdatorer.se</strong> <a href=\"https://www.kvalitetsdatorer.se/se/\" class=\"uri\">https://www.kvalitetsdatorer.se/se/</a> The company where I bought my refurbished Thinkpad T530</li>\r\n<li><strong>inxi -Bxxx</strong> Command to get full information about all batteries in the system. Even on devices connected to the computer, as my Sansa Clip+ f.ex.</li>\r\n<li><strong>Thinkpad X230 battery patch</strong> <a href=\"https://bystram.be/posts/thinkpad-x230-battery-ec-patch/\" class=\"uri\">https://bystram.be/posts/thinkpad-x230-battery-ec-patch/</a></li>\r\n<li><strong>batteriexperten.se</strong> <a href=\"https://www.batteriexperten.com/sv/\" class=\"uri\">https://www.batteriexperten.com/sv/</a></li>\r\n<li><strong>tpacpi-bat</strong> A Perl script with ACPI calls for recent ThinkPads (such as T420 and W520) whose battery thresholds are not supported by tp_smapi</li>\r\n</ul>\r\n',309,0,0,'CC-BY-SA','lenovo,batteries,BIOS,customer service',0,0,1),
(3558,'2022-03-23','How I\'m learning Haskell',1394,'Tuula talks about how she\'s learning Haskell','<p>Online resources mentioned in the episode for learning Haskell:</p>\r\n<ul>\r\n<li><a href=\"https://github.com/bitemyapp/learnhaskell\">How to Learn Haskell - Chris Allen</a></li>\r\n<li><a href=\"https://www.seas.upenn.edu/~cis194/spring13/lectures.html\">CIS 194 - Brent Yorgey</a></li>\r\n<li><a href=\"https://www.learnyouahaskell.com/\">Learn You a Haskell for Great Good!</a></li>\r\n<li><a href=\"https://github.com/LambdaHack/LambdaHack\">LambdaHack</a> is a framework for Roguelike games.</li>\r\n</ul>\r\n<p>Books about Haskell:</p>\r\n<ul>\r\n<li><a href=\"https://haskellbook.com/\">Haskell Programming from First Principles - Chris Allen</a></li>\r\n<li><a href=\"https://algebradriven.design/\">Algebra-Driven Design - Sandy Maguire</a></li>\r\n<li><a href=\"https://leanpub.com/optics-by-example\">Optics by Example - Chris Penner</a></li>\r\n<li><a href=\"https://leanpub.com/production-haskell\">Production Haskell</a></li>\r\n<li><a href=\"https://thinkingwithtypes.com/\">Thinking With Types: Type-Level Programming in Haskell - Sandy Maguire</a></li>\r\n<li><a href=\"https://dev.stephendiehl.com/hask/\">What I Wish I Knew When Learning Haskell - Stephen Diehl</a></li>\r\n</ul>\r\n<p>Blogs I follow:</p>\r\n<ul>\r\n<li><a href=\"https://planet.haskell.org/\">Planet Haskell</a></li>\r\n<li><a href=\"https://mmhaskell.com/blog/\">Monday Morning Haskell</a></li>\r\n<li><a href=\"https://lexi-lambda.github.io/\">Alexis King</a></li>\r\n</ul>\r\n<p>Important reminders:</p>\r\n<ul>\r\n<li>haskell isn\'t impossible</li>\r\n<li>you don\'t need math degree to write Haskell</li>\r\n<li>you don\'t need to know category theory</li>\r\n<li>you need practice, you most likely can\'t just stare at code and learn it like that</li>\r\n</ul>\r\n<p>ad astra!</p>\r\n',364,107,0,'CC-BY-SA','haskell, learning, programming, blogs, books',0,0,1),
(3564,'2022-03-31','Removing EXIF data from an image',745,'An image might reveal data you want to keep private','<h2 id=\"introduction\">Introduction</h2>\r\n<p>I’m writing a script to process image files sent in by HPR hosts with their shows. One of the things the script does is to strip <em>Exif</em> metadata from such images. That’s because this metadata may contain details that could identify the creator of the image - their camera, their location, and other things. Many people will be alert to this, but in case anything slips through it seems a courtesy to <em>anonymise</em> images sent to HPR.</p>\r\n<p>As I was implementing this I realised that one piece of Exif data: <code>\'Orientation\'</code>, can’t just be removed. Sometimes images are created with a particular orientation by the camera but are written with an Exif orientation setting that shows another orientation. If this is just removed the image might be shown wrongly.</p>\r\n<p>This short episode describes the journey I had learning about this issue and finding how to get round it.</p>\r\n<h2 id=\"the-problem\">The Problem</h2>\r\n<p>A show was sent in early March 2022 which had three images with orientation values in the Exif metadata. They had apparently been taken with one orientation but were being rotated for viewing.</p>\r\n<p>I later discovered that the orientation setting can be viewed with the <a href=\"https://www.exiftool.org/\" title=\"ExifTool by Phil Harvey\"><code>exiftool</code></a> command:</p>\r\n<pre><code>$ exiftool -orientation testimage.jpg\r\nOrientation                     : Rotate 90 CW</code></pre>\r\n<p>You can find information about the <code>Orientation</code> tag on the <a href=\"https://www.exiftool.org/TagNames/EXIF.html\" title=\"ExifTool: EXIF Tags\">ExifTool web site</a>.</p>\r\n<p>The actual image in this case is rotated 90° anti-clockwise (the top of the image is to the left) and this needs to be reversed. The setting <code>\'Rotate 90 CW\'</code> causes it to be displayed after rotating 90° in the clockwise direction. The actual value for this setting is <strong>6</strong>.</p>\r\n<p>The problem is that removing <u>all</u> the Exif data causes such an image to revert to its <em>raw</em> state as explained below.</p>\r\n<h2 id=\"investigation\">Investigation</h2>\r\n<h3 id=\"demonstration\">Demonstration</h3>\r\n<p>It took me a little while to understand this problem because I couldn’t find a good explanation of what was going on.</p>\r\n<p>I found a <a href=\"https://github.com/recurser/exif-orientation-examples\" title=\"EXIF Orientation-flag example images\">repository on GitHub</a> which would take a picture and generate all of the possible Exif orientations from it. I used it to generate pictures from one (a thumbnail) I used in an old HPR show. Here’s the original picture with an orientation setting of 6 (<code>Rotate 90 CW</code>), and then with the Exif metadata removed.</p>\r\n<p><em>Original image with orientation 6</em><br />\r\n<img src=\"https://hackerpublicradio.org/eps/hpr3564/P1020743_6_original_tn.JPG\" alt=\"Original image with orientation 6\" /></p>\r\n<p><em>Same image with Exif stripped</em><br />\r\n<img src=\"https://hackerpublicradio.org/eps/hpr3564/P1020743_6_stripped_tn.JPG\" alt=\"Same image with Exif stripped\" /></p>\r\n<h3 id=\"methods-used-to-fix-this\">Methods used to fix this</h3>\r\n<p>I found and installed some tools:</p>\r\n<ul>\r\n<li><code>jpegexiforient</code> - reads or writes the Exif Orientation Tag</li>\r\n<li><code>exifautotran</code> - transforms Exif files so that Orientation becomes 1</li>\r\n<li><code>jpegtran</code> - lossless transformation of JPEG files</li>\r\n</ul>\r\n<p>Note that these only operate on JPEG images.</p>\r\n<p>The <code>exifautotran</code> tool is a shell script that uses <code>jpegexiforient</code> to find the orientation and <code>jpegtran</code> to undo whatever rotation (or other transformation) has been defined.</p>\r\n<p>Reading the <code>exifautotran</code> script helped me understand all of this, but I did not use these tools in the end.</p>\r\n<p>In the script I had written to manage images I also needed to do other image operations:</p>\r\n<ul>\r\n<li>interrogate the image to find its size to determine whether a thumbnail was needed</li>\r\n<li>make a thumbnail if necessary</li>\r\n</ul>\r\n<p>To do this I had started to use the <code>GraphicsMagick</code> package.</p>\r\n<p>This package actually caters for the orientation transformation I wanted to perform <u>and</u> can handle many image types, not just JPEG.</p>\r\n<p>The technique is to use the command <code>\'gm convert\'</code> with two options:</p>\r\n<ul>\r\n<li><code>-strip</code> - remove all profiles and text attributes from the image</li>\r\n<li><code>-auto-orient</code> - orient (rotate) the image so it is upright; adjusts the image orientation so that it is suitable for viewing</li>\r\n</ul>\r\n<p>Example:</p>\r\n<pre><code>gm convert -strip -auto-orient sideways_pic.jpg normal_pic.jpg\r\n\r\n</code></pre>\r\n<p>Running this on the images in question removed the Exif orientation after having rotated the pixels of the image to the <code>\'Horizontal (normal)\'</code> state.</p>\r\n<h2 id=\"conclusion\">Conclusion</h2>\r\n<p>I have modified my picture management script to use this technique, and so far it seems to do the job perfectly. It has to be admitted that images with Exif orientation metadata are rare though.</p>\r\n<p>The <code>GraphicsMagick</code> documentation indicates that the transformations needed to generate an upright image could cause problems with some images, so we will be alert to any issues. For the moment, it looks as if the problem is largely solved.</p>\r\n<p>Personally, I gained several things from this journey of discovery:</p>\r\n<ul>\r\n<li>I ended up understanding images a bit better.</li>\r\n<li>Using <code>exiftool</code> to examine these images helped me to understand the power of this tool<a href=\"#fn1\" class=\"footnote-ref\" id=\"fnref1\" role=\"doc-noteref\"><sup>1</sup></a>.</li>\r\n<li>I also discovered that if opened the example image with <code>Gimp</code> it spotted the orientation issue and asked if I wanted it to perform the transformation discussed above.</li>\r\n<li>I installed a KDE image tool called <code>ShowFoto</code> and it also reported the fact that the image existed in two forms, in the same way, and allowed Exif editing.</li>\r\n</ul>\r\n<h2 id=\"links\">Links</h2>\r\n<ul>\r\n<li>Exif:\r\n<ul>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Exif\">Wikipedia article about Exif</a></li>\r\n<li><a href=\"https://www.exiftool.org/\">ExifTool by Phil Harvey</a>\r\n<ul>\r\n<li><a href=\"https://www.exiftool.org/TagNames/EXIF.html\">EXIF tag names</a></li>\r\n</ul></li>\r\n<li><a href=\"https://github.com/recurser/exif-orientation-examples\">Github repository of Exif orientation examples</a></li>\r\n</ul></li>\r\n</ul>\r\n<ul>\r\n<li>GraphicsMagick:\r\n<ul>\r\n<li><a href=\"https://en.wikipedia.org/wiki/GraphicsMagick\">Wikipedia article about GraphicsMagick</a></li>\r\n<li><a href=\"https://www.graphicsmagick.org/\">GraphicsMagick main website</a></li>\r\n</ul></li>\r\n</ul>\r\n<section class=\"footnotes\" role=\"doc-endnotes\">\r\n<hr />\r\n<ol>\r\n<li id=\"fn1\" role=\"doc-endnote\"><p>For the record, removing all Exif data with <code>exiftool</code> is achieved with the command:</p>\r\n<pre><code>exiftool -all= image.jpg</code></pre>\r\n<a href=\"#fnref1\" class=\"footnote-back\" role=\"doc-backlink\">↩︎</a></li>\r\n</ol>\r\n</section>\r\n',225,0,1,'CC-BY-SA','image,Exif,exiftool,GraphicsMagick,orientation',0,0,1),
(3579,'2022-04-21','PINN is not NOOBS',650,'Multibooting raspberry pi','<h3 id=\"multiboot-with-pinn\">Multiboot with PINN</h3>\r\n<p><a href=\"https://github.com/procount/pinn/blob/master/README_PINN.md\" class=\"uri\">https://github.com/procount/pinn/blob/master/README_PINN.md</a></p>\r\n<blockquote>\r\n<p>What is PINN (PINN Is Not NOOBS)?</p>\r\n<p>An easy enhanced Operating System installer for the Raspberry Pi</p>\r\n<p>The latest version of PINN can be downloaded from sourceforge.</p>\r\n<p>This README relates to v3.8</p>\r\n<p>(PINN-lite does not include any operating systems at all.</p>\r\n<p>It is more akin to NOOBS-lite rather than NOOBS. For that reason, the filename that you download is called pinn-lite.zip. More recently, pinn.zip has also been made available for download which includes versions of Raspbian and LibreELEC.)</p>\r\n</blockquote>\r\n<h4 id=\"sourceforge\">Sourceforge</h4>\r\n<p><a href=\"https://sourceforge.net/projects/pinn/\" class=\"uri\">https://sourceforge.net/projects/pinn/</a></p>\r\n<h4 id=\"github\">Github</h4>\r\n<p><a href=\"https://github.com/procount/pinn\" class=\"uri\">https://github.com/procount/pinn</a></p>\r\n<ul>\r\n<li><h5 id=\"release-page\">Release page</h5>\r\n<ul>\r\n<li><a href=\"https://github.com/procount/pinn/releases/tag/p3.8.1\" class=\"uri\">https://github.com/procount/pinn/releases/tag/p3.8.1</a></li>\r\n</ul></li>\r\n</ul>\r\n<h4 id=\"web-ui-for-pinn\">Web UI for PINN</h4>\r\n<p><a href=\"https://pinn.mjh.nz/\" class=\"uri\">https://pinn.mjh.nz/</a></p>\r\n<ul>\r\n<li><h5 id=\"instructions\">Instructions</h5></li>\r\n</ul>\r\n<blockquote>\r\n<p>Unzip pinn-lite.zip</p>\r\n</blockquote>\r\n<blockquote>\r\n<p>Replace recovery.cmdline file in PINN directory with downloaded file</p>\r\n</blockquote>\r\n<blockquote>\r\n<p>Copy the contents of the PINN directory to your FAT32 formatted media</p>\r\n</blockquote>\r\n<blockquote>\r\n<p>Boot your Raspberry Pi</p>\r\n</blockquote>\r\n<blockquote>\r\n<p>Select all systems and install</p>\r\n</blockquote>\r\n<blockquote>\r\n<p>Enjoy!</p>\r\n</blockquote>\r\n<p><em>Installation instructions</em><br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3579/image_005.png\"><img src=\"https://hackerpublicradio.org/eps/hpr3579/image_005_thumbnail.png\" alt=\"Installation instructions\" /></a> <br/><small><small><em>Click the thumbnail to see the full-sized image</em></small></small></p>\r\n<p><a href=\"https://www.youtube.com/watch?v=tc2dSMiUfmI&amp;t=171s\" class=\"uri\">https://www.youtube.com/watch?v=tc2dSMiUfmI&amp;t=171s</a></p>\r\n<h4 id=\"raspberry-pi-os-64-bit-release-news\">Raspberry Pi OS 64-bit release news</h4>\r\n<p><a href=\"https://www.raspberrypi.com/news/raspberry-pi-os-64-bit/\" class=\"uri\">https://www.raspberrypi.com/news/raspberry-pi-os-64-bit/</a></p>\r\n<ul>\r\n<li><h5 id=\"downloads\">Downloads</h5>\r\n<ul>\r\n<li><a href=\"https://www.raspberrypi.com/software/operating-systems/\" class=\"uri\">https://www.raspberrypi.com/software/operating-systems/</a></li>\r\n</ul></li>\r\n</ul>\r\n<p><em>OS installation selection</em><br />\r\n<img src=\"https://hackerpublicradio.org/eps/hpr3579/image_001.jpg\" alt=\"OS installation selection\" /></p>\r\n<p><em>Installing RetroPie</em><br />\r\n<img src=\"https://hackerpublicradio.org/eps/hpr3579/image_002.jpg\" alt=\"Installing RetroPie\" /></p>\r\n<p><em>Installing Kodi/OSMC</em><br />\r\n<img src=\"https://hackerpublicradio.org/eps/hpr3579/image_003.jpg\" alt=\"Installing Kodi/OSMC\" /></p>\r\n<p><em>Boot selection menu</em><br />\r\n<img src=\"https://hackerpublicradio.org/eps/hpr3579/image_004.jpg\" alt=\"Boot selection menu\" /></p>\r\n',318,0,0,'CC-BY-SA','Raspberry Pi, 64 bit, multiboot, Retropie, Kodi',0,0,1),
(3569,'2022-04-07','Linux Inlaws S01E53: Rust Marketing',2661,'A shameless plug for this hippster programming language and why you should use it','<p>In this episode our two heroes explore the depths a new (?) hipster\r\nprogramming language called Rust. Being an obvious piece of blatant technology\r\nmarketing, the Linux Inlaws are still waiting for the funds to arrive from the\r\nRust Foundation :-) (@Foundation: If you want to get in touch please send\r\na mail to sponsor at linuxinlaws eu). Jokes aside, the episode give a short\r\noverview of this new programming language without going into deeper technical\r\ndetails as this podcast is only the usual four hours long.</p>\r\n\r\n<h2>Links:</h2>\r\n<ul>\r\n<li>Rust: <a href=\"https://en.wikipedia.org/wiki/Rust\" target=_blank>https://en.wikipedia.org/wiki/Rust</a></li>\r\n<li>Rust (II): <a href=\"https://www.rust-lang.org\" target=_blank>https://www.rust-lang.org</a></li>\r\n<li>Firefox and Rust: <a href=\"https://servo.org\" target=_blank>https://servo.org</a></li>\r\n<li>Rust on TIOBE: <a href=\"https://www.tiobe.com/tiobe-index/rust\" target=_blank>https://www.tiobe.com/tiobe-index/rust</a></li>\r\n<li>Rust adoption: <a href=\"https://thenewstack.io/rust-by-the-numbers-the-rust-programming-language-in-2021\" target=_blank>https://thenewstack.io/rust-by-the-numbers-the-rust-programming-language-in-2021</a></li>\r\n<li>Bottlerocket: <a href=\"https://aws.amazon.com/bottlerocket/\" target=_blank>https://aws.amazon.com/bottlerocket/</a></li>\r\n<li>Rust Foundation: <a href=\"https://foundation.rust-lang.org\" target=_blank>https://foundation.rust-lang.org</a></li>\r\n<li>Cargo (Rust\'s package management and build system): <a href=\"https://doc.rust-lang.org/cargo\" target=_blank>https://doc.rust-lang.org/cargo</a></li>\r\n<li>Rust\'s Crates: <a href=\"https://crates.io\" target=_blank>https://crates.io</a></li>\r\n<li>D-Wave\'s quantum machines: <a href=\"https://www.dwavesys.com/solutions-and-products/systems\" target=_blank>https://www.dwavesys.com/solutions-and-products/systems</a></li>\r\n<li>Grumpies: <a href=\"https://grumpy-old-coders.org\" target=_blank>https://grumpy-old-coders.org</a></li>\r\n</ul>\r\n',384,111,1,'CC-BY-SA','Rust, The Rust Foundation, Firefox, D-Wave, Cargo',0,0,1),
(3568,'2022-04-06','PopKorn Episode 2: Programming, Mathematics, and Asymmetric Literacy',899,'in This episOde, blackeRnel Tries to help yoU undeRstand Enough about math and programming','<h1>Talking Points</h1>\r\n<ul>\r\n	<li>Any audio is better than no audio?</li>\r\n	<li>Mathematics = Logic</li>\r\n	<li>ZFC Axioms show logical structure</li>\r\n	<li>Peano Axioms illustrating this point</li>\r\n	<li>Euclid\'s Axioms showing how just because something is logical doesn\'t mean that has anything to do with reality</li>\r\n	<li>x86 Instruction set showing the axiomatic basis of programming</li>\r\n	<li>Asymmetric Literacy in Chinese languages.</li>\r\n	<li>NOTE: This section is slightly incorrect in that there is a separate written form for Cantonese as well, but I hope that the main idea is still intelligible.</li>\r\n</ul>\r\n\r\n<hr>\r\n\r\n<h1>Show Notes</h1>\r\n<h4>Important Links:</h4>\r\n<ul>\r\n	<li><a href=\"https://nixnet.social/notice/AHe409EDWjWtFgnYIa\">Relevant Mastodon Status</a></li>\r\n</ul>\r\n\r\n<h4>Wikipedia Articles:</h4>\r\n<ul>\r\n	<li><a href=\"https://en.wikipedia.org/wiki/Zermelo%E2%80%93Fraenkel_set_theory\">ZFC set theory</a></li>\r\n	<li><a href=\"https://en.wikipedia.org/wiki/Von_Neumann%E2%80%93Bernays%E2%80%93G%C3%B6del_set_theory\">Von Neumann-Bernays-G&ouml;del set theory</a></li>\r\n	<li><a href=\"https://en.wikipedia.org/wiki/Peano_axioms\">Peano axioms</a></li>\r\n	<li><a href=\"https://en.wikipedia.org/wiki/Euclidean_geometry#Axioms\">Euclid\'s axioms</a></li>\r\n	<li><a href=\"https://en.wikipedia.org/wiki/Parallel_postulate#Equivalent_properties\">Equivalent Axioms to the 5th postulate (Number 8 is rectangles exist)</a></li>\r\n	<li><a href=\"https://en.wikipedia.org/wiki/X86_instruction_listings\">x86 Instruction Listings</a></li>\r\n	<li><a href=\"https://en.wikipedia.org/wiki/Written_Chinese\">Written Chinese</a></li>\r\n	<li><a href=\"https://en.wikipedia.org/wiki/Cantonese\">Cantonese</a></li>\r\n	<li><a href=\"https://en.wikipedia.org/wiki/Mandarin_Chinese\">Mandarin Chinese</a></li>\r\n	<li><a href=\"https://en.wikipedia.org/wiki/Written_Cantonese\">Written Cantonese</a></li>\r\n</ul>\r\n\r\n<hr>\r\n\r\n<i>Contact Me</i>\r\n<ul>\r\n<li><b>Email: </b><a href=\"mailto:izzyleibowitz@pm.me\">izzyleibowitz at pm dot me</a></li>\r\n<li><b>Mastodon: </b><a href=\"https://nixnet.social/BlacKernel\">at blackernel at nixnet dot social</a></li>\r\n</ul>\r\n',396,0,0,'CC-BY-SA','improv, math, popkorn, programming, language',0,0,1),
(3571,'2022-04-11','The Meatball Mystery',512,'A naming oddity leads to questions about geneaology and American history','<p>Discussing the interesting oddity that is the meatball; its origins, and some misconceptions and coincidences surrounding the tasty \"traditional\" dish of spaghetti and meatballs.</p>\r\n<p>Historical context and explanations were provided by the article \"<a href=\"https://www.smithsonianmag.com/arts-culture/is-spaghetti-and-meatballs-italian-94819690/\">Is Spaghetti and Meatballs Italian?</a>\" by <a href=\"https://www.smithsonianmag.com/author/shaylyn-esposito/\">Shaylyn Esposito</a>, published in <a href=\"https://www.smithsonianmag.com\">Smithsonian Magazine</a>.</p>',196,0,1,'CC-BY-SA','cuisine, food, genealogy',0,0,1),
(3572,'2022-04-12','More about NVMe',1142,'Who what when and were of NVMe','<p><a href=\"https://www.pcworld.com/article/432532/everything-you-need-to-know-about-nvme.html\" class=\"uri\">NVMe SSDs: Everything you need to know about this insanely fast storage</a></p>\r\n\r\n<p>\r\nNVM Express (NVMe) or Non-Volatile Memory Host Controller Interface Specification (NVMHCIS) is an open, logical-device interface specification for accessing a computer\'s non-volatile storage media usually attached via PCI Express (PCIe) bus. The acronym NVM stands for non-volatile memory, which is often NAND flash memory that comes in several physical form factors, including solid-state drives (SSDs), PCI Express (PCIe) add-in cards, and M.2 cards, the successor to mSATA cards. NVM Express, as a logical-device interface, has been designed to capitalize on the low latency and internal parallelism of solid-state storage devices<br />\r\n<a href=\"https://en.wikipedia.org/wiki/NVM_Express\">https://en.wikipedia.org/wiki/NVM_Express</a>\r\n</p>\r\n\r\n\r\n',129,0,0,'CC-BY-SA','ssd,NVME Storage,high performance',0,0,1),
(3567,'2022-04-05','What is NVMe™ and why is it important?',1020,'A short Podcast about NVMe how it works and it is good','<p><a href=\"https://blog.westerndigital.com/nvme-important-data-driven-businesses/\" class=\"uri\">https://blog.westerndigital.com/nvme-important-data-driven-businesses/</a></p>\r\n\r\n<p>\r\nNVM Express (NVMe) or Non-Volatile Memory Host Controller Interface Specification (NVMHCIS) is an open, logical-device interface specification for accessing a computer\'s non-volatile storage media usually attached via PCI Express (PCIe) bus. The acronym NVM stands for non-volatile memory, which is often NAND flash memory that comes in several physical form factors, including solid-state drives (SSDs), PCI Express (PCIe) add-in cards, and M.2 cards, the successor to mSATA cards. NVM Express, as a logical-device interface, has been designed to capitalize on the low latency and internal parallelism of solid-state storage devices<br />\r\n<a href=\"https://en.wikipedia.org/wiki/NVM_Express\">https://en.wikipedia.org/wiki/NVM_Express</a>\r\n</p>\r\n\r\n',129,0,0,'CC-BY-SA','ssd,NVME Storage,high performance',0,0,1),
(3826,'2023-04-03','HPR Community News for March 2023',5070,'HPR Volunteers talk about shows released and comments posted in March 2023','<style>\ntable td.shrink {\n    white-space:nowrap\n}\n</style>\n\n<h2>New hosts</h2>\n<p>\nThere were no new hosts this month.\n</p>\n\n<h2>Last Month\'s Shows</h2>\n<table id=\"t01\">\n<tr>\n<th>Id</th>\n<th>Day</th>\n<th>Date</th>\n<th>Title</th>\n<th>Host</th>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3803\" target=\"_blank\">3803</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2023-03-01</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3803\" target=\"_blank\">Chatbot hallucination</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0399.html\" target=\"_blank\">dnt</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3804\" target=\"_blank\">3804</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2023-03-02</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3804\" target=\"_blank\">2022-2023 New Years Show Episode 2</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0159.html\" target=\"_blank\">HPR Volunteers</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3805\" target=\"_blank\">3805</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2023-03-03</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3805\" target=\"_blank\">Document File Formats on Wikipedia</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0318.html\" target=\"_blank\">Archer72</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3806\" target=\"_blank\">3806</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2023-03-06</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3806\" target=\"_blank\">HPR Community News for February 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.php?id=3807\" target=\"_blank\">3807</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2023-03-07</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3807\" target=\"_blank\">PeePaw builds a computer</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0326.html\" target=\"_blank\">Brian in Ohio</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3808\" target=\"_blank\">3808</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2023-03-08</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3808\" target=\"_blank\">Funkwhale A social platform to enjoy and share music</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0030.html\" target=\"_blank\">Ken Fallon</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3809\" target=\"_blank\">3809</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2023-03-09</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3809\" target=\"_blank\">The Abominable Post Apocalyptic Podcast Player</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0401.html\" target=\"_blank\">Mechatroniac</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3810\" target=\"_blank\">3810</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2023-03-10</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3810\" target=\"_blank\">Clifton, Arizona</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0198.html\" target=\"_blank\">Ahuka</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3811\" target=\"_blank\">3811</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2023-03-13</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3811\" target=\"_blank\">mkfifo and named pipes</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0078.html\" target=\"_blank\">Klaatu</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3812\" target=\"_blank\">3812</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2023-03-14</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3812\" target=\"_blank\">PeePaw\'s computer does nothing</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0326.html\" target=\"_blank\">Brian in Ohio</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3813\" target=\"_blank\">3813</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2023-03-15</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3813\" target=\"_blank\">The postmarketOS Podcast</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0030.html\" target=\"_blank\">Ken Fallon</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3814\" target=\"_blank\">3814</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2023-03-16</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3814\" target=\"_blank\">2022-2023 New Years Show Episode 3</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0159.html\" target=\"_blank\">HPR Volunteers</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3815\" target=\"_blank\">3815</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2023-03-17</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3815\" target=\"_blank\">The UNIVAC Uniscope - The first terminal with a video monitor</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0194.html\" target=\"_blank\">Deltaray</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3816\" target=\"_blank\">3816</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2023-03-20</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3816\" target=\"_blank\">Post Apocalyptic 4s5 Battery Pack  </a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0401.html\" target=\"_blank\">Mechatroniac</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3817\" target=\"_blank\">3817</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2023-03-21</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3817\" 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.php?id=3818\" target=\"_blank\">3818</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2023-03-22</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3818\" target=\"_blank\">nop test redux</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0326.html\" target=\"_blank\">Brian in Ohio</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3819\" target=\"_blank\">3819</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2023-03-23</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3819\" target=\"_blank\">Remapping Mouse Buttons with XBindKeys on Linux</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0238.html\" target=\"_blank\">Jon Kulp</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3820\" target=\"_blank\">3820</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2023-03-24</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3820\" target=\"_blank\">Introduction to Gaming</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0198.html\" target=\"_blank\">Ahuka</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3821\" target=\"_blank\">3821</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2023-03-27</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3821\" 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.php?id=3822\" target=\"_blank\">3822</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2023-03-28</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3822\" target=\"_blank\">A tale of wonder, angst and woe</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0365.html\" target=\"_blank\">Bookewyrmm</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3823\" target=\"_blank\">3823</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2023-03-29</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3823\" target=\"_blank\">Gitlab Pages for website hosting</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0342.html\" target=\"_blank\">norrist</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3824\" target=\"_blank\">3824</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2023-03-30</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3824\" target=\"_blank\">2022-2023 New Years Show Episode 4</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0159.html\" target=\"_blank\">HPR Volunteers</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3825\" target=\"_blank\">3825</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2023-03-31</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3825\" target=\"_blank\">Creating a natural aquarium</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0375.html\" target=\"_blank\">minnix</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 29 comments in total.</p>\n<h3>Past shows</h3>\n<p>There are 6 comments on\n5 previous shows:</p>\n<ul>\n<li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3434#comments\" target=\"_blank\">hpr3434</a></strong>\n(2021-09-30) \"<em>From 0 to K8s in 30 minutes</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0078.html\" target=\"_blank\">Klaatu</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3434#3\" target=\"_blank\">Comment 3</a>:\nMike Ray on 2023-03-24:\n\"Built a cluster in a rack\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3751#comments\" target=\"_blank\">hpr3751</a></strong>\n(2022-12-19) \"<em>Using Noisetorch</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0194.html\" target=\"_blank\">Deltaray</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3751#2\" target=\"_blank\">Comment 2</a>:\nReto on 2023-03-28:\n\"Noisetorch, the second choice\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3761#comments\" target=\"_blank\">hpr3761</a></strong>\n(2023-01-02) \"<em>HPR Community News for December 2022</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0159.html\" target=\"_blank\">HPR Volunteers</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3761#1\" target=\"_blank\">Comment 1</a>:\nKevin O&#39;Brien on 2023-03-16:\n\"Travel journals\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3794#comments\" target=\"_blank\">hpr3794</a></strong>\n(2023-02-16) \"<em>Retro Karaoke machine restored</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0318.html\" target=\"_blank\">Archer72</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3794#1\" target=\"_blank\">Comment 1</a>:\none_of_spoons on 2023-03-01:\n\"tape cassettes\"</li>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3794#2\" target=\"_blank\">Comment 2</a>:\nJon Kulp on 2023-03-14:\n\"Obsolete Audio Devices Rule\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3802#comments\" target=\"_blank\">hpr3802</a></strong>\n(2023-02-28) \"<em>Attack of the Squishmallow</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0293.html\" target=\"_blank\">Rho`n</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3802#1\" target=\"_blank\">Comment 1</a>:\nKevin O&#39;Brien on 2023-03-18:\n\"Impressive undertaking\"</li></ul><br/>\n</li></ul>\n<h3>This month\'s shows</h3>\n<p>There are 23 comments on 11 of this month\'s shows:</p>\n<ul><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3803#comments\" target=\"_blank\">hpr3803</a></strong>\n(2023-03-01) \"<em>Chatbot hallucination</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0399.html\" target=\"_blank\">dnt</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3803#1\" target=\"_blank\">Comment 1</a>:\nMechatroniac on 2023-02-27:\n\"The Inverted Rabbit\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3806#comments\" target=\"_blank\">hpr3806</a></strong>\n(2023-03-06) \"<em>HPR Community News for February 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.php?id=3806#1\" target=\"_blank\">Comment 1</a>:\nArcher72 on 2023-03-08:\n\"Karaoke\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3807#comments\" target=\"_blank\">hpr3807</a></strong>\n(2023-03-07) \"<em>PeePaw builds a computer</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0326.html\" target=\"_blank\">Brian in Ohio</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3807#1\" target=\"_blank\">Comment 1</a>:\nMechatroniac on 2023-02-26:\n\".\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3807#2\" target=\"_blank\">Comment 2</a>:\nMechatroniac on 2023-02-26:\n\".\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3807#3\" target=\"_blank\">Comment 3</a>:\nbrian-in-ohio on 2023-03-08:\n\"forth shows\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3808#comments\" target=\"_blank\">hpr3808</a></strong>\n(2023-03-08) \"<em>Funkwhale A social platform to enjoy and share music</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0030.html\" target=\"_blank\">Ken Fallon</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3808#1\" target=\"_blank\">Comment 1</a>:\ndnt on 2023-03-09:\n\"funkwhale\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3808#2\" target=\"_blank\">Comment 2</a>:\nWindigo on 2023-03-22:\n\"Piqued interest\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3809#comments\" target=\"_blank\">hpr3809</a></strong>\n(2023-03-09) \"<em>The Abominable Post Apocalyptic Podcast Player</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0401.html\" target=\"_blank\">Mechatroniac</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3809#1\" target=\"_blank\">Comment 1</a>:\nSome Guy on The Internet on 2023-03-09:\n\"The normiees wouldn&rsquo;t like it.\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3809#2\" target=\"_blank\">Comment 2</a>:\nMechatroniac on 2023-03-09:\n\"captions\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3809#3\" target=\"_blank\">Comment 3</a>:\nnorrist on 2023-03-09:\n\"Premium HPR content\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3809#4\" target=\"_blank\">Comment 4</a>:\nMechatroniac on 2023-03-10:\n\"reply\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3810#comments\" target=\"_blank\">hpr3810</a></strong>\n(2023-03-10) \"<em>Clifton, Arizona</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0198.html\" target=\"_blank\">Ahuka</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3810#1\" target=\"_blank\">Comment 1</a>:\nzen_floater2 on 2023-03-10:\n\"up-state !\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3814#comments\" target=\"_blank\">hpr3814</a></strong>\n(2023-03-16) \"<em>2022-2023 New Years Show Episode 3</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0159.html\" target=\"_blank\">HPR Volunteers</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3814#1\" target=\"_blank\">Comment 1</a>:\nStache_AF on 2023-03-16:\n\"I need to speak up\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3814#2\" target=\"_blank\">Comment 2</a>:\nSome Guy on The Internet on 2023-03-17:\n\"I vote for \"Push To Talk\".\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3814#3\" target=\"_blank\">Comment 3</a>:\nKen Fallon on 2023-03-26:\n\"What license\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3814#4\" target=\"_blank\">Comment 4</a>:\nSome Guy On The Internet on 2023-03-27:\n\"Video License.\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3815#comments\" target=\"_blank\">hpr3815</a></strong>\n(2023-03-17) \"<em>The UNIVAC Uniscope - The first terminal with a video monitor</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0194.html\" target=\"_blank\">Deltaray</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3815#1\" target=\"_blank\">Comment 1</a>:\nmirwi on 2023-03-24:\n\"Second delete key -&gt; carriage return?\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3815#2\" target=\"_blank\">Comment 2</a>:\nDeltaray on 2023-03-27:\n\"Documentation on keyboard layout\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3821#comments\" target=\"_blank\">hpr3821</a></strong>\n(2023-03-27) \"<em>The Oh No! News.</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0391.html\" target=\"_blank\">Some Guy On The Internet</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3821#1\" target=\"_blank\">Comment 1</a>:\nTrey on 2023-03-27:\n\"Mastodon?\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3821#2\" target=\"_blank\">Comment 2</a>:\nSome Guy On The Internet on 2023-03-28:\n\"My Mastodon handle.\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3822#comments\" target=\"_blank\">hpr3822</a></strong>\n(2023-03-28) \"<em>A tale of wonder, angst and woe</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0365.html\" target=\"_blank\">Bookewyrmm</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3822#1\" target=\"_blank\">Comment 1</a>:\nWindigo on 2023-03-31:\n\"Wrist device\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3825#comments\" target=\"_blank\">hpr3825</a></strong>\n(2023-03-31) \"<em>Creating a natural aquarium</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0375.html\" target=\"_blank\">minnix</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3825#1\" target=\"_blank\">Comment 1</a>:\nDave Morriss on 2023-03-31:\n\"Great and fascinating show\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3825#2\" target=\"_blank\">Comment 2</a>:\nminnix on 2023-03-31:\n\"Thanks Dave\"</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-March/thread.html\" target=\"_blank\">https://hackerpublicradio.org/pipermail/hpr_hackerpublicradio.org/2023-March/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=\"movement-of-the-play-button-on-each-show-page\">Movement of the\n<em>play</em> button on each show page</h3>\n<ul>\n<li>A request was made to move this from the bottom of each show page,\nwhere it can be difficult to find because of the length of the notes, to\nthe top.</li>\n<li>The change was made in the last week of March.</li>\n</ul>\n<h3 id=\"non-english-shows\">Non-English shows</h3>\n<p>How to organise them?</p>\n<ol type=\"1\">\n<li>Just an intro and then the show</li>\n<li>An intro and then the show, then the text-to-speech translation\nafter</li>\n<li>Just the text-to-speech translation</li>\n<li>The original in the left channel and the text-to-speech in the\nright</li>\n</ol>\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
(3574,'2022-04-14','Local Talking Newspapers',393,'Recordings of Local News for the Blind and Visually Impaired','<p>The Talking News Federation website:</p>\r\n<p><a href=\"https://tnf.org.uk/\" class=\"uri\">https://tnf.org.uk/</a></p>\r\n<p>With links to 300+ talking newspapers in the UK.</p>\r\n<p>The British Wireless for the Blind website:</p>\r\n<p><a href=\"https://www.bwbf.org.uk/\" class=\"uri\">https://www.bwbf.org.uk/</a></p>\r\n<p>Royalty Free Music from Bensound:</p>\r\n<p><a href=\"https://www.bensound.com/\" class=\"uri\">https://www.bensound.com/</a></p>\r\n<p>The Audacity website:</p>\r\n<p><a href=\"https://www.audacityteam.org/\" class=\"uri\">https://www.audacityteam.org/</a></p>\r\n',403,79,0,'CC-BY-SA','blind, audio, recording',0,0,1),
(3575,'2022-04-15','An Edinburgh Blether',3724,'MrX and Dave Morriss catching up after nearly a year','<h2 id=\"introduction\">Introduction</h2>\r\n<p>Hosts:</p>\r\n<ul>\r\n<li><a href=\"https://hackerpublicradio.org/correspondents/0201.html\">MrX</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/correspondents/0225.html\">Dave Morriss</a></li>\r\n</ul>\r\n<p>We recorded this on Sunday March 6<sup>th</sup> 2022. The last time we set up a chat like this was back in March 2021, almost exactly a year ago surprisingly!</p>\r\n<p><small>Note on the title: we spoke a little on the subject of the Scots language in the show - when speaking of the current census - so the title uses a Scots term.</small></p>\r\n<h2 id=\"topics-discussed\">Topics discussed</h2>\r\n<ul>\r\n<li>COVID:\r\n<ul>\r\n<li>Losing track of time</li>\r\n</ul></li>\r\n</ul>\r\n<ul>\r\n<li>Christmas:\r\n<ul>\r\n<li>A quiet time for both of the hosts, with some family time</li>\r\n</ul></li>\r\n</ul>\r\n<ul>\r\n<li>Dave’s family matters:\r\n<ul>\r\n<li>Son graduated after doing an MSc and got a job quite quickly last year</li>\r\n<li>Daughter had graduated from an MSc the year before and also got a job this year.</li>\r\n<li>Dave had a bout of <em>shingles</em> in early January, which lasted about 6-7 weeks overall. If you can get a shingles vaccination as you age, get one!</li>\r\n</ul></li>\r\n</ul>\r\n<ul>\r\n<li>UK heating, boilers, etc.\r\n<ul>\r\n<li>MrX’s in-laws had a boiler failure during the cold weather, and a gas leak!</li>\r\n<li>Dave had a leak in his cold water tank in the attic which flooded the room below. He decided to completely upgrade the heating system, remove all tanks and put in a new pressurised condensing gas boiler. See the Wikipedia page for an overview of <a href=\"https://en.wikipedia.org/wiki/Central_heating\" title=\"Central heating\">central heating systems</a>.</li>\r\n<li>Old-style plumbing; coal fires, back boilers and dampers.</li>\r\n<li>The era of coal:\r\n<ul>\r\n<li><a href=\"https://en.wiktionary.org/wiki/gas_poker\" title=\"Gas poker\">Gas poker</a> used for starting domestic (usually coal) fires</li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Coal_gas\" title=\"Coal gas\">Coal gas</a> made from coal, superseded by natural gas</li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Gas_holder\" title=\"Gasometer or Gas holder\">Gasometer</a> storage device for coal gas</li>\r\n</ul></li>\r\n</ul></li>\r\n</ul>\r\n<ul>\r\n<li>Internet connectivity:\r\n<ul>\r\n<li>Dave has transitioned from ADSL to fibre since the last show\r\n<ul>\r\n<li><em>Fibre to the Premises</em>, with up to 1 Gbit/s if desired</li>\r\n<li>New router using <em>Wireless 6</em></li>\r\n</ul></li>\r\n<li>MrX has <em>Fibre to the Cabinet</em></li>\r\n<li>Dave’s new router doesn’t allow the Pi-hole to work at the moment</li>\r\n</ul></li>\r\n</ul>\r\n<ul>\r\n<li>Chromebook:\r\n<ul>\r\n<li>MrX has acquired a Chromebook since our last show\r\n<ul>\r\n<li>It is convenient to use. Made answering the online Scottish Census quite straightforward.</li>\r\n</ul></li>\r\n</ul></li>\r\n</ul>\r\n<ul>\r\n<li>Census and <a href=\"https://en.wikipedia.org/wiki/Scots_language\" title=\"Scots Language\">Scots Language</a>:\r\n<ul>\r\n<li>The Census asks about the Scots Language, whether the person can speak and understand it.</li>\r\n<li>Dave follows <a href=\"https://twitter.com/Lenniesaurus\" title=\"@lenniesaurus on Twitter\"><code>@lenniesaurus</code> on Twitter</a> who introduces a daily Scots word.</li>\r\n<li>According to Wikipedia:</li>\r\n</ul>\r\n<blockquote>\r\n<p><em>Scots is recognised as an indigenous language of Scotland, a regional or minority language of Europe, and a vulnerable language by UNESCO. In the 2011 Scottish Census, over 1.5 million people in Scotland reported being able to speak Scots.</em></p>\r\n</blockquote></li>\r\n</ul>\r\n<h2 id=\"links\">Links</h2>\r\n<ul>\r\n<li>Scots words:\r\n<ul>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Scots_language\">Scots Language</a></li>\r\n<li><a href=\"\">The online Scots dictionary (English to Scots)</a></li>\r\n<li><a href=\"https://twitter.com/Lenniesaurus\"><code>@lenniesaurus</code> on Twitter</a> - poet and Scots language enthusiast</li>\r\n</ul></li>\r\n</ul>\r\n<ul>\r\n<li>Plumbing, heating:\r\n<ul>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Central_heating\">Central Heating</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Hot_water_storage_tank\">Hot water tank</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Electric_heating#Immersion_heater\">Immersion heater</a></li>\r\n<li><a href=\"https://en.wiktionary.org/wiki/gas_poker\">Gas poker</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Coal_gas\">Coal gas</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Gas_holder\">Gas holder/gasometer</a></li>\r\n</ul></li>\r\n</ul>\r\n<ul>\r\n<li>Internet connection:\r\n<ul>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Asymmetric_digital_subscriber_line\">ADSL - Asymmetric digital subscriber line</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Fiber_to_the_x\"><em>Fibre to the X</em> - different types of fibre connection</a></li>\r\n</ul></li>\r\n</ul>\r\n',225,0,1,'CC-BY-SA','conversation,blether',0,0,1),
(3576,'2022-04-18','First impressions of Ubuntu 22.04 as a daily driver.',1380,'Knightwise gives his first impressions on the latest LTS release of Ubuntu','<p>Knightwise gives us a good first impression of the Ubuntu 22.04 release and answers the question if its ready for prime time. We go down a little rabbithole on why there will never be a year of the Linux desktop.</p>\r\n<p>The app mentioned to Sync Onedrive with Ubuntu is Insync: <a href=\"https://www.insynchq.com\" class=\"uri\">https://www.insynchq.com</a></p>\r\n<p>The podcast about Knightwise\'s favorite command line apps is here: <a href=\"https://knightwise.com/kw1607-conquering-the-command-line/\" class=\"uri\">https://knightwise.com/kw1607-conquering-the-command-line/</a></p>\r\n<p>The podcast mentioned \'Linux for a Living\" can be found here: <a href=\"https://knightwise.com/kw1604-linux-on-the-workplace-desktop/\" class=\"uri\">https://knightwise.com/kw1604-linux-on-the-workplace-desktop/</a></p>\r\n',111,0,0,'CC-BY-SA','ubuntu, linux, desktop, open-source',0,0,1),
(3578,'2022-04-20','Linux Inlaws S01E54: Electronic Freedom Never Mind the Civil Rest',5234,'A discussion with members of the Electronic Frontier Georgia about electronic freedom, civil rights ','<p>In this episode our two hosts talk to an eclectic panel consisting of\r\nmembers of the Georgian affiliation of the Electronic Frontier Foundation\r\n(EFF) called Electronic Frontiers Georgia. Among other topics, civil rights\r\n(especially in the digital age), sharing of ideas never mind other\r\nintellectual capital and why this still matters in socialist America are the\r\nfocus of discussion. Plus Chris manages to recount most of the founding\r\nfathers of the US (gaps may be present... :-)</p>\r\n<h2>Links:</h2>\r\n<ul>\r\n<li>Electronic Frontiers Georgia: <a href=\"https://ef-georgia.org\" target=_blank>https://ef-georgia.org</a></li>\r\n<li>Electronic Frontier Foundation: <a href=\"https://www.eff.org\" target=_blank>https://www.eff.org</a></li>\r\n<li>Software Freedom Conservancy: <a href=\"https://sfconservancy.org\" target=_blank>https://sfconservancy.org</a></li>\r\n<li>American Civil Liberties Union: <a href=\"https://www.aclu.org\" target=_blank>https://www.aclu.org</a></li>\r\n<li>The Hacker Crackdown: <a href=\"https://www.gutenberg.org/ebooks/101\" target=_blank>https://www.gutenberg.org/ebooks/101</a></li>\r\n<li>The Electronic Frontier Alliance: <a href=\"https://www.eff.org/fight\" target=_blank>https://www.eff.org/fight</a></li>\r\n<li>Shodan: <a href=\"https://www.shodan.io\" target=_blank>https://www.shodan.io</a></li>\r\n<li>Shotspotter: <a href=\"https://www.shotspotter.com\" target=_blank>https://www.shotspotter.com</a></li>\r\n<li>High velocity winds: <a href=\"https://en.wikipedia.org/wiki/Storm\" target=_blank>https://en.wikipedia.org/wiki/Storm</a></li>\r\n<li>Super amigos: <a href=\"https://www.imdb.com/title/tt0923928/?ref_=fn_al_tt_2\" target=_blank>https://www.imdb.com/title/tt0923928/?ref_=fn_al_tt_2</a></li>\r\n<li>Chaos Communication Congress: <a href=\"https://en.wikipedia.org/wiki/Chaos_Communication_Congress\" target=_blank>https://en.wikipedia.org/wiki/Chaos_Communication_Congress</a></li>\r\n<li>Authors of US constitution: <a href=\"https://en.wikipedia.org/wiki/Founding_Fathers_of_the_United_States\" target=_blank>https://en.wikipedia.org/wiki/Founding_Fathers_of_the_United_States</a></li>\r\n<li>The Federalist Papers: <a href=\"https://en.wikipedia.org/wiki/The_Federalist_Papers\" target=_blank>https://en.wikipedia.org/wiki/The_Federalist_Papers</a></li>\r\n<li>US Consitution: <a href=\"https://guides.loc.gov/constitution\" target=_blank>https://guides.loc.gov/constitution</a></li>\r\n</ul>\r\n',384,111,1,'CC-BY-SA','EFF,Electronic Frontier Foundation, Georgia, US Constitution, Civil Rights, Positive Lobbying',0,0,1),
(3589,'2022-05-05','Sample of my microphones',434,'Microphones I have around the apartment','<h3 id=\"microphones-around-the-apartment\">Microphones around the apartment</h3>\r\n<h4 id=\"tozo-t9\">Tozo T9</h4>\r\n<p><a href=\"https://www.amazon.com/TOZO-Environmental-Cancellation-Cancelling-Headphones/dp/B09G2ZN5FX\" class=\"uri\">https://www.amazon.com/TOZO-Environmental-Cancellation-Cancelling-Headphones/dp/B09G2ZN5FX</a></p>\r\n<p><em>Tozo T9 earbuds</em><br />\r\n<img src=\"https://hackerpublicradio.org/eps/hpr3589/Screenshot_Tozo_T9.png\" alt=\"Tozo T9 earbuds\" />  </p>\r\n<h4 id=\"moto-g-power\">Moto G Power</h4>\r\n<h4 id=\"acer-aspire-slim\">Acer Aspire Slim</h4>\r\n<h4 id=\"memorex\">Memorex?</h4>\r\n<ul>\r\n<li>Bought at Office Depot</li>\r\n</ul>\r\n<h4 id=\"mpow-hc6-usb-headset3.5mm-computer-pc-on-ear-office-headphones\">Mpow HC6 USB Headset/3.5mm Computer PC On-Ear Office Headphones</h4>\r\n<p><a href=\"https://www.ebay.com/itm/402912231079\" class=\"uri\">https://www.ebay.com/itm/402912231079</a></p>\r\n<p><em>Mpow Headset</em><br />\r\n<img src=\"https://hackerpublicradio.org/eps/hpr3589/Screenshot_Mpow_HC6.png\" alt=\"Mpow Headset\" />  </p>\r\n<h4 id=\"mobile-audio-recorder-on-f-droid\">Mobile Audio Recorder on F-droid</h4>\r\n<p><a href=\"https://f-droid.org/en/packages/com.github.axet.audiorecorder\" class=\"uri\">https://f-droid.org/en/packages/com.github.axet.audiorecorder</a></p>\r\n',318,0,0,'CC-BY-SA','microphones, headsets, bluetooth',0,0,1),
(3581,'2022-04-25','My daily Linux driver.',1376,'Knightwise talks about the Linux system he uses as a daily driver.','<p>I talk about how I use Linux on a Daily basis from my home workstation.</p>\r\n\r\n<h3>Products mentioned in this episode</h3>\r\n<p><small>Added by Ken</small></p>\r\n<ul>\r\n<li><a href=\"https://jysk.be/nl/bureau/bureau/computertafel/verstelbaar-bureau-slangerup-zwart\">jysk Standing Desks</a> EUR 499</li>\r\n<li><a href=\"https://www.amazon.de/-/en/ASUS-XG349C-86-36-Inch-3440x1440/dp/B09641MM21\">34 ASUS Repubic of Gamers Monitor</a> EUR 1,049</li>\r\n<li><a href=\"https://www.amazon.de/-/en/S2722DC-Inches-Monitor-extreme-Anti-Glare/dp/B09CGYHJ84\">27\" Dell Display</a> EUR 339.99</li>\r\n<li><a href=\"https://www.amazon.de/-/en/Logitech-Wireless-Keyboard-Bluetooth-Connection/dp/B07W7KRXDW\">Logitech MX Keys Wireless Keyboard, Bluetooth and USB Receiver, USB-C Connection</a> EUR 79</li>\r\n<li><a href=\"https://www.amazon.de/-/en/Logitech-Bluetooth-connection-ultra-fast-scrolling/dp/B07W6JG6Z7\">Logitech MX Master 3 Wireless Mouse</a> EUR 66</li>\r\n<li><a href=\"https://www.amazon.de/-/en/Evolve-including-Bluetooth-Headset-7099-823-409/dp/B078P2Y7RL\">Jabra Evolve 75e UC including Link 370 Bluetooth Headset</a> EUR 222.50</li>\r\n<li><a href=\"https://www.lenovo.com/us/en/p/desktops/thinkcentre/m-series-sff/thinkcentre-m710s/11tc1md710s\">Lenovo ThinkCentre M710</a>i5, 16G RAM, 265G SSD Linux Mint ~EUR 500-1500</li>\r\n<li><a href=\"https://www.microsoft.com/en-us/windows/microsoft-edge\">Microsoft Edge</a></li>\r\n<li><a href=\"https://www.ocf.berkeley.edu/~ckuehl/tmux/\">tmux</a></li>\r\n<li><a href=\"https://www.spotify.com/\">spotify</a></li>\r\n<li>(?)Pistero(?) Podcast App</li>\r\n<li><a href=\"https://newsboat.org/\">Newsboat RSS Reader</a></li>\r\n<li><a href=\"https://irssi.org/\">Irssi IRC Client</a></li>\r\n<li><a href=\"https://apps.microsoft.com/store/detail/windows-terminal-preview/9N8G5RFZ9XK3\">Windows Terminal Preview</a></li>\r\n<li><a href=\"https://mobaxterm.mobatek.net/\">MobaXterm</a> Windows with X11 server</li>\r\n<li><a href=\"https://www.microsoft.com/en-us/d/surface-pro-x/8xtmb6c575md\">Windows Surface Pro X</a></li>\r\n</ul>\r\n',111,0,0,'CC-BY-SA','linux, workstation, ubuntu, budgie, mint',0,0,1),
(3583,'2022-04-27','takov751 and dnt talk about browsers',473,'After episode 3543, some messages were exchanged','<p>This is the follow up to episode 3543. HPR host takov751 had some things to say and I responded.</p>\r\n<p>If you have any topic ideas for a show in this type of format, let me know or post a show yourself.</p>',399,0,1,'CC-BY-SA','browsers',0,0,1),
(3588,'2022-05-04','Linux Inlaws S01E55: Get yer boots on for a fresh look at init systems',2779,'Martin and Chris discuss what happens when you turn on a computer (preferably running Linux)','<p>In this episode, Martin and Chris discuss init systems and Chris outs\r\nhimself as a systemd fan boy (Devuan followers take note :-). Even Linux and\r\nother FLOSS OS geeks not interested in what happens when you flick the power\r\nswitch on a computer may find this episode (vaguely) interesting as some light\r\nis also shed on the philosophy of the different system architectures and their\r\nhistory (Ever wanted to know what an /360 IPL really is? Then stay tuned...).\r\nDisclosure: The following text may resort to regular expressions to keep\r\nthings concise and simple. Some of the PCRE-challenged readers may take\r\noffence - you have been warned.</p>\r\n\r\n<h2>Links:</h2>\r\n<ul>\r\n<li>Booting a PC: <a href=\"https://en.wikipedia.org/wiki/Booting#Personal_computers_(PC)\" target=_blank>https://en.wikipedia.org/wiki/Booting#Personal_computers_(PC)</a></li>\r\n<li>GRUB: <a href=\"https://www.gnu.org/software/grub\" target=_blank>https://www.gnu.org/software/grub</a></li>\r\n<li>([A-Z][a-z]+ux) Init systems (general overview): <a href=\"https://arxiv.org/pdf/0706.2748v1.pdf\" target=_blank>https://arxiv.org/pdf/0706.2748v1.pdf</a></li>\r\n<li>SysV init: <a href=\"https://en.wikipedia.org/wiki/Init#SysV-style\" target=_blank>https://en.wikipedia.org/wiki/Init#SysV-style</a></li>\r\n<li>systemd: <a href=\"https://0pointer.de/blog/projects/systemd.html\" target=_blank>https://0pointer.de/blog/projects/systemd.html</a></li>\r\n<li>OpenRC: <a href=\"https://github.com/OpenRC/openrc\" target=_blank>https://github.com/OpenRC/openrc</a></li>\r\n<li>Canonical\'s Upstart: <a href=\"https://upstart.ubuntu.com\" target=_blank>https://upstart.ubuntu.com</a></li>\r\n<li>Switch from upstart to systemd: <a href=\"https://www.markshuttleworth.com/archives/1316\" target=_blank>https://www.markshuttleworth.com/archives/1316</a></li>\r\n<li>Runlevels: <a href=\"https://www.linfo.org/runlevel_def.html\" target=_blank>https://www.linfo.org/runlevel_def.html</a></li>\r\n<li>Serial console: <a href=\"https://www.kernel.org/doc/html/latest/admin-guide/serial-console.html\" target=_blank>https://www.kernel.org/doc/html/latest/admin-guide/serial-console.html</a></li>\r\n<li>Hello Magazine: <a href=\"https://www.hellomagazine.com\" target=_blank>https://www.hellomagazine.com</a></li>\r\n<li>Unix philosophy: <a href=\"https://en.wikipedia.org/wiki/Unix_philosophy\" target=_blank>https://en.wikipedia.org/wiki/Unix_philosophy</a></li>\r\n<li>And in much more detail: <a href=\"https://www.catb.org/~esr/writings/taoup/html/ch01s06.html\" target=_blank>https://www.catb.org/~esr/writings/taoup/html/ch01s06.html</a></li>\r\n<li>Devuan: <a href=\"https://www.devuan.org\" target=_blank>https://www.devuan.org</a></li>\r\n</ul>\r\n',384,111,1,'CC-BY-SA','init, SysVInit, Upstart, systemd, GRUB, Unix philosophy, Hello Magazine',0,0,1),
(3591,'2022-05-09','Small Flashlights',675,'Stuff that goes in your pocket','<p>Just had my birthday got some lights</p>\r\n',129,0,0,'CC-BY-SA','Flashlight,usb,pocket device ',0,0,1),
(3577,'2022-04-19','Hello and how I got into tech',444,'Hi, I\'m Sarah and this is how I got into Tech','<p>Hi, I\'m Sarah. In this show, I introduce myself and ramble about how I got into tech. Despite saying I hate talking about myself, I managed 7 minutes and 25 seconds. I started as a kid with a Tandy and eventually ended up being a librarian and a sysadmin for a RedHat system.</p>',404,29,1,'CC-BY-SA','intro, linux',0,0,1),
(3605,'2022-05-27','Aspire-ing to use 13 year hardware',502,'Part 2 of using Slackware on the old netbook','<h3 id=\"aspireing-to-use-13-year-hardware\">Aspire-ing to use 13 year hardware</h3>\r\n<h4 id=\"dual-boot\">Dual boot</h4>\r\n<pre><code>image = /boot/vmlinuz\r\n  root = /dev/sda3\r\n  label = Slackware15.0\r\n  read-only\r\nimage = /boot/vmlinuz\r\n  root = /dev/sda2\r\n  label = Slackware14.2\r\n  read-only</code></pre>\r\n<h4 id=\"first-change\">First change</h4>\r\n<pre><code># LILO configuration file\r\n# Append any additional kernel parameters:\r\nappend=&quot;acpi=ht&quot;</code></pre>\r\n<p>Dropped CPU usage to 50%</p>\r\n<h4 id=\"second-change\">Second change</h4>\r\n<pre><code>grep . -r /sys/firmware/acpi/interrupts/\r\n\r\n/sys/firmware/acpi/interrupts/gpe1D:322734808     STS enabled      unmasked\r\n\r\necho &quot;mask&quot; &gt; /sys/firmware/acpi/interrupts/gpeXX</code></pre>\r\n<h4 id=\"interrupts\">Interrupts</h4>\r\n<p><em>Interrupts</em><br />\r\n<img src=\"https://hackerpublicradio.org/eps/hpr3605/interrupts.png\" alt=\"Interrupts\" />  </p>\r\n<p>My case was</p>\r\n<pre><code>echo &quot;mask&quot; &gt; /sys/firmware/acpi/interrupts/gpe1D</code></pre>\r\n<p>Dropped usage to 0-5%</p>\r\n<p>Then added the mask to crontab -e under root</p>\r\n<p>Add \'acpi_mask_gpe=0x1D\' or whatever interrupt corresponds to the overactive one, and remember to run the lilo command afterward to make the kernel option active.</p>\r\n<p><em>Htop options for CPU usage</em><br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3605/options.png\"><img src=\"https://hackerpublicradio.org/eps/hpr3605/options_thumbnail.png\" alt=\"Htop options for CPU usage\" /></a> <br/><small><small><em>Click the thumbnail to see the full-sized image</em></small></small>  </p>\r\n<p><em>Htop display</em><br />\r\n<img src=\"https://hackerpublicradio.org/eps/hpr3605/htop.png\" alt=\"Htop display\" />  </p>\r\n<h4 id=\"upgrades\">Upgrades</h4>\r\n<p>Fan from AliExpress</p>\r\n<p><a href=\"https://www.aliexpress.com/item/32861732299.html\" class=\"uri\">https://www.aliexpress.com/item/32861732299.html</a></p>\r\n<p><em>Replacement fan</em><br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3605/fan.png\"><img src=\"https://hackerpublicradio.org/eps/hpr3605/fan_thumbnail.png\" alt=\"Replacement fan\" /></a> <br/><small><small><em>Click the thumbnail to see the full-sized image</em></small></small>  </p>\r\n<p>2GB DDR2 667MHz SODIMM PC2-5300</p>\r\n<p><a href=\"https://www.amazon.com/gp/product/B00C53A37K\" class=\"uri\">https://www.amazon.com/gp/product/B00C53A37K</a></p>\r\n<p><em>2Gb ram upgrade</em><br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3605/memory.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3605/memory_thumbnail.jpg\" alt=\"2Gb ram upgrade\" /></a> <br/><small><small><em>Click the thumbnail to see the full-sized image</em></small></small>  </p>\r\n<h4 id=\"resources\">Resources</h4>\r\n<p><a href=\"https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/kernel_administration_guide/listing_of_kernel_parameters_and_values\" class=\"uri\">https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/kernel_administration_guide/listing_of_kernel_parameters_and_values</a></p>\r\n<pre><code>acpi=ht</code></pre>\r\n<p><a href=\"https://www.kernel.org/doc/ols/2005/ols2005v1-pages-59-76.pdf\" class=\"uri\">https://www.kernel.org/doc/ols/2005/ols2005v1-pages-59-76.pdf</a></p>\r\n<p>Use ACPI boot table parsing, but do not enable ACPI interpreter This disables any ACPI functionality that is not required for Hyper Threading.</p>\r\n<p>ACPI (Advanced Configuration and Power Interface) is an open industry specification establishing industry-standard interfaces for OS-directed configuration and power management on laptops, desktops, and servers.</p>\r\n<h4 id=\"hpr3511-podman-like-vagrant\">HPR3511 Podman like Vagrant</h4>\r\n<p><a href=\"https://archive.org/details/hpr3511\" class=\"uri\">https://archive.org/details/hpr3511</a></p>\r\n',318,0,0,'CC-BY-SA','Slackware, netbook, interrupts, htop, upgrades',0,0,1),
(3592,'2022-05-10','A quick look at the Surface pro X',1380,'Knightwise gives a quick overview of 3 months on the Surface pro X','<p>I talk about the Surface Pro X I got at the beginning of the year and what the pro\'s and cons of it are.<br />\r\nMore at <a href=\"https://www.knightwise.com\">www.knightwise.com</a><br />\r\nTwitter: <a href=\"https://twitter.com/knightwise\">twitter.com/knightwise</a></p>\r\n\r\n<hr />\r\n<p><small>Added by Ken when posting</small></p>\r\n<p>\r\n<a href=\"https://en.wikipedia.org/wiki/Surface_Pro_X\">From Wikipedia, the free encyclopedia</a>\r\n</p>\r\n\r\n<img src=\"https://upload.wikimedia.org/wikipedia/commons/thumb/d/d5/Surface_Pro_X.png/528px-Surface_Pro_X.png\" />\r\n\r\n<p>The <b>Surface Pro X</b> is a 2-in-1 detachable <a href=\"https://en.wikipedia.org/wiki/Tablet_computer\" title=\"Tablet computer\">tablet computer</a> developed by <a href=\"https://en.wikipedia.org/wiki/Microsoft\" title=\"Microsoft\">Microsoft</a>. It was developed alongside and was announced on 2 October 2019 alongside the <a href=\"https://en.wikipedia.org/wiki/Surface_Pro_7\" title=\"Surface Pro 7\">Surface Pro 7</a> and <a href=\"https://en.wikipedia.org/wiki/Surface_Laptop_3\" title=\"Surface Laptop 3\">Surface Laptop 3</a>.<sup id=\"cite_ref-Faulkner_1-0\" class=\"reference\"><a href=\"https://en.wikipedia.org/wiki/Surface_Pro_X#cite_note-Faulkner-1\">[1]</a></sup> Updated hardware was announced alongside <a href=\"https://en.wikipedia.org/wiki/Surface_Laptop_Go\" title=\"Surface Laptop Go\">Surface Laptop Go</a> and Surface accessories on October 1, 2020<sup id=\"cite_ref-2\" class=\"reference\"><a href=\"https://en.wikipedia.org/wiki/Surface_Pro_X#cite_note-2\">[2]</a></sup> and September 22, 2021.<sup id=\"cite_ref-3\" class=\"reference\"><a href=\"https://en.wikipedia.org/wiki/Surface_Pro_X#cite_note-3\">[3]</a></sup> The device starts at $899.99 <a href=\"https://en.wikipedia.org/wiki/United_States_Dollar\" class=\"mw-redirect\" title=\"United States Dollar\">US</a>D / £849.99.<sup id=\"cite_ref-4\" class=\"reference\"><a href=\"https://en.wikipedia.org/wiki/Surface_Pro_X#cite_note-4\">[4]</a></sup><sup id=\"cite_ref-5\" class=\"reference\"><a href=\"https://en.wikipedia.org/wiki/Surface_Pro_X#cite_note-5\">[5]</a></sup>\r\n</p><p>The Surface Pro X comes with a <a href=\"https://en.wikipedia.org/wiki/List_of_Qualcomm_Snapdragon_systems-on-chip#Microsoft_SQ1_and_SQ2\" class=\"mw-redirect\" title=\"List of Qualcomm Snapdragon systems-on-chip\">Microsoft SQ1 or SQ2</a> <a href=\"https://en.wikipedia.org/wiki/ARM_architecture\" class=\"mw-redirect\" title=\"ARM architecture\">ARM</a> processor, which the company claimed has three times the performance of an x86 <a href=\"https://en.wikipedia.org/wiki/MacBook_Air\" title=\"MacBook Air\">MacBook Air</a>, whilst also having a 13-hour battery life. This is due to the increased power efficiency of ARM processors compared to traditional x86 processors.<sup id=\"cite_ref-Faulkner_1-1\" class=\"reference\"><a href=\"https://en.wikipedia.org/wiki/Surface_Pro_X#cite_note-Faulkner-1\">[1]</a></sup><sup id=\"cite_ref-6\" class=\"reference\"><a href=\"https://en.wikipedia.org/wiki/Surface_Pro_X#cite_note-6\">[6]</a></sup><sup id=\"cite_ref-7\" class=\"reference\"><a href=\"https://en.wikipedia.org/wiki/Surface_Pro_X#cite_note-7\">[7]</a></sup> Microsoft has previously used ARM processors in the discontinued <a href=\"https://en.wikipedia.org/wiki/Surface_RT\" class=\"mw-redirect\" title=\"Surface RT\">Surface RT</a> and <a href=\"https://en.wikipedia.org/wiki/Windows_Phone\" title=\"Windows Phone\">Windows Phone</a> devices.\r\n</p><p>Microsoft now offers a Wifi-only version of the device as announced at their Surface Event on September 22, 2021.<sup id=\"cite_ref-8\" class=\"reference\"><a href=\"https://en.wikipedia.org/wiki/Surface_Pro_X#cite_note-8\">[8]</a></sup>\r\n</p>\r\n',111,0,0,'CC-BY-SA','surface, windows, laptop, hardware, review',0,0,1),
(3582,'2022-04-26','Rolling a new character',1793,'Tuula continues writing an example Haskell game, this time rolling a new character','<h1 id=\"quick-peek-at-some-places-in-code\">Quick peek at some places in code</h1>\n<p><code>Main.hs</code> has our <code>Main</code> module definition. It was generated by <code>Stack</code> when we started. In the end of the <code>main</code> function, it calls <code>run</code> function, which is defined in <code>Run.hs</code> file. This is the place where we can see overall flow of the program in one glance.</p>\n<pre><code>run :: RIO App ()\nrun = do\n  choice &lt;- showMainMenu\n  case choice of\n    StarNewGame -&gt; do\n      logDebug &quot;New game starting...&quot;\n      logDebug &quot;Rolling new character...&quot;\n      player &lt;- liftIO $ evalRandIO rollNewCharacter\n      displayNewCharacter player\n      logDebug &quot;Selecting starting gear...&quot;\n      gear &lt;- selectStartingGear $ playerGear player\n      logDebug &quot;Preparing game...&quot;\n      game &lt;- liftIO $ evalRandIO $ startGame player gear\n      logDebug &quot;Dealing first card...&quot;\n      finishedGame &lt;- playGame game\n      logDebug &quot;Displaying game over...&quot;\n      displayGameOver finishedGame\n\n    ExitGame -&gt;\n      return ()</code></pre>\n<p>Another interesting module is <code>Types</code>. Here you can find how player, items, monsters and such are represented.</p>\n<p>Third and biggest module is <code>UserInterface</code>, which contains functions to display game status to player and ask their input.</p>\n<p>So, what does our <code>run</code> function do? Lets have a look:</p>\n<ul>\n<li><code>choice &lt;- showMainMenu</code>\n<ul>\n<li>show main menu and ask for player input</li>\n</ul></li>\n<li><code>case choice of</code>\n<ul>\n<li>depending on the choice, continue with game logic or exit the function</li>\n</ul></li>\n<li><code>player &lt;- liftIO $ evalRandIO rollNewCharacter</code>\n<ul>\n<li>roll a new character</li>\n<li><code>evalRandIO</code> indicates we\'re dealing with random numbers</li>\n</ul></li>\n<li><code>displayNewCharacter player</code>\n<ul>\n<li>display the new character on screen</li>\n</ul></li>\n<li><code>gear &lt;- selectStartingGear $ playerGear player</code>\n<ul>\n<li>select starting gear</li>\n</ul></li>\n<li><code>game &lt;- liftIO $ evalRandIO $ startGame player gear</code>\n<ul>\n<li>shuffle the deck and set up the game</li>\n<li>again using random numbers here</li>\n</ul></li>\n<li><code>finishedGame &lt;- playGame game</code>\n<ul>\n<li>play game until we\'re done</li>\n</ul></li>\n<li><code>displayGameOver finishedGame</code>\n<ul>\n<li>display game over screen</li>\n</ul></li>\n</ul>\n<h1 id=\"word-about-input-and-output\">Word about input and output</h1>\n<p>One of the features of Haskell I like is the ability to show which functions are pure (always returning same output with given set of inputs and not having any side effects). In our program, every function that returns <code>RIO a b</code> has access to input and output. In addition to that, it also has access to system wide configuration (which we don\'t use much here) and logging functions.</p>\n<p>To write on the screen, we use <code>putStrLn</code> and reading a user input <code>readLine</code>. Since they\'re designed to work with <code>IO</code> instead of <code>RIO a b</code>, we have to use <code>liftIO</code>. But all that is technical details that we won\'t worry now.</p>\n<p><code>App</code> is our configuration. We aren\'t directly using it, so it\'s safe to ignore for now.</p>\n<h1 id=\"showing-main-menu\">Showing main menu</h1>\n<p><code>showMainMenu</code> function will print out the menu and then call <code>mainMenuInput</code>. <code>mainMenuInput</code> will read input, validate that it\'s either <code>1</code> or <code>2</code> and return respectively <code>StarNewGame</code> or <code>ExitGame</code>. In case user enters something else, <code>mainMenuInput</code> will recurse until user enters valid input.</p>\n<pre><code>-- | Display main menu\nshowMainMenu :: RIO App MainMenuChoice\nshowMainMenu = do\n  logDebug &quot;Displaying main menu&quot;\n  liftIO $ putStrLn &quot;\\n\\n&quot;\n  liftIO $ putStrLn &quot;Treasure Dungeon&quot;\n  liftIO $ putStrLn &quot;****************&quot;\n  liftIO $ putStrLn &quot;&quot;\n  liftIO $ putStrLn &quot;1. Start a new game&quot;\n  liftIO $ putStrLn &quot;2. Quit&quot;\n  mainMenuInput\n\nmainMenuInput :: RIO App MainMenuChoice\nmainMenuInput = do\n  i &lt;- liftIO getLine\n  case i of\n    &quot;1&quot; -&gt; return StarNewGame\n    &quot;2&quot; -&gt; return ExitGame\n      _ -&gt; do\n            logDebug $ displayShow $ &quot;Incorrect menu choice: &quot; &lt;&gt; i\n            liftIO $ putStrLn &quot;Please select 1 or 2&quot;\n            mainMenuInput</code></pre>\n<p>You might wonder, why <code>mainMenuInput</code> can keep calling itself without filling the stack? That\'s because Haskell doesn\'t use stack in the same sense as many other programming languages. Haskell compiler is also smart enough to notice that call to <code>mainMenuInput</code> is last operation of the <code>mainMenuInput</code>, there is no work to be done after the call, and thus can optimize things even more. I don\'t know all the dirty details how this has been implemented and how things work behind the curtains.</p>\n<h1 id=\"rolling-new-character\">Rolling new character</h1>\n<p><code>player &lt;- liftIO $ evalRandIO rollNewCharacter</code> rolls a new character, but what exactly is going on here? <code>rollNewChacter</code> has following signature: <code>rollNewCharacter :: (RandomGen g) =&gt; Rand g Player</code>. It doesn\'t take any parameters and returns <code>Rand g Player</code>, where <code>g</code> implements <code>RandomGen</code>. So, it\'s <code>Rand</code> monad that returns <code>Player</code>. In order to get the result of the computation, we call <code>evalRandIO</code> that uses global random number generator to compute. And since it\'s an <code>IO</code> operation, we need <code>liftIO</code>. It\'s bit confusing at first, so don\'t worry if you don\'t get all the details. The main point is that we\'re doing computation with random numbers.</p>\n<p>Implementation is not too complex:</p>\n<pre><code>rollNewCharacter :: (RandomGen g) =&gt; Rand g Player\nrollNewCharacter = do\n  str &lt;- dice 3\n  dex &lt;- dice 3\n  mind &lt;- dice 3\n  maxHp &lt;- dice 4\n  return $ Player\n    { playerStrength  = MkStrength str\n    , playerDexterity = MkDexterity dex\n    , playerMind      = MkMind mind\n    , playerHP        = MkHP maxHp\n    , playerMaxHP     = MkHP maxHp\n    , playerGear      = [ ]\n    }</code></pre>\n<p>This rolls three six sided dice for each attribute and 4 for hit points. The values are then used to create <code>Player</code> record that is returned.</p>\n<p><code>dice</code> is implemented as following:</p>\n<pre><code>dice :: (RandomGen g) =&gt; Natural -&gt; Rand g Natural\ndice n = do\n  rolls &lt;- getRandomRs (1, 6)\n  let roll = sum $ take (fromIntegral n) rolls\n  return $ fromInteger roll</code></pre>\n<p>Again, we\'re using <code>Rand</code> monad for random number generation. <code>getRandomRs</code> supplies us an infinite list of numbers between <code>1</code> and <code>6</code>. Then we use <code>take</code> to some of them and <code>sum</code> to add them together. <code>fromIntegral n</code> is needed, because <code>take</code> doesn\'t operate on <code>Natural</code> type, but <code>Int</code>. I wanted to use <code>Natural</code> though, because that ensures that the parameter <code>n</code> will always be <code>0</code> or more.</p>\n<h1 id=\"in-closing\">In closing</h1>\n<p>Now we have a basic layout for our program and know how to roll a character with random stats. Next time we\'ll finally look into getting some gear on them. The code for the game is available at my <a href=\"https://codeberg.org/Tuula/treasure-dungeon/\">codeberg repository</a>.</p>\n<p>ad astra!</p>\n',364,107,0,'CC-BY-SA','game development, haskell',0,0,1),
(3584,'2022-04-28','The collective history of RAID controller brands',1074,'The story of Raid cards 1999 to present','<p>The market segment of RAID adapters has a long history and tradition, and has undergone gradual concentration, followed by upstream mergers of the owning corporations - a feeding frenzy of sorts, among the semiconductor manufacturers.</p>\n<p><a href=\"https://support.fccps.cz/industry/RAID_history/index.htm\" class=\"uri\">https://support.fccps.cz/industry/RAID_history/index.htm</a></p>\n',129,0,0,'CC-BY-SA','HBA,Raid,Raid card,Mylex,Adaptec',0,0,1),
(3585,'2022-04-29','Freedom of speech in open source, Part 2.',793,'Freedom has a cost.','<p>Check out the first episode of <a href=\"https://hackerpublicradio.org/eps.php?id=3553\">Freedom of speech in open source</a></p>\n',391,0,0,'CC-BY-SA','Free Speech',0,0,1),
(3587,'2022-05-03','20220406_UDM',766,'I talk about my Home Router U D M from ubiquity','<p>My firewall rules!</p>\n<p><a href=\"https://rmccurdy.com/stuff/.iptables.txt\" class=\"uri\">https://rmccurdy.com/stuff/.iptables.txt</a></p>\n',36,0,1,'CC-BY-SA','routers,firewalls,wireless,home networking',0,0,1),
(3593,'2022-05-11','Home office setup mouse shoulder and Auto Hot Key Scripts',1371,'I talk about my issues and solutions for desk ergonomics','<ul>\n<li><p>Anti Fatigue Floor Mat,Kitchen Mat<br />\n<a href=\"https://smile.amazon.com/gp/product/B076SPLWQF\" class=\"uri\">https://smile.amazon.com/gp/product/B076SPLWQF</a></p></li>\n<li><p>FEZIBO Dual Motor Height Adjustable<br />\n<a href=\"https://smile.amazon.com/gp/product/B07QCNL73Y\" class=\"uri\">https://smile.amazon.com/gp/product/B07QCNL73Y</a></p></li>\n<li><p>WALMANN 24\" Folding Shelf Brackets, Collapsible Brackets for Shelves Wall Mounted Hinges Space Saving DIY Bracket for Table Bench, Max Load 500 LBS<br />\n<a href=\"https://smile.amazon.com/gp/product/B08F4VNT9P\" class=\"uri\">https://smile.amazon.com/gp/product/B08F4VNT9P</a></p></li>\n<li><p>Adesso iMouse E9 Left-Handed Vertical Ergonomic Mouse<br />\n<a href=\"https://smile.amazon.com/gp/product/B01N4WA12I\" class=\"uri\">https://smile.amazon.com/gp/product/B01N4WA12I</a></p></li>\n<li><p>Autohotkey macros for LEFT HANDED person!<br />\n<a href=\"https://github.com/freeload101/SCRIPTS/tree/master/AutoHotkey\" class=\"uri\">https://github.com/freeload101/SCRIPTS/tree/master/AutoHotkey</a></p>\n<ul>\n<li>auto installs Autohotkey</li>\n<li>pulls down latest config/AHK script from github</li>\n<li>runs it and based on IP address sets different configurations</li>\n</ul></li>\n</ul>\n',36,0,0,'CC-BY-SA','Ergonomic,back pain,health,fitness',0,0,1),
(3594,'2022-05-12','Peely-wally in Edinburgh',4057,'MrX and Dave Morriss chatting about this and that','<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 Sunday April 24<sup>th</sup> 2022. This is effectively a continuation of the last show, since we found we had lots more to talk about!</p>\n<p><small>Note on the title: again we spoke about the Scots language on the show, so it seemed like a good idea to include more of it in the notes and so on.</small></p>\n<h2 id=\"topics-discussed\">Topics discussed</h2>\n<ul>\n<li>Dampers (in relation to coal fires), a topic we discussed last time:\n<ul>\n<li>MrX found a version of the <a href=\"https://youtu.be/KbauWEfiCMo\">Damper song</a> on YouTube</li>\n</ul></li>\n</ul>\n<ul>\n<li>PC issues:\n<ul>\n<li>Dave’s home-built desktop PC had another disk problem</li>\n<li>Running a SMART daemon (under SystemD) gives warnings of imminent disk problems</li>\n<li>HP Proliant MicroServer - an AMD-based machine sold in the 2010’s (?) by HP with a substantial discount. (Prices cited in the audio are probably not reliable!)</li>\n<li>Regarding the failed PSU mentioned last time, there was speculation about whether turning off at the mains every day is a good idea. MrX is inclined to think that it is not.</li>\n</ul></li>\n</ul>\n<ul>\n<li>Remote-controlled plugs:\n<ul>\n<li>Dave used a set of <em>Brennenstuhl</em> plugs for a while until several of them were destroyed!</li>\n<li>Now has two <em>Sonoff</em> plugs which can be flashed with firmware and controlled with MQTT as part of a Smart Home</li>\n</ul></li>\n</ul>\n<ul>\n<li>Programming:\n<ul>\n<li>MrX has recently been writing a Bash script, and found it difficult to get back into it.</li>\n<li>Dave had written in DEC Pascal on a VAXCluster for many years, but can’t remember any of it any more.</li>\n<li>Discussion of Delphi, Borland C++</li>\n<li>Neither MrX nor Dave has used C very much</li>\n</ul></li>\n</ul>\n<ul>\n<li>Difficulty of producing HPR shows:\n<ul>\n<li>Pandemic effects on motivation</li>\n<li>Complications of working from home</li>\n<li>Happily the rate of contributions to HPR has been increasing in the past few months</li>\n<li>Adding pictures to shows still needs documentation</li>\n</ul></li>\n</ul>\n<ul>\n<li>Smart speakers:\n<ul>\n<li>MrX already had two Google Home devices and got a free Amazon Echo (with Alexa software) from his ISP.</li>\n<li>The Echo didn’t prove to be very useful as a means of listening to BBC radio, and the sign-up was intrusive.</li>\n<li>The Google Home devices are preferable; they give easier access to BBC Radio as well as services like Spotify.</li>\n<li>Dave is avoiding all such devices!</li>\n</ul></li>\n</ul>\n<ul>\n<li>Old computing equipment:\n<ul>\n<li>Dave has an old 132-column Anadex matrix printer with a Centronics interface in his attic - found recently when clearing it out.</li>\n<li>MrX remembered removable Diablo disks.</li>\n<li>Dave reminisced about writing software in Coral66 on a CTL Modular 1 computer in the 1970s, which also had removable disks.</li>\n</ul></li>\n</ul>\n<ul>\n<li>Being back at work again:\n<ul>\n<li>MrX is now in the office twice a week</li>\n<li>The Scotland mask mandate has ended but many people are still wearing them</li>\n<li>People are catching SARS-CoV-2 at work, and particularly from children who are back at school, but vaccination means the effects tend to be milder.</li>\n</ul></li>\n</ul>\n<ul>\n<li>Hayfever (seasonal allergies):\n<ul>\n<li>MrX is taking a <em>30C</em> remedy (a remedy labeled 30C has been serially diluted 1:100 thirty times, so is <em>extremely</em> dilute)</li>\n<li>Dave still suffers from hayfever and takes Cetirizine through spring and summer</li>\n<li>Dave thinks he developed hayfever in the hot summer and drought of 1976 on a field course in Gloucestershire. (BBC News story: <a href=\"https://www.bbc.co.uk/news/magazine-35603972.amp\">Could the ladybird plague of 1976 happen again?</a>)</li>\n</ul></li>\n</ul>\n<ul>\n<li>Medical issues:\n<ul>\n<li>Rheumatoid arthritis - auto-immune origins</li>\n<li>Trigger finger (also known as <em>stenosing tenosynovitis</em>)</li>\n</ul></li>\n</ul>\n<h2 id=\"scots-vocabulary\">Scots vocabulary</h2>\n<dl>\n<dt><b>swither</b></dt>\n<dd><em>noun</em>: A state of indecision or doubt, a pondering, hesitation, uncertainty.\n</dd>\n<dd><em>verb</em>: To be in a state of uncertainty of purpose, to be perplexed about what to do or choose, be in two minds, to doubt, hesitate, dither.\n</dd>\n<dd><br/>\n</dd>\n<dt><b>peely-wally</b> (or <b>peelie-wallie</b> or <b>peelie-wally</b>)</dt>\n<dd><em>adjective</em>: pale, wan and off-colour; insipid and colourless.\n</dd>\n</dl>\n<h2 id=\"links\">Links</h2>\n<ul>\n<li>Scots words:\n<ul>\n<li><a href=\"https://en.wikipedia.org/wiki/Scots_language\">Scots Language</a></li>\n<li><a href=\"https://www.scots-online.org/dictionary/english_scots.php\">The online Scots dictionary (English to Scots)</a></li>\n</ul></li>\n</ul>\n<ul>\n<li>Smart Speakers:\n<ul>\n<li><a href=\"https://en.wikipedia.org/wiki/Smart_speaker\">Wikipedia article on Smart Speakers</a></li>\n</ul></li>\n</ul>\n<ul>\n<li>Old computing equipment:\n<ul>\n<li><a href=\"https://en.wikipedia.org/wiki/Centronics\">Wikipedia article on Centronics printers</a></li>\n<li><a href=\"https://en.wikipedia.org/wiki/Diablo_Data_Systems\">Wikipedia article on Diabolo disks</a></li>\n<li><a href=\"https://en.wikipedia.org/wiki/Computer_Technology_Limited\">Wikipedia article on Computer Technology Limited (CTL)</a></li>\n</ul></li>\n</ul>\n<ul>\n<li>Homeopathic dilutions:\n<ul>\n<li><a href=\"https://en.wikipedia.org/wiki/Homeopathic_dilutions\">Wikipedia article on Homeopathic dilutions</a></li>\n</ul></li>\n</ul>\n<ul>\n<li>Medical matters\n<ul>\n<li><a href=\"https://en.wikipedia.org/wiki/Rheumatoid_arthritis\">Wikipedia article on Rheumatoid arthritis</a></li>\n<li><a href=\"https://en.wikipedia.org/wiki/Trigger_finger\">Wikipedia article on Trigger finger</a></li>\n</ul></li>\n</ul>\n</article>\n',225,0,1,'CC-BY-SA','conversation,Scots language,swither,peely-wally',0,0,1),
(3595,'2022-05-13','I am sure I changed my password last...???',641,'Pilot episode. Change your password','<p>Pilot episode. Change your password. Leave me feedback but be gentle...or not</p>\n',405,74,0,'CC-BY-SA','password, cybersecurity,password1234',0,0,1),
(3599,'2022-05-19','Linux Inlaws S01E56: Slackware - A User\'s Perspective',2676,'A discussion with a long-time Slackware user about this oldest Linux distro still alive','<p>In this episode Martin and Chris managed to ensnare a member of the Linux User Group\nFrankfurt (FraLUG) to talk about his history with Slackware, currently the\noldest Linux distribution still maintained. If you ever fancied to know more\nabout this grandfather of a distribution and its ins and outs, this is your\nshow. Plus we get to know more about one of Chris\' well-kept secrets...</p>\n\n<h2>Links:</h2>\n<ul>\n<li>Slackware: <a href=\"https://www.slackware.com\" target=_blank>https://www.slackware.com</a></li>\n<li>LILO: <a href=\"https://www.joonet.de/lilo\" target=_blank>https://www.joonet.de/lilo</a></li>\n<li>sed: <a href=\"https://www.gnu.org/software/sed\" target=_blank>https://www.gnu.org/software/sed</a></li>\n<li>Linux From Scratch: <a href=\"https://www.linuxfromscratch.org\" target=_blank>https://www.linuxfromscratch.org</a></li>\n<li>Arch Linux on ARM 32 bit support: <a href=\"https://archlinuxarm.org/forum/viewtopic.php?f=3&t=15721\" target=_blank>https://archlinuxarm.org/forum/viewtopic.php?f=3&t=15721</a></li>\n<li>Seafile\'s demise: <a href=\"https://github.com/haiwen/seafile/graphs/code-frequency\" target=_blank>https://github.com/haiwen/seafile/graphs/code-frequency</a></li>\n<li>Distrowatch: <a href=\"https://distrowatch.com\" target=_blank>https://distrowatch.com</a></li>\n<li>The Ipcress File (65\'s movie): <a href=\"https://www.imdb.com/title/tt0059319/?ref_=nv_sr_srsg_3\" target=_blank>https://www.imdb.com/title/tt0059319/?ref_=nv_sr_srsg_3</a></li>\n<li>The Ipcress File (22\'s TV miniseries): <a href=\"https://www.imdb.com/title/tt13636038/?ref_=nv_sr_srsg_0\" target=_blank>https://www.imdb.com/title/tt13636038/?ref_=nv_sr_srsg_0</a></li>\n<li>Meet the Feebles: <a href=\"https://www.imdb.com/title/tt0097858/?ref_=nv_sr_srsg_0\" target=_blank>https://www.imdb.com/title/tt0097858/?ref_=nv_sr_srsg_0</a></li>\n<li>Peter Jackson: <a href=\"https://en.wikipedia.org/wiki/Peter_Jackson\" target=_blank>https://en.wikipedia.org/wiki/Peter_Jackson</a></li>\n</ul>\n',384,111,1,'CC-BY-SA','Linux, Slackware, Linux from Scratch, sed, LILO, Peter Jackson',0,0,1),
(3602,'2022-05-24','Hacker Stories April 20 22',1561,'origin story and trouble in school','<p>I guess I lost the document from Lanier Tech :( it was hilarious..</p>\n',36,0,1,'CC-BY-SA','Hacker Stories',0,0,1),
(3609,'2022-06-02','Linux Inlaws S01E57: Operating System Level Virtualisation and Martin\'s Faith',3238,'An in-depth discussion about Jails, Containers, religion and others sorts of confinement','<p>In this episode our two ageing heroes take a closer at operating system\n(OS) level virtualisation. The main different legacy virtualisation\ntechnologies like virtual machines (VMs) and this new-fangled approach is\nthat the OS kernel remains the same across virtualisation domains, thus giving\nthe hippsters and other followers of fashion a cheaper and potentially much\nfaster solution than virtualising the kernel and surrounding hawrdware and all\nthe rest of it. Plus more details on Martin\'s real faith. Don\'t miss out on\nthis episode if you\'re interested in any of these...</p>\n\n<h2>Links:</h2>\n<ul>\n<li>Craíc: <a href=\"https://www.irelandlogue.com/irish-slang/irish-slang.html\" target=_blank>https://www.irelandlogue.com/irish-slang/irish-slang.html</a></li>\n<li>Celts: <a href=\"https://en.wikipedia.org/wiki/Celts\" target=_blank>https://en.wikipedia.org/wiki/Celts</a></li>\n<li>Celtic languages: <a href=\"https://en.wikipedia.org/wiki/Celtic_languages#Living_languages\" target=_blank>https://en.wikipedia.org/wiki/Celtic_languages#Living_languages</a></li>\n<li>[a-zA-Z]+ Virtualisation: <a href=\"https://www.vmware.com/content/dam/digitalmarketing/vmware/en/pdf/techpaper/VMware_paravirtualization.pdf\" target=_blank>https://www.vmware.com/content/dam/digitalmarketing/vmware/en/pdf/techpaper/VMware_paravirtualization.pdf</a></li>\n<li>Hypervisor: <a href=\"https://en.wikipedia.org/wiki/Hypervisor\" target=_blank>https://en.wikipedia.org/wiki/Hypervisor</a></li>\n<li>BSD Jails: <a href=\"https://docs.freebsd.org/en/books/handbook/jails\" target=_blank>https://docs.freebsd.org/en/books/handbook/jails</a></li>\n<li>Solaris Zones: <a href=\"https://www.oracle.com/technical-resources/articles/it-infrastructure/o11-092-s11-zones-intro.html\" target=_blank>https://www.oracle.com/technical-resources/articles/it-infrastructure/o11-092-s11-zones-intro.html</a></li>\n<li>Docker: <a href=\"https://docs.docker.com/engine\" target=_blank>https://docs.docker.com/engine</a></li>\n<li>LXC: <a href=\"https://linuxcontainers.org\" target=_blank>https://linuxcontainers.org</a></li>\n<li>Open Container Iniative: <a href=\"https://opencontainers.org\" target=_blank>https://opencontainers.org</a></li>\n<li>Podman: <a href=\"https://podman.io\" target=_blank>https://podman.io</a></li>\n<li>Double-fork: <a href=\"https://thelinuxjedi.blogspot.com/2014/02/why-use-double-fork-to-daemonize.html\" target=_blank>https://thelinuxjedi.blogspot.com/2014/02/why-use-double-fork-to-daemonize.html</a></li>\n<li>CRI-O: <a href=\"https://github.com/cri-o/cri-o\" target=_blank>https://github.com/cri-o/cri-o</a></li>\n<li>CGroups: <a href=\"https://www.kernel.org/doc/html/latest/admin-guide/cgroup-v2.html\" target=_blank>https://www.kernel.org/doc/html/latest/admin-guide/cgroup-v2.html</a></li>\n<li>Namespaces: <a href=\"https://en.wikipedia.org/wiki/Linux_namespaces\" target=_blank>https://en.wikipedia.org/wiki/Linux_namespaces</a></li>\n<li>The gory details: <a href=\"https://www.haifux.org/lectures/299/netLec7.pdf\" target=_blank>https://www.haifux.org/lectures/299/netLec7.pdf</a></li>\n<li>Dockerfiles: <a href=\"https://docs.docker.com/engine/reference/builder\" target=_blank>https://docs.docker.com/engine/reference/builder</a></li>\n<li>Containerd: <a href=\"https://containerd.io\" target=_blank>https://containerd.io</a></li>\n<li>From Dusk Till Dawn (TV series): <a href=\"https://en.wikipedia.org/wiki/From_Dusk_till_Dawn:_The_Series\" target=_blank>https://en.wikipedia.org/wiki/From_Dusk_till_Dawn:_The_Series</a></li>\n</ul>\n',384,111,1,'CC-BY-SA','Celts, Celtic languages, Containers, Jails, Zones, Docker, CRI-O, From Dusk till Dawn, religion',0,0,1),
(3618,'2022-06-15','The nnn terminal file manager',434,'The nnn terminal file manager and common uses','<h5 id=\"set-default-text-editor\">Set default text editor</h5>\n<h6 id=\"edit-.bashrc-in-fedora\">Edit .bashrc (in Fedora)</h6>\n<pre><code># Export Default editor and while we&#39;re at it, the PATH to /opt\nexport EDITOR=vim\nexport PATH=/opt:$PATH</code></pre>\n<h4 id=\"enable-icons-in-terminal-icons\">Enable icons-in-terminal icons</h4>\n<p><a href=\"https://github.com/jarun/nnn/wiki/Advanced-use-cases\" class=\"uri\">https://github.com/jarun/nnn/wiki/Advanced-use-cases</a></p>\n<p><a href=\"https://github.com/sebastiencs/icons-in-terminal#installation\" class=\"uri\">https://github.com/sebastiencs/icons-in-terminal#installation</a></p>\n<p>To enable icons-in-terminal icons</p>\n<pre><code>Install icons-in-terminal\nClone the nnn repo\nCompile nnn with make O_ICONS=1 from the root s</code></pre>\n<p>To enable Nerdfont icons</p>\n<pre><code>Download and install a patched Nerdfont.\nApply that font as your terminal emulator&#39;s font. This will vary from emulator to\nemulator, but usually involves editing a config file or changing a setting within a\nGUI menu system.\nClone the nnn repo\nCompile nnn with make O_NERD=1 from the root</code></pre>\n<p>Note:</p>\n<pre><code>Arch Linux users can check out the AUR packages nnn-icons and nnn-nerd.</code></pre>\n<h4 id=\"set-default-applications-via-.configmineapps.list\">Set default applications via .config/mineapps.list</h4>\n<h5 id=\"xdg-mime-manpage\">xdg-mime manpage</h5>\n<ul>\n<li><a href=\"https://linux.die.net/man/1/xdg-mime\" class=\"uri\">https://linux.die.net/man/1/xdg-mime</a></li>\n</ul>\n<h5 id=\"update-mime-database-manpage\">update-mime-database manpage</h5>\n<ul>\n<li><a href=\"https://linux.die.net/man/1/update-mime-database\" class=\"uri\">https://linux.die.net/man/1/update-mime-database</a></li>\n</ul>\n<h5 id=\"add-entry-and-use-right-away\">Add entry and use right away</h5>\n<ul>\n<li><p>xdg-mime default mpv.desktop video/mpeg</p></li>\n<li><p>Query the entry</p></li>\n</ul>\n<pre><code>xdg-mime query default image/png\nfeh.desktop</code></pre>\n<ul>\n<li>Query the file in question</li>\n</ul>\n<pre><code>xdg-mime query filetype cory-doctorow-makers.epub\napplication/epub+zip</code></pre>\n<h5 id=\"examples\">Examples</h5>\n<pre><code>image/jpeg=feh.desktop\naudio/x-wav=mpv.desktop\naudio/flac=mpv.desktop\napplication/epub+zip=calibre-ebook-viewer.desktop\nvideo/mpg=mpv.desktop\nvideo/mpeg=mpv.desktop\nvideo/iso=vlc.desktop\naudio/ogg=mpv.desktop\ntext/pdf=zathura.desktop\napplication/pdf=org.pwmt.zathura-pdf-mupdf.desktop\ntext/markdown=ebook-viewer.desktop\n\n[Added Associations]\nimage/png=feh.desktop;\nvideo/x-matroska=mpv.desktop;\nimage/jpeg=feh.desktop;\naudio/x-wav=mpv.desktop;\naudio/flac=mpv.desktop;\napplication/epub+zip=calibre-ebook-viewer.desktop;\napplication/x-cd-image=vlc.desktop;</code></pre>\n<h4 id=\"how-i-use-nnn\">How I use nnn</h4>\n<ul>\n<li>Watching movies and tv shows from samba Pi server\n<ul>\n<li>Moving video rips to another directory</li>\n</ul></li>\n</ul>\n<p><em>Sample with folder icons</em><br />\n<img src=\"https://hackerpublicradio.org/eps/hpr3618/photo_1.png\" alt=\"Sample with folder icons\" />  </p>\n<ul>\n<li><p>Reading pdf files</p>\n<ul>\n<li>Zathura</li>\n</ul></li>\n<li><p>Reading epub books</p>\n<ul>\n<li>Calibre e-book viewer</li>\n</ul></li>\n<li><p>Editing files in vim</p>\n<ul>\n<li>\'e\' to edit</li>\n</ul></li>\n<li><p>Creating new files</p></li>\n<li><p>Creating new directories</p></li>\n<li><p>Dropping to a command prompt temporarily, using \'!\'</p></li>\n<li><p>Extracting tar.gz and zip files</p></li>\n<li><p>Bulk file renaming</p></li>\n<li><p>Organizing files</p>\n<ul>\n<li>use \'/\' to find like files and \'ESC\'</li>\n</ul></li>\n<li><p>Send file as attachment in mutt</p>\n<ul>\n<li>\'o\' to open file, \'mutt -a\' to attach files</li>\n</ul></li>\n<li><p>KDEconnect to send files and web links</p>\n<pre><code>#!/bin/bash\n\nkdeconnect-cli -d $(kdeconnect-cli -a --id-only) --share $1</code></pre></li>\n<li><p>View all commands</p>\n<ul>\n<li>\'?\'</li>\n</ul></li>\n</ul>\n<p><em>Help screen</em><br />\n<a href=\"https://hackerpublicradio.org/eps/hpr3618/photo_2.png\"><img src=\"https://hackerpublicradio.org/eps/hpr3618/photo_2_thumbnail.png\" alt=\"Help screen\" /></a> <br/><small><small><em>Click the thumbnail to see the full-sized image</em></small></small>  </p>\n<h4 id=\"videos\">Videos</h4>\n<ul>\n<li><a href=\"https://vid.puffyan.us/watch?v=-knZwdd1ScU\" class=\"uri\">https://vid.puffyan.us/watch?v=-knZwdd1ScU</a></li>\n</ul>\n<h4 id=\"more-info\">More info</h4>\n<ul>\n<li><h5 id=\"github-page\">Github page</h5>\n<ul>\n<li><a href=\"https://github.com/jarun/nnn\" class=\"uri\">https://github.com/jarun/nnn</a></li>\n</ul></li>\n<li><h5 id=\"arch-wiki\">Arch wiki</h5>\n<ul>\n<li><a href=\"https://wiki.archlinux.org/title/Nnn\" class=\"uri\">https://wiki.archlinux.org/title/Nnn</a></li>\n</ul></li>\n<li><h5 id=\"plugins\">Plugins</h5>\n<ul>\n<li><a href=\"https://github.com/jarun/nnn/blob/master/plugins/README.md\" class=\"uri\">https://github.com/jarun/nnn/blob/master/plugins/README.md</a></li>\n</ul></li>\n</ul>\n<ul>\n<li><a href=\"https://github.com/jarun/nnn/wiki/Advanced-use-cases\" class=\"uri\">https://github.com/jarun/nnn/wiki/Advanced-use-cases</a></li>\n<li><a href=\"https://wiki.archlinux.org/title/XDG_MIME_Applications\" class=\"uri\">https://wiki.archlinux.org/title/XDG_MIME_Applications</a></li>\n<li><a href=\"https://wiki.archlinux.org/title/Xdg-utils\" class=\"uri\">https://wiki.archlinux.org/title/Xdg-utils</a></li>\n<li><a href=\"https://www.romanzolotarev.com/xdg-mime.html\" class=\"uri\">https://www.romanzolotarev.com/xdg-mime.html</a></li>\n<li>Find all available mimetypes for one application\n<ul>\n<li>grep MimeType /usr/share/applications/gimp.desktop</li>\n</ul></li>\n</ul>\n<h4 id=\"applications\">Applications</h4>\n<ul>\n<li>Zathura for PDF\n<ul>\n<li><a href=\"https://wiki.archlinux.org/title/Zathura\" class=\"uri\">https://wiki.archlinux.org/title/Zathura</a></li>\n</ul></li>\n</ul>\n',318,11,0,'CC-BY-SA','nnn, file manager, lightweight apps, vim, zathura, calibre',0,0,1),
(3627,'2022-06-28','Only Key Duo',982,'I talk about my new Hardware password manager','<p><a href=\"https://onlykey.io/products/onlykey-duo-dual-usb-c-and-usb-a-security-key\" class=\"uri\">https://onlykey.io/products/onlykey-duo-dual-usb-c-and-usb-a-security-key</a></p>\n<p><code>set __COMPAT_LAYER=RUNASINVOKER</code> example usage</p>\n<p><a href=\"https://github.com/freeload101/SCRIPTS/blob/704689e4febf164008089ecaf192cf03dde752c3/AutoHotkey/AutoHotkey.bat#L65\" class=\"uri\">https://github.com/freeload101/SCRIPTS/blob/704689e4febf164008089ecaf192cf03dde752c3/AutoHotkey/AutoHotkey.bat#L65</a></p>\n<p>My post about ghosting your backers:<br />\n<a href=\"https://onlykey.discourse.group/t/onlykey-duo-hello/643\" class=\"uri\">https://onlykey.discourse.group/t/onlykey-duo-hello/643</a></p>\n<p><a href=\"https://twitter.com/operat0r/status/1511475178345222145\" class=\"uri\">https://twitter.com/operat0r/status/1511475178345222145</a></p>\n',36,74,1,'CC-BY-SA','passwords,password managers,Hardware Security',0,0,1),
(3630,'2022-07-01','Planning an RV Trip',1150,'Tools and suggestions for planning a long RV trip.','<p>This begins our series about our RV trip by looking at the planning process. We give a suggestion for a nice online course that is not too expensive, and offer some tips on using Google Maps in planning your trip.</p>\n<h2 id=\"links\">Links:</h2>\n<ul>\n<li><a href=\"https://courses.saadigital.com/p/how-to-plan-your-epic-rv-adventure/\" class=\"uri\">https://courses.saadigital.com/p/how-to-plan-your-epic-rv-adventure/</a></li>\n<li><a href=\"https://www.visitnasa.com/nasa-visitor-centers\" class=\"uri\">https://www.visitnasa.com/nasa-visitor-centers</a></li>\n<li><a href=\"https://www.palain.com/travel/planning-an-rv-trip/\" class=\"uri\">https://www.palain.com/travel/planning-an-rv-trip/</a></li>\n</ul>\n',198,119,0,'CC-BY-SA','Travel, trip planning, Google Maps',0,0,1),
(3640,'2022-07-15','Expert DIR use',878,'We continue with DOS. This time it is mastering the DIR commands','<p>DIR can just be simple list of files and sub-directories, but you can so much more. We can use the information about Wildcards and Attributes to make DIR a kind of search function.</p>\n<h2 id=\"links\">Links:</h2>\n<ul>\n<li><a href=\"https://www.ahuka.com/dos-lessons-for-self-study-purposes/dos-lesson-12-expert-dir-use/\" class=\"uri\">https://www.ahuka.com/dos-lessons-for-self-study-purposes/dos-lesson-12-expert-dir-use/</a></li>\n</ul>\n',198,117,0,'CC-BY-SA','DOS, early PC computing, directory listing',0,0,1),
(3650,'2022-07-29','Major Destinations',910,'Building a plan around major destinations, and using memberships to get discounted stays.','<p>We continue our look at the planning process by looking at how to build a plan around major destinations, and add memberships that give discounted stays like Escapees and Passport America.</p>\n<h2 id=\"links\">Links:</h2>\n<ul>\n<li><a href=\"https://www.escapees.com/benefits/rv-parking/discount-park-directory/maps/\" class=\"uri\">https://www.escapees.com/benefits/rv-parking/discount-park-directory/maps/</a></li>\n<li><a href=\"https://passportamerica.com/\" class=\"uri\">https://passportamerica.com/</a></li>\n<li><a href=\"https://www.palain.com/travel/major-destinations/\" class=\"uri\">https://www.palain.com/travel/major-destinations/</a></li>\n</ul>\n',198,119,0,'CC-BY-SA','Travel, trip planning, Google Maps, Escapees, Passport America',0,0,1),
(3660,'2022-08-12','BASIC',485,'We continue our technological archeology to explore the old warhorse, DOS. This time it is BASIC.','<p>BASIC came bundled as a free programming language when you bought DOS, but it is also the language used for two key components, EDIT and HELP. You need BASIC, therefore, to run either of these key applications, such as on your Emergency Boot Disk.</p>\n<h2 id=\"links\">Links:</h2>\n<ul>\n<li><a href=\"https://www.ahuka.com/dos-lessons-for-self-study-purposes/dos-lesson-13-basic/\" class=\"uri\">https://www.ahuka.com/dos-lessons-for-self-study-purposes/dos-lesson-13-basic/</a></li>\n</ul>\n',198,117,0,'CC-BY-SA','DOS, early PC computing, BASIC',0,0,1),
(3670,'2022-08-26','Changing Plans',988,'We look at some potential Covid-19 issues and consider alternatives','<p>We continue our look at the planning process as we discard one plan due to Covid-19 and turn to a different plan. And we introduce an RV-specific planning tool called RV Trip Wizard.</p>\n<h2 id=\"links\">Links:</h2>\n<ul>\n<li><a href=\"https://www.rvtripwizard.com/app\" class=\"uri\">https://www.rvtripwizard.com/app</a></li>\n<li><a href=\"https://www.palain.com/travel/changing-plans/\" class=\"uri\">https://www.palain.com/travel/changing-plans/</a></li>\n</ul>\n',198,119,0,'CC-BY-SA','Travel, Google Maps, RV Trip Wizard ',0,0,1),
(3680,'2022-09-09','EDIT',739,'More on DOS. This time it is EDIT','<p>EDIT is a key built-in applet that you can use to edit your AUTOEXEC.BAT and CONFIG.SYS files, which makes it a key addition to your Emergency Boot Disk.</p>\n<h2 id=\"links\">Links:</h2>\n<ul>\n<li><a href=\"https://www.ahuka.com/dos-lessons-for-self-study-purposes/dos-lesson-14-the-edit-applet/\" class=\"uri\">https://www.ahuka.com/dos-lessons-for-self-study-purposes/dos-lesson-14-the-edit-applet/</a></li>\n</ul>\n',198,117,0,'CC-BY-SA','DOS, early PC computing, EDIT',0,0,1),
(3690,'2022-09-23','Planning the Trip',817,'Taking our revised plan to completion','<p>We take our revised objectives from the last episode and flesh out a completed plan that gets us out west and back home again.</p>\n<h2 id=\"links\">Links:</h2>\n<ul>\n<li><a href=\"https://www.palain.com/travel/planning-the-trip/\" class=\"uri\">https://www.palain.com/travel/planning-the-trip/</a></li>\n</ul>\n',198,119,0,'CC-BY-SA','Travel, trip planning, full trip',0,0,1),
(3700,'2022-10-07','Introduction to Batch Files',882,'More on DOS. This time it is Introduction to Batch Files','<p>Batch files are an important topic to mastering DOS, and in this episode we begin exploring them. Batch files in DOS are similar to BASH scripts in Unix/Linux in that they let you run multiple commands from one file.</p>\n<h2 id=\"links\">Links:</h2>\n<ul>\n<li><a href=\"https://www.ahuka.com/dos-lessons-for-self-study-purposes/dos-lesson-15-introduction-to-batch-files/\" class=\"uri\">https://www.ahuka.com/dos-lessons-for-self-study-purposes/dos-lesson-15-introduction-to-batch-files/</a></li>\n</ul>\n',198,117,0,'CC-BY-SA','DOS, early PC computing, Batch Files',0,0,1),
(3710,'2022-10-21','Changing Plans Again',1262,'One more trip change, then on the road','<p>Once again we had to change plans due to some health issues that were not serious but had to be dealt with. But we finally got on the road and started traveling.</p>\n<h2 id=\"links\">Links:</h2>\n<ul>\n<li><a href=\"https://blog.campersinn.com/blog/ultimate-rv-packing-list-for-a-first-time-camper\" class=\"uri\">https://blog.campersinn.com/blog/ultimate-rv-packing-list-for-a-first-time-camper</a></li>\n<li><a href=\"https://www.palain.com/travel/changing-plans-2/\" class=\"uri\">https://www.palain.com/travel/changing-plans-2/</a></li>\n</ul>\n',198,119,0,'CC-BY-SA','Travel, trip planning',0,0,1),
(3720,'2022-11-04','Practicing Batch Files With ECHO',731,'More on DOS. This time it is using the ECHO command with batch files.','<p>This continues our look at batch files by demonstrating the use of the ECHO command. This command can be used to display things on the screen, or hide them, as you wish.</p>\n<h2 id=\"links\">Links:</h2>\n<ul>\n<li><a href=\"https://www.ahuka.com/dos-lessons-for-self-study-purposes/dos-lesson-16-practicing-batch-files-with-echo/\" class=\"uri\">https://www.ahuka.com/dos-lessons-for-self-study-purposes/dos-lesson-16-practicing-batch-files-with-echo/</a></li>\n</ul>\n',198,117,0,'CC-BY-SA','DOS, early PC computing, batch files, ECHO',0,0,1),
(3730,'2022-11-18','Into Arizona',858,'Hitting our first major stop in Arizona.','<p>We get to our first major stop for a week in Topock, Arizona. From here we can check out places like Oatman, Arizona and Lake Havasu, Arizona. We make a few more mistakes, but learn from them.</p>\n<h2 id=\"links\">Links:</h2>\n<ul>\n<li><a href=\"https://www.palain.com/travel/into-arizona/\" class=\"uri\">https://www.palain.com/travel/into-arizona/</a></li>\n</ul>\n',198,119,0,'CC-BY-SA','Travel, RV life, Arizona',0,0,1),
(3740,'2022-12-02','Batch File Variables; Nested Batch Files',730,'More on DOS. This time it is using variables in batch files, and nesting batch files.','<p>This final episode of the DOS series continues the look at batch files by first looking at how you can use variables in writing your batch files. Then we look at how batch files can be nested, that is, how one batch file can call another batch file, thus chaining batch files together.</p>\n<h2 id=\"links\">Links:</h2>\n<ul>\n<li><a href=\"https://www.ahuka.com/dos-lessons-for-self-study-purposes/dos-lesson-17-batch-file-variables-nested-batch-files/\" class=\"uri\">https://www.ahuka.com/dos-lessons-for-self-study-purposes/dos-lesson-17-batch-file-variables-nested-batch-files/</a></li>\n</ul>\n',198,117,0,'CC-BY-SA','DOS, early PC computing, batch files, variables, nesting',0,0,1),
(3750,'2022-12-16','Southern Arizona',1022,'We move into Southern Arizona, near the Mexican border.','<p>We wrap up our stay in Topock, Arizona and move down to Ajo, Arizona, not far from the Mexican border. Kevin gets a head cold and takes it easy for a few days, but we still manage to get out and see some things. At the end we repair our steps and head off to the Tucson area.</p>\n<h2 id=\"links\">Links:</h2>\n<ul>\n<li><a href=\"https://www.palain.com/travel/southern-arizona/\" class=\"uri\">https://www.palain.com/travel/southern-arizona/</a></li>\n</ul>\n',198,119,0,'CC-BY-SA','Travel, RV life, Arizona',0,0,1),
(3596,'2022-05-16','Extracting text, tables and images from docx files using Python',517,'In this episode, I describe how I used 2 python libraries to extract import data from docx files','<h2 id=\"tools-to-extract-data-from-docx-files\">Tools to extract data from docx files:</h2>\n<ol>\n<li><a href=\"https://manpages.ubuntu.com/manpages/focal/man1/docx2txt.1.html\">docx2txt</a></li>\n<li><a href=\"https://github.com/ankushshah89/python-docx2txt\">python-docx2txt</a></li>\n<li><a href=\"https://python-docx.readthedocs.io/en/latest/\">python-docx</a></li>\n</ol>\n<h2 id=\"code-snippets\">Code Snippets</h2>\n<pre><code>text = docx2txt.process(src, img_dest)\nwith open(&quot;data.txt&quot;, &quot;wt&quot;) as f:\n    f.write(text)\n</code></pre>\n<pre><code>document = docx.Document(src)\ntables = document.tables\ndata = []\nfor table in tables:\n    table_data = []\n    for row in table.rows:\n        row_data = []\n        for cell in row.cells:\n            row_data.append(cell.text)\n        table_data.append(row_data)\n    data.append(table_table)\n\nfor i, table in enumerate(tables):\n    with open(f&quot;{i}.csv&quot;, &quot;wt&quot;) as f:\n        writer = csv.writer(f)\n        writer.writerows(table)\n</code></pre>\n',300,38,0,'CC-BY-SA','python,docx',0,0,1),
(3597,'2022-05-17','Good Idea Fairy Hunting',570,'Tracing my security woes to the source using \"Good Idea Fairy Hunting\"','<p>This is the beginning of a series where I am going to discuss how to handle and tackle security as a people problem. We often lose sight of the trees for the forest and vice versa. Let\'s get out from behind our desks and go meet the people that need our help, even if they don\'t know it yet.</p>\n',405,74,1,'CC-BY-SA','adminadmin,Lurking Prion,2022,cybersecurity,infosec',0,0,1),
(3598,'2022-05-18','Slackware 15 - 32 bit Operating System from day one.',3756,'The PRO\'s of using a Slackware 32 bit operating system','<ul>\n<li>The Slackware Linux website:<br />\n<a href=\"https://www.slackware.com/info/\" class=\"uri\">https://www.slackware.com/info/</a></li>\n<li>Wiki on Slackware Linux<br />\n<a href=\"https://www.wikiwand.com/en/Slackware\" class=\"uri\">https://www.wikiwand.com/en/Slackware</a></li>\n<li>List of distributions based on Slackware - Suse excluded<br />\n<a href=\"https://www.primidi.com/list_of_linux_distributions/slackware-based\" class=\"uri\">https://www.primidi.com/list_of_linux_distributions/slackware-based</a></li>\n<li>Slackbuilds.org website<br />\n<a href=\"https://slackbuilds.org/repository/15.0/multimedia/vlc/\" class=\"uri\">https://slackbuilds.org/repository/15.0/multimedia/vlc/</a></li>\n<li>Freenix - formerly FreeSlacks<br />\n<a href=\"https://freeslack.net/\" class=\"uri\">https://freeslack.net/</a></li>\n</ul>\n',377,0,1,'CC-BY-SA','32bitOS, Security,Simplicity,Freedom,usercontrol',0,0,1),
(3601,'2022-05-23','Re: The Worst Car I Ever Had',356,'In the 1980\'s, out of ignorance, I bought a real dud of a car','<article>\n<h2 id=\"introduction\">Introduction</h2>\n<p>This episode was prompted by show <a href=\"https://hackerpublicradio.org/eps.php?id=3542\">3542</a> from <a href=\"https://hackerpublicradio.org/correspondents/0246.html\">Beeza</a> entitled <em>The Worst Car I Ever Had</em>. Here’s my story.</p>\n<p>I moved to Edinburgh in 1981, and before long bought myself a car - the first one I had owned. Before that I’d owned a series of Lambretta motor scooters and small to medium powered motorbikes. I’d been using a bicycle a lot after that.</p>\n<p>The car I bought was an oldish <a href=\"https://en.wikipedia.org/wiki/Peugeot_104\">Peugeot 104</a>, small, not very powerful, but it did the job. It was fine for driving around town and I used it to go and visit my parents in Norwich, England a few times, a long journey. I once drove north, up to Ullapool, a shorter drive, but it wasn’t the car for long journeys. Mostly it was used around town.</p>\n<p>As the Peugeot started to give me trouble I looked around for a replacement. I was visiting my parents and went to a car dealer in Norwich and was shown an <a href=\"https://en.wikipedia.org/wiki/Austin_Maestro\">Austin Maestro</a>. It was newer than the Peugeot and seemed to be in good condition, so I bought it, trading in the Peugeot as I did so.</p>\n<p>The Maestro range was seen as reasonably good as far as I knew, but this one suffered from some design flaws, in my opinion.</p>\n<p>The car I bought was only a few years old and had a fairly low mileage. It was the HLE model with a 1.3 litre petrol engine. It had 4 doors and a <em>hatch</em> at the back giving access to a reasonable amount of luggage space (often such <em>hatchbacks</em> are called 5-door cars in the UK). All Maestro models had front-wheel drive, and this one had a manual gearbox. Automatic British cars were not common at that time.</p>\n<p>The Maestro had a bunch of economy features:</p>\n<ul>\n<li>a 4-speed gearbox with some <em>economy</em> gear ratios</li>\n<li>an <em>econometer</em> on the dashboard with green and red LEDs indicating how economically the car was being driven</li>\n</ul>\n<h2 id=\"the-issues\">The Issues</h2>\n<p>The Maestro seemed to have been designed to be driven as empty as possible. As soon as there were any passengers, or luggage, or <u><mark>both</mark></u>, the car was a nightmare to drive.</p>\n<p>There were models in the range that performed well, I think. Being passed by them on motorways and when trying to drive up any kind of hill showed this to be true. I’ve read that the standard 1.3 model was pretty good without the economy features, but I never experienced one.</p>\n<p>The problem was that the gap in gear ratios between the second and third gear was enormous, as if you’d accidentally skipped a gear. The fourth <em>economy</em> gear could only be resorted to on flat roads – or going downhill – or with a tail wind – or with the car completely empty.</p>\n<p>I was happy to find a link describing these problems when doing research for this show. The <a href=\"https://www.aronline.co.uk/cars/austin/maestro/not-their-finest-hour-austin-maestro-1-3-hle/\">description of the car</a> made me laugh, but also brought back memories of the extreme frustration I experienced with this car!</p>\n<p>So, I conclude that this particular Maestro was a failure. It might be the reason I got it at a good price; the previous owner was probably keen to get rid of it. Also the car dealer knew a sucker when he saw one, and I was that fool!</p>\n<p>I kept the car for a few years, did very few long journeys in it and eventually replaced it with a Vauxhall Astra Mark III, which was in a totally different league!</p>\n<h2 id=\"links\">Links</h2>\n<ul>\n<li>Peugeot 104\n<ul>\n<li><a href=\"https://en.wikipedia.org/wiki/Peugeot_104\">Wikipedia page on the Peugeot 104</a></li>\n</ul></li>\n</ul>\n<ul>\n<li>Austin Maestro:\n<ul>\n<li><a href=\"https://en.wikipedia.org/wiki/Austin_Maestro\">Wikipedia page on the Maestro</a></li>\n<li><a href=\"https://www.aronline.co.uk/cars/austin/maestro/not-their-finest-hour-austin-maestro-1-3-hle/\">Essay : Not their finest hour – Austin Maestro 1.3HLE</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=yANZVp4HRMQ\">A 1983 Austin Maestro 1.3 HLE called <em>Amy</em> (YouTube)</a></li>\n</ul></li>\n</ul>\n<ul>\n<li>Vauxhall Astra:\n<ul>\n<li><a href=\"https://en.wikipedia.org/wiki/Vauxhall_Astra\">Wikipedia page on the Vauxhall Astra</a></li>\n</ul></li>\n</ul>\n</article>\n',225,0,1,'CC-BY-SA','Cars, automobiles, Austin Maestro',0,0,1),
(3603,'2022-05-25','Who the heck is Evil Steve? Part 1',852,'Security as a people problem: Who is actually attacking us? Meet Evil Steve.\r','<p>admin admin with Lurking Prion</p>\r\n<p>Episode 3: Who the heck is Evil Steve?</p>\r\n<p>Picking up from Episode 2: Good Idea Fairy Hunting we continue exploring the concept of security as a people problem.<br />\r\nThis week we stop to take a moment to focus on the Who rather than the What is attacking us. In CyberSecurity, we tend to get caught up in things that happen to us, that we forget that it is actually a person attacking us. Learning more about who wants the information we have will tell us the ways they go about stealing it. This gives us information to better protect our assets and begin active threat hunting. The show is about 15 minutes long.</p>\r\n<h2 id=\"links-to-information-about-threat-actors-listed-below\">Links to information about Threat Actors listed below:</h2>\r\n<ul>\r\n<li><a href=\"https://www.cisa.gov/\" class=\"uri\">https://www.cisa.gov/</a></li>\r\n<li><a href=\"https://www.cisa.gov/cybersecurity\" class=\"uri\">https://www.cisa.gov/cybersecurity</a></li>\r\n<li><a href=\"https://www.cisa.gov/cert\" class=\"uri\">https://www.cisa.gov/cert</a></li>\r\n<li><a href=\"https://www.csoonline.com/article/3619011/the-10-most-dangerous-cyber-threat-actors.html\" class=\"uri\">https://www.csoonline.com/article/3619011/the-10-most-dangerous-cyber-threat-actors.html</a></li>\r\n<li><a href=\"https://threatmap.checkpoint.com/\" class=\"uri\">https://threatmap.checkpoint.com/</a></li>\r\n</ul>\r\n',405,74,1,'CC-BY-SA','adminadmin,cyber security,security,threats,threat actors,Evil Steve',0,0,1),
(3612,'2022-06-07','Who is Evil Steve? Part 2',959,'We take a closer look at the types of Evil Steve\'s attacking us','<p>admin admin with Lurking Prion</p>\n<h2 id=\"episode-4-who-is-evil-steve-part-2\">Episode 4: Who is Evil Steve? Part 2</h2>\n<p>Picking up from Episode 3: Picking up from the last episode, we delve a bit more into the types of threat actors (people) that are attacking us. We explore the run of the mill data theft hacker to the more professional Advanced Persistent Threats (APTs). The show is about 16 minutes long.</p>\n<h2 id=\"links-to-information-about-threat-actors-listed-below\">Links to information about Threat Actors listed below:</h2>\n<ul>\n<li><a href=\"https://www.cisa.gov/\" class=\"uri\">https://www.cisa.gov/</a></li>\n<li><a href=\"https://www.cisa.gov/cybersecurity\" class=\"uri\">https://www.cisa.gov/cybersecurity</a></li>\n<li><a href=\"https://www.cisa.gov/cert\" class=\"uri\">https://www.cisa.gov/cert</a></li>\n<li><a href=\"https://www.csoonline.com/article/3619011/the-10-most-dangerous-cyber-threat-actors.html\" class=\"uri\">https://www.csoonline.com/article/3619011/the-10-most-dangerous-cyber-threat-actors.html</a></li>\n<li><a href=\"https://threatmap.checkpoint.com/\" class=\"uri\">https://threatmap.checkpoint.com/</a></li>\n</ul>\n',405,74,1,'CC-BY-SA','adminadmin,cybersecurity,security,threats,threat actors,Evil Steve',0,0,1),
(3617,'2022-06-14','admin admin S01E05: To Do List - 2FA',874,'Making ourselves a less attractive target by implementing 2FA.','<p>Picking up from the last episode, we are now delving in to the security measures we can implement to make ourselves less attractive for Evil Steve. Two Factor Authentication (2FA) is at the top of the list.</p>\n<h2 id=\"links\">Links:</h2>\n<ul>\n<li><a href=\"https://www.pcmag.com/picks/the-best-authenticator-apps?\" class=\"uri\">https://www.pcmag.com/picks/the-best-authenticator-apps?</a></li>\n<li><a href=\"https://www.ledger.com/es/academy/why-two-factor-authentication-2fa-matters-now-more-than-ever\" class=\"uri\">https://www.ledger.com/es/academy/why-two-factor-authentication-2fa-matters-now-more-than-ever</a></li>\n</ul>\n<ul>\n<li>Permanent link because it\'s very cool.<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','adminadmin,Lurking Prion,cybersecurity,security,threats,2FA,Evil Steve, two factor',0,0,1),
(3619,'2022-06-16','Linux Inlaws S01E58: Kubernetes and Friends and Sarah',4090,'The fun continues with a discussion of container orchestration frameworks, death (of containers) and','In this continuation of S01E57 our two chaps discuss how you can take containers from\nsingle instances to production-ready, scalable deployments handling large app stacks\nand that new-fangled hipster concept called micro-services. Using the once Google-owned project called Borg which later evolved into something now known as Kubernetes (k8s) as an example,\nMartin and Chris discuss typical challenges when using containers as the main infrastructure\nto modern workloads. Including such gory topics such as what happens if a container dies and\ndoesn\'t go to heaven, contradictions in terms such as ephemeral storage and why many k8s developers\nhave defected to VMware.\n<h2>Links:</h2>\n<ul>\n<li>S01E57: <a href=\"https://linuxinlaws.eu/#episodes\" target=_blank>https://linuxinlaws.eu/#episodes</a></li>\n<li>k8s: <a href=\"https://kubernetes.io\" target=_blank>https://kubernetes.io</a></li>\n<li>Mesos: <a href=\"https://mesos.apache.org\" target=_blank>https://mesos.apache.org</a></li>\n<li>DC OS: <a href=\"https://dcos.io\" target=_blank>https://dcos.io</a></li>\n<li>Redis Stack: <a href=\"https://redis.io/docs/stack\" target=_blank>https://redis.io/docs/stack</a></li>\n<li>Docker Swarm: <a href=\"https://docs.docker.com/engine/swarm\" target=_blank>https://docs.docker.com/engine/swarm</a></li>\n<li>Open Container Initiative: <a href=\"https://opencontainers.org\" target=_blank>https://opencontainers.org</a></li>\n<li>cri-o: <a href=\"https://github.com/cri-o/cri-o\" target=_blank>https://github.com/cri-o/cri-o</a></li>\n<li>containerd: <a href=\"https://github.com/containerd/containerd\" target=_blank>https://github.com/containerd/containerd</a></li>\n<li>minikube: <a href=\"https://minikube.sigs.k8s.io/docs/start\" target=_blank>https://minikube.sigs.k8s.io/docs/start</a></li>\n<li>kubeadm: <a href=\"https://kubernetes.io/docs/reference/setup-tools/kubeadm\" target=_blank>https://kubernetes.io/docs/reference/setup-tools/kubeadm</a></li>\n<li>kubeadm tutorial: <a href=\"https://citizix.com/how-to-set-up-kubernetes-cluster-on-debian-11-with-kubeadm-and-cri-o\" target=_blank>https://citizix.com/how-to-set-up-kubernetes-cluster-on-debian-11-with-kubeadm-and-cri-o</a></li>\n<li>YAML: <a href=\"https://yaml.org\" target=_blank>https://yaml.org</a></li>\n<li>OpenShift: <a href=\"https://www.redhat.com/en/technologies/cloud-computing/openshift\" target=_blank>https://www.redhat.com/en/technologies/cloud-computing/openshift</a></li>\n<li>HELM: <a href=\"https://helm.sh\" target=_blank>https://helm.sh</a></li>\n<li>k8s operators: <a href=\"https://kubernetes.io/docs/concepts/extend-kubernetes/operator\" target=_blank>https://kubernetes.io/docs/concepts/extend-kubernetes/operator</a></li>\n<li>openstack: <a href=\"https://www.openstack.org\" target=_blank>https://www.openstack.org</a></li>\n<li>Redis operator: <a href=\"https://github.com/AmadeusITGroup/Redis-Operator\" target=_blank>https://github.com/AmadeusITGroup/Redis-Operator</a></li>\n<li>k8s grid: <a href=\"https://tanzu.vmware.com/kubernetes-grid\" target=_blank>https://tanzu.vmware.com/kubernetes-grid</a></li>\n<li>Bradley Kuhn\'s Non-Profit blog post: <a href=\"https://sfconservancy.org/blog/2013/dec/05/non-profit-home\" target=_blank>https://sfconservancy.org/blog/2013/dec/05/non-profit-home</a></li>\n<li>Sarah\'s HPR episode: <a href=\"https://hackerpublicradio.org/eps.php?id=3577\" target=_blank>https://hackerpublicradio.org/eps.php?id=3577</a></li>\n<li>Volodymyr Zelenskyy: <a href=\"https://en.wikipedia.org/wiki/Volodymyr_Zelenskyy\" target=_blank>https://en.wikipedia.org/wiki/Volodymyr_Zelenskyy</a></li>\n</ul>\n',384,111,1,'CC-BY-SA','Kubernetes, Mesos, cri-o, YAML, OpenShift, hpr3577',0,0,1),
(3626,'2022-06-27','The stuff Evil Steve doesn\'t want you to know S01E06: Use a Password Manager',1100,'Making ourselves a less attractive target by utilizing a password manager.','<p>The stuff Evil Steve doesn\'t want you to know with Lurking Prion. This is Season 1, Episode 6. Picking up from the last episode, we are now delving in to the security measures we can implement to make ourselves a less attractive for Evil Steve. After implementing 2FA, we should now be setting up and using a password manager. Then we look for and changed passwords involved in known breaches (haveibeenpwned - link in show notes). The show is approximately 19 minutes long.</p>\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>Password Manager Reviews:<br />\n<a href=\"https://www.tomsguide.com/us/best-password-managers,review-3785.html\" class=\"uri\">https://www.tomsguide.com/us/best-password-managers,review-3785.html</a><br />\n<a href=\"https://www.pcmag.com/picks/the-best-password-managers\" class=\"uri\">https://www.pcmag.com/picks/the-best-password-managers</a><br />\n<a href=\"https://www.nytimes.com/wirecutter/reviews/best-password-managers/\" class=\"uri\">https://www.nytimes.com/wirecutter/reviews/best-password-managers/</a></p></li>\n<li><p>Stand-Alone Password Managers<br />\n</p>\n<ul>\n<li>KeePass <a href=\"https://keepass.info/\" class=\"uri\">https://keepass.info/</a></li>\n<li>KeePassXC <a href=\"https://keepassxc.org/\" class=\"uri\">https://keepassxc.org/</a></li>\n</ul></li>\n<li><p>Recent Authenticator App Reviews<br />\n<a href=\"https://www.pcmag.com/picks/the-best-authenticator-apps\" class=\"uri\">https://www.pcmag.com/picks/the-best-authenticator-apps</a><br />\n<a href=\"https://www.nytimes.com/wirecutter/reviews/best-two-factor-authentication-app/\" class=\"uri\">https://www.nytimes.com/wirecutter/reviews/best-two-factor-authentication-app/</a></p></li>\n<li><p>Google password manager articles<br />\n<a href=\"https://privacycrypts.com/password-managers/guides/is-chrome-password-manager-safe/\" class=\"uri\">https://privacycrypts.com/password-managers/guides/is-chrome-password-manager-safe/</a><br />\n<a href=\"https://www.experian.com/blogs/ask-experian/is-google-passwordmanager-secure/\" class=\"uri\">https://www.experian.com/blogs/ask-experian/is-google-passwordmanager-secure/</a></p></li>\n<li><p>Apple iCloud Keychain<br />\n<a href=\"https://www.imore.com/icloud-keychain\" class=\"uri\">https://www.imore.com/icloud-keychain</a><br />\n<a href=\"https://www.intego.com/mac-security-blog/mac-and-ios-keychain-tutorial-how-apples-icloud-keychain-works/\" class=\"uri\">https://www.intego.com/mac-security-blog/mac-and-ios-keychain-tutorial-how-apples-icloud-keychain-works/</a><br />\n<a href=\"https://www.podfeet.com/blog/2021/06/icloud-keychain-vs-1password/\" class=\"uri\">https://www.podfeet.com/blog/2021/06/icloud-keychain-vs-1password/</a></p></li>\n<li><p>iCloud Keychain 2FA - how to<br />\n<a href=\"https://www.guidingtech.com/use-icloud-keychain-two-factor-authentication/\" class=\"uri\">https://www.guidingtech.com/use-icloud-keychain-two-factor-authentication/</a></p></li>\n<li><p>Apple iCloud Keychain security issues<br />\n<a href=\"https://www.wired.com/story/keysteal-apple-keychain-attack-shenanigans/\" class=\"uri\">https://www.wired.com/story/keysteal-apple-keychain-attack-shenanigans/</a></p></li>\n<li><p>Microsoft Authenticator vs Google Authenticator<br />\n<a href=\"https://www.365tech.ca/which-one-is-better-microsoft-authenticator-or-google-authenticator/\" class=\"uri\">https://www.365tech.ca/which-one-is-better-microsoft-authenticator-or-google-authenticator/</a></p></li>\n<li><p>Google Authenticator<br />\n<a href=\"https://www.techdim.com/what-is-google-authenticator/\" class=\"uri\">https://www.techdim.com/what-is-google-authenticator/</a></p></li>\n<li><p>Google Authenticator security issue<br />\n<a href=\"https://privacypros.io/u2f/stop-using-google-auth/\" class=\"uri\">https://privacypros.io/u2f/stop-using-google-auth/</a></p></li>\n<li><p>Microsoft Authenticator<br />\n<a href=\"https://www.androidauthority.com/microsoft-authenticator-987754/\" class=\"uri\">https://www.androidauthority.com/microsoft-authenticator-987754/</a></p></li>\n<li><p>Microsoft Authenticator security issue<br />\n<a href=\"https://www.transmitsecurity.com/blog/microsoft-authenticator-a-false-sense-of-security\" class=\"uri\">https://www.transmitsecurity.com/blog/microsoft-authenticator-a-false-sense-of-security</a></p></li>\n<li><p>Permanent link because it\'s very cool.<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, 2FA, EvilSteve, password manager ,password, breach',0,0,1),
(3604,'2022-05-26','Everything You Always Wanted to Know About PEX Part 01- Let\'s Talk About PEX - Introduction ',782,'Introduction to PEX','<h2 id=\"everything-you-always-wanted-to-know-about-pex\">Everything You Always Wanted to Know About PEX</h2>\n<h3 id=\"part-01--lets-talk-about-pex---introduction\">Part 01- Let\'s Talk About PEX - Introduction</h3>\n<h3 id=\"why-my-story\">Why? My story</h3>\n<ol type=\"1\">\n<li>Why am I posting about plumbing on HPR? \"Of interest to hackers\"\n<ol type=\"1\">\n<li>I find it interesting</li>\n<li>We like to learn new things</li>\n<li>We like to understand\n<ol type=\"1\">\n<li>How things work</li>\n<li>How things break</li>\n<li>How to use non-standard approached to solve problems</li>\n</ol></li>\n<li>Others can learn from my experience, troubleshooting process, etc...</li>\n<li>I had fun creating the episode titles.</li>\n</ol></li>\n<li>Pinhole leaks in copper pipe\n<ol type=\"1\">\n<li>Causes &#x2013; Note plumbing is around 40 years old and original to house</li>\n<li>Poor quality copper Shoddy installation</li>\n<li>Failure to de-bur pipe before soldering</li>\n<li>Not properly hung from joists\n<ol type=\"1\">\n<li>Pipe on pipe</li>\n<li>Pipe on steel wire</li>\n</ol></li>\n<li>Bad soldering technique\n<ol type=\"1\">\n<li>Lumpy solder</li>\n<li>Flux residue</li>\n<li>Excessive flux</li>\n</ol></li>\n<li>Hard water\n<ol type=\"1\">\n<li>Only some neighbors experiencing the same issue, and their houses were constructed by the same builder.</li>\n</ol></li>\n<li>Learn more about copper pipe corrosion\n<ol type=\"1\">\n<li>How to Stop Copper Pipe Corrosion - This Old House YouTube Channel</li>\n<li><a href=\"https://www.youtube.com/watch?v=nD5lMITzx_Y\" class=\"uri\">https://www.youtube.com/watch?v=nD5lMITzx_Y</a></li>\n</ol></li>\n<li>High Water Pressure\n<ol type=\"1\">\n<li>Normal = 60-80 PSI</li>\n<li>Tested at 63 PSI = GOOD!!</li>\n</ol></li>\n<li>Damage</li>\n<li>Water leaks caused damage to drywall in parts of my house and to items stored in my garage.</li>\n<li>Leaks in some areas can sometimes go unidentified for long enough to do extensive damage and even lead to dangerous mold growth.</li>\n</ol></li>\n<li>Possible solutions\n<ol type=\"1\">\n<li>Short term</li>\n<li>Patch\n<ol type=\"1\">\n<li>Epoxy kits</li>\n<li>Can be inconsistent</li>\n<li>May not bond to corroded pipe</li>\n<li>Some require turning off water and dry pipes</li>\n<li>Water activated tape</li>\n<li>Access around pipe</li>\n<li>May not bond to corroded pipe</li>\n<li>Some require turning off water and dry pipes</li>\n<li>Solder on patch</li>\n<li>Expensive</li>\n<li>Requires clean dry pipe exterior</li>\n<li>Requires draining the pipe</li>\n<li>Might as well cut out the leaking section and replace</li>\n<li>Repair Clamps</li>\n<li>Fast</li>\n<li>Strong</li>\n<li>Can be used while pipe is under pressure</li>\n<li>Minimal clearance needed</li>\n<li>Examples\n<ol type=\"1\">\n<li><a href=\"https://www.grainger.com/category/plumbing/pipe-tubing-and-fittings/pipe-repair-clamps-and-couplings/pipe-repair-clamps\" class=\"uri\">https://www.grainger.com/category/plumbing/pipe-tubing-and-fittings/pipe-repair-clamps-and-couplings/pipe-repair-clamps</a></li>\n<li><a href=\"https://www.homedepot.com/b/Plumbing-Plumbing-Accessories-Repair-Clamps/Copper/N-5yc1vZbqomZ1z0vifv\" class=\"uri\">https://www.homedepot.com/b/Plumbing-Plumbing-Accessories-Repair-Clamps/Copper/N-5yc1vZbqomZ1z0vifv</a></li>\n<li><a href=\"https://www.homedepot.com/b/Plumbing-Plumbing-Accessories-Repair-Clamps/Multi-Purpose/N-5yc1vZbqomZ1z0vhwh\" class=\"uri\">https://www.homedepot.com/b/Plumbing-Plumbing-Accessories-Repair-Clamps/Multi-Purpose/N-5yc1vZbqomZ1z0vhwh</a></li>\n</ol></li>\n</ol></li>\n<li>Long Term</li>\n<li>Repair copper\n<ol type=\"1\">\n<li>Cut out damaged section and replace using SharkBite fittings</li>\n<li>Expensive</li>\n<li>Cut out damaged section and solder in new section of pipe</li>\n<li>Expensive</li>\n<li>Time consuming</li>\n<li>Many areas of corrosion visible</li>\n<li>Whack-a-mole - Where &amp; when will next leak occur?</li>\n</ol></li>\n<li>New copper\n<ol type=\"1\">\n<li>Expensive</li>\n<li>Difficult</li>\n<li>Time consuming</li>\n</ol></li>\n<li>PVC\n<ol type=\"1\">\n<li>Still difficult &#x2013; rigidity</li>\n</ol></li>\n<li>PEX\n<ol type=\"1\">\n<li>Comparatively inexpensive</li>\n<li>Flexible and easy to install</li>\n<li>Can use existing copper pipe as support structure</li>\n<li>Can completely redesign with a manifold</li>\n</ol></li>\n</ol></li>\n</ol>\n',394,0,0,'CC-BY-SA','diy, plumbing,PEX',0,0,1),
(3614,'2022-06-09','Everything You Always Wanted to Know About PEX Part 02- The Joy of PEX - What is it and how is it us',838,'Information about PEX and how it is used','<h2 id=\"everything-you-always-wanted-to-know-about-pex\">Everything You Always Wanted to Know About PEX</h2>\n<h3 id=\"part-02--the-joy-of-pex---what-is-it-and-how-is-it-used\">Part 02- The Joy of PEX - What is it and how is it used?</h3>\n<ol type=\"1\">\n<li>What is PEX?\n<ol type=\"1\">\n<li>According to Wikipedia, Cross-linked polyethylene tubing is commonly abbreviated PEX, XPE or XLPE -<a href=\"https://en.wikipedia.org/wiki/Cross-linked_polyethylene\" class=\"uri\">https://en.wikipedia.org/wiki/Cross-linked_polyethylene</a></li>\n<li>This tubing is made of crosslinked polyethelene chains</li>\n<li>Type A, Type B, &amp; Type C</li>\n<li>These differ based on the process used to make them and the resulting properties of the resulting tubing</li>\n<li>PEX is used for a variety of products</li>\n<li>Insulation on high voltage high tension electrical cables</li>\n<li>Domestic water pipes</li>\n<li>Irrigation and hydroponic systems</li>\n<li>Natural gas and oil pipes</li>\n<li>Chemical handling and storage systems</li>\n</ol></li>\n<li>Domestic plumbing\n<ol type=\"1\">\n<li>Advantages</li>\n<li>Flexible &#x2013; easy to install and fish through walls and crawl spaces</li>\n<li>It will stretch a little &#x2013; Less likely to rupture if water contained in PEX freezes</li>\n<li>Does not rust or corrode</li>\n<li>Less expensive than copper</li>\n<li>Multiple colors for easy identification</li>\n<li>Easy to cut</li>\n<li>Connections are easy\n<ol type=\"1\">\n<li>Type A &#x2013; Expansion PEX</li>\n<li>Process\n<ol type=\"1\">\n<li>A roughly 1/2\" - 3/4\"sleeve of slightly larger PEX expansion sleeve is slipped over the end of the PEX-A tubing</li>\n<li>A special tool is inserted into the end of the tubing which stretches it outward a predefined amount.</li>\n<li>The tubing is slipped over the end of the desired PEX-A connector and allowed to shrink back to normal size, creating a seal</li>\n<li>Video: <a href=\"https://www.youtube.com/watch?v=Xot95W8vni0\" class=\"uri\">https://www.youtube.com/watch?v=Xot95W8vni0</a></li>\n</ol></li>\n<li>Advantages\n<ol type=\"1\">\n<li>Fast and easy to install</li>\n<li>Can install in tight places, since tool does not need to be at the connector</li>\n<li>More resistant to damage from kinks if bent over too tight a radius</li>\n<li>More resistant to damage from freezing</li>\n</ol></li>\n<li>Disadvantages\n<ol type=\"1\">\n<li>The tool is expensive (~$300 - $600 USD)</li>\n<li>In the United states, PEX-A connectors have limited availability in typical hardware and home improvement stores</li>\n</ol></li>\n<li>Type B &#x2013; Crimp PEX (Doesn\'t stretch)</li>\n<li>Process\n<ol type=\"1\">\n<li>A metal ring or band is placed around the end of the PEX-B tubing</li>\n<li>The tubing is slipped over the end of the desired PEX-B connector</li>\n<li>A special tool us used to crimp the metal ring or a different tool may be used to tighten the metal band, creating a seal</li>\n<li>Video: <a href=\"https://www.youtube.com/watch?v=U-t-ZeHv9s0\" class=\"uri\">https://www.youtube.com/watch?v=U-t-ZeHv9s0</a></li>\n</ol></li>\n<li>Advantages\n<ol type=\"1\">\n<li>Fast &amp; easy to install</li>\n<li>Crimping tools are less expensive</li>\n<li>Higher availability of a wider range of connectors at typical home improvement stores in the United States</li>\n</ol></li>\n<li>Disadvantages\n<ol type=\"1\">\n<li>If PEX-B is kinked, that portion is no longer safe to use and it must be replaced.</li>\n<li>Can be more difficult to connect in tight places</li>\n<li>This can be remedied with the use of SharkBite press on fittings.</li>\n<li>Less resistant to damage from freezing.</li>\n</ol></li>\n</ol></li>\n<li>Connections are also easily removed</li>\n<li>Disadvantages</li>\n<li>Easily damaged by ultraviolet light from sunlight or even LED &amp; fluorescent lights (Check manufacturer specifications. Most rated for only 30-60 days of sun exposure)\n<ol type=\"1\">\n<li><a href=\"https://www.doityourself.com/stry/how-long-can-pex-piping-be-exposed-to-sunlight\" class=\"uri\">https://www.doityourself.com/stry/how-long-can-pex-piping-be-exposed-to-sunlight</a></li>\n<li><a href=\"https://www.flowguardgold.com/en-us/blog/the-influence-of-uv-light-on-plastic-plumbing-systems\" class=\"uri\">https://www.flowguardgold.com/en-us/blog/the-influence-of-uv-light-on-plastic-plumbing-systems</a></li>\n</ol></li>\n<li>Long term durability yet to be proven</li>\n<li>Non-conductive (electrical ground)</li>\n<li>Not rigid &#x2013; Must be supported</li>\n<li>May induce an odd taste to water for the first few weeks.</li>\n<li>Some say PEX can leach toxins into water\n<ol type=\"1\">\n<li>Norwegian Institute of Public Health study says PEX is safe <a href=\"https://www.sciencedaily.com/releases/2011/11/111108132905.htm\" class=\"uri\">https://www.sciencedaily.com/releases/2011/11/111108132905.htm</a></li>\n<li>Ewg.org article expresses doubts to safety <a href=\"https://www.ewg.org/news-insights/news/amid-pipe-wars-researchers-wary-plastic-pipes-leaching-chemicals\" class=\"uri\">https://www.ewg.org/news-insights/news/amid-pipe-wars-researchers-wary-plastic-pipes-leaching-chemicals</a></li>\n</ol></li>\n</ol></li>\n</ol>\n',394,0,0,'CC-BY-SA','diy, plumbing,PEX',0,0,1),
(3624,'2022-06-23','Everything You Always Wanted to Know About PEX Parts 3 &amp; 4',816,'Discusses plumbing code and installation','<h2 id=\"everything-you-always-wanted-to-know-about-pex\">Everything You Always Wanted to Know About PEX</h2>\n<h3 id=\"part-03-pex-and-the-city-ordinances---how-to-make-certain-your-installation-meets-code\">Part 03 &#x2013; PEX and the City (Ordinances) - How to make certain your installation meets code</h3>\n<p>This will be a short episode, but a very important one.</p>\n<p>Since we have people from around the world who listen to Hacker Public Radio, I cannot begin to speculate what your local building codes allow or prohibit. In the majority of states within the United States of America, a property owner can perform plumbing maintenance on their own residence. Otherwise you need to be a licensed plumber. That may not be true for all states, and there can be inspections required and sometimes even fines for code violations.</p>\n<p>Rules also vary for where PEX can be installed, how and how frequently it must be supported, and whether the work must be inspected or whether it requires a permit.</p>\n<p>The point of this section is to remind you to do your research to find out what the rules are in your specific region, and then be sure to follow them. When in doubt, consult a licensed plumber in your area.</p>\n<h3 id=\"part-04-pex-lies-and-silicone-tape-my-installation-experience-part-1\">Part 04 &#x2013; PEX, Lies, and Silicone Tape &#x2013; My installation experience part 1</h3>\n<p>If you have missed the previous episodes in this series, I encourage you to review them before continuing because they will provide valuable context around my plumbing adventures.</p>\n<ol type=\"1\">\n<li>Design &#x2013; The best place to start.\n<ol type=\"1\">\n<li>Option 1 &#x2013; Follow existing pipe</li>\n<li>Option 2 &#x2013; Install manifold valve system for greater control</li>\n<li>Replacing everything or connecting to existing pipe or fixtures?</li>\n</ol></li>\n<li>Materials\n<ol type=\"1\">\n<li>PEX-A &#x2013;vs- PEX-B</li>\n<li>Decisions, decisions.</li>\n<li>PEX-B Wins</li>\n<li>Manifold</li>\n<li>Allows specific sections to be turned on and off independently</li>\n<li>Examples: <a href=\"https://www.supplyhouse.com/PEX-Manifolds-518000\" class=\"uri\">https://www.supplyhouse.com/PEX-Manifolds-518000</a></li>\n<li>Connectors</li>\n<li>New Valves</li>\n<li>Transition connectors\n<ol type=\"1\">\n<li>To copper</li>\n<li>Sharkbite</li>\n<li>Solder</li>\n<li>To PVC</li>\n<li>Sharkbite</li>\n<li>Glue</li>\n<li>To main water line</li>\n<li>To/From Water heater</li>\n</ol></li>\n<li>Silicone tape or pipe dope</li>\n<li>Hangers &amp; Wall clamps</li>\n<li>Crimp rings</li>\n</ol></li>\n<li>Tools\n<ol type=\"1\">\n<li>Crimp tool</li>\n<li>Removal tool</li>\n<li>Sharkbite</li>\n<li>Depth gauge</li>\n<li>Removal tool</li>\n<li>Tape measure</li>\n<li>String / wire phish</li>\n</ol></li>\n<li>Planning\n<ol type=\"1\">\n<li>Most important step</li>\n<li>With proper planning you can reduce service outage</li>\n<li>Some steps can be done before shutting off water</li>\n<li>Access holes</li>\n<li>Running / connecting PEX sections</li>\n</ol></li>\n<li>Assistance\n<ol type=\"1\">\n<li>While an individual installer can redo a house with PEX, it is not ideal. If you can get another person to help, it will make the process go much easier.</li>\n</ol></li>\n</ol>\n',394,0,0,'CC-BY-SA','diy, plumbing,PEX',0,0,1),
(3634,'2022-07-07','Everything You Always Wanted to Know About PEX Part 05 - PEX and the Single Installer',1667,'My PEX installation experience part 2','<h2 id=\"everything-you-always-wanted-to-know-about-pex\">Everything You Always Wanted to Know About PEX</h2>\n<h3 id=\"part-05-pex-and-the-single-installer-my-pex-installation-experience-part-2\">Part 05&#x2013; PEX and the Single Installer &#x2013; My PEX installation experience part 2</h3>\n<h3 id=\"pulling-pex\">Pulling PEX</h3>\n<ol type=\"1\">\n<li>Much like pulling thick wire\n<ol type=\"1\">\n<li>My method\n<ol type=\"1\">\n<li>Used fish tape to pull mason\'s line</li>\n<li>Tied mason\'s line to PEX about 4 inches from end.</li>\n<li>Taped above &amp; below with electrical tape</li>\n<li>Then tied line again closer to the end of PEX.</li>\n<li>Wrapped again with electrical tape</li>\n</ol></li>\n<li>Pull extra</li>\n<li>Unroll and let it lay straight for 24 hours if \"curve memory\" is a problem</li>\n<li>Can be challenging and require an individual installer to go back and forth between the feed point and the pull point.</li>\n</ol></li>\n<li>Supporting PEX\n<ol type=\"1\">\n<li>1\" and smaller PEX must be supported horizontally every 32 inches</li>\n<li>Vertically, it must be supported at every floor and midway between floors (every 4-6 feet)</li>\n<li><a href=\"https://www.pexuniverse.com/providing-proper-support-long-runs-pex-tubing\" class=\"uri\">https://www.pexuniverse.com/providing-proper-support-long-runs-pex-tubing</a></li>\n<li>Can be challenging to hold in place until secured</li>\n<li>Zip ties are your friend!</li>\n</ol></li>\n<li>Using a manifold\n<ol type=\"1\">\n<li>Determine your needs</li>\n<li>Number of hot and cold outputs</li>\n<li>Valve type\n<ol type=\"1\">\n<li>Handled</li>\n<li>Wrench/key</li>\n</ol></li>\n<li>Find a location with</li>\n<li>Easy access</li>\n<li>Fairly central to avoid long delays for hot water</li>\n<li>Limited light exposure</li>\n<li>Build or buy?</li>\n<li>Costs</li>\n<li>Appearance</li>\n<li>Materials</li>\n<li>Securing manifold in place</li>\n<li>Anchor securely\n<ol type=\"1\">\n<li>Block wall with anchors</li>\n<li>To wood for spanning wall studs (I don\'t know why I kept saying \"Joist\" during the recording)</li>\n<li>Do not anchor to drywall</li>\n</ol></li>\n<li>Insulate from wall if needed</li>\n</ol></li>\n<li>Connecting to the main line\n<ol type=\"1\">\n<li>What to replace and what to use</li>\n<li>Size matters</li>\n<li>Plan to include manifold if needed</li>\n</ol></li>\n<li>Connecting to water heater\n<ol type=\"1\">\n<li>Where/how to connect</li>\n<li>Pipe Unions?</li>\n<li>Protect from heat</li>\n<li>Shut-off valve</li>\n<li>Expansion tank</li>\n<li>Silicon tape or pipe dope</li>\n</ol></li>\n<li>Connecting to endpoints\n<ol type=\"1\">\n<li>What to keep and what to replace</li>\n<li>Transition connectors</li>\n<li>SharkBite</li>\n<li>Solder</li>\n<li>Thread</li>\n<li>Glue</li>\n</ol></li>\n<li>Exterior hose taps\n<ol type=\"1\">\n<li>Reuse or replace?</li>\n<li>Frost free / anti-siphon</li>\n<li>Anchor securely</li>\n<li>Help is better!</li>\n</ol></li>\n<li>Turning it on!\n<ol type=\"1\">\n<li>If using a manifold turn on one section at a time, from the bottom up</li>\n<li>Open sink valves</li>\n<li>Ease it on a little at a time</li>\n<li>Then increase flow</li>\n<li>Turn off sink tap (Slowly) to let pressure build</li>\n<li>Keep watching for leaks</li>\n<li>Coordinate with a partner and communicate (cell phone?)</li>\n</ol></li>\n<li>Afterwards\n<ol type=\"1\">\n<li>Cover any PEX exposed to light</li>\n<li>Watch for leaks</li>\n<li>Repair holes</li>\n<li>Run water daily to flush out bad taste</li>\n<li>Inspection?</li>\n</ol></li>\n</ol>\n',394,0,0,'CC-BY-SA','diy, plumbing,PEX',0,0,1),
(3760,'2022-12-30','Bookwyrm',825,'This episode looks at a relatively new but promising alternative to Goodreads that is firmly in the ','<p>Federated social media can open up some wonderful possibilities to reimagine some of the social apps we already use and find ways to do them better. In this episode I want to highlight a new contender for a Fediverse application that may be able to replace Goodreads. Is it up to the task? We\'ll look at the pluses and minuses in this episode.</p>\n<h2 id=\"links\">Links:</h2>\n<ul>\n<li><a href=\"https://joinbookwyrm.com/\" class=\"uri\">https://joinbookwyrm.com/</a></li>\n<li><a href=\"https://www.goodreads.com/\" class=\"uri\">https://www.goodreads.com/</a></li>\n<li><a href=\"https://github.com/bookwyrm-social/bookwyrm\" class=\"uri\">https://github.com/bookwyrm-social/bookwyrm</a></li>\n<li><a href=\"https://bookwyrm.social/\" class=\"uri\">https://bookwyrm.social/</a></li>\n<li><a href=\"https://www.zwilnik.com/better-social-media/bookwyrm/\" class=\"uri\">https://www.zwilnik.com/better-social-media/bookwyrm/</a></li>\n</ul>\n',198,108,0,'CC-BY-SA','social media, alternative, Fediverse, ActivityPub, Goodreads, library, Bookwyrm',0,0,1),
(3770,'2023-01-13','Tucson',908,'We move to Benson, a town just southeast of Tucson, where we will stay for a month.','<p>We wrap up our stay in Ajo, Arizona and move over to Benson, Arizona, not far from Tucson. Here we will stay for a month. And we don\'t run out of things to do. This was one of our favorite stops of the trip.</p>\n<h2 id=\"links\">Links:</h2>\n<ul>\n<li><a href=\"https://flic.kr/s/aHBqjzKvKF\" class=\"uri\">https://flic.kr/s/aHBqjzKvKF</a></li>\n<li><a href=\"https://flic.kr/s/aHBqjzKwew\" class=\"uri\">https://flic.kr/s/aHBqjzKwew</a></li>\n<li><a href=\"https://flic.kr/s/aHBqjzKwWe\" class=\"uri\">https://flic.kr/s/aHBqjzKwWe</a></li>\n<li><a href=\"https://flic.kr/s/aHBqjzKDGL\" class=\"uri\">https://flic.kr/s/aHBqjzKDGL</a></li>\n<li><a href=\"https://flic.kr/s/aHBqjzKCT2\" class=\"uri\">https://flic.kr/s/aHBqjzKCT2</a></li>\n<li><a href=\"https://flic.kr/s/aHBqjzKCBS\" class=\"uri\">https://flic.kr/s/aHBqjzKCBS</a></li>\n<li><a href=\"https://flic.kr/s/aHBqjzKDbP\" class=\"uri\">https://flic.kr/s/aHBqjzKDbP</a></li>\n<li><a href=\"https://www.palain.com/travel/tucson/\" class=\"uri\">https://www.palain.com/travel/tucson/</a></li>\n</ul>\n',198,119,0,'CC-BY-SA','Travel, RV life, Arizona',0,0,1),
(3790,'2023-02-10','Tucson, Part 2',778,'We continue our month-long stay in Benson, a town just southeast of Tucson.','<p>We wrap up our stay in Tucson, Arizona and move over to Benson, Arizona, not far from Tucson. Here we will stay for a month. And we don\'t run out of things to do. This was one of our favorite stops of the trip. In this episode we visit an old west movie set, Saguaro National Park, and tour a copper mine.</p>\n<h2 id=\"links\">Links:</h2>\n<ul>\n<li><a href=\"https://flic.kr/s/aHBqjzKEoM\" class=\"uri\">https://flic.kr/s/aHBqjzKEoM</a></li>\n<li><a href=\"https://flic.kr/s/aHBqjzKKPu\" class=\"uri\">https://flic.kr/s/aHBqjzKKPu</a></li>\n<li><a href=\"https://flic.kr/s/aHBqjzKLPk\" class=\"uri\">https://flic.kr/s/aHBqjzKLPk</a></li>\n<li><a href=\"https://flic.kr/s/aHBqjzKMsj\" class=\"uri\">https://flic.kr/s/aHBqjzKMsj</a></li>\n<li><a href=\"https://flic.kr/s/aHBqjzKNpv\" class=\"uri\">https://flic.kr/s/aHBqjzKNpv</a></li>\n<li><a href=\"https://flic.kr/s/aHBqjzKMS9\" class=\"uri\">https://flic.kr/s/aHBqjzKMS9</a></li>\n<li><a href=\"https://flic.kr/s/aHBqjzKRuY\" class=\"uri\">https://flic.kr/s/aHBqjzKRuY</a></li>\n<li><a href=\"https://www.palain.com/travel/tucson-part-2/\" class=\"uri\">https://www.palain.com/travel/tucson-part-2/</a></li>\n</ul>\n',198,119,0,'CC-BY-SA','Travel, RV life, Arizona, Tucson',0,0,1),
