(3296,'2021-03-22','Spam Bot Honey Pot',364,'Implementing a honey pot style spam filter for your HTML forms','<p>In this episode of Hacker Public Radio, I will describe the method I chose to combat spam bots filling out my company\'s contact form. About 99% of the submissions we receive are spam, which makes filtering for valid messages painful. After some research into different methods, I decided to go with the honey pot method.</p>\r\n<p>The honey pot method uses an extra text input field to lure the spam bot into filling it out. There are different suggestions for how to hide this extra field from valid users by using either javascript or CSS. With javascript, the honey pot section of the form is removed from the DOM when the page loads, hiding it from your users. The argument for this method is most bots don\'t implement javascript, so the honey pot field will not be hidden from them. I think that is a valid argument but I didn\'t want to include extra javascript in my page--so I went with the CSS method.</p>\r\n<p>There are references at the end of the show notes to a couple of the articles I read on implementing the honey pot with either javascript or CSS. My take away was, one, don\'t use the CSS display property set to the value of none to take the input out of the DOM. Sufficiently smart enough bots may know to scan for this, especially if applied directly to the element. Also don\'t name your classes something obvious to your intent like \"anti-spam-filter\". My guess is the majority of the bots out there aren\'t that sophisticated, but I figured it couldn\'t hurt to follow those suggestions.</p>\r\n<p>I was already using Bootstrap CSS for our site, so I decided to use Bootstrap\'s \"sr-only\" class. This class is used for elements that you only want visible to screen readers. It takes the element and uses a combination of absolute positioning, setting the size and width to 1 pixel, setting a negative left margin, and hiding content overflow to prevent the honey pot showing up visually. I figured if the bot was scanning CSS for classes or properties, this wouldn\'t trigger any warnings. It does bring up the issue of how to prevent impacting the experience of people using screen readers. I applied the aria-hidden attribute with a value of true to the label element surrounding the honey pot input field. \"[this] removes that element and all of its children from the accessibility tree.\" So we now have the field hidden both visually in the browser and from assistive technologies. Given the short end of the stick accessibility usually gets, I doubt there are any spam bots scanning for that ARIA attribute. For the minority of users who might be viewing with the classic lynx browser, I put \'For office use\' as the label text before the honey pot, hoping this would get the message across without tipping off the bot to the intended purpose of the related input field.</p>\r\n<p>The other main issue with this method is the value of the name attribute used for the input field. Some argue to use obfuscated values like \"mmxxName\" instead of \"name\", or \"sxysPhone\" for \"phone\". Apparently some bots will skip fields they don\'t recognize. By using more standard names for multiple honey pot fields, it easier to determine if it is a bot. The counter argument to this naming scheme is about the user experience, by obfuscating the name, then browsers won\'t auto-fill the valid fields of the form. This also brings up the matter of not auto-filling the spam fields by the browser of your users. This is done by setting any of your honey pot input elements\' \"autocomplete\" attributes to \"off\".</p>\r\n<p>So far this spam filtering method is working nicely. I currently send any messages flagged as spam to a different email address with the subject prepended with the words \"[Spam review]\". Once I am confident there are not that many false positives, I will just skip sending flagged messages. The one issue I have experienced with this method is when using the tab key to move through the form. Since the input field is only visually hidden, it still receives focus as you tab through. If you happen to hit another key while still in the hidden field, it will get captured by the honey pot and then the submission will be flagged as spam.</p>\r\n<p>I have created a sample form on my personal site. Please visit URL: <a href=\"https://www.horning.us/hpr/SpamBotHoneyPot.php\" class=\"uri\">https://www.horning.us/hpr/SpamBotHoneyPot.php</a> to try it out. It is a simple PHP page using the GET method when submitting the form. Once you press the submit button you will see the form fields and their values, along with the result messages. I chose to use \"URL\" as the name for my honey pot input field. I use it on my example form, and I use it for my work form. For my work form, a URL is not something we ask to be submitted, and being a common field in forms, makes it very tempting for bots. In my example code, the CSS for hiding the honey pot section is from the minicss.org websites. Their \"visibility-hidden\" class is very similar to Bootstrap\'s \"sr-only\" class. I would be interested to hear if others have implemented something similar. I would also love to hear from someone who uses a screen reader. Does it prevent the honey pot section from being read?</p>\r\n<h2 id=\"references\">References</h2>\r\n<ul>\r\n<li>Better Honeypot Implementation (Form Anti-Spam)<br />\r\n<a href=\"https://stackoverflow.com/questions/36227376/better-honeypot-implementation-form-anti-spam\" class=\"uri\">https://stackoverflow.com/questions/36227376/better-honeypot-implementation-form-anti-spam</a></li>\r\n<li>Honeypot Technique: Fast, Easy Spam Prevention<br />\r\n<a href=\"https://solutionfactor.net/blog/2014/02/01/honeypot-technique-fast-easy-spam-prevention/\" class=\"uri\">https://solutionfactor.net/blog/2014/02/01/honeypot-technique-fast-easy-spam-prevention/</a></li>\r\n<li>Using the aria-hidden attribute<br />\r\n<a href=\"https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/ARIA_Techniques/Using_the_aria-hidden_attribute\" class=\"uri\">https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/ARIA_Techniques/Using_the_aria-hidden_attribute</a></li>\r\n<li>mini.css<br />\r\n<a href=\"https://minicss.org/docs#visibility-helpers\" class=\"uri\">https://minicss.org/docs#visibility-helpers</a></li>\r\n<li>Spam Bot Honey Pot example<br />\r\n<a href=\"https://www.horning.us/hpr/SpamBotHoneyPot.php\" class=\"uri\">https://www.horning.us/hpr/SpamBotHoneyPot.php</a></li>\r\n</ul>\r\n',293,0,0,'CC-BY-SA','Spam, HTML, Forms',0,0,1),
(3297,'2021-03-23','Nextcloud Application Updating',136,'Automatically Update Nextcloud Applications via Cron','<p>Simple method to autoupdate nextcloud apps. An email is sent as summary of actions.</p>\r\n<p>Scheduled for 5 AM Sunday - Cron Entry</p>\r\n<pre><code>MAILTO=MYEMAILADDRES@MYDOMAIN.com\r\n0 5 * * 0 /usr/bin/php /var/www/nextcloud/occ app:update --all 2&gt;&amp;1\r\n# * * * * * command to be executed\r\n# - - - - -\r\n# | | | | |\r\n# | | | | +----- day of week (0 - 6) (Sunday=0)\r\n# | | | +------- month (1 - 12)\r\n# | | +--------- day of month (1 - 31)\r\n# | +----------- hour (0 - 23)\r\n# +------------- min (0 - 59)</code></pre>\r\n',273,0,0,'CC-BY-SA','Nextcloud,SysAdmin,Admin',0,0,1),
(3298,'2021-03-24','Poisoning The Well',1505,'Shutdown the negativity in our community.','<p>Hot, off the cuff. You can leave feedback at <a href=\"mailto:Lyunpaw@gmail.com\" class=\"email\">Lyunpaw@gmail.com</a>; \"hpr04\" for the subject line. Emails are seen as plain text and are filtered. Maybe I\'ll do a show on email; oops now I owe a show.</p>',391,0,0,'CC-BY-SA','General Content.',0,0,1),
(3302,'2021-03-30','Input Methods on Ubuntu',924,'I\'m adding some input methods to a standard Ubuntu 20.04 install','<p>First I go to the <em>Language Support</em> window. Either search (press Super/Windows, then type) for\r\n\"Language Support\" and go there directly, or search for \"Region &amp; Language\", go there, then click\r\n\"Manage Installed Languages\".</p>\r\n<p>There I click <em>Install / Remove Languages ...</em>, check the Chinese I want, then click <em>Apply</em>.</p>\r\n<p>Then I add the packages for the input methods I want, either using the command line (<code>apt install</code>)\r\nor the <em>Ubuntu Software</em> application:</p>\r\n<ul>\r\n<li>Chinese Quick: <code>ibus-table-quick-classic</code></li>\r\n<li>Chinese Pinyin: <code>ibus-libpinyin</code></li>\r\n<li>Chinese (Cantonese) Jyutping: <code>ibus-table-jyutping</code></li>\r\n</ul>\r\n<p>Bonus input method:</p>\r\n<ul>\r\n<li>Unicode emoji: <code>ibus-typing-booster</code></li>\r\n</ul>\r\n<p>Now for each user that wants an input method, I search for and go to <em>Region &amp; Language</em>. At the\r\nbottom of the <em>Input Sources</em> section I click the plus button. The different input methods are found\r\nby clicking down into different sublists. Click the right choice, then <em>Add</em>:</p>\r\n<ul>\r\n<li>Chinese Quick: <em>Chinese</em> -&gt; <em>Chinese (QuickClassic)</em></li>\r\n<li>Chinese Pinyin: <em>⋮</em> -&gt; <em>Other</em> -&gt; <em>Chinese (Intelligent Pinyin)</em></li>\r\n<li>Chinese (Cantonese) Jyutping: <em>Chinese</em> -&gt; <em>Chinese (Jyutping)</em></li>\r\n<li>Unicode emoji: <em>⋮</em> -&gt; <em>Other</em> -&gt; <em>Other (Typing Booster)</em></li>\r\n<li>EurKEY: <em>English (United States)</em> -&gt; <em>EurKEY (US based layout with European letters)</em></li>\r\n</ul>\r\n<p>The EurKEY layout is part of the standard English language support in Ubuntu.</p>\r\n<p>Finally, to enable unicode color emoji as completion suggestions, switch to the Typing Booster mode\r\nby pressing Super/Windows+Space repeatedly until you see the rocket in your notification area. Click\r\nthe rocket -&gt; <em>Unicode symbols and emoji predictions</em> -&gt; <em>On</em>.</p>\r\n<p>I owe you a followup episode once I figure out how to make this work for Guix applications running\r\ninside Ubuntu.</p>\r\n<hr>\r\n<p>This episode was based on a Fediverse thread:<br><a href=\"https://libranet.de/display/0b6b25a8-6760-517c-52c9-654926232346\">https://libranet.de/display/0b6b25a8-6760-517c-52c9-654926232346</a></p>\r\n<p>References for your further study:</p>\r\n<ul>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Intelligent_Input_Bus\">IBus</a> is an input method protocol for the\r\nGNU/Linux desktop. Other protocols supported are <a href=\"https://en.wikipedia.org/wiki/Xim\">XIM</a>,\r\n<a href=\"https://en.wikipedia.org/wiki/Smart_Common_Input_Method\">SCIM</a>,\r\n<a href=\"https://en.wikipedia.org/wiki/Fcitx\">fcitx</a> and <a href=\"https://en.wikipedia.org/wiki/Uim\">uim</a>. You\r\nhave to choose one of these to use for all your input methods, but the most common input methods\r\nexist at least for IBus and the first three of the rest, so this is not as much a limitation as\r\nit sounds like.</li>\r\n<li>Quick is a simplification of the\r\n<a href=\"https://en.wikipedia.org/wiki/Cangjie_input_method\">Cangjie input method</a>. Cangjie assigns\r\nradicals, character components, to 24 keys on the alphabetic keyboard, and you combine these into\r\na character. In Quick you combine two and then choose a completion from a list.</li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Pinyin\">Pinyin</a> is a romanization, a Latin alphabetic spelling,\r\nfor <a href=\"https://en.wikipedia.org/wiki/Standard_Chinese\">Standard Chinese</a> (Mandarin).</li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Jyutping\">Jyutping</a> is one of\r\n<a href=\"https://en.wikipedia.org/wiki/Hong_Kong_Government_Cantonese_Romanisation\">many</a>\r\n<a href=\"https://en.wikipedia.org/wiki/Yale_romanization_of_Cantonese\">romanizations</a>\r\n<a href=\"https://en.wikipedia.org/wiki/Sidney_Lau_romanisation\">for</a>\r\n<a href=\"https://en.wikipedia.org/wiki/Cantonese_Pinyin\">Cantonese</a>. </li>\r\n<li><a href=\"https://guix.gnu.org/\">Guix</a> is a GNU/Linux OS and also a package manager that can be installed\r\nand coexist with the GNU/Linux OS you already have, allowing you to mix and match programs from\r\nboth sources. See also <a href=\"https://hackerpublicradio.org/eps.php?id=2198\">hpr2198</a> and\r\n<a href=\"https://hackerpublicradio.org/eps.php?id=2308\">hpr2308</a>.</li>\r\n</ul>\r\n',311,0,0,'CC-BY-SA','ubuntu, input methods, guix, chinese, emoji, eurkey, pinyin, jyutping, cangjie',0,0,1),
(3303,'2021-03-31','Slackware on RaspberryPi',1182,'An alternative to raspberrypi os','<h3 id=\"a-little-history\">a little history</h3>\n<ul>\n<li>slackware on arm started by stuart winter in 2002</li>\n<li>became an official port of slackware in 2009</li>\n<li>lots of info at the video podcast on youtube</li>\n</ul>\n<h3 id=\"why-choose-slackware\">why choose slackware</h3>\n<ul>\n<li>can do minimal installs easy</li>\n<li>education</li>\n<li>stable and secure</li>\n</ul>\n<h3 id=\"who-should-avoid-slackware\">who should avoid slackware</h3>\n<ul>\n<li>unwilling or unable to read and follow directions</li>\n<li>if you think your leet when you use apt instead of apt-get</li>\n<li>if you think commands like dd are \'scary\'</li>\n</ul>\n<h3 id=\"howto\">howto</h3>\n<ul>\n<li>there is no official port of slackware arm to raspberrypi</li>\n<li>i think this is because of raspberrypi has a non standard way of booting compared to most arm devices</li>\n<li>community has stepped in</li>\n</ul>\n<h4 id=\"on-the-slackware-documentation-project-website-there-are-manual-install-projects\">on the slackware documentation project website there are \'manual\' install projects</h4>\n<ul>\n<li>took a while, had to download firmware from the raspberrypi project itself</li>\n<li>quite a bit of cleanup</li>\n<li>this is the guide if you want slackware on a pi-zero</li>\n</ul>\n<h4 id=\"link-to-the-sarpi-project\">link to the sarpi project</h4>\n<ul>\n<li>guy named phil project lead, started in 2012</li>\n<li>the sarpi project is also a manual process</li>\n<li>even if you don\'t do this you should look at the website content, this is the way to do a tutorial</li>\n<li>after you download the sources this install is exactly like any other slackware install</li>\n<li>when you get to the package selection its easy to customize</li>\n</ul>\n<h3 id=\"after-install\">after install</h3>\n<ul>\n<li>you have a complete development environment</li>\n<li>be prepared to up your search foo</li>\n<li>many packages can be built from slackbuilds</li>\n</ul>\n<p>The only mistakes you can\'t learn from are, your own fatal mistakes</p>\n<h2 id=\"links\">Links</h2>\n<ul>\n<li><a href=\"https://arm.slackware.com/\" class=\"uri\">https://arm.slackware.com/</a></li>\n<li><a href=\"https://sarpi.fatdog.eu/\" class=\"uri\">https://sarpi.fatdog.eu/</a></li>\n<li><a href=\"https://www.youtube.com/channel/UCabC1NZDGA3FZXf2hQ-6uyA/featured\" class=\"uri\">https://www.youtube.com/channel/UCabC1NZDGA3FZXf2hQ-6uyA/featured</a></li>\n<li><a href=\"https://docs.slackware.com/howtos:hardware:arm:start\" class=\"uri\">https://docs.slackware.com/howtos:hardware:arm:start</a></li>\n<li><a href=\"https://slackbuilds.org\" class=\"uri\">https://slackbuilds.org</a></li>\n</ul>\n',326,0,0,'CC-BY-SA','raspberry pi, slackware',0,0,1),
(3309,'2021-04-08','Linux Inlaws S01E27: The Big Uncertainties in Life and beyond',3417,'The two chaps discuss uncertainties and beyond in this episode on probabilistic data structure','<p>In this episode, our two heroes explore the realm of the great uncertainties also known as probabilistic data structures. For this adventures they managed to retain one of the experts in this field from the open source realm. Check out the episode to get in on this secret and its details!</p>\r\n<h3>Links:</h3>\r\n<ul>\r\n<li>Probabilistic data structures (PDS): <a href=\"https://en.wikipedia.org/wiki/Category:Probabilistic_data_structures\" target=\"_blank\">https://en.wikipedia.org/wiki/Category:Probabilistic_data_structures</a>\r\n</li>\r\n<li>Hash functions: <a href=\"https://en.wikipedia.org/wiki/Hash_function\" target=\"_blank\">https://en.wikipedia.org/wiki/Hash_function</a>\r\n</li>\r\n<li>Bloom / cuckoo filters: <a href=\"https://bdupras.github.io/filter-tutorial\" target=\"_blank\">https://bdupras.github.io/filter-tutorial</a>\r\n</li>\r\n<li>Scalable Bloom filter: <a href=\"https://www.waitingforcode.com/big-data-algorithms/scalable-bloom-filter/read\" target=\"_blank\">https://www.waitingforcode.com/big-data-algorithms/scalable-bloom-filter/read</a>\r\n</li>\r\n<li>redis module: <a href=\"https://oss.redislabs.com/redisbloom\" target=\"_blank\">https://oss.redislabs.com/redisbloom</a>\r\n</li>\r\n<li>HyperLogLog: <a href=\"https://en.wikipedia.org/wiki/HyperLogLog\" target=\"_blank\">https://en.wikipedia.org/wiki/HyperLogLog</a>\r\n</li>\r\n<li>PDS Foundation: <a href=\"https://www.amazon.de/Probabilistic-Data-Structures-Algorithms-Applications/dp/3748190484\" target=\"_blank\">https://www.amazon.de/Probabilistic-Data-Structures-Algorithms-Applications/dp/3748190484</a>\r\n</li>\r\n</ul>\r\n',384,111,1,'CC-BY-SA','Probabilistic data structures,PDS',0,0,1),
(3305,'2021-04-02','Nagios part 2',1428,'Follow up to hpr3264 - Notifications, SNMP, Remote Checks','<p>I did not get any feed back on my first nagios episode, so I can only assume that I perfectly explained what nagios is. And my installation instructions were so good, that no one had any questions. So I will move on to some additional nagios topics.</p>\r\n<h2 id=\"why-use-nagios\">Why use nagios</h2>\r\n<p>One thing I meant to talk about but forgot in the intro is why you may want to run nagios as a hobbyist.</p>\r\n<ul>\r\n<li>Education, learning a new technology for fun</li>\r\n<li>Network Monitoring is a valuable skill and benefit your career if you work in IT</li>\r\n<li>Early warning for failing hardware</li>\r\n<li>Monitoring self hosted applications</li>\r\n<li>Notification for home security devices IP cameras</li>\r\n</ul>\r\n<p>Most of the benefits of nagios are not specific to nagios. There are plenty of other options for monitoring, and all of them are worth exploring.</p>\r\n<h2 id=\"notification-options\">Notification Options</h2>\r\n<h3 id=\"email\">Email</h3>\r\n<p>I had planned on discussing how to set up postfix to send emails. But, that is such a big topic I will have to skip it. I will instead talk about what I do to send email. And Maybe you can do something similar.</p>\r\n<p>Spammers have ruined the ability to directly send email. Most residential ISPs block port 25 outbound to prevent malware from sending email. Some Virtual hosting providers may not block sending mail, but many mail servers will not accept mail from VPS IP ranges.</p>\r\n<p>There are a few ways to get around this problem. I use the email delivery service <code>Sendgrid</code>. They do all the work of staying off the list of spammers, and most email providers trust mail send via Sendgrid.</p>\r\n<p>I wont go into the instructions for configuring postfix to relay outgoing mail via Sendgrid, but their documentation is easy to follow.</p>\r\n<p>There are plenty of services like sendgrid. And most have a free tier. So unless you are blasting out alerts you probably will not have to pay. If you want to send alerts from nagios via email, I recommend finding a email sending service that works for you.</p>\r\n<h3 id=\"push-alerts\">Push alerts</h3>\r\n<p>There are a few options (besides email) for getting alerts on your phone.</p>\r\n<h4 id=\"anag\">aNag</h4>\r\n<p>The easiest way to get alerts is probably the <code>aNag</code> Android app. aNag connects to the nagios UI to get status updates. It can be configured to check in periodically and there generate notifications for failed checks.</p>\r\n<p>One downside to aNag is the phone has to be able to connect to the nagios server. So, if nagios is on a private network, you will need a VPN when you are not on the same network.</p>\r\n<p>If you decide to put nagios on a public network, be sure to configure apache to only use HTTPS. <code>certbot</code> makes this really easy.</p>\r\n<h4 id=\"pushover\">Pushover</h4>\r\n<p>Another option is to us a Push Notification service that can send notifications that are triggered by API calls.</p>\r\n<p>I like to use the pushover.net You pay $5 when you download the pushover app from the app store, and then notifications are sent for free. They offer a 30 day trial if you want to evaluate the service.</p>\r\n<p>To use pushover, we will add a new contact to nagios. The command for the pushover contact is a script that calls the pushover API via curl.</p>\r\n<p>Remember from the previous episode, nagios has a <code>conf.d</code> directory and will load any files in that directory. So we will create a new file <code>/etc/nagios4/conf.d/pushover.cfg</code> and restart nagios. The contents of the pushover file will be in the show notes.</p>\r\n<p>To use pushover for specific checks, and the contact to that check. See the example in the show notes. Or if you want to use pushover for everything Modify the definitions for the host and service templates to use pushover as a contact</p>\r\n<p>The script that calls the Pushover API is at <code>https://github.com/jedda/OSX-Monitoring-Tools/blob/master/notify_by_pushover.sh</code> Save a copy of the script in the nagios plugins directory.</p>\r\n<p>pushover.cfg</p>\r\n<pre><code># &#39;notify-host-pushover&#39; command definition\r\n\r\ndefine command{\r\n        command_name    notify-host-pushover\r\n        command_line    $USER1$/notify_by_pushover.sh -u $CONTACTADDRESS1$ -a $CONTACTADDRESS2$ -c &#39;persistent&#39; -w &#39;siren&#39; -t &quot;Nagios&quot; -m &quot;$NOTIFICATIONTYPE$ Host $HOSTNAME$ $HOSTSTATE$&quot;\r\n        }\r\n\r\n# &#39;notify-service-pushover&#39; command definition\r\n\r\ndefine command{\r\n        command_name   notify-service-pushover\r\n        command_line   $USER1$/notify_by_pushover.sh -u $CONTACTADDRESS1$ -a $CONTACTADDRESS2$ -c &#39;persistent&#39; -w &#39;siren&#39; -t &quot;Nagios&quot; -m &quot;$HOSTNAME$ $SERVICEDESC$ : $SERVICESTATE$ Additional info: $SERVICEOUTPUT$&quot;\r\n        }\r\n\r\ndefine contact{\r\n        name                            generic-pushover\r\n        host_notifications_enabled      1\r\n        service_notifications_enabled   1\r\n        host_notification_period        24x7\r\n        service_notification_period     24x7\r\n    service_notification_options    w,c,r\r\n    host_notification_options       d,r\r\n        host_notification_commands      notify-host-pushover\r\n        service_notification_commands   notify-service-pushover\r\n        can_submit_commands             1\r\n        retain_status_information       1\r\n        retain_nonstatus_information    1\r\n        contact_name           Pushover\r\n        address1               {{ pushover_user_key }}\r\n        address2               {{ pushover_app_key }}\r\n}</code></pre>\r\n<h2 id=\"writing-custom-checks\">writing custom checks</h2>\r\n<p>One of the big advantages of nagios is the ability to write custom checks. In the previous episode, I mentioned that the status of the nagios checks are based on exit code.</p>\r\n<table>\r\n<thead>\r\n<tr class=\"header\">\r\n<th>Exit Code</th>\r\n<th>status</th>\r\n</tr>\r\n</thead>\r\n<tbody>\r\n<tr class=\"odd\">\r\n<td>0</td>\r\n<td>OK/UP</td>\r\n</tr>\r\n<tr class=\"even\">\r\n<td>1</td>\r\n<td>WARNING</td>\r\n</tr>\r\n<tr class=\"odd\">\r\n<td>2</td>\r\n<td>CRITICAL</td>\r\n</tr>\r\n</tbody>\r\n</table>\r\n<p>So, to write a custom check, we need a script that will perform a check, and exit with an exit code based on the results of the check.</p>\r\n<h3 id=\"verify-recent-log-entry\">Verify recent log entry</h3>\r\n<p>I have a server where occasionally the syslog daemon stop running,</p>\r\n<p>Instead of trying to figure out why syslog keeps crashing, I wrote a script to check the log file is being updated. The script looks for the expected log file and tests that it has been modified in the last few minutes. The script will:</p>\r\n<ul>\r\n<li>exit 0 if the syslog file is less than 1 minute old</li>\r\n<li>exit 1 if the syslog file is less than 10 minutes old</li>\r\n<li>exit 2 if the syslog file is more that than 10 minutes old or does not exist</li>\r\n</ul>\r\n<p>Since the server with the crashy syslog is not the same server running nagios, I need a way for nagios to execute the script on the remote server.</p>\r\n<p>Nagios has a few ways to run check commands on remote servers. I prefer to use ssh, but there are some disadvantages to using ssh. Specifically the resources required to establish the ssh connection can be heavier than some of the other remote execution methods.</p>\r\n<p>The <code>check_by_ssh</code> plugin can be used to execute check commands on another system. Typically ssh-key authentication is set up so the user that is running the nagios daemon can log in to the remote system without a password</p>\r\n<p>You can try the command to make sure it is working.</p>\r\n<pre><code>cd /usr/lib/nagios/plugins\r\n./check_by_ssh -H RemoteHost -u RemoteUser \\\r\n-C /path/to/remote/script/check_log_age.sh</code></pre>\r\n<p>The new command can be added to a file in the nagios conf.d directory</p>\r\n<pre><code>define command {\r\n    command_name check_syslog_age\r\n    command_line    $USER1$/check_by_ssh  -u RemoteUser -C /remote/path/check_log_age.sh\r\n        }</code></pre>\r\n<p>After adding the command definition, <code>check_syslog_age</code> can be added as a service check.</p>\r\n<p>The Log Check script:</p>\r\n<pre><code>#!/usr/bin/bash\r\n\r\nTODAY=$(date +%Y%m%d)\r\nLOGPATH=&quot;/syslog&quot;\r\nTODAYSLOG=&quot;$TODAY.log&quot;\r\nif test `find &quot;$LOGPATH/$TODAYSLOG&quot; -mmin -1`\r\nthen\r\n    echo OK\r\n    exit 0\r\nelif test `find &quot;$LOGPATH/$TODAYSLOG&quot; -mmin -10`\r\nthen\r\n    echo WARNING\r\n    exit 1\r\nelse\r\n    echo CRITICAL\r\n    exit 2\r\nfi</code></pre>\r\n<h2 id=\"using-snmp-to-monitor-load-average-and-disk-usage\">Using snmp to monitor load average and disk usage</h2>\r\n<p>SNMP can get complicated and I have mixed feelings about using it. I am not going to go into the SNMP versions or the different authentication options for SNMP. But I will show a minimal setup that allows some performance data to be checked by nagios</p>\r\n<p>The SNMP authentication that I am demonstrating is only appropriate for isolated networks. If you plan to use snmp over a public network, I recommend looking into more secure versions of SNMP or tunnelling the check traffic via ssh or a VPN.</p>\r\n<p>If you want to learn more about SNMP, I recommend \"SNMP Mastery\" by Michael W Lucas. <a href=\"https://www.tiltedwindmillpress.com/product/snmp-mastery/\" class=\"uri\">https://www.tiltedwindmillpress.com/product/snmp-mastery/</a></p>\r\n<h3 id=\"snmp-setup\">SNMP setup</h3>\r\n<p>First we need to configure the client to respond to SNMP request. On Ubuntu, <code>apt install snmpd</code></p>\r\n<p>By default, snmpd listens on localhost. Replace the existing snmpd.conf with this example to set a read only community string and listen on all IP addresses.</p>\r\n<p>And don\'t forget, I do not recommend this for a Public Network. Restart snmpd and open port 161 if there is a firewall enabled.</p>\r\n<pre><code>agentAddress udp:161,udp6:[::1]:161\r\nrocommunity NEW_SECURE_PASSWORD\r\ndisk /</code></pre>\r\n<h3 id=\"snmp-nagios-checks\">SNMP nagios checks</h3>\r\n<p>The nagios plugin package installs several pre-defined snmp checks in <code>/etc/nagios-plugins/config/snmp.cfg</code> Look through the file to get an idea of the checks that can be performed via SNMP.</p>\r\n<p>Below is an example of a client configuration that uses SNMP. If you look at how the command definitions, most of them have an option to accept arguments to modify how the check is done The argument placeholders re represented by <code>$ARG1$</code></p>\r\n<p>In most cases, the arguments are optional. This particular SNMP check for disk space requires an argument to complete the disk ID being checked.</p>\r\n<p>When the service check is defined, the arguments are separated by <code>!</code> You can also see in the example how you can</p>\r\n<ul>\r\n<li>add additional contacts</li>\r\n<li>Change the check attempts - number or retires before sending an alert</li>\r\n<li>Frequency of checks, the default is every 5 minutes</li>\r\n</ul>\r\n<pre><code>define host {\r\n  host_name ServerIP\r\n  use linux-server\r\n}\r\ndefine service {\r\n  use generic-service\r\n  host_name ServerIP\r\n  contacts Pushover\r\n  max_check_attempts 1\r\n  check_interval 1\r\n  service_description DISK\r\n  check_command snmp_disk!NEW_SECURE_PASSWORD!1!1 # first arg is disk number\r\n  # command in /etc/nagios-plugins/config/snmp.cfg\r\n}\r\ndefine service {\r\n  use generic-service\r\n  host_name ServerIP\r\n  contacts Pushover\r\n  service_description LOAD\r\n  check_command snmp_load!NEW_SECURE_PASSWORD\r\n  # command in /etc/nagios-plugins/config/snmp.cfg\r\n}\r\ndefine service {\r\n  use generic-service\r\n  host_name ServerIP\r\n  service_description Memory\r\n  check_command snmp_mem!NEW_SECURE_PASSWORD\r\n  # command in /etc/nagios-plugins/config/snmp.cfg\r\n}\r\ndefine service {\r\n  use generic-service\r\n  host_name ServerIP\r\n  service_description Swap\r\n  check_command snmp_swap!NEW_SECURE_PASSWORD\r\n  # command in /etc/nagios-plugins/config/snmp.cfg\r\n}</code></pre>\r\n<h3 id=\"check-servers-for-updates\">Check servers for updates</h3>\r\n<p>Nagios has plugins that can check if there are system updates required.</p>\r\n<ul>\r\n<li>Number of updates</li>\r\n<li>Check will be CRITICAL if any of the updates are security related.</li>\r\n<li>Is a reboot required to load the latest kernel.</li>\r\n</ul>\r\n<p>The check plugin is installed on the remote server. The plugin for Debian based systems is <code>nagios-plugins-contrib</code> or <code>nagios-plugins-check-updates</code> for Red Hat based systems.</p>\r\n<p>The command definitions are below. Since the plugins take longer to run, you will probably need to modify the nagios plugin timeout.</p>\r\n<pre><code>define command {\r\n    command_name check_yum\r\n        command_line    $USER1$/check_by_ssh -H $HOSTADDRESS$ -t 120 -u root -C &quot;/usr/lib64/nagios/plugins/check_updates -t120&quot;\r\n    }\r\ndefine command {\r\n       command_name check_apt\r\n       command_line    $USER1$/check_by_ssh -H $HOSTADDRESS$ -t 120 -u nagios-ssh -C &quot;/usr/lib/nagios/plugins/check_apt -t60&quot;\r\n        }</code></pre>\r\n<p>That\'s probably all the nagios I can handle for now. Leave a comment if there are nagios topics you would like to hear about. Thanks for listening and I will see you next time.</p>\r\n',342,0,0,'CC-BY-SA','nagios,bash,snmp',0,0,1),
(3308,'2021-04-07','let\'s talk about Thunderbird',2005,'Using Thunderbird to manage emails.','<p>Thunder bird, the wonderful email client. I share how I use and enjoy the Thunderbird email client.</p>\r\n<p>use `hpr391` as the subject for all emails.  If not, junk filter.</p>',391,0,0,'CC-BY-SA','email, Thunderbird',0,0,1),
(3307,'2021-04-06','Git worktree',1507,'How to use git worktree','<h2>Create a new worktree</h2>\r\n\r\n<pre><code>\r\n$ git branch | tee\r\n* dev\r\ntrunk\r\n$ git worktree add -b hotfix ~/demo/penguin.tree trunk\r\nPreparing ../penguin.tree (identifier penguin.tree)\r\nHEAD is now at 62a2daf commit\r\n</code>\r\n</pre>\r\n\r\n<h2>List existing worktrees</h2>\r\n\r\n<pre><code>\r\n$ git worktree list\r\n/home/tux/demo/penguin.git       15fca84 [dev]\r\n/home/tux/demo/penguin.tree     09e585d [trunk]\r\n</code>\r\n</pre>\r\n\r\n<h2>Move a worktree</h2>\r\n\r\n<pre><code>\r\n$ git worktree move penguin.tree ~/Temp\r\n</code>\r\n</pre>\r\n\r\n<h2>Remove a worktree</h2>\r\n<pre><code>\r\n$ git worktree remove penguin.tree\r\n</code>\r\n</pre>\r\n\r\n',78,104,0,'CC-BY-SA','git,tree,trunk,branch',0,0,1),
(3311,'2021-04-12','Bradley M. Kuhn\'s article from 2019 on Richard M. Stallman',1584,'This text to speech article requires listener discretion.','<hr />\r\n<h3>Counter Point</h3>\r\n<p>This show has a counter point: <a href=\"https://hackerpublicradio.org/eps.php?id=3316\">hpr3316 :: FSF and RMS on election of Richard Stallman</a>\r\n</p>\r\n<hr />\r\n\r\n<p>Warning This show contains information that may not be suitable for all. Listener discretion is advised.</p>\r\n<p>Recently Richard M. Stallman, announced that he has rejoined the Free Software Foundation’s board of directors. An <a href=\"https://rms-open-letter.github.io/\">open letter on github</a> called for him to be removed again, and for the FSF’s entire board to resign.</p>\r\n<p>When he resigned in 2019, Bradley M. Kuhn (from the <a href=\"https://faif.us/\">Free as in Freedom podcast</a>) wrote an article titled \"On Recent Controversial Events\" about the issue. I am submitting that article here under the terms of the Creative Commons Attribution-Share Alike 3.0 United States License. The post contains many links and is available in the shownotes for this show. Some examples are included at the end of the blog post, and listener discretion is advised.</p>\r\n<h1>\r\n<a href=\"https://ebb.org/bkuhn/blog/2019/10/15/fsf-rms.html\">On Recent Controversial Events</a>\r\n</h1>\r\n<p class=\"topAttributionWithDate\">\r\nTuesday 15 October 2019 by Bradley M. Kuhn\r\n</p>\r\n<p>\r\nThe last 33 days have been unprecedentedly difficult for the software freedom community and for me personally. Folks have been emailing, phoning, texting, tagging me on social media (— the last of which has been funny, because all my social media accounts are placeholder accounts). But, just about everyone has urged me to comment on the serious issues that the software freedom community now faces. Until now, I have stayed silent regarding all these current topics: from Richard M. Stallman (RMS)’s public statements, to <a href=\"https://www.fsf.org/news/richard-m-stallman-resigns\">his resignation from the Free Software Foundation (FSF)</a>, to the Epstein scandal and its connection to MIT. I’ve also avoided generally commenting on software freedom organizational governance during this period. I did this for good reason, which is explained below. However, in this blog post, I now share my primary comments on the matters that seem to currently be of the utmost attention of the Open Source and Free Software communities.\r\n</p>\r\n<p>\r\nI have been silent the last month because, until two days ago, I was an at-large member of <a href=\"https://www.fsf.org/about/staff-and-board\">FSF’s Board of Directors</a>, and a <a href=\"https://static.fsf.org/nosvn/fsf-amended-bylaws-current.pdf\">Voting Member</a> of the FSF. As a member of FSF’s two leadership bodies, I was abiding by a reasonable request from the FSF management and my duty to the organization. Specifically, the FSF asked that all communication during the crisis <a href=\"https://www.fsf.org/news/richard-m-stallman-resigns\">come</a> <a href=\"https://www.fsf.org/news/fsf-and-gnu\">directly</a> from FSF officers and not from at-large directors and/or Voting Members. Furthermore, the FSF management asked all Directors and Voting Members to remain silent on this entire matter — even on issues only tangentially related to the current situation, and even when speaking in our own capacity (e.g., on our own blogs like this one). The FSF is an important organization, and I take any request from the FSF seriously — so I abided fully with their request.\r\n</p>\r\n<p>\r\nThe situation was further complicated because folks at my employer, Software Freedom Conservancy (where I also serve on the <a href=\"https://sfconservancy.org/about/board/#bkuhn\">Board of Directors</a>) had strong opinions about this matter as well. Fortunately, the FSF and Conservancy both had already created clear protocols for what I should do if ever there was a disagreement or divergence of views between Conservancy and FSF. I therefore was recused fully from the planning, drafting, and timing of Conservancy’s statement on this matter. I thank my colleagues at the Conservancy for working so carefully to keep me entirely outside the loop on their statement and to diligently assure that it was straight-forward for me to manage any potential organizational disagreements. I also thank those at the FSF who outlined clear protocols (ahead of time, back in March 2019) in case a situation like this ever came up. I also know my colleagues at Conservancy care deeply, as I do, about the health and welfare of the FSF and its mission of fighting for universal software freedom for all. None of us want, nor have, any substantive disagreement over software freedom issues.\r\n</p>\r\n<p>\r\nI take very seriously my duty to the various organizations where I have (or have had) affiliations. More generally, I champion non-profit organizational transparency. Unfortunately, the current crisis left me in a quandary between the overarching goal of community transparency and abiding by FSF management’s directives. Now that I’ve left the FSF Board of Directors, FSF’s Voting Membership, and all my FSF volunteer roles (which ends my 22-year uninterrupted affiliation with the FSF), I can now comment on the substantive issues that face not just the FSF, but the Free Software community as a whole, while continuing to adhere to my past duty of acting in FSF’s best interest. In other words, my affiliation with the FSF has come to an end for many good and useful reasons. The end to this affiliation allows me to speak directly about the core issues at the heart of the community’s current crisis.\r\n</p>\r\n<p>\r\nFirstly, all these events — from RMS’ public comments on the MIT mailing list, to RMS’ resignation from the FSF to RMS’ discussions about the next steps for the GNU project — <em>seem</em> to many to have happened ridiculously quickly. But it wasn’t actually fast at all. In fact, these events were culmination of issues that were slowly growing in concern to many people, including me.\r\n</p>\r\n<p>\r\nFor the last two years, I had been a loud internal voice in the FSF leadership regarding RMS’ Free-Software-unrelated public statements; I felt strongly that it was in the best interest of the FSF to actively seek to limit such statements, and that it was my duty to FSF to speak out about this within the organization. Those who only learned of this story in the last month (understandably) believed <a href=\"https://medium.com/@selamjie/remove-richard-stallman-fec6ec210794\">Selam G.’s Medium post</a> raised an entirely new issue. <a href=\"https://web.archive.org/web/20161107050933/https://www.stallman.org/archives/2016-jul-oct.html#31_October_2016_(Down\'s_syndrome)\">In</a> <a href=\"https://web.archive.org/web/20170202025227/https://www.stallman.org/archives/2016-nov-feb.html#14_December_2016_(Campaign_of_bull-headed_prudery)\">fact</a>, <a href=\"https://web.archive.org/web/20170224174306/https://www.stallman.org/archives/2016-nov-feb.html#23_February_2017_(A_violent_sex_offender)\">RMS’</a> <a href=\"https://web.archive.org/web/20170612074722/https://stallman.org/archives/2017-mar-jun.html#26_May_2017_(Prudish_ignorantism)\">views</a> <a href=\"https://web.archive.org/web/20170616044924/https://www.stallman.org/archives/2017-mar-jun.html#13_June_2017_(Sex_offender_registry)\">and</a> <a href=\"https://web.archive.org/web/20171020041022/https://stallman.org/archives/2017-jul-oct.html#10_October_2017_(Laws_against_having_sex_with_an_animal)\">statements</a> <a href=\"https://web.archive.org/web/20180131020215/https://stallman.org/archives/2017-jul-oct.html#29_October_2017_(Pestering_women)\">posted</a> <a href=\"https://web.archive.org/web/20180104112431/https://www.stallman.org/archives/2017-nov-feb.html#27_November_2017_(Roy_Moore\'s_relationships)\">on</a> <a href=\"https://web.archive.org/web/20180509120046/https://stallman.org/archives/2018-mar-jun.html#30_April_2018_(UN_peacekeepers_in_South_Sudan)\">stallman.org</a> <a href=\"https://web.archive.org/web/20180911075211/https://www.stallman.org/archives/2018-jul-oct.html#17_July_2018_(The_bullshitter\'s_flirting)\">about</a> <a href=\"https://web.archive.org/web/20180911075211/https://www.stallman.org/archives/2018-jul-oct.html#21_August_2018_(Age_and_attraction)\">sexual</a> <a href=\"https://web.archive.org/web/20180924231708/https://stallman.org/archives/2018-jul-oct.html#23_September_2018_(Cody_Wilson)\">morality</a> <a href=\"https://web.archive.org/web/20180919100154/https://stallman.org/antiglossary.html#assult\">escalated</a> <a href=\"https://web.archive.org/web/20181113161736/https://www.stallman.org/archives/2018-sep-dec.html#6_November_2018_(Sex_according_to_porn)\">for</a> <a href=\"https://web.archive.org/web/20190325024048/https://stallman.org/archives/2019-jan-apr.html#14_February_2019_(Respecting_peoples_right_to_say_no)\">the</a> <a href=\"https://www.stallman.org/archives/2019-may-aug.html#11_June_2019_(Stretching_meaning_of_terms)\">worse</a> <a href=\"https://web.archive.org/web/20190801201704/https://stallman.org/archives/2019-may-aug.html#12_June_2019_(Declining_sex_rates)\">over</a> <a href=\"https://web.archive.org/web/20190801201704/https://stallman.org/archives/2019-may-aug.html#30_July_2019_(Al_Franken)\">the</a> <a href=\"https://web.archive.org/web/20190903050208/https://stallman.org/archives/2019-jul-oct.html#27_August_2019_(Me-too_frenzy)\">last</a> <a href=\"https://web.archive.org/web/20191011023557/https://stallman.org/archives/2019-jul-oct.html#21_September_2019_(Sex_workers)\">few</a> <a href=\"https://web.archive.org/web/20180924231708/https://stallman.org/archives/2018-jul-oct.html#23_September_2018_(Cody_Wilson)\">years</a>. When the escalation started, I still considered RMS both a friend and colleague, and I attempted to argue with him at length to convince him that some of his positions were harmful to sexual assault survivors and those who are sex-trafficked, and to the people who devote their lives in service to such individuals. More importantly to the FSF, I attempted to persuade RMS that launching a controversial campaign on sexual behavior and morality was counter to his and FSF’s mission to advance software freedom, and told RMS that my duty as an FSF Director was to assure the best outcome for the FSF, which <acronym title=\"in my opinion\">IMO</acronym> didn’t include having a leader who made such statements. Not only is human sexual behavior not a topic on which RMS has adequate academic expertise, but also his positions appear to ignore significant research and widely available information on the subject. Many of his comments, while occasionally politically intriguing, lack empathy for people who experienced trauma.\r\n</p>\r\n<p>\r\nIMO, this is not and has never been a Free Speech issue. I do believe freedom of speech links directly to software freedom: indeed, I see the freedom to publish software under Free licenses as almost a corollary to the freedom of speech. However, we do not need to follow leadership from those whose views we fundamentally disagree. Moreover, organizations need not and should not elevate spokespeople and leaders who speak regularly on unrelated issues that organizations find do not advance their mission, and/or that alienate important constituents. I, like many other software freedom leaders, curtail my public comments on issues not related to <acronym title=\"Free and Open Source Software\">FOSS</acronym>. (Indeed, I would not even be commenting on <em>this issue</em> if it had not become a central issue of concern to the software freedom community.) Leaders have power, and they must exercise the power of their words with <a href=\"https://lwn.net/Articles/770966/\">restraint, not with impunity</a>.\r\n</p>\r\n<p>\r\nRMS has consistently argued that there was a campaign of \"prudish intimidation\" — seeking to keep him quiet about his views on sexuality. After years of conversing with RMS about how his non-software-freedom views were a distraction, an indulgence, and downright problematic, his general response was to make even more public comments of this nature. The issue is not about RMS’ right to say what he believes, nor is it even about whether or not you agree or disagree with RMS’ statements. The question is whether an organization should have a designated leader who is on a sustained, public campaign advocating about an unrelated issue that many consider controversial. It really doesn’t matter what your view about the controversial issue is; a leader who refuses to stop talking loudly about unrelated issues eventually creates an untenable distraction from the radical activism you’re actively trying to advance. The message of universal software freedom is a radical cause; it’s basically impossible for one individual to effectively push forward two unrelated controversial agendas at once. In short, the radical message of software freedom became overshadowed by RMS’ radical views about sexual morality.\r\n</p>\r\n<p>\r\nAnd here is where I say the thing that may infuriate many but it’s what I believe: I think RMS took a useful step by resigning some of his leadership roles at the FSF. I thank RMS for taking that step, and I wish the FSF Directors well in their efforts to assure that the FSF becomes a welcoming organization to all who care about universal software freedom. The <a href=\"https://www.fsf.org/about/\">FSF’s mission</a> is essential to our technological future, and we should all support that mission. I care deeply about that mission myself and have worked and will continue to work in our community in the best interest of the mission.\r\n</p>\r\n<p>\r\nI’m admittedly struggling to find a way to work again with RMS, given his views on sexual morality and his behaviors stemming from those views. I explicitly do not agree with <a href=\"https://web.archive.org/web/20180919100154/https://stallman.org/antiglossary.html#assult\">this \"(re-)definition\" of sexual assault</a>. Furthermore, I believe uninformed statements about sexual assault are irresponsible and cause harm to victims. #MeToo is <strong><a href=\"https://web.archive.org/web/20190903050208/https://stallman.org/archives/2019-jul-oct.html#27_August_2019_(Me-too_frenzy)\">not a \"frenzy\"</a></strong>; it is a global movement by individuals who have been harmed seeking to hold both bad actors <em>and</em> society-at-large accountable for ignoring systemic wrongs. Nevertheless, I still am proud of the <a href=\"https://www.gnu.org/philosophy/freedom-or-power.en.html\">essay that I co-wrote with RMS</a> and still find <a href=\"https://www.gnu.org/gnu/manifesto.en.html\">many</a> <a href=\"https://www.gnu.org/philosophy/free-sw.html\">of</a> <a href=\"https://www.gnu.org/philosophy/why-free.html\">RMS’</a> <a href=\"https://www.gnu.org/philosophy/pragmatic.html\">other</a> <a href=\"https://www.gnu.org/philosophy/microsoft-old.html\">essays</a> <a href=\"https://www.gnu.org/philosophy/gpl-american-way.html\">compelling</a>, <a href=\"https://www.gnu.org/licenses/why-not-lgpl.html\">important</a>, <a href=\"https://www.gnu.org/philosophy/stallman-kth.en.html\">and</a> <a href=\"https://www.gnu.org/philosophy/who-does-that-server-really-serve.en.html\">relevant</a>.\r\n</p>\r\n<p>\r\nI want the FSF to succeed in its mission and enter a new era of accomplishments. I’ve spent the last 22 years, without a break, dedicating substantial time, effort, care and loyalty to the various FSF roles that I’ve had: including employee, volunteer, at-large Director, and Voting Member. Even though my duties to the FSF are done, and my relationship with the FSF is no longer formal, I still think the FSF is a valuable institution worth helping and saving, specifically because the FSF was founded for a mission that I deeply support. And we should also realize that RMS — a human being (who is flawed like the rest of us) — invented that mission.\r\n</p>\r\n<p>\r\nAs culture change becomes more rapid, I hope we can find reasonable nuance and moderation on our complex analysis about people and their disparate views, while we also hold individuals fully accountable for their actions. That’s the difficulty we face in the post-post-modern culture of the early twenty-first century. Most importantly, I believe we must find a way to stand firm for software freedom while also making a safe environment for victims of sexual assault, sexual abuse, gaslighting, and other deplorable actions.\r\n</p>\r\n<p>\r\n</p>\r\n<p class=\"bottomAttributionWithDate\">\r\nPosted on Tuesday 15 October 2019 at 09:11 by Bradley M. Kuhn.\r\n</p>\r\n<p class=\"comments\">\r\n<p>Submit comments on this post to <a href=\"mailto:bkuhn@ebb.org\">&lt;bkuhn@ebb.org&gt;</a>.</p>\r\n<hr />\r\n<p>The following posts are authored by Richard M. Stallman and are taken from his personal site stallman.org. They were linked to in the piece you have just heard.</p>\r\n<p><a href=\"https://web.archive.org/web/20161107050933/https://www.stallman.org/archives/2016-jul-oct.html#31_October_2016_(Down\'s_syndrome)\">stallman.org 31 October 2016 (Down’s syndrome)</a> A new noninvasive test for Down’s syndrome will eliminate the small risk of the current test. This might lead more women to get tested, and abort fetuses that have Down’s syndrome. Let’s hope so! If you’d like to love and care for a pet that doesn’t have normal human mental capacity, don’t create a handicapped human being to be your pet. Get a dog or a parrot. It will appreciate your love, and it will never feel bad for being less capable than normal humans.</p>\r\n<p><a href=\"https://web.archive.org/web/20170202025227/https://www.stallman.org/archives/2016-nov-feb.html#14_December_2016_(Campaign_of_bull-headed_prudery)\">stallman.org 14 December 2016 (Campaign of bull-headed prudery)</a> A national campaign seeks to make all US states prohibit sex between humans and nonhuman animals. This campaign seems to be sheer bull-headed prudery, using the perverse assumption that sex between a human and an animal hurts the animal. That’s true for some ways of having sex, and false for others. For instance, I’ve heard that some women get dogs to lick them off. That doesn’t hurt the dog at all. Why should it be prohibited? When male dolphins have sex with people, that doesn’t hurt the dolphins. Quite the contrary, they like it very much. Why should it be prohibited? I’ve also read that female gorillas sometimes express desire for sex with men. If they both like it, who is harmed? Why should this be prohibited? The proponents of this law claim that any kind of sex between humans and other species implies that the human is a \"predator\" that we need to lock up. That’s clearly false, for the cases listed above. Making a prohibition based on prejudice, writing it in an overbroad way, is what prissy governments tend to do where sex is concerned. The next step is to interpret it too strongly with \"zero tolerance\". Will people convicted of having dogs lick them off be required to live at least 1000 feet from any dogs? This law should be changed to prohibit only acts in which the animal is physically forced to have sex, or physically injured.</p>\r\n<p><a href=\"https://web.archive.org/web/20170224174306/https://www.stallman.org/archives/2016-nov-feb.html#23_February_2017_(A_violent_sex_offender)\">stallman.org 23 February 2017 (A \"violent sex offender\")</a> The teenager who will have to register as a \"violent sex offender\" had a sexual meeting with a younger teenager. Why do people think there is something wrong with a sexual relationship between people of ages 13 and 18? The principal activity of human adolescents is sex.</p>\r\n<p><a href=\"https://web.archive.org/web/20170612074722/https://stallman.org/archives/2017-mar-jun.html#26_May_2017_(Prudish_ignorantism)\">stallman.org 26 May 2017 (Prudish ignorantism)</a> A British woman is on trial for going to a park and inviting teenage boys to have sex with her there. Her husband acted as a lookout in case someone else passed by. One teenager allegedly visited her at her house repeatedly to have sex with her. None of these acts would be wrong in any sense, provided they took precautions against spreading infections. The idea that adolescents (of whatever sex) need to be \"protected\" from sexual experience they wish to have is prudish ignorantism, and making that experience a crime is perverse.</p>\r\n<p><a href=\"https://web.archive.org/web/20170616044924/https://www.stallman.org/archives/2017-mar-jun.html#13_June_2017_(Sex_offender_registry)\">stallman.org 13 June 2017 (Sex offender registry)</a> The sex offender registry treats any sexual crime as far worse than murder.</p>\r\n<p><a href=\"https://web.archive.org/web/20171020041022/https://stallman.org/archives/2017-jul-oct.html#10_October_2017_(Laws_against_having_sex_with_an_animal)\">stallman.org 10 October 2017 (Laws against having sex with an animal)</a> European countries are passing laws against having sex with an animal. (We are talking about sex practices that don’t physically hurt the animal.) These laws have no rational basis. We know that some animals enjoy sex with humans. Others don’t. But really, if you smear something on your genitals that tastes good to dogs, and have a dog lick you off, it harms no one. Why should this be illegal except mindless religion?</p>\r\n<p><a href=\"https://web.archive.org/web/20180104112431/https://www.stallman.org/archives/2017-nov-feb.html#27_November_2017_(Roy_Moore\'s_relationships)\">stallman.org 27 November 2017 (Roy Moore’s relationships)</a> Senate candidate Roy Moore tried to start dating/sexual relationships with teenagers some decades ago. He tried to lead Ms Corfman step by step into sex, but he always respected \"no\" from her and his other dates. Thus, Moore does not deserve the exaggerated condemnation that he is receiving for this. As an example of exaggeration: one mailing referred to these teenagers as \"children\", even the one that was 18 years old. Many teenagers are minors, but none of them are children. The condemnation is surely sparked by the political motive of wanting to defeat Moore in the coming election, but it draws fuel from ageism and the fashion for overprotectiveness of \"children\". I completely agree with the wish to defeat Moore. Political Christianists such as Moore hold views that conflict essentially with human rights, just as political Islamists do. If Moore, with his extremist policies, gains public office again, he will harm millions of American women, and secondarily society as a whole. Ms Corfman says she was hurt afterward, and attributes this to feelings of guilt based on the belief that she had done something wrong (which, of course, she had not). Is this is another sign of Christianity at work? I sent a check to Doug Jones US Senate a few weeks ago. Please support his campaign too. You can mail a check here: (Address available at original link)</p>\r\n<p><a href=\"https://web.archive.org/web/20180131020215/https://stallman.org/archives/2017-jul-oct.html#29_October_2017_(Pestering_women)\">stallman.org 29 October 2017 (Pestering women)</a> A famous theater director had a habit of pestering women, asking them for sex. As far as I can tell from this article, he didn’t try to force women into sex. When women persistently said no, he does not seem to have tried to punish them. The most he did was ask. He was a pest, but nothing worse than that.</p>\r\n<p><a href=\"https://web.archive.org/web/20180509120046/https://stallman.org/archives/2018-mar-jun.html#30_April_2018_(UN_peacekeepers_in_South_Sudan)\">stallman.org 30 April 2018 (UN peacekeepers in South Sudan)</a> It sounds horrible: \"UN peacekeepers accused of child rape in South Sudan.\" But the article makes it pretty clear that the \"children\" involved were not children. They were teenagers. What about \"rape\"? Was this really rape? Or did they have sex willingly, and prudes want to call it \"rape\" to make it sound like an injustice? We can’t tell from the article which one it is. Rape means coercing someone to have sex. Precisely because that is a grave and clear wrong, using the same name for something much less grave is a distortion.</p>\r\n<p><a href=\"https://web.archive.org/web/20180911075211/https://www.stallman.org/archives/2018-jul-oct.html#17_July_2018_(The_bullshitter\'s_flirting)\">stallman.org 17 July 2018 (The bullshitter’s flirting)</a> We are now invited to despise the bullshitter for telling a 17-year-old woman at a party that he found her attractive. We can hardly assume that the bullshitter’s boasts were true. Even men who are usually honest on other topics have been known to lie about their sexual achievements. However, I wouldn’t assume they were false, or that he did an injustice to anyone at these parties. In a group of 50 models, there could well be some that would eagerly go to bed with a rich man, either to boost their careers or for a lark. If you condemn men for finding teenage female models attractive, you might as well condemn men for being heterosexual. The bully may be predatory, but it appears he didn’t display this overtly at those parties. There are indications that he arbitrarily chose the winners of the Miss USA beauty contest while he owned it. That would be a real wrong, since it would have made the contest dishonest. I understand the desire to condemn the bullshitter on every aspect of his life, but it is no excuse for ageism. If you can understand that we shouldn’t dictate people’s gender preferences, you should understand that we shouldn’t dictate their age preferences either. There are plenty of tremendously important reasons to condemn the bully. He is attacking workers’ rights, abortion rights, non-rich people’s pensions and medical care, the environment, human rights, and democracy, even the idea of truth. Let’s focus on those real reasons.</p>\r\n<p><a href=\"https://web.archive.org/web/20180911075211/https://www.stallman.org/archives/2018-jul-oct.html#21_August_2018_(Age_and_attraction)\">stallman.org 21 August 2018 (Age and attraction)</a> Research found that men generally find females of age 18 the most attractive. This accords with the view that Stendhal reported in France in the 1800s, that a woman’s most beautiful years were from 16 to 20. Although this attitude on men’s part is normal, the author still wants to present it as wrong or perverted, and implicitly demands men somehow control their attraction to direct it elsewhere. Which is as absurd, and as potentially oppressive, as claiming that homosexuals should control their attraction and direct it towards to the other sex. Will men be pressured to undergo \"age conversion therapy\" intended to brainwash them to feel attracted mainly to women of their own age?</p>\r\n<p><a href=\"https://web.archive.org/web/20180919100154/https://stallman.org/antiglossary.html#assult\">stallman.org Anti-Glossary Sexual assault: </a> this term is so broad that using it is misleading. The term includes rape, groping, sexual harassment, and other acts. These acts are not merely different in degree. They are different in kind. Rape is a grave crime. Being groped is unpleasant but not as grave as robbery. Sexual harassment is a not an action at all, but rather a pattern of actions that constitutes economic unfairness. How can it make sense to group these behaviors things together? It never makes sense. News articles, studies, and laws should avoid that term.</p>\r\n<p><a href=\"https://web.archive.org/web/20180924231708/https://stallman.org/archives/2018-jul-oct.html#23_September_2018_(Cody_Wilson)\">stallman.org 23 September 2018 (Cody Wilson)</a> Cody Wilson has been charged with hiring a \"child\" sex worker. Her age has not been announced, but I think she must surely be a teenager, not a child. Calling teenagers \"children\" in this context is a way of smearing people with normal sexual proclivities as \"perverts\". They have accused him of \"sexual assault\", a term so vague that it should never be used at all. With no details, we can’t tell whether the alleged actions deserve that term. What we do know is that the term is often used for a legal lie. She may have had — I expect, did have — entirely willing sex with him, and they would still call it \"assault\". I do not like the idea of 3D-printed guns, but that issue is entirely unrelated to this.</p>\r\n<p><a href=\"https://web.archive.org/web/20181113161736/https://www.stallman.org/archives/2018-sep-dec.html#6_November_2018_(Sex_according_to_porn)\">stallman.org 6 November 2018 (Sex according to porn)</a> The unrealistic picture of sex presented in most porn harms men as well as women in their sex lives (though in different ways). Their sexual miseducation starts in adolescence, but many never learn better. Our society’s taboo cuts adolescents off from any way to learn about sexual relationships and lovemaking other than from porn and from other confused adolescents. Everyone learns the hard way, often slowly, and in many cases learns bad lessons. The more effective the taboo, the deeper the ignorance. In 18th century France, teenage girls of good family emerged totally sexually innocent from education in a convent. Totally innocent and totally exploitable (see Dangerous Liaisons). Contrast this with Marquesan society, where adolescents are not kept ignorant by a taboo on sex. They have various relationships with lovers of their choice, so they have many opportunities to see what pleases and what doesn’t. Any one lover can please them more, or please them less, but can’t mislead them — they have standards for comparison. In that society, even adolescents understand lovemaking better than a lot of American adults. Inevitably, everyone starts out ignorant; the question is, how can society offer people a path which leads them to learn to do things well, rather than learning painfully to do them badly.</p>\r\n<p><a href=\"https://web.archive.org/web/20190325024048/https://stallman.org/archives/2019-jan-apr.html#14_February_2019_(Respecting_peoples_right_to_say_no)\">stallman.org 14 February 2019 (Respecting people’s right to say no)</a> Writer Yann Moix said that he cannot be attracted to women in their 50s, and people are condemning him, claiming he has an obligation to be attracted to them. You might as well demand that a homosexual be attracted to people not of the same sex. Or that a heterosexual be attracted to people that are of the same sex. There is no arguing about tastes. If we respect people’s right to say no, we should not rebuke them when they do. Of course, many people (especially men, but not only) despise those they find unattractive. That is a mean way to treat people who haven’t done anything wrong. But being unattracted by someone is not the same as despising per. Yann Moix understands this.</p>\r\n<p><a href=\"https://web.archive.org/web/20190801201704/https://stallman.org/archives/2019-may-aug.html#12_June_2019_(Declining_sex_rates)\">stallman.org 12 June 2019 (Declining sex rates)</a> Many demographic categories report having sex less now than in the past. It might be due to the general stress and anxiety of life in the advanced countries. I suspect it is also due to the lack of any generally accepted way for men to express romantic or sexual interest in women. By \"generally accepted\", I mean that he can count on a woman who declines his interest not to revile him for expressing it that way.</p>\r\n<p><a href=\"https://web.archive.org/web/20190801201704/https://stallman.org/archives/2019-may-aug.html#30_July_2019_(Al_Franken)\">stallman.org 30 July 2019 (Al Franken)</a> Al Franken now regrets resigning from the Senate. Some senators that pushed him to resign now regret that too. The first (main) article does not state clearly whether Franken touched Tweeden in the process of making the photo, but it seems he did not. If that is correct, it was not a sexual act at all. It was self-mocking humor. The photograph depicted a fictional sexual act without her fictional consent, but making the photo wasn’t a sexual act. If it is true that he persistently pressured her to kiss him, on stage and off, if he stuck his tongue into her mouth despite her objections, that could well be sexual harassment. He should have accepted no for an answer the first time she said it. However, calling a kiss \"sexual assault\" is an exaggeration, an attempt to equate it to much graver acts, that are crimes. The term \"sexual assault\" encourages that injustice, and I believe it has been popularized specifically with that intention. That is why I reject that term. Meanwhile, Franken says he did not do those things, and the other actors he previously did the same USO skit with said it was not harassment, just acting. Tweeden’s store is clearly false in many details. Should we assume Tweeden was honest? With so many demonstrated falsehoods in her accusations, and given that she planned them with other right-wing activists, and that all of them follow a leader who lies as a tactic every day, I have to suspect that she decided to falsify accusations through exaggeration so as to kick a strong Democrat out of the Senate. I have no proof of that suspicion. It is possible that she made the accusations honestly. Also, in a hypothetical world, someone might really have done them. Supposing for the moment that those accusations were true, should Franken have resigned over them? I don’t think so. They are misjudgments, not crimes. Franken deserved the chance to learn from the criticism that surprised him. Zero tolerance is a very bad way to judge people. However, the most important point is to reject the position that if B feels hurt by what A said or did, then automatically A is wrong. People judged Franken that way, and he judged himself that way. But that way degrades the concept of \"wrong\" into a mere expression of subjective disapproval. What can legitimately be asserted subjectively can legitimately be ignored subjectively too. To judge A that way is to set B up as a tyrant. If B’s feelings were hurt, that’s unfortunate – but is that A’s fault? If so, was it culpable, or just a mistake? That is what we have to judge, and if we want others to think our judgments worth following, they must be based on objective facts and objective standards, including objective standards for what words and gestures objectively mean. Traister is wrestling with a solvable problem. She says, \"When you change rules, you end up penalizing people who were caught behaving according to the old rules.\" Maybe people do, but that is a sign of carelessness. It isn’t really hard to change the rules and then judge old actions by the old rules. We just have to remember to do so.</p>\r\n<p><a href=\"https://web.archive.org/web/20190903050208/https://stallman.org/archives/2019-jul-oct.html#27_August_2019_(Me-too_frenzy)\">stallman.org 27 August 2019 (Me-too frenzy)</a> In \"me-too\" frenzy, crossed signals about sex can easily be inflated into \"rape\". If people rush to judgment, in an informal way, that can destroy a man’s career without any trial in which to clear his name.</p>\r\n<p><a href=\"https://web.archive.org/web/20191011023557/https://stallman.org/archives/2019-jul-oct.html#21_September_2019_(Sex_workers)\">stallman.org 21 September 2019 (Sex workers)</a> Today’s Sex Workers, Like Their Victorian Sisters, Don’t Want \"saving\". Feminism today is drifting off the track into a campaign of prudery that harms everyone, except those who are asexual.</p>\r\n<p><a href=\"https://www.stallman.org/archives/2019-may-aug.html#11_June_2019_(Stretching_meaning_of_terms)\">stallman.org 11 June 2019 (Stretching meaning of terms)</a> Should we accept stretching the terms \"sexual abuse\" and \"molestation\" to include looking without touching? I do not accept it.</p>\r\n\r\n',393,0,1,'CC-BY-SA','Bradley M. Kuhn, Richard M. Stallman, RMS, FSF, Free Software Foundation',0,0,1),
(3304,'2021-04-01','Newsflash 21/01/04',178,'An upgrade to some standard information formats','<h2 id=\"introduction\">Introduction</h2>\r\n<p>After many years of confusion it has been decided to produce a common standard for dates and times between Europe and the United States of America.</p>\r\n<p>When encountering a USA date such as 03/14/2021 (known as <em>Pi Day</em> in the USA) there has been ambiguity over which part of the date is the day and which the month. There can also be confusion as to the year if the two-digit form is used.</p>\r\n<p>Standardisation is a way in which these sorts of ambiguities can be resolved. Having a common method of representation avoids confusion.</p>\r\n<p>Therefore, starting in 2021, in the spirit of clarity and prevention of misunderstanding, the EU has decided to standardise on compatible formats wherever possible.</p>\r\n<h3 id=\"dates\">Dates</h3>\r\n<p>Henceforward dates will be represented in one of the following forms:</p>\r\n<pre><code>MM/DD/YY    month/day of month/two-digit year\r\n\r\nYY/DD/MM    two-digit year/day of month/month</code></pre>\r\n<p>Thus, 21/14/03 or 03/14/21 will be universally recognised as <em>Pi Day</em>.</p>\r\n<h3 id=\"times\">Times</h3>\r\n<p>The break from the previous tyranny of <b>large</b>|<b>medium</b>|<b>small</b> or <b>small</b>|<b>medium</b>|<b>large</b> formats has been extended to 24-hour time representations.</p>\r\n<p>Henceforward 24-hour times will be represented in one of the following forms:</p>\r\n<pre><code>SS:HH:MM    seconds:hours:minutes\r\n\r\nMM:HH:SS    minutes:hours:seconds</code></pre>\r\n<h3 id=\"support\">Support</h3>\r\n<p>Bash already introduced support last year. You will need to update to Ubuntu Falex to get the latest version.</p>\r\n<h3 id=\"future-plans\">Future plans</h3>\r\n<p>The Standardisation Working Group will be planning other measures.</p>\r\n<p>Forthcoming rationalisations will be:</p>\r\n<ul>\r\n<li>Weights and Measures:\r\n<ul>\r\n<li>Discrepancies such as the US pint (16 fluid ounces) versus the British pint (20 fluid ounces)</li>\r\n</ul></li>\r\n<li>Temperature:\r\n<ul>\r\n<li>Fahrenheit versus Centigrade, replaced by the new <em>Eurotemp</em> which straddles both ranges. The choice might be the Rankine scale (°R), but this has yet to be decided.</li>\r\n</ul></li>\r\n</ul>\r\n',393,0,0,'CC-BY-SA','date,time,formats',0,0,1),
(3312,'2021-04-13','COVID Doldrums',4288,'MrX and Dave Morriss have a chat over Mumble in these trying times','<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 had some issues with getting Mumble to work, for reasons we couldn’t quite fathom. Both ends needed to be restarted several times until all worked properly.</p>\r\n<p>We recorded this on Sunday March 7<sup>th</sup> 2021. The last time we set up a chat like this was back in August 2020, surprisingly!</p>\r\n<p><small>Note on the title: the term <em>the doldrums</em> refers to a belt around the equator where sailing ships used to be becalmed due to the lack of wind. It also means a state of inactivity or stagnation, or a dull, listless, depressed mood; low spirits. </small></p>\r\n<h2 id=\"topics-discussed\">Topics discussed</h2>\r\n<ul>\r\n<li>Pandemic (1):\r\n<ul>\r\n<li>Planning for pandemics</li>\r\n<li>Years ago parents used to let children catch chickenpox when it was known somebody had it (<a href=\"https://en.wikipedia.org/wiki/Pox_party\">pox party</a>).</li>\r\n<li>Did COVID-catching parties really happen? <a href=\"https://en.wikipedia.org/wiki/Coronavirus_party\">Wikipedia page on alleged COVID parties</a>.</li>\r\n</ul></li>\r\n</ul>\r\n<ul>\r\n<li>Christmas/New Year:\r\n<ul>\r\n<li>Dave:\r\n<ul>\r\n<li>Cooked a fancy vegetarian meal twice! On Boxing Day and New Years Day. Second time was a joint effort. Getting everything coordinated is easier when there are several contributors!</li>\r\n</ul></li>\r\n<li>MrX:\r\n<ul>\r\n<li>Had long break because like many I hadn’t taken many holidays</li>\r\n<li>Spent first part of holiday upgrading devices around the house</li>\r\n<li>I had a nice relaxing break and spent Christmas with my mother, she lives on her own.</li>\r\n<li>Visit to the dentist was interesting, wondering how they were going to cope with aerosol spray from the drill. The answer was they didn’t. Rough edge smoothed, they told me they will contact me when things settle down and said I was right to get it checked. If any pain or further break then will be moved into a different category where they do use drill with full PPE.</li>\r\n</ul></li>\r\n</ul></li>\r\n</ul>\r\n<ul>\r\n<li>Pandemic (2):\r\n<ul>\r\n<li>Dave:\r\n<ul>\r\n<li>Vaccination received on 2020-02-02 (<a href=\"https://en.wikipedia.org/wiki/Oxford%E2%80%93AstraZeneca_COVID-19_vaccine\">Oxford/AstraZeneca</a>)</li>\r\n<li>Probably getting second in late April or early May; not heard yet</li>\r\n<li>Still avoiding going out for the moment</li>\r\n<li>The deleterious effects of the lock down; trying to walk on a regular basis to counteract these and get exercise</li>\r\n<li>Meeting up with the rest of the family several times per week for dinner, etc.</li>\r\n</ul></li>\r\n<li>MrX:\r\n<ul>\r\n<li>Horizon things we now know about COVID</li>\r\n<li>Don’t know how long the vaccine protects against virus spreading but likely to protect against serious illness for a good long time.</li>\r\n<li>12 weeks between jabs: 2nd jab does not provoke a stronger response; it’s that the 1st jab produces good responses and poor responses but by waiting 12 weeks for the 2nd jab it only provokes the good responses.</li>\r\n<li>Think the UK has among the worst death rate in Europe</li>\r\n<li>Like Dave continuing to avoid the virus as before.</li>\r\n<li>Seems to be getting more difficult coping with lock down</li>\r\n<li>Haven’t been into work since last November, working from home</li>\r\n<li>Home working, clutter, stress, not taking enough breaks</li>\r\n<li>Glad I didn’t need to drive during all the bad weather</li>\r\n<li>Think I heard on a podcast recently that Linux use had dropped by 50%, could this be linked to people working from home. I would say this is true for myself</li>\r\n<li>Except for me all immediate family have been vaccinated</li>\r\n<li>Way to stay positive tip from something Mrs X read\r\n<ul>\r\n<li>Three things at the end of each day that were a highlight or something that we are grateful for.</li>\r\n<li>This may say something about my personality but for me the highlights often relate to food.</li>\r\n</ul></li>\r\n<li>Can’t go outside our own region.</li>\r\n</ul></li>\r\n</ul></li>\r\n</ul>\r\n<ul>\r\n<li>Weather in &amp; around Edinburgh:\r\n<ul>\r\n<li>Some snow in the past few months. More than Edinburgh tends to have.</li>\r\n<li>Methods of clearing snow on driveways. Snow shovels - mainly plastic unfortunately.</li>\r\n<li>Thoughts about making a home-made shovel out of metal for durability.</li>\r\n</ul></li>\r\n</ul>\r\n<ul>\r\n<li><em>To Do</em> lists and <code>Taskwarrior</code>:\r\n<ul>\r\n<li>Jeroen Baten did a <a href=\"https://hackerpublicradio.org/eps.php?id=3226\">show about Taskwarrior</a> in December 2020.</li>\r\n<li>Dave has been trying to use <a href=\"https://taskwarrior.org/\"><code>taskwarrior</code></a> regularly. There’s a feeling of achievement when a task is done!</li>\r\n<li>MrX has tried various solutions including paper. Taskwarrior doesn’t fit with many modes of working.</li>\r\n</ul></li>\r\n</ul>\r\n<ul>\r\n<li>Laptops and Chromebooks:\r\n<ul>\r\n<li>MrX has money to spend on either of these, and is debating what to buy</li>\r\n<li>Dave has an Entroware laptop but mainly uses a desktop system</li>\r\n</ul></li>\r\n</ul>\r\n<ul>\r\n<li>Technology:\r\n<ul>\r\n<li>Hand warmers:\r\n<ul>\r\n<li>MrX has a new electric hand warmer</li>\r\n<li>Dave only has experience of the reusable gel ones that release heat as they crystallise</li>\r\n<li>Talk of other technologies: single use warmers, fuelled Zippo warmers</li>\r\n</ul></li>\r\n<li><a href=\"https://www.raspberrypi.org/blog/raspberry-pi-silicon-pico-now-on-sale/\">Raspberry Pi Pico</a>:\r\n<ul>\r\n<li>Dave has one of these. It’s a microcontroller that costs £3.60. Not in use yet though.</li>\r\n<li>The keypad isn’t 16×16 but 4×4 – 16 keys, not 256! It’s from Pimoroni, the <a href=\"https://shop.pimoroni.com/products/pico-rgb-keypad-base\">RGB Keypad Base</a>.</li>\r\n</ul></li>\r\n<li>The <a href=\"https://en.wikipedia.org/wiki/R_(programming_language)\">R Programming Language</a></li>\r\n</ul></li>\r\n</ul>\r\n',225,0,1,'CC-BY-SA','COVID-19',0,0,1),
(3317,'2021-04-20','Reading a manifesto: Towards A Cooperative Technology Movement',1015,'If open source misses the point of free software philosophy, what point is free software missing?','<p>Three good decades ago, Richard Stallman founded the free software movement and gave it a name.</p>\r\n<p>Two good decades ago there was a fork and Eric S. Raymond, Bruce Perens and others founded the open\r\nsource software movement, and neglected to tell us who gave it a name.\r\n(it was Christine Peterson<a href=\"#footnote0\">[0]</a>)</p>\r\n<p>Ever since then, the free software side of the two movements has been careful to guard the boundary\r\nbetween the two, see Richard Stallman\'s essay \"<em>Open Source Misses the Point</em>\".<a href=\"#footnote1\">[1]</a></p>\r\n<p>But lately a lot of people have increasingly been feeling that <em>free software</em> misses the point.\r\nIronically a lot of this has been coming from the <em>open source</em> side of things, as the official free\r\nsoftware philosophy has been firmly anchored with Stallman, and he hasn\'t been interested in moving\r\nhis philosophy in more inclusive directions.</p>\r\n<p>For sure, there are a lot of people in free software who have been wanting to go in this direction\r\nas well. I\'ve been thinking of it as a \"free software plus\", as it builds on the free software\r\nphilosophy, but adds aspects of social responsibility. The fact that Stallman was forced to resign\r\nfrom being Free Software Foundation president two years ago was a sign that people inside free\r\nsoftware cared about more than just the code and what freedoms it gives the recipient.</p>\r\n<p>A month ago, if you are listening to this on April the 20th 2021,\r\na manifesto was published called \"<em>Towards A Communal Software Movement</em>\", and I\'ll get to\r\nthat in a minute. I mentioned the names of the drivers of the previous movements, but this author\r\nhas said \"I intentionally left authors\' names out of it\"<a href=\"#footnote2\">[2]</a>, and I think that makes sense. Part of the\r\nproblems with previous movements has been this Great Man of History fallacy, which may have kept\r\nthem focused and on track, but it has also held them back.</p>\r\n<p>The movement is young and has already changed names once as I was writing about it. The manifesto is\r\nnow \"<em>Towards A Cooperative Technology Movement</em>\", and I have updated the shownotes and my commentary\r\nto reflect that.</p>\r\n<p><a href=\"https://misskey.de/notes/8k0igd5tcd\">https://misskey.de/notes/8k0igd5tcd</a></p>\r\n<p>I see the difference between free software and cooperative technology similarly as the difference\r\nbetween open source and free software.</p>\r\n<p>There are certainly people within open source and on the Open Source Initiative board that look\r\nfurther than just the license, and treat open source like just another brand name for free software.</p>\r\n<p>But at its core, the Open Source Definition is all about the licensing and that document is the\r\nshared common ground for all open source. People write code for different reasons and there\'s a\r\nlicense and contribution model that allow them to come together without those differences of purpose\r\ngetting too much in the way.</p>\r\n<p>So if the software and the license is \"what\" we\'re building, the philosophical documents of free\r\nsoftware provide the guidance on \"why\" we are building it: We want to get away from proprietary\r\nsoftware, we want to control our own computing, we want the freedoms to use, learn, modify and\r\nshare, etc. Free software is about our freedoms.</p>\r\n<p>So just like \"free\" is right there in the name, maybe the \"community\" in \"communal software\" or\r\nthe \"cooperative\" in \"cooperative technology\" is\r\nall about the \"who\": Who gets the freedom, who has the influence, who is affected.</p>\r\n<p>And again, lots of people in free software do care about community principles beyond code, care about\r\nsocial responsibility, but the shared baseline is the care for formal, technical and individual user\r\nfreedom: If <em>you</em> receive the code, <em>you</em> are allowed the <em>technical rights</em> to update the code, the\r\ncode or license should not restrict <em>your</em> freedoms, you, the recipient of the software, the hacker,\r\nthe code contributor. It says nothing about <em>practical</em> user freedom and it says nothing about the\r\ncommunity beyond the immediate user.</p>\r\n<hr>\r\n<p>That was my commentary. Now let\'s read the manifesto.</p>\r\n<p><a href=\"https://cooperativetechnology.codeberg.page/\">https://cooperativetechnology.codeberg.page/</a></p>\r\n<hr>\r\n<p>Before I saw the manifesto, I had written a draft list of aspects beyond licensing and contribution\r\nthat determine the social good of your project:\r\n<a href=\"https://libranet.de/display/0b6b25a8-3060-61f6-28df-cae554943983\">https://libranet.de/display/0b6b25a8-3060-61f6-28df-cae554943983</a></p>\r\n<p>The conversations that led directly to the creation of the manifesto:\r\n<a href=\"https://social.polymerwitch.com/@polymerwitch/105934078911643041\">https://social.polymerwitch.com/@polymerwitch/105934078911643041</a>\r\n<a href=\"https://fosstodon.org/@be/105952735879246194\">https://fosstodon.org/@be/105952735879246194</a></p>\r\n<p><a name=\"footnote0\">[0]</a> <a href=\"https://opensource.com/article/18/2/coining-term-open-source-software\">https://opensource.com/article/18/2/coining-term-open-source-software</a></p>\r\n<p><a name=\"footnote1\">[1]</a> <a href=\"https://www.gnu.org/philosophy/open-source-misses-the-point.en.html\">https://www.gnu.org/philosophy/open-source-misses-the-point.en.html</a></p>\r\n<p><a name=\"footnote2\">[2]</a> <a href=\"https://fosstodon.org/@be/105952960559032774\">https://fosstodon.org/@be/105952960559032774</a></p>\r\n<hr>\r\n<h1 id=\"towards-a-cooperative-technology-movement\">Towards A Cooperative Technology Movement</h1>\r\n<p>In response to the surprise, undemocratic reinstatement of Richard Stallman to the board of directors of the Free Software Foundation after his resignation in September 2019, the Free and Open Source Software movement is in the midst of a reckoning.\r\nThe authors of this document recognize and honor the contributions Richard Stallman has made to this movement while unequivocally condemning his harmful behavior which has pushed many capable, dedicated people away from the movement.</p>\r\n<p>Regardless of what happens in the Free Software Foundation, we believe it is time to reflect on the shortcomings of our advocacy so we can grow into a more effective and inclusive movement for justice.\r\nTowards this end, we believe the movement will benefit from new terminology to describe what we do and what we aim for.\r\nRichard Stallman authored the <a href=\"https://gnu.org/philosophy/free-sw.html\">free software definition</a> in 1986.\r\nThis term has always created difficulties communicating the ideas behind it because of the different meanings of the word \"free\" in English.\r\nMoreover, it is not the freedom of machines we are concerned with, but the freedom of humans.\r\nIn response to this and other issues, in 1998, the term <a href=\"https://opensource.org/docs/osd\">open source</a> was promoted using an adapted version of the <a href=\"https://www.debian.org/social_contract#guidelines\">Debian Free Software Guidelines</a>.\r\nThe history of computing in the past 23 years have validated critiques that the term \"open source\" is insufficient for communicating the values behind it.\r\nThe term \"open source\" and the ecosystem of Free and Open Source Software (FOSS) is today used by powerful companies, governments, and other institutions to harm people on enormous scales through <a href=\"https://www.youtube.com/watch?v=0hLjuVyIIrs\">surveillance</a> and <a href=\"https://www.theverge.com/2019/10/9/20906213/github-ice-microsoft-software-email-contract-immigration-nonprofit-donation\">violence</a>.\r\nThese institutions use FOSS to minimize economic costs by benefitting from decades of work done by others, much of which was done by unpaid volunteers motivated by curiosity, passion, and the ideals of the FOSS movement.</p>\r\n<p>We believe a significant reason for the failures of both \"free software\" and \"open source\" to prevent this cooptation is that the men who coined and initially promoted these terms did not and do not critique capitalism.\r\nRichard Stallman has generally <a href=\"https://www.gnu.org/gnu/byte-interview.html\">dodged</a> <a href=\"https://www.gnu.org/gnu/manifesto.html#competition\">the</a> <a href=\"https://www.gnu.org/philosophy/bill-gates-and-other-communists.en.html\">question</a> of whether free software is opposed to capitalism.\r\nIn the historical context of the United States in the 1980s, that may have been a wise decision.\r\nBut that was then, and now it is 2021.\r\nThe promoters of \"open source\" <a href=\"https://www.youtube.com/watch?v=4vW62KqKJ5A&amp;t=2186s\">emphasize its compatibility with capitalism</a> and <a href=\"https://www.youtube.com/watch?v=4vW62KqKJ5A&amp;t=3824s\">go out of their way to distance \"open source\" from critiques of capitalism</a>.\r\nWe believe we need to build on the FOSS movement with an explicitly anticapitalist political movement which proactively collaborates with other movements for justice.</p>\r\n<p>We propose the term \"cooperative technology\" for this movement.\r\nBy \"cooperative technology\", we mean technology that is constructed by and for the people whose lives are affected by its use.\r\nWhile this builds on the Free and Open Source Software movement, we aim to apply the same principles to hardware as well, although the criteria by which we evaluate hardware and software will of course not be identical.\r\nIt is not sufficient to narrowly focus on the people who directly interact with computers.\r\nCooperative software which is run on a server should not be controlled solely by the administrator of the server, but also by the people who interact with the server over a network.\r\nSimilarly, the data generated by the technology and the data which it requires to function should be in the control of the people who are affected by the technology.\r\nCooperative software that uses cameras should not be controlled solely by the people who own the cameras, but also the people who are observed by the cameras.\r\nCooperative electronic medical record systems should not be designed for the interests of insurance companies or hospital administrators, but for the interests of patients and the clinicians who directly use it.</p>\r\n<p>We aim for a world in which all technology is cooperative technology and recognize that any amount of proprietary technology is in conflict with this goal.\r\nAs an anticapitalist movement, we recognize that any institution which motivates people to put money, power, or self-interest above the welfare of humans is in conflict with our goals.\r\nCorporations are beholden to their shareholders who can hold the corporation legally liable for spending money in a way that is not intended to further enrich the shareholders.\r\nOther capitalist forms of enterprise have similar problems, incentivizing the profit of an elite few over the impact their activities have on others.</p>\r\n<p>We are not opposed to exchanges of money being involved in the creation or distribution of software or hardware.\r\nHowever, we should carefully consider the motivational structures of the institutions which fund technology development.\r\nWho benefits from the technology and who determines the priorities of its development and design?\r\nThese are questions we ask about technology whether money is involved or not.\r\nIt is in our interest to use safeguards to ensure that technology always remains controlled by the community which develops and uses it.\r\nCopyleft is one such safeguard, but it is insufficient on its own to prevent cooptation of our movement.\r\nAny cooperative technology project that receives funding from a for-profit enterprise must institute governance structures which prioritize community interests over profit in case there is a conflict between the two.\r\nWe oppose business models which are in conflict with community interests such as <a href=\"https://media.libreplanet.org/u/libreplanet/m/why-i-forked-my-own-project-and-my-own-company-31c3/\">\"open core\"</a>/<a href=\"https://sfconservancy.org/blog/2020/jan/06/copyleft-equality/\">proprietary relicensing</a>.</p>\r\n<p>Similarly, we are opposed to authoritarian and hierarchical governance structures of technology projects such as \"benevolent dictators for life\".\r\nCooperative technology is developed democratically; no single individual should have ultimate authority in cooperative projects.\r\nWhile we recognize the need for leadership and private communication, discussions regarding cooperative technology should take place in public unless there is a specific reason for communications to be private.\r\nOrganizations which advocate for cooperative technology should likewise operate democratically and transparently.</p>\r\n<p>We recognize that creating high quality technology requires much more than engineering skills.\r\nCooperative technology is not only for people who have the skills of writing code (unless the software is for writing code such as a compiler) nor the skills to design hardware.\r\nCooperative technology strives to be easy to use, including for people with disabilities, and acknowledges that this is best accomplished by continual dialog between engineers and users.\r\nProviding such feedback is a valuable way to contribute to the construction of cooperative technology without needing engineering skills.\r\nIdeally, the engineers of the technology should also be using it themselves.\r\nMoreover, there are many ways to contribute to cooperative technology without programming skills such as imagining ideas for new features, reporting bugs, writing documentation, graphic design, translation, promotion, and financial support.</p>\r\n<p>The free software movement has <a href=\"https://archive.fosdem.org/2019/schedule/event/full_software_freedom/\">failed to create a world in which humans in technological societies can live without using proprietary software unless one chooses to live the ascetic lifestyle of Richard Stallman</a>.\r\nExpecting people to not use any proprietary technology and judging people for not meeting this standard pushes people away from our movement.\r\nPeople who are coerced into using proprietary technology deserve our empathy and invitation into our movement, not condescension.\r\nLet us criticize institutions which pressure people into using proprietary technology, not the people who choose to use it.\r\nTo that end, we strive to use cooperative technology tools as much as possible in our efforts to build cooperative technology.</p>\r\n<p>The purpose of this document is <em>not</em> to proclaim a legalistic set of criteria for determining what technology is cooperative and what technology is not.\r\nHistory has demonstrated that this is not an effective political tactic for the reasons explained above.\r\nThe <a href=\"https://gnu.org/philosophy/free-sw.html\">free software definition</a> and the <a href=\"https://opensource.org/docs/osd\">open source definition</a> are useful criteria for evaluating copyright licenses for code, but an effective political movement cannot be so narrowly focused on legalistic and binary judgements of copyright licenses to judge whether certain technology aligns with our goals.\r\nWe believe the focus of the cooperative technology movement should be on the practical impacts that the use of technology has on humans and the universe we inhabit.\r\nThe scope of this extends beyond humans and must consider the <a href=\"https://www.bbc.com/news/technology-56012952\">environment around us</a>.\r\nMoreover, we believe it is counterproductive to have a small self-appointed group of privileged men determine what our movement\'s terminology, goals, and tactics are.\r\nWe encourage anyone interested in building a better world through technology to engage in discussions with your own communities about what you want \"cooperative technology\" to mean.</p>\r\n<p>While we agree with the Ethical Software Movement that we must resist when our efforts are coopted for unjust purposes, we reject putting restrictions on the ways people may use software through copyright licenses as a wise tactic for achieving our goals.\r\nThe history of the Free and Open Source Software movement has shown that the proliferation of incompatible copyright licenses which prohibit software from being legally combined creates more obstacles than opportunities for our movement.\r\nAny new copyright licenses for use with cooperative software must be written with this consideration in mind to intentionally avoid fracturing the software ecosystem.\r\nAdopting incompatible copyright licenses for different software would make it easy for our adversaries to divide and suppress the movement.</p>\r\n<p>Language is constructed collectively and is always evolving.\r\nIt is counterproductive to our movement to refuse to collaborate with people because they use the words \"open source\" or \"free software\" to describe their work.\r\nThey may even disagree with the entire premise of this document.\r\nThat does not mean we should not work together towards shared goals, but we should be conscious that our goals may not perfectly align and this may cause tension in our communities from time to time.\r\nWe invite anyone to collaborate with us who is interested in building a better world and treats us and others in our communities with dignity and respect.</p>\r\n<p>This document is licensed under the <a href=\"https://creativecommons.org/publicdomain/zero/1.0/\">CC0 license</a>. Contributions are welcome on <a href=\"https://codeberg.org/CooperativeTechnology/website\">Codeberg</a>. If you disagree with parts of this, feel free to fork it and say what <em>you</em> want to say.</p>\r\n',311,0,0,'CC-0','open source, free software, communal software, cooperative technology, politics, philosophy',0,0,1),
(3315,'2021-04-16','tesseract optical character recognition',128,'How to use this amazing tool','<h3>Tesseract (software)</h3>\r\n<em>From Wikipedia, the free encyclopedia</em>\r\n<p>\r\nTesseract is an optical character recognition engine for various operating systems. It is free software, released under the Apache License. Originally developed by Hewlett-Packard as proprietary software in the 1980s, it was released as open source in 2005 and development has been sponsored by Google since 2006.<br />\r\nIn 2006, Tesseract was considered one of the most accurate open-source OCR engines then available.\r\n</p>\r\n<pre>\r\n<code>\r\n$ tesseract -l eng english-page.jpg english\r\n$ tesseract -l nld dutch-page.jpg dutch\r\n$ ls\r\ndutch.txt english.txt \r\n</code>\r\n</pre>',30,0,0,'CC-BY-SA','Tesseract, OCR, optical character recognition',0,0,1),
(3319,'2021-04-22','Linux Inlaws S01E28: Politicians and artificial intelligence part 1',4023,'Part 1 of a miniseries on AI, ML, DL and other fun','<p>In this episode, our two heroes explore the realm of artificial intelligence, paying special attention to deep learning (hoping that some\r\nof the stuff may rub on them :-). In this first part of a three-part mini-series the chaps discuss the foundation including networks, neurons\r\nand other topics of advanced black magic, carefully avoiding the temptations of introducing too much maths (we\'ll leave this to the Grumpy Old Coders :-).</p>\r\n<h2>Links:</h2>\r\n<ul>\r\n<li>Artificial intelligence: <a href=\"https://en.wikipedia.org/wiki/Artificial_intelligence\" target=\"_blank\">https://en.wikipedia.org/wiki/Artificial_intelligence</a>\r\n</li>\r\n<li>Machine learning: <a href=\"https://www.mygreatlearning.com/blog/machine-learning-tutorial\" target=\"_blank\">https://www.mygreatlearning.com/blog/machine-learning-tutorial</a>\r\n</li>\r\n<li>Deep learning: <a href=\"https://www.guru99.com/deep-learning-tutorial.html\" target=\"_blank\">https://www.guru99.com/deep-learning-tutorial.html</a>\r\n</li>\r\n<li>Artificial neural networks (ANN): <a href=\"https://www.asimovinstitute.org/neural-network-zoo\" target=\"_blank\">https://www.asimovinstitute.org/neural-network-zoo</a>\r\n</li>\r\n<li>Back-propagation ANNs (BPN): <a href=\"https://en.wikipedia.org/wiki/Backpropagation\" target=\"_blank\">https://en.wikipedia.org/wiki/Backpropagation</a>\r\n</li>\r\n<li>DWAVE: <a href=\"https://www.dwavesys.com/quantum-computing\" target=\"_blank\">https://www.dwavesys.com/quantum-computing</a>\r\n</li>\r\n<li>Convolutional neural networks (CNNs): <a href=\"https://en.wikipedia.org/wiki/Convolutional_neural_network\" target=\"_blank\">https://en.wikipedia.org/wiki/Convolutional_neural_network</a>\r\n</li>\r\n<li>Generative adversarial network (GAN): <a href=\"https://en.wikipedia.org/wiki/Generative_adversarial_network\" target=\"_blank\">https://en.wikipedia.org/wiki/Generative_adversarial_network</a>\r\n</li>\r\n<li>Spy vs. Spy: <a href=\"https://toonopedia.com/spyvsspy.htm\" target=\"_blank\">https://toonopedia.com/spyvsspy.htm</a>\r\n</li>\r\n<li>Atlantik Ale: <a href=\"https://www.stoertebeker.com/stoertebeker-atlantik-ale.html\" target=\"_blank\">https://www.stoertebeker.com/stoertebeker-atlantik-ale.html</a>\r\n</li>\r\n</ul>\r\n',384,111,1,'CC-BY-SA','Policitians, artificial intelligence, deep learning, convolutions',0,0,1),
(3313,'2021-04-14','Zoom Update',102,'Scripted Zoom Update with History on Fedora.','<ul>\r\n<li>Script and instruction at <a href=\"https://james.toebesacademy.com/ZoomUpdate.html\" class=\"uri\">https://james.toebesacademy.com/ZoomUpdate.html</a></li>\r\n<li>GitHub Repo: <a href=\"https://github.com/ToeJet/Scripts/tree/main/ZOOMUPDATE\" class=\"uri\">https://github.com/ToeJet/Scripts/tree/main/ZOOMUPDATE</a></li>\r\n</ul>\r\n<p>Zoom does not provide a standard Fedora repo for updating. To get around that, this script will check the zoom fedora download link. If an update is found, it will download the new version, stop the current version from running, then install the updated package. All versions are downloaded to the same folder as the script. Filename is changed to match datestamp.</p>\r\n<p>I leave my linux machine always running. I schedule this to run just after midnight. If no update, nothing happens. If zoom is not running when I unlock, I launch zoom as normal.</p>\r\n<ul>\r\n<li>Bash Script.</li>\r\n<li>Uses wget</li>\r\n<li>Cron for scheduling</li>\r\n<li>Download, cron, forget...</li>\r\n<li>Periodically review log to see update history</li>\r\n</ul>\r\n<p>james@toebesacademy.com<br />\r\n<a href=\"https://james.toebesacademy.com\" class=\"uri\">https://james.toebesacademy.com</a><br />\r\nLet me know what you think.</p>\r\n',273,108,1,'CC-BY-SA','zoom update,sysadmin automation',0,0,1),
(3318,'2021-04-21','Modding a Wii classic with a DNS exploit',457,'Modding a Wii with a DNS exploit and using a USB drive to save games','<ol type=\"1\">\r\n<li>Wii Options &gt; Wii Settings</li>\r\n<li>Verify version is 4.3\r\n<ul>\r\n<li>If not,</li>\r\n<li>Is the Wii connected to the internet</li>\r\n<li>If not, go to Connection Settings\r\n<ul>\r\n<li>Pick Connection 1</li>\r\n<li>Enter wifi connection info</li>\r\n<li>perform Wii System Update (Page 3 of Wii Settings)</li>\r\n</ul></li>\r\n</ul></li>\r\n<li>Wii Settings &gt; Internet\r\n<ul>\r\n<li>Go to Change Settings</li>\r\n<li>A few pages over is Auto-Obtain DNS\r\n<ul>\r\n<li>Select No and Advanced Settings</li>\r\n<li>Enter Primary DNS: 97.74.103.14</li>\r\n<li>Enter Secondary DNS: 173.201.71.14</li>\r\n</ul></li>\r\n<li>Confirm and Save Settings</li>\r\n<li>Press Ok to perform Connection Test</li>\r\n<li>This does take a while, be patient because the Wii is slow</li>\r\n<li>Go back a couple of pages to Internet Settings</li>\r\n<li>Go to User Agreements\r\n<ul>\r\n<li>Would you like to use the Wii Shop Channel and WiiConnect24?</li>\r\n<li>Select Yes</li>\r\n<li>You must review the User Agreements before using the Wii network services.</li>\r\n<li>Select Next</li>\r\n<li>Connecting to Internet... Please wait a moment.</li>\r\n<li>Another screen will appear with message to \"Please wait, this will take 1-2 minutes.\"\r\n<ul>\r\n<li>Do NOT press I Accept at this point, or it will go to the previous screen.</li>\r\n<li>These next two screens will show up, one with console text, which is the exploit, and the next look like static. This is ok</li>\r\n<li>The next screen is a message not to be scammed by buying a copy of HackMii. Wait for the option to press \'1\' to continue.</li>\r\n<li>The HackMii menu will now appear, press \'A\' to continue.</li>\r\n<li>On the HackMii installer screen, use the D-pad on the Wii to arrow up to Install The HomeBrew Channel.</li>\r\n</ul></li>\r\n</ul></li>\r\n<li>At this point the Wii can be powered off.</li>\r\n</ul></li>\r\n<li>Install Wii Homebrew Browser <a href=\"https://oscwii.org/\" class=\"uri\">https://oscwii.org/</a>\r\n<ul>\r\n<li>I have read that a 2gb non-hd sd card was needed, but found that up to a 32gb card works just fine.</li>\r\n<li>Remove the sd card and download and extract the zip file on the main page.</li>\r\n<li>Move the folder on the root of the sd card (i.e. <code>apps/homebrew_browser/</code>).</li>\r\n<li>More applications can now be accessed from the Homebrew Browser.</li>\r\n</ul></li>\r\n<li>Adding roms (i.e. Nintendo 64 games)\r\n<ul>\r\n<li>From the Homebrew Browser, add the not64 emulator, as the Wii64 would not save games for me. This is an updated version of the Wii64 emulator.</li>\r\n<li>At the root of the sd card, if it is not already there, create a not64/roms folder and place the roms in here.</li>\r\n</ul></li>\r\n<li>Play Wii games from a USB drive\r\n<ul>\r\n<li>First need to install cIOS (custom OS)\r\n<ul>\r\n<li>Will be installing:\r\n<ul>\r\n<li>cIOS 249 base 56 v10 beta52, some guides say cIOS 249 base 56 beta52-alt, YMMV.</li>\r\n<li>cIOS 250 base 57 v10 beta52</li>\r\n</ul></li>\r\n</ul></li>\r\n<li>From the Homebrew Browser, go to the Utilities tab and install USBLoader and the d2x cIOS installer.</li>\r\n<li>Wait for the app to load.</li>\r\n<li>You will see the main screen, press A\r\n<ul>\r\n<li>Change the following:\r\n<ul>\r\n<li>cIOS to v10 beta 52 d2x-v10-beta52-alt</li>\r\n<li>base to 56</li>\r\n<li>slot to 249</li>\r\n<li>revision to 65535</li>\r\n</ul></li>\r\n<li>Press A to load these values</li>\r\n</ul></li>\r\n<li>The app will go back to the main screen, just go right back into the app.\r\n<ul>\r\n<li>Change the following:\r\n<ul>\r\n<li>cIOS to v10 beta 52 d2x-v10-beta52</li>\r\n<li>base to 57</li>\r\n<li>slot to 250</li>\r\n<li>revision to 65535</li>\r\n</ul></li>\r\n<li>Press A to load these values</li>\r\n</ul></li>\r\n<li>You are now ready to format the external USB drive\r\n<ul>\r\n<li>This can be either FAT32 or ext4</li>\r\n<li>Plug in the USB drive afterwards and load the USBloader</li>\r\n<li>It only works in one USB slot, so if this is not recognized the first time, move the plug to the other slot.</li>\r\n<li>Now you can save games from Wii disks, or load roms from the same drive</li>\r\n<li>Roms are placed at the root of the USB drive with the format of <emulator>/roms/</li>\r\n</ul></li>\r\n</ul></li>\r\n<li>That\'s all.</li>\r\n</ol>\r\n<h3 id=\"sources\">Sources:</h3>\r\n<ul>\r\n<li><p>Homebrew the Nintendo Wii WITHOUT an SD Card or the Internet Channel! (str2hax Tutorial)<br />\r\n<a href=\"https://www.youtube.com/watch?v=Y3jq8dVe2ug&amp;list=PLXCLabMctsBdCKq6d-lpkzVLxIK9W8hjV&amp;index=2\" class=\"uri\">https://www.youtube.com/watch?v=Y3jq8dVe2ug&amp;list=PLXCLabMctsBdCKq6d-lpkzVLxIK9W8hjV&amp;index=2</a></p></li>\r\n<li><p>WiiBrew wiki - Configuring applications<br />\r\n<a href=\"https://wiibrew.org/wiki/Homebrew_Channel#Configuring_Applications\" class=\"uri\">https://wiibrew.org/wiki/Homebrew_Channel#Configuring_Applications</a></p></li>\r\n<li><p>Backup &amp; Play Wii Games on a USB Drive! - USBLoader GX Tutorial<br />\r\n<a href=\"https://www.youtube.com/watch?v=D66pyQLQCmg&amp;list=PLXCLabMctsBdCKq6d-lpkzVLxIK9W8hjV&amp;index=3\" class=\"uri\">https://www.youtube.com/watch?v=D66pyQLQCmg&amp;list=PLXCLabMctsBdCKq6d-lpkzVLxIK9W8hjV&amp;index=3</a></p></li>\r\n<li><p>cIOS Installation<br />\r\n<a href=\"https://sites.google.com/site/completesg/backup-launchers/installation\" class=\"uri\">https://sites.google.com/site/completesg/backup-launchers/installation</a></p></li>\r\n<li><p>str2hax is an exploit for the EULA app in the Wii that doesn\'t require an SD card.<br />\r\n<a href=\"https://www.wiibrew.org/wiki/Str2hax\" class=\"uri\">https://www.wiibrew.org/wiki/Str2hax</a></p></li>\r\n</ul>\r\n<h3 id=\"more-reading\">More reading</h3>\r\n<ul>\r\n<li>WiiBrew main wiki page<br />\r\n<a href=\"https://www.wiibrew.org/wiki/Main_Page\" class=\"uri\">https://www.wiibrew.org/wiki/Main_Page</a></li>\r\n</ul>\r\n<!--\r\nvim: syntax=markdown:ts=8:sw=4:ai:et:tw=78:fo=tcqn:fdm=marker:com+=fb\\:-\r\n-->\r\n',318,0,0,'CC-BY-SA','games, wii console',0,0,1),
(3321,'2021-04-26','DNS66 URANDOM RANDOM',1911,'I talk about D N S 66 and go over some comments from Urandom episode ','<ul>\r\n<li><p>DNS66 apk<br />\r\n<a href=\"https://f-droid.org/packages/org.jak_linux.dns66/\" class=\"uri\">https://f-droid.org/packages/org.jak_linux.dns66/</a></p></li>\r\n<li><p>for more ads:<br />\r\n<a href=\"https://adaway.org/hosts.txt\" class=\"uri\">https://adaway.org/hosts.txt</a></p></li>\r\n<li><p>for blocking pinterest<br />\r\n<a href=\"https://rmccurdy.com/.scripts/hosts.file.pinterest.txt\" class=\"uri\">https://rmccurdy.com/.scripts/hosts.file.pinterest.txt</a></p></li>\r\n<li><p><a href=\"https://www.reddit.com/r/browsers/comments/jr6k6d/is_brave_browser_really_that_bad/\" class=\"uri\">https://www.reddit.com/r/browsers/comments/jr6k6d/is_brave_browser_really_that_bad/</a></p></li>\r\n<li><p><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</ul>\r\n',36,0,0,'CC-BY-SA','block ads,ads,android,youtube,media,streaming',0,0,1),
(3314,'2021-04-15','Introduction... A little bit about me',226,'My first HPR episode, introducing myself and sharing a bit about me','<p>Inoffensive in every region of the world. Meeting me is a completely different story.</p>\r\n<p>Name is Trey. I have been listening to HPR for about a year and after hearing repeated pleas for episodes, I thought I would record some of my own.</p>\r\n<p>I cannot guarantee quality of production nor content, but I hope you find them entertaining.</p>\r\n<p>This episode is simply an introduction with a little bit of information about me</p>\r\n<p>My love of computers began 40 years ago when my parents scrimped and saved to purchase a Texas Instruments TI-99/4a computer. I began programming in BASIC, saving programs to audio cassette tapes. I remember buying magazines to get new programs to enter, save, edit, and turn into something different.</p>\r\n<p>Soon I expanded the computer to include 32K of RAM and an RS232 card which allowed me to connect a 300 BAUD modem and connect to bulletin board systems (BBS). BBS became my connection to the world.</p>\r\n<p>I later upgraded to a Commodore 64, which gave me a floppy disk. Much faster than saving to tape. I studied electronics &amp; computers in college, then went to work for a large computer vendor, traveling all over fixing computers, networks, and peripherals.</p>\r\n<p>After about a decade, I joined a different company where I worked in systems administration and engineering, with a focus on information security. I have worked as security analyst, incident responder, security engineer, and security architect, then built out and managed the SOC for a large organization.</p>\r\n<p>Today, I am still focused on information security and I also dabble in clock repair, Ham radio, electronics, and photography. I may record some episodes on some of these topics in the future.</p>\r\n<p>Thank you for listening to me prattle on about myself, and have an awesome day.</p>\r\n',394,0,0,'CC-BY-SA','Introduction',0,0,1),
(3316,'2021-04-19','FSF and RMS on election of Richard Stallman',841,'The Free Software Foundation (FSF) and Richard Stallman have released statements on the matter','<hr />\r\n<h3>Counter Point</h3>\r\n<p>This show is a counter point to: <a href=\"https://hackerpublicradio.org/eps.php?id=3311\">hpr3311 :: Bradley M. Kuhn\'s article from 2019 on Richard M. Stallman</a>\r\n</p>\r\n<hr />\r\n<p><a href=\"https://en.wikipedia.org/wiki/Richard_Stallman\">From Wikipedia, the free encyclopedia</a> <quote> In September 2019, Richard Stallman resigned as president of the FSF and left his “visiting scientist” role at MIT after making controversial comments about Marvin Minsky’s alleged role in the Jeffrey Epstein sex trafficking scandal. Stallman remained head of the GNU Project nevertheless and, in 2021, he returned to the FSF board of directors. </quote></p>\r\n<p>Since the show was submitted both the Free Software Foundation (FSF) and Richard Stallman have released statements on the matter.</p>\r\n<p>I am submitting those statements here under the terms of the <a href=\"https://creativecommons.org/licenses/by-nd/3.0/\">Creative Commons Attribution-No Derivative Works 3.0 license</a>. The statements contains many links which are available in the shownotes for this show.</p>\r\n<h1 id=\"statement-of-fsf-board-on-election-of-richard-stallman\">Statement of FSF board on election of Richard Stallman</h1>\r\n<p>Published on Apr 12, 2021 10:25 AM by <a href=\"https://www.fsf.org/author/fsfweb\">Free Software Foundation</a></p>\r\n<p>\r\nThe voting members of the Free Software Foundation, which include the board of directors, voted to appoint Richard Stallman to a board seat after several months of thorough discussion and thoughtful deliberation.\r\n</p>\r\n<p>\r\nWe decided to bring RMS back because we missed his wisdom. His historical, legal and technical acumen on free software is unrivaled. He has a deep sensitivity to the ways that technologies can contribute to both the enhancement and the diminution of basic human rights. His global network of connections is invaluable. He remains the most articulate philosopher and an unquestionably dedicated advocate of freedom in computing.\r\n</p>\r\n<p>\r\n<a href=\"https://www.fsf.org/news/rms-addresses-the-free-software-community\">RMS acknowledges that he has made mistakes.</a> He has sincere regrets, especially at how anger toward him personally has negatively impacted the reputation and mission of FSF. While his personal style remains troubling for some, a majority of the board feel his behavior has moderated and believe that his thinking strengthens the work of the FSF in pursuit of its mission.\r\n</p>\r\n<p>\r\nWe take full responsibility for how badly we handled the news of his election to a board seat. We had planned a flow of information that was not executed in a timely manner or delivered in the proper sequence.\r\n</p>\r\n<p>\r\nFSF staff should have been informed and consulted first. The announcement by RMS at LibrePlanet was a complete surprise to staff, all those who worked so hard to organize a great event, to LibrePlanet speakers and to the exhibitors. We had hoped for a more inclusive and thoughtful process and we apologize that this did not occur.\r\n</p>\r\n<p>\r\nIn his position on the board, RMS has the same responsibilities as other members. He is an unpaid volunteer and subject to the organization’s policies, including prohibitions against conflicts of interest and sexual harassment and those outlining whistleblower processes and fiduciary duties. The responsibilities of the board are described at <a href=\"https://www.fsf.org/about/the-role-of-the-fsfs-board-of-directors\">https://www.fsf.org/about/the-role-of-the-fsfs-board-of-directors</a>.\r\n</p>\r\n<p>\r\nWe believe his views will be critical to the FSF as we advance the mission and confront the challenges that software freedom faces.\r\n</p>\r\n<p>\r\nIn recent weeks, the board has <a href=\"https://www.fsf.org/news/preliminary-board-statement-on-fsf-governance\">committed to a series of changes</a> related to <a href=\"https://www.fsf.org/news/update-on-work-to-improve-governance-at-the-fsf\">organizational governance</a>, including plans to adopt a transparent, formal process for identifying appropriate candidates to become new board members, future changes to the organization’s bylaws, and the addition of a staff representative to the board of directors.\r\n</p>\r\n<p>\r\nSelected by FSF’s unionized staff, senior systems administrator <a href=\"https://www.fsf.org/news/welcoming-ian-kelling-to-staff-seat-on-fsfs-board-of-directors\">Ian Kelling was elected</a> to a newly created staff seat on the board of directors as a voting member on March 28.\r\n</p>\r\n<p>\r\nThe FSF board will continue to pursue additional ideas and actions designed to improve transparency and accountability.\r\n</p>\r\n<p>\r\nThere is still considerable work to be done. We recognize the need to attract a new generation of activists for software freedom and to grow the movement. We will report our discussions and activities to the community as we move forward.\r\n</p>\r\n<p>\r\nAs we work on these issues, let’s not forget the purpose of our movement, or the great work of our staff and all the good people of the free software community who are dedicated to users’ freedom.\r\n</p>\r\n<hr />\r\n<h1 id=\"rms-addresses-the-free-software-community\">RMS addresses the free software community</h1>\r\n<p>Published on Apr 12, 2021 10:24 AM by <a href=\"https://www.fsf.org/author/rms\">Richard Stallman</a></p>\r\n<p>\r\nEver since my teenage years, I felt as if there were a filmy curtain separating me from other people my age. I understood the words of their conversations, but I could not grasp why they said what they did. Much later I realized that I didn’t understand the subtle cues that other people were responding to.\r\n</p>\r\n<p>\r\nLater in life, I discovered that some people had negative reactions to my behavior, which I did not even know about. Tending to be direct and honest with my thoughts, I sometimes made others uncomfortable or even offended them – especially women. This was not a choice: I didn’t understand the problem enough to know which choices there were.\r\n</p>\r\n<p>\r\nSometimes I lost my temper because I didn’t have the social skills to avoid it. Some people could cope with this; others were hurt. I apologize to each of them. Please direct your criticism at me, <a href=\"https://www.fsf.org/news/statement-of-fsf-board-on-election-of-richard-stallman\">not at the Free Software Foundation</a>.\r\n</p>\r\n<p>\r\nOccasionally I learned something about relationships and social skills, so over the years I’ve found ways to get better at these situations. When people help me understand an aspect of what went wrong, and that shows me a way of treating people better, I teach myself to recognize when I should act that way. I keep making this effort, and over time, I improve.\r\n</p>\r\n<p>\r\nSome have described me as being “tone-deaf,” and that is fair. With my difficulty in understanding social cues, that tends to happen. For instance, I defended Professor Minsky on an M.I.T. mailing list after someone leaped to the conclusion that he was just guilty as Jeffrey Epstein. To my surprise, some thought my message defended Epstein. As I had stated previously, Epstein is a serial rapist, and rapists should be punished. I wish for his victims and those harmed by him to receive justice.\r\n</p>\r\n<p>\r\nFalse accusations – real or imaginary, against me or against others – especially anger me. I knew Minsky only distantly, but seeing him unjustly accused made me spring to his defense. I would have done it for anyone. Police brutality makes me angry, but when the cops lie about their victims afterwards, that false accusation is the ultimate outrage for me. I condemn racism and sexism, including their systemic forms, so when people say I don’t, that hurts too.\r\n</p>\r\n<p>\r\nIt was right for me to talk about the injustice to Minsky, but it was tone-deaf that I didn’t acknowledge as context the injustice that Epstein did to women or the pain that caused.\r\n</p>\r\n<p>\r\nI’ve learned something from this about how to be kind to people who have been hurt. In the future, that will help me be kind to people in other situations, which is what I hope to do.\r\n</p>\r\n<hr />\r\n<h1 id=\"the-role-of-the-fsfs-board-of-directors\">The role of the FSF’s board of directors</h1>\r\n<p>Published on Mar 22, 2021 10:55 PM by <a href=\"https://www.fsf.org/author/fsfweb\">Free Software Foundation</a></p>\r\n<p>\r\nThe FSF board believes it is its responsibility – to free software community members, donors, movement organizations, and the general public – to be a model of good governance.\r\n</p>\r\n<p>\r\nGood governance starts with the board of directors, which oversees the organization and is ultimately responsible for its success. The board’s role (and legal obligation) is to oversee the management of the organization and ensure that the organization fulfills its mission.\r\n</p>\r\n<p>\r\nThe board enables good management by overseeing the President and executive director, who in turn manages staff. The board’s oversight role includes decision-making, monitoring and leadership.\r\n</p>\r\n<p>\r\nIn its decision-making capacity, the board:\r\n</p>\r\n<ul>\r\n<li>\r\n<p>\r\ndetermines the mission and purposes of the FSF;\r\n</p>\r\n</li>\r\n<li>\r\n<p>\r\ndrives the FSF’s long-term strategy and goals;\r\n</p>\r\n</li>\r\n<li>\r\n<p>\r\nformulates and regularly reviews significant corporate policies;\r\n</p>\r\n</li>\r\n<li>\r\n<p>\r\nselects and evaluates the President, executive director and other officers, including determining compensation based on relevant data for the paid positions; and\r\n</p>\r\n</li>\r\n<li>\r\n<p>\r\ncreates and maintains effective succession plans for the FSF’s leadership positions.\r\n</p>\r\n</li>\r\n</ul>\r\n<p>\r\nIn its monitoring capacity, the board:\r\n</p>\r\n<ul>\r\n<li>\r\n<p>\r\nevaluates how well the FSF is fulfilling its mission, values, goals, and vision, including evaluating relevant risks;\r\n</p>\r\n</li>\r\n<li>\r\n<p>\r\nmonitors the FSF’s financial performance and use of assets, including approving the annual budget;\r\n</p>\r\n</li>\r\n<li>\r\n<p>\r\nconducts regular reviews of the FSF’s internal controls and financial reporting;\r\n</p>\r\n</li>\r\n<li>\r\n<p>\r\noversees compliance with legal obligations and organizational policies, such as those against conflicts of interest; and\r\n</p>\r\n</li>\r\n<li>\r\n<p>\r\ndiscusses its own performance as the leading governing body.\r\n</p>\r\n</li>\r\n</ul>\r\n<p>\r\nIn its leadership capacity, the board:\r\n</p>\r\n<ul>\r\n<li>\r\n<p>\r\nmaintains the legal and ethical integrity of the organization;\r\n</p>\r\n</li>\r\n<li>\r\n<p>\r\nenhances and protects the FSF’s public image;\r\n</p>\r\n</li>\r\n<li>\r\n<p>\r\nadvises and provides guidance to the President, executive director, and other officers, drawing on relevant board member expertise;\r\n</p>\r\n</li>\r\n<li>\r\n<p>\r\nparticipates in fundraising to develop resources for a robust and strong organization;\r\n</p>\r\n</li>\r\n<li>\r\n<p>\r\nrecruits and orients new board members; and\r\n</p>\r\n</li>\r\n<li>\r\n<p>\r\nworks with the President and executive director to help communicate the FSF’s direction and activities to the public.\r\n</p>\r\n</li>\r\n</ul>\r\n<p>\r\nFSF board members are not compensated for their board service, and are not permitted to receive any personal financial benefit from FSF funds or other assets. Board members may be reimbursed for reasonable and appropriate expenses incurred in connection with their board service.\r\n</p>\r\n<p>\r\nFor further information, see the <a href=\"https://static.fsf.org/nosvn/fsf-amended-bylaws-current.pdf\">FSF’s bylaws</a>.\r\n</p>\r\n<hr />\r\n<h1 id=\"preliminary-board-statement-on-fsf-governance\">Preliminary board statement on FSF governance</h1>\r\n<p>Published on Mar 25, 2021 12:00 AM by <a href=\"https://www.fsf.org/author/fsfweb\">Free Software Foundation</a></p>\r\n<p>\r\nOn Wednesday, the FSF board of directors committed to a series of changes related to organizational governance and the appointment of members to its board of directors:\r\n</p>\r\n<ul>\r\n<li>\r\n<p>\r\nWe will adopt a transparent, formal process for identifying candidates and appointing new board members who are wise, capable, and committed to the FSF’s mission. We will establish ways for our supporters to contribute to the discussion.\r\n</p>\r\n</li>\r\n<li>\r\n<p>\r\nWe will require all existing board members to go through this process as soon as possible, in stages, to decide which of them remain on the board.\r\n</p>\r\n</li>\r\n<li>\r\n<p>\r\nWe will add a staff representative to the board of directors. The FSF staff will elect that person.\r\n</p>\r\n</li>\r\n<li>\r\n<p>\r\nThe directors will consult with legal counsel about changes to the organization’s by-laws to implement these changes. We have set ourselves a deadline of thirty days for making these changes.\r\n</p>\r\n</li>\r\n</ul>\r\n<p>\r\nThe board will meet again Thursday, March 25, to consider further decisions.\r\n</p>\r\n<hr />\r\n<h1 id=\"update-on-work-to-improve-governance-at-the-fsf\">Update on work to improve governance at the FSF</h1>\r\n<p>Published on Mar 25, 2021 11:52 PM by <a href=\"https://www.fsf.org/author/fsfweb\">Free Software Foundation</a></p>\r\n<h3>\r\nSummary of actions from the board and voting member meetings of Thursday, March 25, 2021:\r\n</h3>\r\n<p>\r\nThe voting members unanimously agreed to elect a union staff member, selected by the FSF union staff, to be a full voting member and director. The first such representative will be elected as soon as the staff chooses one. The FSF will adopt by-law changes to implement this as a requirement going forward.\r\n</p>\r\n<p>\r\nThe board of directors is soliciting proposals from qualified consultants to assist in creating a transparent, formal process for identifying candidates and appointing board members who are wise, capable, and committed to the FSF’s mission. The FSF intends to rewrite the by-laws in a way that binds the organization to transparency in its choice of directors. This process will establish ways for FSF associate members and supporters to meaningfully contribute to the discussion. The board is looking for proposals to be received by Friday, April 2, 2021. Please email <a href=\"mailto:info@fsf.org\">info@fsf.org</a> with the subject “Director Transparency Engagement” for details.\r\n</p>\r\n<p>\r\nFSF president Geoffrey Knauth announced, “I commit myself to resign as an FSF officer, director, and voting member as soon as there is a clear path for new leadership assuring continuity of the FSF’s mission and compliance with fiduciary requirements.”\r\n</p>\r\n<p>\r\nThe board of directors will continue this work at its next meeting, scheduled for Sunday, March 28.\r\n</p>\r\n<p>\r\n<p><a href=\"https://www.fsf.org/news/preliminary-board-statement-on-fsf-governance\">Read yesterday’s preliminary board statement.</a></p>\r\n<hr />\r\n<h1 id=\"welcoming-ian-kelling-to-staff-seat-on-fsfs-board-of-directors\">Welcoming Ian Kelling to staff seat on FSF’s board of directors</h1>\r\n<p>by <a href=\"https://www.fsf.org/author/fsfweb\">Free Software Foundation</a> Published on Mar 28, 2021 09:21 PM</p>\r\n<p>\r\n<em>by Geoffrey Knauth, FSF president</em>\r\n</p>\r\n<p>\r\nAs the next step to implement the plan outlined in the board’s announcements last <a href=\"https://www.fsf.org/news/preliminary-board-statement-on-fsf-governance\">Wednesday</a> and <a href=\"https://www.fsf.org/news/update-on-work-to-improve-governance-at-the-fsf\">Friday</a> to improve governance at the FSF, at today’s meeting we officially elected the staff’s selection for their newly created seats on the board of directors and voting members.\r\n</p>\r\n<p>\r\nUnion staff selected senior systems administrator Ian Kelling to be the first in this role. At the end of today’s board meeting, we officially welcomed Ian to both bodies. The board and voting members look forward to having the participation of the staff via this designated seat in our future deliberations. This is an important step in the FSF’s effort to recognize and support new leadership, to connect that leadership to the community, to improve transparency and accountability, and to build trust. There is still considerable work to be done, and that work will continue.\r\n</p>\r\n<p>\r\nI have always known that the FSF has good and hard-working staff, but with the success of LibrePlanet 2021, and in talking with staff during the controversy that unfolded immediately afterward, I have no doubt it is essential to involve staff much more in decision-making and strategy discussions. The advice they have offered in the last week alone has been invaluable. I sincerely believe this step in improving FSF governance will lead to better outcomes going forward. In all my interactions with Ian so far, he has demonstrated abundant wisdom and intelligence.\r\n</p>\r\n<p>\r\nKat Walsh announced her resignation from the board of directors last week and it became effective at the end of our board meeting on Sunday, March 28, 2021. Kat has been a great help in discussing difficult issues over the years. We appreciate the expert knowledge and service she gave us and offer Kat our best wishes and sincere thanks.\r\n</p>\r\n<p>\r\nThe FSF board will meet again on Monday, March 29, 2021.\r\n</p>\r\n<hr />\r\n<p>Note: This show was submitted anonymously by Ken.</p>\r\n',393,0,0,'CC-BY-SA','FSF, RMS',0,0,1),
(3324,'2021-04-29','Infosec Podcasts Part 1  News and Current Events ',438,'Presenting my favorite information security news and current events podcasts','<p>Inoffensive in every region of the world</p>\r\n<p>Hello, again. This is Trey. This is part 1 of a 6 part series related to information security podcasts.</p>\r\n<p>Why am I recording this series?</p>\r\n<p>\"What podcasts you listen to\" was on the list of recommended topics</p>\r\n<p>I am passionate about information security</p>\r\n<p>We desperately need people to fill infosec jobs in many different specialties</p>\r\n<p>Infosec is a rapidly changing field, and it is critical to stay current</p>\r\n<p>As a result I listen to TONS of infosec related podcasts</p>\r\n<p>Because there are so many podcasts to list, I will break them down into 6 different episodes based on topics:</p>\r\n<ul>\r\n<li>Part 1 – News &amp; Current Events</li>\r\n<li>Part 2 – General Information Security</li>\r\n<li>Part 3 - Career &amp; Personal Development</li>\r\n<li>Part 4 – Social Engineering</li>\r\n<li>Part 5 -\r\n<ul>\r\n<li>Hacks &amp; Attacks</li>\r\n<li>Technical Information &amp; Learning</li>\r\n<li>Infosec Community / Social / History</li>\r\n</ul></li>\r\n<li>Part 6 – Infosec Leadership</li>\r\n</ul>\r\n<h2 id=\"part-1\">Part 1</h2>\r\n<p>Infosec News / current events podcasts – Why?</p>\r\n<p>Stay aware of what is happening for your own personal growth</p>\r\n<p>If you already work in IT or Infosec, you can have early awareness about attacks to look for indicators of compromise, or learn new tools and techniques</p>\r\n<p>You can get a head start answering questions from leadership, when they ask about something they heard on the news or from a peer.</p>\r\n<ul>\r\n<li><p>SANS Internet Stormcenter Stormcast - Dr. Johannes Ullrich (Daily M-F)<br />\r\nThe latest Cybersecurity news<br />\r\n<a href=\"https://isc.sans.edu/podcast.html\" class=\"uri\">https://isc.sans.edu/podcast.html</a></p></li>\r\n<li><p>Cyber Security Headlines (Daily M-F)<br />\r\nDaily podcast with the latest Cybersecurity news<br />\r\nCaps off Friday with a weekly review<br />\r\n<a href=\"https://cisoseries.com/category/podcast/cyber-security-headlines/\" class=\"uri\">https://cisoseries.com/category/podcast/cyber-security-headlines/</a><br />\r\n</p></li>\r\n<li><p>The Cyberwire - Dave Bitner (Daily M-F – Drops in afternoon)<br />\r\nDaily podcast with the latest Cybersecurity news<br />\r\n<a href=\"https://thecyberwire.com/podcasts\" class=\"uri\">https://thecyberwire.com/podcasts</a></p></li>\r\n<li><p>Shared Security Show – Tom Eston, Scott Wright, &amp; Kevin Johnson (Weekly)<br />\r\nNews, tips, advice, and interviews with cybersecurity professionals and privacy experts.<br />\r\n<a href=\"https://sharedsecurity.net/\" class=\"uri\">https://sharedsecurity.net/</a></p></li>\r\n<li><p>Transatlantic Cable Podcast – Sponsored by Kaspersky with Jeff Esposito &amp; David Buxton (Weekly)<br />\r\nA weekly infosec news discussion<br />\r\n<a href=\"https://www.kaspersky.com/blog/kaspersky-transatlantic-podcast/\" class=\"uri\">https://www.kaspersky.com/blog/kaspersky-transatlantic-podcast/</a></p></li>\r\n<li><p>Security Now- Steve Gibson, Leo Laporte (Weekly)<br />\r\nPart of the TWIT TV Network<br />\r\nSteve Gibson, the man who coined the term spyware and created the first anti-spyware program, creator of Spinrite and ShieldsUP, discusses the hot topics in security today.<br />\r\nSpinrite has helped me salvage many a hard drive over the last few decades. I\'m a big fan of Steve Gibson<br />\r\nDoes a great job of simplifying technical topics.<br />\r\n<a href=\"https://twit.tv/shows/security-now\" class=\"uri\">https://twit.tv/shows/security-now</a></p></li>\r\n<li><p>The Security Ledger – Paul Roberts (Weekly)<br />\r\nA weekly podcast mixing news and interviews<br />\r\n<a href=\"https://securityledger.com/\" class=\"uri\">https://securityledger.com/</a></p></li>\r\n<li><p>Risky Business podcast - Patrick Gray and Adam Boileau (Weekly)<br />\r\nDiscusses the week\'s security news from the Land Down Under.<br />\r\nAlso includes periodic vendor interviews.<br />\r\nSometimes the discussion may get a bit political.<br />\r\n<a href=\"https://risky.biz/\" class=\"uri\">https://risky.biz/</a></p></li>\r\n</ul>\r\n<p>I hope that this episode has introduced you to some new sources of information. Give some of them a try, and I would love to get your feedback.</p>\r\n<p>Thank you for listening.</p>\r\n',394,74,0,'CC-BY-SA','infosec, podcasts, security',0,0,1),
(3322,'2021-04-27','Tune system performance with tuned',1361,'Introduction to tuned and tuned-adm','<p>\r\nThe tuned-adm command switches profiles to help you fine-tune your Linux system\'s performance.\r\n</p>\r\n\r\n<p>\r\nFor more about performance, see <a target=\"_blank\" href=\"https://01.org/powertop/blogs/ayates1/2016/powertop-linuxcon-2015\">Powertop Linuxcon 2015 presentation</a> and maybe listen to <a href=\"https://gnuworldorder.info/#379\" target=\"_blank\">my GNU World Order episode</a>\r\n</p>',78,0,0,'CC-BY-SA','linux',0,0,1),
(3323,'2021-04-28','The alternate Internet you never knew existed',1757,'I changed my DNS server and you won\'t believe what happened next.','<p>\r\nA not-brief introduction to OpenNIC, the open and democratic domain name and number registry.\r\n</p>',78,0,0,'CC-BY-SA','ICANN, IANA, DNS',0,0,1),
(3325,'2021-04-30','Games and rules',1499,'Talking about the conundrum of rules-light and rules-heavy game systems','<p>There are three nodes. You can choose two.\r\n</p>\r\n\r\n<pre>\r\n<code>\r\n         o Rules\r\n        / \\\r\n       /   \\\r\nTrust ó-----ò Competition\r\n</code>\r\n</pre>',78,95,0,'CC-BY-SA','rpg,rules,game',0,0,1),
(3329,'2021-05-06','Linux Inlaws S01E29: The (one and only) Linux Kernel Contributor Panel',5069,'An eclectic panel of Linux contributors discuss technology, anger management and other things','<p>In this episode, our two ageing heroes host an eclectic panel of kernel\r\ncontributors of a small, mostly unknown operating system called \"Linux\".\r\nThe panelists hail from all over the planet (sadly, no money or love would\r\nbuy Richard\'s or Linus\' way onto that panel :-) but the discussion proves\r\nmore than interesting regardless of these uber-nerds being absent. All\r\nwill be revealed including the true age of Linux, one of Chris\' secret\r\nobsessions (hint: it\'s not software bugs), Linus Torvald\'s thought process\r\nand evolution as such. Never mind Linux\'s second future high-level\r\nprogramming language... Plus: a philosophical discussion of the social\r\nimpact of insulting from a pan-cultural perspective. Don\'t miss out on\r\nthis!</p>\r\n\r\n<h3>Links:</h3>\r\n<ul>\r\n<li>Linux Kernel Archives: <a href=\"https://www.kernel.org\" target=\"_blank\">https://www.kernel.org</a>\r\n</li>\r\n<li>Device Tree System documentation: <a href=\"https://www.kernel.org/doc/html/latest/devicetree/usage-model.html\" target=\"_blank\">https://www.kernel.org/doc/html/latest/devicetree/usage-model.html</a>\r\n</li>\r\n<li>Linux BDFL: <a href=\"https://torvalds-family.blogspot.com\" target=\"_blank\">https://torvalds-family.blogspot.com</a>\r\n</li>\r\n<li>Linux kernel police: <a href=\"https://www.youtube.com/watch?v=zOcwNm7sqlw\" target=\"_blank\">https://www.youtube.com/watch?v=zOcwNm7sqlw</a>\r\n</li>\r\n<li>MythBusters: <a href=\"https://www.imdb.com/title/tt0383126\" target=\"_blank\">https://www.imdb.com/title/tt0383126</a>\r\n</li>\r\n<li>Conflict Resolution Network: <a href=\"https://www.crnhq.org\" target=\"_blank\">https://www.crnhq.org</a>\r\n</li>\r\n<li>Sage Sharp (left the project due to the nature of Linus\' comments): <a href=\"https://sage.thesharps.us\" target=\"_blank\">https://sage.thesharps.us</a>\r\n</li>\r\n</ul>\r\n',384,111,1,'CC-BY-SA','Linux Kernel',0,0,1),
(3327,'2021-05-04','Looking into Ceph storage solution',818,'We look into what a Ceph implementation entails, what specific use-cases it excels at. ','<p>We look into what a Ceph implementation entails, what specific use-cases it excels at.</p>\r\n<p>And we also talk about the building blocks of the system. What kind of hosts is required for different Ceph daemons and the requirements regarding disk space, CPU, and memory.</p>\r\n<p>The services we are talking about are OSD (Object storage daemon), Monitors, Managers, and MDS (MetaData Services).</p>\r\n<p>Ceph can be used as an S3 compatible object store, disk storage, and even a file system, depending on your setup.</p>\r\n<p>If you are interested in diving deeper into the topic, I have created a couple of videos on the subject that might interest you.</p>\r\n<ul>\r\n<li>Getting started with Ceph storage cluster setup - <a href=\"https://youtu.be/Uvbp3mtOltw\" class=\"uri\">https://youtu.be/Uvbp3mtOltw</a></li>\r\n<li>Using the amazon s3 object storage API for local storage on Ceph - <a href=\"https://youtu.be/XtfjYp8ikaU\" class=\"uri\">https://youtu.be/XtfjYp8ikaU</a></li>\r\n<li>Doing an automatic upgrade of Ceph cluster using CephAdm - <a href=\"https://youtu.be/N1ARNNvv1zY\" class=\"uri\">https://youtu.be/N1ARNNvv1zY</a></li>\r\n<li>Looking into a manual upgrade of Ceph to Pacific - <a href=\"https://youtu.be/RrrS4UU5U6o\" class=\"uri\">https://youtu.be/RrrS4UU5U6o</a></li>\r\n</ul>\r\n',382,0,0,'CC-BY-SA','ceph, storage solution, amazon s3',0,0,1),
(3335,'2021-05-14','For your consideration, the Anarcho Book Club',1348,'This is an example of the podcast that was featured on GNU World Order','<ul>\r\n<li><a href=\"https://gnuworldorder.info/audiophile/gnuWorldOrder_397.opus\">Interview with Herag, from the Anarcho Book Club podcast. </a></li>\r\n<li><a href=\"https://anarchobook.club/pages/about.html\">About the Anarcho Book Club</a></li>\r\n</ul>',30,75,1,'CC-BY-SA','Anarcho Book Club,anarchism,gnuWorldOrder,gwo',0,0,1),
(3586,'2022-05-02','HPR Community News for April 2022',3986,'HPR Volunteers talk about shows released and comments posted in April 2022','<style>\ntable td.shrink {\n    white-space:nowrap\n}\n</style>\n\n<h2>New hosts</h2>\n<p>\nWelcome to our new hosts: <br />\n\n    <a href=\"https://hackerpublicradio.org/correspondents/0403.html\" target=\"_blank\">Lee</a>, \n    <a href=\"https://hackerpublicradio.org/correspondents/0404.html\" target=\"_blank\">Sarah</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=3565\" target=\"_blank\">3565</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2022-04-01</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3565\" target=\"_blank\">Heavy Hacking down in the quarry. </a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0392.html\" target=\"_blank\">timttmy</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3566\" target=\"_blank\">3566</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2022-04-04</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3566\" target=\"_blank\">HPR Community News for March 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=3567\" target=\"_blank\">3567</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2022-04-05</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3567\" target=\"_blank\">What is NVMe™ and why is it important?</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0129.html\" target=\"_blank\">JWP</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3568\" target=\"_blank\">3568</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2022-04-06</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3568\" target=\"_blank\">PopKorn Episode 2: Programming, Mathematics, and Asymmetric Literacy</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0396.html\" target=\"_blank\">BlacKernel</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3569\" target=\"_blank\">3569</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2022-04-07</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3569\" target=\"_blank\">Linux Inlaws S01E53: Rust Marketing</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0384.html\" target=\"_blank\">monochromec</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3570\" target=\"_blank\">3570</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2022-04-08</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3570\" target=\"_blank\">The Filesystem</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=3571\" target=\"_blank\">3571</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2022-04-11</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3571\" target=\"_blank\">The Meatball Mystery</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0196.html\" target=\"_blank\">Windigo</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3572\" target=\"_blank\">3572</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2022-04-12</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3572\" target=\"_blank\">More about NVMe</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0129.html\" target=\"_blank\">JWP</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3573\" target=\"_blank\">3573</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2022-04-13</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3573\" target=\"_blank\">Home Coffee Roasting, part 2</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0399.html\" target=\"_blank\">dnt</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3574\" target=\"_blank\">3574</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2022-04-14</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3574\" target=\"_blank\">Local Talking Newspapers</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0403.html\" target=\"_blank\">Lee</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3575\" target=\"_blank\">3575</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2022-04-15</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3575\" target=\"_blank\">An Edinburgh Blether</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=3576\" target=\"_blank\">3576</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2022-04-18</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3576\" target=\"_blank\">First impressions of Ubuntu 22.04 as a daily driver.</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0111.html\" target=\"_blank\">knightwise</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3577\" target=\"_blank\">3577</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2022-04-19</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3577\" target=\"_blank\">Hello and how I got into tech</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0404.html\" target=\"_blank\">Sarah</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3578\" target=\"_blank\">3578</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2022-04-20</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3578\" target=\"_blank\">Linux Inlaws S01E54: Electronic Freedom Never Mind the Civil Rest</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0384.html\" target=\"_blank\">monochromec</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3579\" target=\"_blank\">3579</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2022-04-21</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3579\" target=\"_blank\">PINN is not NOOBS</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=3580\" target=\"_blank\">3580</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2022-04-22</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3580\" target=\"_blank\">RAW images</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0198.html\" target=\"_blank\">Ahuka</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3581\" target=\"_blank\">3581</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2022-04-25</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3581\" target=\"_blank\">My daily Linux driver.</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0111.html\" target=\"_blank\">knightwise</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3582\" target=\"_blank\">3582</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2022-04-26</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3582\" target=\"_blank\">Rolling a new character</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0364.html\" target=\"_blank\">Tuula</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3583\" target=\"_blank\">3583</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2022-04-27</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3583\" target=\"_blank\">takov751 and dnt talk about browsers</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=3584\" target=\"_blank\">3584</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2022-04-28</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3584\" target=\"_blank\">The collective history of RAID controller brands</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0129.html\" target=\"_blank\">JWP</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3585\" target=\"_blank\">3585</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2022-04-29</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3585\" target=\"_blank\">Freedom of speech in open source, Part 2.</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0391.html\" target=\"_blank\">Some Guy On The Internet</a></td>\n</tr>\n</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 41 comments in total.</p>\n<h3>Past shows</h3>\n<p>There are 10 comments on\n7 previous shows:</p>\n<ul>\n<li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2881#comments\" target=\"_blank\">hpr2881</a></strong>\n(2019-08-19) \"<em>Automatically split album into tracks in Audacity</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0030.html\" target=\"_blank\">Ken Fallon</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=2881#5\" target=\"_blank\">Comment 5</a>:\nArcher72 on 2022-04-25:\n\"And now I know, and will forget again\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3378#comments\" target=\"_blank\">hpr3378</a></strong>\n(2021-07-14) \"<em>A bit of my experience with Starlink internet service</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0243.html\" target=\"_blank\">Jezra</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3378#1\" target=\"_blank\">Comment 1</a>:\nWindigo on 2022-04-06:\n\"Congratulations!\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3534#comments\" target=\"_blank\">hpr3534</a></strong>\n(2022-02-17) \"<em>Vernier caliper</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0030.html\" target=\"_blank\">Ken Fallon</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3534#4\" target=\"_blank\">Comment 4</a>:\nKevin O&#39;Brien on 2022-04-16:\n\"Taking me back\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3554#comments\" target=\"_blank\">hpr3554</a></strong>\n(2022-03-17) \"<em>Guide to the Science and Technology Section of Bitchute</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0401.html\" target=\"_blank\">Mechatroniac</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3554#1\" target=\"_blank\">Comment 1</a>:\ndnt on 2022-04-01:\n\"that motor\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3559#comments\" target=\"_blank\">hpr3559</a></strong>\n(2022-03-24) \"<em>Linux Inlaws S01E52: The Zig Project</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0384.html\" target=\"_blank\">monochromec</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3559#1\" target=\"_blank\">Comment 1</a>:\nclacke on 2022-04-18:\n\"The nitty-gritty of US non-profits\"</li>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3559#2\" target=\"_blank\">Comment 2</a>:\nclacke on 2022-04-18:\n\"Re: The nitty-gritty of US non-profits\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3563#comments\" target=\"_blank\">hpr3563</a></strong>\n(2022-03-30) \"<em>Home Coffee Roasting, part 1</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0399.html\" target=\"_blank\">dnt</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3563#2\" target=\"_blank\">Comment 2</a>:\nClaudioM on 2022-04-01:\n\"Enjoyed this Episode while Brewing my Morning Coffee :-)\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3564#comments\" target=\"_blank\">hpr3564</a></strong>\n(2022-03-31) \"<em>Removing EXIF data from an image</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=3564#2\" target=\"_blank\">Comment 2</a>:\nClaudioM on 2022-04-01:\n\"Thanks for the Application Reminder!\"</li>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3564#3\" target=\"_blank\">Comment 3</a>:\nXoke on 2022-04-01:\n\"My troubles with EXIF\"</li>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3564#4\" target=\"_blank\">Comment 4</a>:\nKevin O&#39;Brien on 2022-04-16:\n\"Orientation in Android\"</li></ul><br/>\n</li></ul>\n<h3>This month\'s shows</h3>\n<p>There are 31 comments on 10 of this month\'s shows:</p>\n<ul><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3565#comments\" target=\"_blank\">hpr3565</a></strong>\n(2022-04-01) \"<em>Heavy Hacking down in the quarry. </em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0392.html\" target=\"_blank\">timttmy</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3565#1\" target=\"_blank\">Comment 1</a>:\nJeremiah Schroeder on 2022-03-28:\n\"Couldn\'t agree more\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3565#2\" target=\"_blank\">Comment 2</a>:\nK. Olin on 2022-03-28:\n\"Great show\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3565#3\" target=\"_blank\">Comment 3</a>:\nClayton Miner on 2022-03-28:\n\"This brings back memories\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3565#4\" target=\"_blank\">Comment 4</a>:\nWindigo on 2022-04-02:\n\"Thanks for the contribution\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3565#5\" target=\"_blank\">Comment 5</a>:\njezra on 2022-04-05:\n\"I started falling asleep\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3568#comments\" target=\"_blank\">hpr3568</a></strong>\n(2022-04-06) \"<em>PopKorn Episode 2: Programming, Mathematics, and Asymmetric Literacy</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0396.html\" target=\"_blank\">BlacKernel</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3568#1\" target=\"_blank\">Comment 1</a>:\nSome Guy On The Internet on 2022-04-08:\n\"Public Service Announcement\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3570#comments\" target=\"_blank\">hpr3570</a></strong>\n(2022-04-08) \"<em>The Filesystem</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=3570#1\" target=\"_blank\">Comment 1</a>:\nzen_floater2 on 2022-04-08:\n\"Squirrel applause\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3570#2\" target=\"_blank\">Comment 2</a>:\nMiguel on 2022-04-08:\n\"Good blast from the past\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3570#3\" target=\"_blank\">Comment 3</a>:\nKevin O&#39;Brien on 2022-04-08:\n\"Thank you\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3570#4\" target=\"_blank\">Comment 4</a>:\nSome Guy On The Internet on 2022-04-13:\n\"I\'m not old enough.\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3570#5\" target=\"_blank\">Comment 5</a>:\nKevin O&#39;Brien on 2022-04-14:\n\"RAID on DOS\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3571#comments\" target=\"_blank\">hpr3571</a></strong>\n(2022-04-11) \"<em>The Meatball Mystery</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0196.html\" target=\"_blank\">Windigo</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3571#1\" target=\"_blank\">Comment 1</a>:\nkinghezy on 2022-04-12:\n\"Meatballs and such\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3571#2\" target=\"_blank\">Comment 2</a>:\nWindigo on 2022-04-14:\n\"Thanks\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3572#comments\" target=\"_blank\">hpr3572</a></strong>\n(2022-04-12) \"<em>More about NVMe</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0129.html\" target=\"_blank\">JWP</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3572#1\" target=\"_blank\">Comment 1</a>:\nSome Guy On The Internet on 2022-04-13:\n\"Thanks for the information.\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3574#comments\" target=\"_blank\">hpr3574</a></strong>\n(2022-04-14) \"<em>Local Talking Newspapers</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0403.html\" target=\"_blank\">Lee</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3574#1\" target=\"_blank\">Comment 1</a>:\nWindigo on 2022-04-14:\n\"Enlightening episode\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3574#2\" target=\"_blank\">Comment 2</a>:\nbrian-in-ohio on 2022-04-15:\n\"good show\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3574#3\" target=\"_blank\">Comment 3</a>:\nelmussol on 2022-04-24:\n\"elderly relatives et al\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3574#4\" target=\"_blank\">Comment 4</a>:\nelmussol on 2022-04-24:\n\"addendum\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3575#comments\" target=\"_blank\">hpr3575</a></strong>\n(2022-04-15) \"<em>An Edinburgh Blether</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0225.html\" target=\"_blank\">Dave Morriss</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3575#1\" target=\"_blank\">Comment 1</a>:\nSome Guy On The Internet on 2022-04-15:\n\"Declassified\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3575#2\" target=\"_blank\">Comment 2</a>:\nbrian-in-ohio on 2022-04-15:\n\"show\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3576#comments\" target=\"_blank\">hpr3576</a></strong>\n(2022-04-18) \"<em>First impressions of Ubuntu 22.04 as a daily driver.</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0111.html\" target=\"_blank\">knightwise</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3576#1\" target=\"_blank\">Comment 1</a>:\nSome Guy On The Internet on 2022-04-18:\n\"Yikes!\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3576#2\" target=\"_blank\">Comment 2</a>:\nZen_floater2 on 2022-04-19:\n\"Your review\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3576#3\" target=\"_blank\">Comment 3</a>:\nKen Fallon on 2022-04-28:\n\"How do you pay for software ?\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3577#comments\" target=\"_blank\">hpr3577</a></strong>\n(2022-04-19) \"<em>Hello and how I got into tech</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0404.html\" target=\"_blank\">Sarah</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3577#1\" target=\"_blank\">Comment 1</a>:\nbrian-in-ohio on 2022-04-19:\n\"welcome\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3577#2\" target=\"_blank\">Comment 2</a>:\nmcnalu on 2022-04-19:\n\"Welcome\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3577#3\" target=\"_blank\">Comment 3</a>:\nLurking Prion on 2022-04-23:\n\"Welcome!\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3577#4\" target=\"_blank\">Comment 4</a>:\nKevin O&#39;Brien on 2022-04-24:\n\"Great show\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3577#5\" target=\"_blank\">Comment 5</a>:\nSarah on 2022-04-25:\n\"@Kevin O\'Brien\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3577#6\" target=\"_blank\">Comment 6</a>:\nKevin O&#39;Brien on 2022-04-25:\n\"@Sarah\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3578#comments\" target=\"_blank\">hpr3578</a></strong>\n(2022-04-20) \"<em>Linux Inlaws S01E54: Electronic Freedom Never Mind the Civil Rest</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0384.html\" target=\"_blank\">monochromec</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3578#1\" target=\"_blank\">Comment 1</a>:\nbittin on 2022-04-11:\n\"More Europe Centric\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3578#2\" target=\"_blank\">Comment 2</a>:\nzen_floater2 on 2022-04-24:\n\"centralized federal power\"</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-April/thread.html\" target=\"_blank\">https://hackerpublicradio.org/pipermail/hpr_hackerpublicradio.org/2022-April/thread.html</a>\n\n\n<h2>Events Calendar</h2>\n<p>With the kind permission of <strong>LWN.net</strong> we are linking to\n<a href=\"https://lwn.net/Calendar/\" target=\"_blank\">The LWN.net Community Calendar</a>.</p>\n<p>Quoting the site:</p>\n<blockquote>This is the LWN.net community event calendar, where we track\nevents of interest to people using and developing Linux and free software.\nClicking on individual events will take you to the appropriate web\npage.</blockquote>\n\n<h2>Any other business</h2>\n<h3 id=\"reminders-about-show-submission\">Reminders about show submission</h3>\n<h4 id=\"show-spacing\">Show spacing</h4>\n<p>Please remember that we normally ask that shows submitted by a host be spaced out by at least two weeks - unless the queue is <strong>extremely</strong> short of shows of course!</p>\n<h4 id=\"commas-between-tags\">Commas between tags</h4>\n<p>A number of shows in recent weeks have been arriving with tags lists missing the requested commas. Hosts are requested to use these to separate tags, otherwise it can be difficult to work out where one tag ends and the next begins. How to interpret the following list, for example:</p>\n<pre><code>dog fish custard</code></pre>\n<p>Does it mean: \'<code>dog fish, custard</code>\', \'<code>dog, fish custard</code>\' or \'<code>dog,fish,custard</code>\'?</p>\n<h4 id=\"host-nameshandles-or-series-names-as-tags\">Host names/handles or series names as tags</h4>\n<p>Next, a recommendation about the host name/handle or the series name as a tag. Tags are intended to help with finding shows.</p>\n<p>We have another way of finding shows by host; the host name or handle is a link at the top of the show page which can be clicked to go to a list of all of the shows ever submitted by that host.</p>\n<p>Also, if a show is part of a series, clicking on the series title on the show page will take you to all the shows in that series.</p>\n<p>So, two tags best avoided are: the host name and the series name.</p>\n<h4 id=\"use-of-explicit-only-covers-audio\">Use of <em>Explicit</em> only covers audio</h4>\n<p>Be aware that the selection made during the submission of a new show between <code>\'Explicit\'</code> and <code>\'Clean\'</code> only relates to the audio. Due to the world-wide distribution of shows we need to be sensitive to potential offense caused by swearwords and the like in the notes themselves. We would appreciate all HPR hosts being aware of these issues.</p>\n<h4 id=\"please-do-not-add-your-own-intro-and-outro\">Please do not add your own <em>intro</em> and <em>outro</em></h4>\n<p>A final reminder: it was decided via discussion on the HPR mailing list that we would automate the addition of the intro and outro to show audio. We would appreciate it if hosts did not add these themselves because work is then required to remove them before preparing the show for release.</p>\n<h3 id=\"developments-on-hpr\">Developments on HPR</h3>\n<p>Some work has been going on behind the scenes to improve the workflow which handles incoming shows and adds them to the database.</p>\n<p>We have added a set of state values which indicate the processing flow so that people and software can track progress.</p>\n<p>The <em>calendar</em> page has been adjusted to show some of these state mnemonics in addition to the <em>Locked</em> and <em>Processing</em> indicators we have had before.</p>\n<p>The status mnemonics likely to be seen are:</p>\n<ul>\n<li><b>SHOW_SUBMITTED</b> - upload complete</li>\n<li><b>METADATA_PROCESSED</b> - shownotes processed to html</li>\n<li><b>SHOW_POSTED</b> - show in the database</li>\n<li><b>MEDIA_TRANSCODED</b> - audio all generated</li>\n<li><b>UPLOADED_TO_IA</b> - on the IA and visible</li>\n<li><b>UPLOADED_TO_RSYNC_NET</b> - archived on rsync.net</li>\n</ul>\n<p>The steps required to move from one state to another have been streamlined as much as possible but they still require the intervention of the Janitors, so there is no guarantee about the time between arrival and the availability of shows on the HPR server or archive.org.</p>\n<h3 id=\"access-to-hpr-from-argentina\">Access to HPR from Argentina</h3>\n<p>The problems reported in the last Community News have now been resolved.</p>\n<h3 id=\"older-hpr-shows-on-archive.org-phase-2\">Older HPR shows on archive.org, phase 2</h3>\n<p>Now that all shows from number 1 to the latest have been uploaded to the Internet Archive there are other tasks to perform.</p>\n<p>During the uploading of shows in the range 1-870 we uploaded all the audio versions: wav, ogg, mp3, etc. We also uploaded any other files such as pictures or documentation. We do this for new shows as well.</p>\n<p>The reason for this is to make self-contained shows on the Internet Archive, where previously such shows referred to the HPR server for various components.</p>\n<p>The shows that had been uploaded during 2017 in the range 871 to 2429 did not include all these files. At that point we only had the mp3 versions of the audio, and these were what were uploaded, along with the notes.</p>\n<p>During phase 1 of the upload process a method of turning the mp3 audio into all of the other formats was included, and this method is now being used to re-process shows 871 to 2429.</p>\n<h4 id=\"statistics\">Statistics</h4>\n<p>We will keep a record of progress here as we re-upload shows numbered between 871 and 2429:</p>\n<ul>\n<li>Re-uploads done so far: 131</li>\n<li>Shows remaining to be done: 1428</li>\n</ul>\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
(3328,'2021-05-05','Pandas Part 2',719,'Enigma continues his discussion about his favorite Python module Pandas','<p>\r\nPart two in the For the Love of Data series. Enigma covers part 2 of Pandas <br>\r\nThe following topics are discussed <br>\r\n<br>\r\n1) Another way to apply a condition to a field <br>\r\n2) Creating a DataFrame from a dictionary <br>\r\n3) Appending a data frame with another DataFrame <br>\r\n4) Joining DataFrames with merge and join <br>\r\n5) Writing an output to csv <br>\r\n<br>\r\n<a href = \"https://github.com/eth0enigma/PandasPart2\"> Part 2 Sample code </a>\r\n<br>\r\nFollow me on twitter @Ed_N1gma <br>\r\n<br>\r\nCome chat on irc.freenode.net #hackerexchange\r\n</p>',39,38,0,'CC-BY-SA','python, pandas, Data, Data Science',0,0,1),
(3334,'2021-05-13','Infosec Podcasts Part 2 - General Information Security',520,'Presenting my favorite general information security podcasts','<p>Inoffensive in every region of the world</p>\r\n<p>Hello, again. My name is Trey. This is part 2 of a 6 part series related to information security podcasts.</p>\r\n<p>To recap Why am I recording this series?</p>\r\n<p>\"What podcasts you listen to\" was on the list of recommended topics</p>\r\n<p>I am passionate about information security</p>\r\n<p>We desperately need people to fill infosec jobs in many different specialties</p>\r\n<p>Infosec is a rapidly changing field, and it is critical to stay current</p>\r\n<p>As a result I listen to TONS of infosec related podcasts</p>\r\n<p>Because there are so many podcasts to list, I have broken them down into 6 different episodes based on topics:</p>\r\n<ul>\r\n<li>Part 1 – News &amp; Current Events</li>\r\n<li>Part 2 – General Information Security</li>\r\n<li>Part 3 - Career &amp; Personal Development</li>\r\n<li>Part 4 – Social Engineering</li>\r\n<li>Part 5 -\r\n<ul>\r\n<li>Hacks &amp; Attacks</li>\r\n<li>Technical Information &amp; Learning</li>\r\n<li>Infosec Community / Social / History</li>\r\n</ul></li>\r\n<li>Part 6 – Infosec Leadership</li>\r\n</ul>\r\n<h2 id=\"part-2\">Part 2</h2>\r\n<ul>\r\n<li><p>General Information Security<br />\r\nCaveat – Dave Bittner &amp; Ben Yelin (Weekly)<br />\r\nWeekly discussion of cybersecurity law and policy, with a particular focus on surveillance and digital privacy<br />\r\n<a href=\"https://thecyberwire.com/podcasts/caveat.html\" class=\"uri\">https://thecyberwire.com/podcasts/caveat.html</a></p></li>\r\n<li><p>Defense in Depth - David Spark &amp; Guests (Weekly)<br />\r\nWeekly podcast digging deeper into a currently trending infosec topic<br />\r\n<a href=\"https://cisoseries.com/subscribe-podcast/\" class=\"uri\">https://cisoseries.com/subscribe-podcast/</a></p></li>\r\n<li><p>Recorded Future - Dave Bittner &amp; Recorded Future (Weekly)<br />\r\nA weekly podcast about practical applications of security intelligence<br />\r\n<a href=\"https://www.recordedfuture.com/resources/podcast/\" class=\"uri\">https://www.recordedfuture.com/resources/podcast/</a></p></li>\r\n<li><p>Brakeing Down Security - Bryan Brake, Brian Boettcher, and Amanda Berlin (Weekly)<br />\r\nA weekly discussion of current infosec topics and events<br />\r\nCovers concepts that aspiring Information Security Professionals need to know, or refresh the memories of the seasoned veterans.<br />\r\n<a href=\"https://www.brakeingsecurity.com/\" class=\"uri\">https://www.brakeingsecurity.com/</a></p></li>\r\n<li><p>Down the Security Rabbit Hole - Rafal Los (Weekly)<br />\r\nA weekly interview based podcast discussing various challenges of implementing infosec<br />\r\n<a href=\"https://podcast.wh1t3rabbit.net/\" class=\"uri\">https://podcast.wh1t3rabbit.net/</a></p></li>\r\n<li><p>Security Weekly Podcast Network - Network of shows with various hosts<br />\r\nA collection of podcasts including: Paul\'s Security Weekly, Enterprise Security Weekly, Business Security Weekly, Application Security Weekly, Security &amp; Compliance Weekly, Security Weekly News, Tradecraft Security Weekly, &amp; Secure Digital Life. Interesting and diverse discussions.<br />\r\nWarning: Discussions sometimes promote the consumption of alcohol and smoking cigars<br />\r\nThese podcasts are long<br />\r\n<a href=\"https://securityweekly.com/\" class=\"uri\">https://securityweekly.com/</a></p></li>\r\n<li><p>Security Stories - Cisco with Hazel Burton, Ben Nahorney, &amp; Noureen Njoroge (Weekly)<br />\r\nA unique weekly interview-based podcast by sponsored by Cisco focusing on infosec stories<br />\r\n<a href=\"https://www.cisco.com/c/en/us/products/security/securitystories.html\" class=\"uri\">https://www.cisco.com/c/en/us/products/security/securitystories.html</a></p></li>\r\n<li><p>The Confident Defense Podcast - Conor Sherman (Weekly)<br />\r\nInterviews with influential and inspirational people in all areas of security<br />\r\n<a href=\"https://linktr.ee/ConfidentDefense\" class=\"uri\">https://linktr.ee/ConfidentDefense</a></p></li>\r\n<li><p>Open Source Security Podcast - Kurt Seifried &amp; Josh Bressers (Weekly)<br />\r\nLighthearted discussions of information security topics related to open source<br />\r\n<a href=\"https://opensourcesecurity.io/category/podcast/\" class=\"uri\">https://opensourcesecurity.io/category/podcast/</a></p></li>\r\n</ul>\r\n<p>See? I told you I listen to lots of podcasts!</p>\r\n<p>I hope that this episode has introduced you to some new sources of information. Give some of them a try, and I would love to get your feedback.</p>\r\n<p>The next episode will be about Information Security Careers &amp; Personal Development</p>\r\n<p>Thank you for listening.</p>\r\n',394,74,0,'CC-BY-SA','infosec, podcasts, security',0,0,1),
(3331,'2021-05-10','Audio for Podcasting: Episode 1 - The Microphone',1399,'Thaj shares tips and tricks on producing quality audio for HPR episodes','<p>The first in a series of episodes concerning recording and audio quality. For this episode I focus on the beginning of the signal chain, the microphone. Tips on choosing a microphone, and how to use it to get the sound you want.</p>\r\n<ul>\r\n<li><a href=\"https://www.samsontech.com/samson/products/microphones/usb-microphones/q2u/\">Samson 2QU</a></li>\r\n<li><a href=\"https://www.audio-technica.com/en-us/atr2100-usb\">ATR 2100</a></li>\r\n</ul>\r\n',270,45,1,'CC-BY-SA','audio production, microphones, audio quality',0,0,1),
(3338,'2021-05-19','Using openssl s_client like telnet',1189,'OpenSSL s_client is the new telnet. Here is how to use it.','<p>\r\nConnect to port 443 and send some HTTP signals:\r\n</p>\r\n\r\n<pre><code>\r\n$ openssl s_client -connect example.com:443\r\n    [...snip...]\r\n    Verify return code: 0 (ok)\r\n    Extended master secret: no\r\n    Max Early Data: 0\r\n---\r\n</code></pre>\r\n\r\n<p>\r\nYou\'re now connected. If you wait too long, your connection will likely time out.\r\nView the default landing page of the site you\'ve connected with:\r\n</p>\r\n\r\n<pre><code>\r\nGET / HTTP/1.1\r\nHOST: example.com\r\n</code></pre>\r\n\r\n<p>\r\nIn return, you get a dump of the HTML source of the default page (usually <code>index.html</code>) in your terminal.\r\n</p>\r\n\r\n<p>\r\nYou can also use OpenSSL s_client for email servers using SSL.\r\nBefore you can send credentials, you must encode your email username and passphrase into Base64. The easiest method I know is this Perl one-liner:\r\n</p>\r\n\r\n<pre><code>\r\n$ perl -MMIME::Base64 -e \'print encode_base64(\"myUserName\");\'\r\n$ perl -MMIME::Base64 -e \'print encode_base64(\"myPassPhrase\");\'\r\n</code></pre>\r\n\r\n<p>\r\nTake note of the results.\r\n</p>\r\n\r\n<p>\r\nThe s_client session, aside from authentication, is basically the same as a telnet session. You can find <a href=\"https://www.redhat.com/sysadmin/telnet-troubleshoot-mail-system\" target=\"_blank\">good telnet tutorials all over the Internet</a>, and aside from sending your credentials, they apply to s_client.\r\n</p>\r\n\r\n<p>\r\nHere\'s a copy-paste of an example session:\r\n</p>\r\n\r\n<pre><code>\r\n$ openssl s_client -starttls smtp -connect email.example.com:587\r\n&#62; ehlo example.com\r\n&#62; auth login\r\n&#35;&#35;paste your user base64 string here&#35;&#35;&#35;&#35;\r\n&#35;&#35;paste your password base64 string here&#35;&#35;&#35;&#35;\r\n\r\n&#62; mail from: noreply@example.com\r\n&#62; rcpt to: admin@example.com\r\n&#62; data\r\n&#62; Subject: Test 001\r\nThis is a test email.\r\n.\r\n&#62; quit\r\n</code></pre>\r\n',78,61,0,'CC-BY-SA','telnet, openssl',0,0,1),
(3332,'2021-05-11','My current Devices',642,'A short list of tablets and phones that I am using these Days','<p>Sadly no Opensource hand held devices these days.<br />\r\nBut Android might count though.</p>\r\n',129,0,0,'CC-BY-SA','Tablet, Phone, kindle',0,0,1),
(3333,'2021-05-12','My TV Stand devices and Pine64.org',1408,'About my TV devices - TV Stand  & Pine64','<h2 id=\"about-pine64\">About Pine64</h2>\r\n<blockquote>\r\n<dl>\r\n<dt><em>None of us is as smart as all of us</em></dt>\r\n<dd>Ken H. Blanchard\r\n</dd>\r\n</dl>\r\n</blockquote>\r\n<p>At the core of our philosophy is the notion that PINE64 is a community platform. A simplistic point of view, often offered up and referenced online, is that ‘PINE64 does hardware while the community does the software’. While this depiction is not inaccurate, it is also a gross oversimplification. The fact that PINE64 is community driven doesn’t simply entail a one-way reliance on the community or partner projects for software support; it means that the community gets to actively shape the devices, as well as the social platform, of PINE64 from the ground up. The goal is to deliver ARM64 devices that you really wish to engage with and a platform that you want to be a part of. As such, the community – PINE64 – and the company PINE Microsystems Inc. are interlocked and intertwined, but separate entities.</p>\r\n<p>What does it mean in practice then? It means that we usually announce what we’re working on well ahead of the shipping date – many months before a device is released – so that you have plenty of time to request product features, suggest changes, ask for/make changes to documentation, etc. before the first iteration of the device rolls of the factory line. It also means that the hardware developments – successes and failures alike – are all in the open. You can follow the process on our forum, the IRC, Discord, Matrix, Telegram the online conversations log and, in some instances, on our partner projects forums. But it also means that anyone who is a part of the community gets to shape anything related to the PINE64 project – including the Wiki or this website – and so, software development is only one area where you can contribute your time and skill. In return for time investment, the community gets fair priced devices that developers wish to spend their time on.</p>\r\n<p>Last, but not least, is our belief in supporting existing SoCs for long periods of time as well as actively developing new devices based on those SOCs. What does this mean for developers then? It means that a developer can start developing software on a PINE64 SBC and, in time, support multiple devices with relative ease. This device convergence is, at the time of writing, most pronounced on the Allwinner A64 SOC used in a number of our devices including the: PINE64-LTS, SOPine, Pinebook and Pinetab. That said, similar convergence is also planned for the Rockchip RK3399, currently used on the RockPro64 and in the Pinebook Pro.</p>\r\n<p>You can always find us in the chats or the forum, so if you have any further questions make sure to drop by and ask about how the PINE64 project actually works.</p>\r\n',129,0,0,'CC-BY-SA','Tablet, phone, desktop, windows, pine64, pinetime',0,0,1),
(3341,'2021-05-24','Linux on a serial Terminal - And Jorome\'s MainFrame Challenge',314,'My experiment with Getty and A Getty Ansi - And wanting to have a Serial Terminal Mainframe','<p>Well its bit of challenge for Jerome to teach me how to do a Mainframe on a PI with serial terminal. I started the project using a old HPE 700/96 terminal amber. I used this site as my prime info.<br />\r\n<a href=\"https://www.cyberciti.biz/hardware/5-linux-unix-commands-for-connecting-to-the-serial-console/\" class=\"uri\">https://www.cyberciti.biz/hardware/5-linux-unix-commands-for-connecting-to-the-serial-console/</a></p>\r\n<ul>\r\n<li>First is seeing if you have a serial port</li>\r\n</ul>\r\n<pre><code>    dmesg | egrep --color &#39;serial|ttyS&#39;</code></pre>\r\n<ul>\r\n<li>Then install getty if its not there</li>\r\n<li>Then add your config line to /etc/gettydefs</li>\r\n<li>Then make work if you reboot.</li>\r\n<li>The do report</li>\r\n<li>Then you have the log in prompt on the terminal</li>\r\n</ul>\r\n',129,0,0,'CC-BY-SA','Terminal, Mainframe, Raspberry PI',0,0,1),
(3336,'2021-05-17','2020-2021 New Years Eve Show Episode 1',6241,'the hpr community stops by for a chat','<h2 id=\"welcome-to-the-9th-annual-hacker-public-radio-show\">Welcome to the 9th Annual Hacker Public Radio show</h2>\r\n<p>It is December the 31st 2020 and the time is 10 hundred hours UTC. We start the show by sending Greetings to Christmas Island/Kiribati and Samoa Kiritimati, Apia.</p>\r\n<ul>\r\n<li><p>Covid Covid Covid</p></li>\r\n<li><p>Brexit.<br />\r\nBrexit explained <a href=\"https://en.wikipedia.org/wiki/Brexit\" class=\"uri\">https://en.wikipedia.org/wiki/Brexit</a></p></li>\r\n<li><p>Add ISO 8601 YYYY-MM-DD support for dates in preferences<br />\r\n<a href=\"https://bugzilla.mozilla.org/show_bug.cgi?id=484860\" class=\"uri\">https://bugzilla.mozilla.org/show_bug.cgi?id=484860</a></p></li>\r\n<li><p>Cannot format date in ISO8601 (YYY-MM-DD) format<br />\r\n<a href=\"https://bugzilla.mozilla.org/show_bug.cgi?id=1492448\" class=\"uri\">https://bugzilla.mozilla.org/show_bug.cgi?id=1492448</a></p></li>\r\n<li><p>Setting date locale no longer works in Thunderbird 60 on linux LC_TIME=en_DK.utf8 behaves differently than it used to<br />\r\n<a href=\"https://bugzilla.mozilla.org/show_bug.cgi?id=1426907\" class=\"uri\">https://bugzilla.mozilla.org/show_bug.cgi?id=1426907</a></p></li>\r\n</ul>\r\n<pre><code>Podcast_________________Last_Active_Date\r\nBoston Bruins ......... ????\r\nTheTechieGeek ......... 2013-12-27\r\nDudmanovi ............. 2016-04-09\r\nGeeks With Guns ....... 2014-04-26\r\nledgerthecat .......... ????\r\nLinux Basix ........... 2014-01-29\r\nLinuXburg ............. 2019-08-16\r\nmintCast .............. Active\r\nNoll Tech Show ........ ????\r\nNollCraft ............. ????\r\nOpen Source Musician .. 2015-02-17\r\nPodBrewers ............ 2016-03-02\r\nPodnutz ............... Active\r\nRevUnity .............. ????\r\nScannerDrome .......... 2020-05-01\r\nSMLR .................. Active\r\nThePythonExperiment ... ????\r\nUnseenStudio .......... Active</code></pre>\r\n<ul>\r\n<li><p>Reverse Engineering the source code of the BioNTech/Pfizer SARS-CoV-2 Vaccine <a href=\"https://berthub.eu/articles/posts/reverse-engineering-source-code-of-the-biontech-pfizer-vaccine/\" class=\"uri\">https://berthub.eu/articles/posts/reverse-engineering-source-code-of-the-biontech-pfizer-vaccine/</a></p></li>\r\n<li><p>Open street map<br />\r\n<a href=\"https://f-droid.org/en/packages/net.osmand.plus/\" class=\"uri\">https://f-droid.org/en/packages/net.osmand.plus/</a><br />\r\n<a href=\"https://www.openstreetmap.org/\" class=\"uri\">https://www.openstreetmap.org/</a></p></li>\r\n<li><p>Farenheit celsius scales<br />\r\n<a href=\"https://commons.wikimedia.org/wiki/File:Fahrenheit_Celsius_scales.svg\" class=\"uri\">https://commons.wikimedia.org/wiki/File:Fahrenheit_Celsius_scales.svg</a></p></li>\r\n<li><p>Soft drink industry levy<br />\r\n<a href=\"https://www.gov.uk/government/news/soft-drinks-industry-levy-comes-into-effect\" class=\"uri\">https://www.gov.uk/government/news/soft-drinks-industry-levy-comes-into-effect</a></p></li>\r\n<li><p>Heroes<br />\r\n<a href=\"https://en.wikipedia.org/wiki/Heroes_(American_TV_series)\" class=\"uri\">https://en.wikipedia.org/wiki/Heroes_(American_TV_series)</a></p></li>\r\n<li><p>Mr Robot<br />\r\n<a href=\"https://en.wikipedia.org/wiki/Mr._Robot\" class=\"uri\">https://en.wikipedia.org/wiki/Mr._Robot</a></p></li>\r\n<li><p>Star Trek Theme Faith of The Heart Remake: Sputnik &amp; yuri gagarin<br />\r\n<a href=\"https://www.youtube.com/watch?v=2y_FcxFseyc\" class=\"uri\">https://www.youtube.com/watch?v=2y_FcxFseyc</a></p></li>\r\n</ul>\r\n',159,121,1,'CC-BY-SA','HPR,community,new years eve',0,0,1),
(3342,'2021-05-25','2020-2021 New Years Eve Show Episode 2',3672,'the hpr community stops by for a chat','<h2 id=\"welcome-to-the-9th-annual-hacker-public-radio-new-years-eve-show\">Welcome to the 9th Annual Hacker Public Radio New Years Eve Show</h2>\r\n<ul>\r\n<li><p>heated roads and driveways</p></li>\r\n<li><p>talking about distilling spirits</p></li>\r\n<li><p>geek talk</p></li>\r\n<li><p>single board computers</p></li>\r\n</ul>',159,121,0,'CC-BY-SA','HPR,community,new years eve',0,0,1),
(3346,'2021-05-31','2020-2021 New Years Eve Show Episode 3',10488,'the hpr community stops by for a chat','<h2 id=\"welcome-to-the-9th-annual-hacker-public-radio-new-years-eve-show\">Welcome to the 9th Annual Hacker Public Radio New Years Eve Show</h2>\r\n<ul>\r\n<li><p>adjusting nextcloud time and date. Why can\'t I do it? Bug? yes or no?</p></li>\r\n<li><p>We discuss ClaudioM\'s breakfast<br />\r\n<a href=\"https://mastodon.sdf.org/@claudiom/105475213315933382\" class=\"uri\">https://mastodon.sdf.org/@claudiom/105475213315933382</a></p></li>\r\n<li><p><a href=\"https://voicecommandcenter.com/#\" class=\"uri\">https://voicecommandcenter.com/#</a></p></li>\r\n<li><p>Bollywood sci-fi movie <a href=\"https://www.justwatch.com/us/movie/2-0\" class=\"uri\">https://www.justwatch.com/us/movie/2-0</a></p></li>\r\n<li><p>Lineage OS and Android phones</p></li>\r\n<li><p>Librem phone: <a href=\"https://arstechnica.com/gadgets/2020/01/librem-5-phone-hands-on-a-proof-of-concept-for-the-open-source-smartphone/\" class=\"uri\">https://arstechnica.com/gadgets/2020/01/librem-5-phone-hands-on-a-proof-of-concept-for-the-open-source-smartphone/</a><br />\r\n<a href=\"https://shop.puri.sm/shop/librem-5-usa/\" class=\"uri\">https://shop.puri.sm/shop/librem-5-usa/</a></p></li>\r\n<li><p>De-googled Android OS<br />\r\n<a href=\"https://grapheneos.org/\" class=\"uri\">https://grapheneos.org/</a></p></li>\r\n<li><p><a href=\"https://techcrunch.com/2020/12/30/elon-musk-says-spacex-will-attempt-to-recover-super-heavy-rocket-by-catching-it-with-launch-tower/\" class=\"uri\">https://techcrunch.com/2020/12/30/elon-musk-says-spacex-will-attempt-to-recover-super-heavy-rocket-by-catching-it-with-launch-tower/</a></p></li>\r\n<li><p>why do we as a community stick with niche platforms?</p></li>\r\n<li><p><a href=\"https://joinmastodon.org/communities/tech\" class=\"uri\">https://joinmastodon.org/communities/tech</a></p></li>\r\n<li><p><a href=\"https://dev.to/botwiki/introduction-to-mastodon-bots-hfn\" class=\"uri\">https://dev.to/botwiki/introduction-to-mastodon-bots-hfn</a></p></li>\r\n<li><p><a href=\"https://botsin.space/about\" class=\"uri\">https://botsin.space/about</a></p></li>\r\n<li><p><a href=\"https://cdimage.debian.org/cdimage/ports/snapshots/2020-12-03/\" class=\"uri\">https://cdimage.debian.org/cdimage/ports/snapshots/2020-12-03/</a></p></li>\r\n<li><p><a href=\"https://xnux.eu/p-boot-demo/\" class=\"uri\">https://xnux.eu/p-boot-demo/</a></p></li>\r\n<li><p><a href=\"https://hackerpublicradio.org/series/0115.html\" class=\"uri\">https://hackerpublicradio.org/series/0115.html</a> Bicycle Hacking</p></li>\r\n<li><p><a href=\"https://sites.google.com/site/recycledrecumbents/home/the-showroom\" class=\"uri\">https://sites.google.com/site/recycledrecumbents/home/the-showroom</a></p></li>\r\n<li><p>Linux/BSD audio talk</p></li>\r\n<li><p>Pipewire: <a href=\"https://wiki.archlinux.org/index.php/PipeWire\" class=\"uri\">https://wiki.archlinux.org/index.php/PipeWire</a></p></li>\r\n<li><p>Unfa YouTube channel: <a href=\"https://www.youtube.com/user/unfa00\" class=\"uri\">https://www.youtube.com/user/unfa00</a></p></li>\r\n<li><p>Sndio is a small audio and MIDI framework part of the OpenBSD project<br />\r\n<a href=\"https://sndio.org/\" class=\"uri\">https://sndio.org/</a></p></li>\r\n<li><p>Doctor Who</p></li>\r\n<li><p>Data, data structures, and application.</p></li>\r\n<li><p>Audio fun</p></li>\r\n<li><p>nextcloud<br />\r\nDe google with nextcloud - <a href=\"https://nextcloud.com/\" class=\"uri\">https://nextcloud.com/</a></p></li>\r\n</ul>\r\n',159,121,1,'CC-BY-SA','HPR,community,new years eve',0,0,1),
(3352,'2021-06-08','2020-2021 New Years Eve Show Episode 4',3993,'the hpr community stops by for a chat','<h2 id=\"welcome-to-the-9th-annual-hacker-public-radio-new-years-eve-show\">Welcome to the 9th Annual Hacker Public Radio New Years Eve Show</h2>\r\n<ul>\r\n<li><p>Text editors</p></li>\r\n<li><p>x11 and wayland</p></li>\r\n<li><p>Linux check for X11/Wayland<br />\r\n</p></li>\r\n</ul>\r\n<pre><code>loginctl show-session $(awk &#39;/tty/ {print $1}&#39; &lt;(loginctl)) -p Type | awk -F= &#39;{print $2}&#39;</code></pre>\r\n<ul>\r\n<li><p>Firefox new tab override - <a href=\"https://addons.mozilla.org/en-US/firefox/addon/new-tab-override/?utm_source=addons.mozilla.org&amp;utm_medium=referral&amp;utm_content=search\" class=\"uri\">https://addons.mozilla.org/en-US/firefox/addon/new-tab-override/?utm_source=addons.mozilla.org&amp;utm_medium=referral&amp;utm_content=search</a></p></li>\r\n<li><p>Distributed Search <a href=\"https://yacy.net/index.html\" class=\"uri\">https://yacy.net/index.html</a></p></li>\r\n<li><p>Join Mastodon - <a href=\"https://joinmastodon.org/\" class=\"uri\">https://joinmastodon.org/</a></p></li>\r\n<li><p>edit correspondent page by posting a new show...</p></li>\r\n<li><p><a href=\"https://distrohoppersdigest.blogspot.com/\" class=\"uri\">https://distrohoppersdigest.blogspot.com/</a></p></li>\r\n<li><p><a href=\"https://addons.mozilla.org/en-US/firefox/addon/open-with/?utm_source=addons.mozilla.org\" class=\"uri\">https://addons.mozilla.org/en-US/firefox/addon/open-with/?utm_source=addons.mozilla.org</a></p></li>\r\n<li><p><a href=\"https://addons.mozilla.org/en-US/firefox/addon/videospeed/?utm_source=addons.mozilla.org\" class=\"uri\">https://addons.mozilla.org/en-US/firefox/addon/videospeed/?utm_source=addons.mozilla.org</a></p></li>\r\n<li><p>X2go Graphical interface over ssh <a href=\"https://wiki.x2go.org/doku.php\" class=\"uri\">https://wiki.x2go.org/doku.php</a></p></li>\r\n<li><p>Filk Music discussion: Filk music is a musical culture, genre, and community tied to science fiction, fantasy and horror fandom and a type of fan labor. The genre has been active since the early 1950s, and played primarily since the mid-1970s.</p></li>\r\n<li><p>Dresden Files and books</p></li>\r\n<li><p>happy new year from the Fallon family</p></li>\r\n</ul>\r\n',159,121,1,'CC-BY-SA','HPR,community,new years eve',0,0,1),
(3356,'2021-06-14','2020-2021 New Years Eve Show Episode 5',16905,'the hpr community stops by for a chat','<h2 id=\"welcome-to-the-9th-annual-hacker-public-radio-new-years-eve-show\">Welcome to the 9th Annual Hacker Public Radio New Years Eve Show</h2>\r\n<ul>\r\n<li><p>Vacinations</p></li>\r\n<li><p>covid lock downs</p></li>\r\n<li><p>covid covid covid (no suprise)</p></li>\r\n<li><p>virtual confrences</p></li>\r\n<li><p>Virtual life</p></li>\r\n<li><p>programing languages</p></li>\r\n<li><p>the size of texas - Even the Skunks are Large!</p></li>\r\n<li><p>Religion</p></li>\r\n<li><p>Linux</p></li>\r\n</ul>',159,121,1,'CC-BY-SA','HPR,community,New Years Eve',0,0,1),
(3361,'2021-06-21','2020-2021 New Years Eve Show Episode 6',12738,'the hpr community stops by for a chat','<h2 id=\"welcome-to-the-9th-annual-hacker-public-radio-new-years-eve-show\">Welcome to the 9th Annual Hacker Public Radio New Years Eve Show</h2>\r\n<ul>\r\n<li><p>Vaccines</p></li>\r\n<li><p>Discussion about the movies: Jumanji, Wizard of Oz.</p></li>\r\n<li><p>Discussion about facebook, whatsapp, and social networks.</p></li>\r\n<li><p>Filk</p></li>\r\n<li><p>Performance of \"Alice the first woman on the moon\" written by Blind Lemon Chiffon.</p></li>\r\n<li><p>podcasting</p></li>\r\n<li><p>Dungeons and Dragons talk</p></li>\r\n<li><p>History</p></li>\r\n<li><p>staying awake for many hours</p></li>\r\n<li><p>geography</p></li>\r\n<li><p>geology</p></li>\r\n<li><p>languages</p></li>\r\n<li><p>food</p></li>\r\n<li><p>minecraft</p></li>\r\n<li><p>schools</p></li>\r\n<li><p>language</p></li>\r\n</ul>\r\n',159,121,1,'CC-BY-SA','HPR,community,new years eve',0,0,1),
(3366,'2021-06-28','2020-2021 New Years Eve Show Episode 7',9803,'the hpr community stops by for a chat','<h2 id=\"welcome-to-the-9th-annual-hacker-public-radio-new-years-eve-show\">Welcome to the 9th Annual Hacker Public Radio New Years Eve Show</h2>\r\n<ul>\r\n<li><p>language</p></li>\r\n<li><p>the murmur server (that was originally run by John Neusteter)</p></li>\r\n<li><p>mintcast</p></li>\r\n<li><p>Linux</p></li>\r\n<li><p>Some chatter about home packing and selling. Struggles with packing and finding places to move to out in the \'country\'.</p></li>\r\n<li><p>Free movement and Irish passports</p></li>\r\n<li><p>D\'n\'D talk. The absence of Klaatu.</p></li>\r\n<li><p>The current mumble server for this New year show is probably going to go away after this year.</p></li>\r\n<li><p>Mordancy makes shirts</p></li>\r\n<li><p>Dave talks about his recipe database</p></li>\r\n<li><p>how the HPR shows get posted</p></li>\r\n<li><p>audio books</p></li>\r\n<li><p>Legos</p></li>\r\n<li><p>Electricity is fun</p></li>\r\n<li><p>fun streaming video</p></li>\r\n<li><p>storage</p></li>\r\n<li><p>video game emulation</p></li>\r\n<li><p>Joe fixes headphones (were all shocked)</p></li>\r\n<li><p>weather</p></li>\r\n<li><p>Hunting</p></li>\r\n</ul>\r\n',159,121,1,'CC-BY-SA','HPR,community,new years eve',0,0,1),
(3372,'2021-07-06','2020-2021 New Years Eve Show Episode 8',5947,'the hpr community stops by for a chat','<h2 id=\"welcome-to-the-9th-annual-hacker-public-radio-new-years-eve-show\">Welcome to the 9th Annual Hacker Public Radio New Years Eve Show</h2>\r\n<ul>\r\n<li><p>Hunting</p></li>\r\n<li><p>food</p></li>\r\n<li><p>cpap machines</p></li>\r\n<li><p>Music</p></li>\r\n<li><p>Audio books</p></li>\r\n<li><p>podcasts</p></li>\r\n<li><p>Archive.org is great (support if possible please)</p></li>\r\n<li><p>Moss has a fun 2020</p></li>\r\n<li><p>Politics</p></li>\r\n<li><p>Health care</p></li>\r\n<li><p>grey hat</p></li>\r\n</ul>\r\n',159,121,1,'CC-BY-SA','HPR,community,new years eve',0,0,1),
(3345,'2021-05-28','Audio for Podcasting: Episode 2 - Equalization',965,'Thaj shares tips and tricks on producing quality audio for HPR episodes','<p>In this episode we discuss equalization in order to improve our audio quality for podcasting. We will use <a href=\"https://www.audacityteam.org/\">Audacity</a> to manipulate our equalization.</p>\r\n<p>The best method of achieving this is to use the Graphic EQ plugin. To use this select the audio you wish to process, then use the \"Effect\" menu to select the Graphic EQ plugin.</p>\r\n<p><img src=\"https://ia601405.us.archive.org/28/items/3_20210430_20210430/HPR1.png\" alt=\"The Graphic EQ plugin\" /> <img src=\"https://archive.org/download/3_20210430_20210430/2.png\" alt=\"An example of removing the bass frequencies in the Graphic EQ plugin\" /> <img src=\"https://archive.org/download/3_20210430_20210430/3.png\" alt=\"An example of boosting the bass frequencies in the Graphic EQ plugin\" /></p>',270,45,1,'CC-BY-SA','audio production, equalization, audio quality',0,0,1),
(3337,'2021-05-18','I like that the boat is stuck',527,'A dramatic reading of a work by Gailey','<p><strong><em>The episode is released under a Attribution-NonCommercial-NoDerivs 3.0 Unported (CC BY-NC-ND 3.0). HPR has been given non-exclusive rights to create and distribute audio narration with kind permission of the Author. For clarity, permission has not been granted for derivative works, commercial or otherwise, to be created from this narration. This license only applies to the audio narration, not the print version of the essay.</em></strong></p>\r\n<p>I found this piece really fascinating and I like that you can take a huge problem and still consider it simple. It puts a lot of other problems into perspective and I like how this piece is written.</p>\r\n<p><a href=\"https://stone-soup.ghost.io/archive/i-like-that-the-boat-is-stuck/\" class=\"uri\">https://stone-soup.ghost.io/archive/i-like-that-the-boat-is-stuck/</a></p>\r\n\r\n',382,0,0,'CC-BY-NC-ND','news, boat, stuck',0,0,1),
(3611,'2022-06-06','HPR Community News for May 2022',3341,'HPR Volunteers talk about shows released and comments posted in May 2022','<style>\ntable td.shrink {\n    white-space:nowrap\n}\n</style>\n\n<h2>New hosts</h2>\n<p>\nWelcome to our new host: <br />\n\n    <a href=\"https://hackerpublicradio.org/correspondents/0405.html\" target=\"_blank\">Lurking Prion</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=3586\" target=\"_blank\">3586</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2022-05-02</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3586\" target=\"_blank\">HPR Community News for April 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=3587\" target=\"_blank\">3587</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2022-05-03</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3587\" target=\"_blank\">20220406_UDM</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=3588\" target=\"_blank\">3588</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2022-05-04</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3588\" target=\"_blank\">Linux Inlaws S01E55: Get yer boots on for a fresh look at init systems</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0384.html\" target=\"_blank\">monochromec</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3589\" target=\"_blank\">3589</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2022-05-05</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3589\" target=\"_blank\">Sample of my microphones</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=3590\" target=\"_blank\">3590</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2022-05-06</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3590\" target=\"_blank\">Directory Commands</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=3591\" target=\"_blank\">3591</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2022-05-09</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3591\" target=\"_blank\">Small Flashlights</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0129.html\" target=\"_blank\">JWP</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3592\" target=\"_blank\">3592</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2022-05-10</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3592\" target=\"_blank\">A quick look at the Surface pro X</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0111.html\" target=\"_blank\">knightwise</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3593\" target=\"_blank\">3593</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2022-05-11</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3593\" target=\"_blank\">Home office setup mouse shoulder and Auto Hot Key Scripts</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=3594\" target=\"_blank\">3594</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2022-05-12</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3594\" target=\"_blank\">Peely-wally in Edinburgh</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=3595\" target=\"_blank\">3595</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2022-05-13</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3595\" target=\"_blank\">I am sure I changed my password last...???</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0405.html\" target=\"_blank\">Lurking Prion</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3596\" target=\"_blank\">3596</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2022-05-16</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3596\" target=\"_blank\">Extracting text, tables and images from docx files using Python</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0300.html\" target=\"_blank\">Mr. Young</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3597\" target=\"_blank\">3597</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2022-05-17</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3597\" target=\"_blank\">Good Idea Fairy Hunting</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0405.html\" target=\"_blank\">Lurking Prion</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3598\" target=\"_blank\">3598</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2022-05-18</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3598\" target=\"_blank\">Slackware 15 - 32 bit Operating System from day one.</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=3599\" target=\"_blank\">3599</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2022-05-19</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3599\" target=\"_blank\">Linux Inlaws S01E56: Slackware - A User\'s Perspective</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0384.html\" target=\"_blank\">monochromec</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3600\" target=\"_blank\">3600</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2022-05-20</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3600\" target=\"_blank\">Digitizing Photos</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=3601\" target=\"_blank\">3601</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2022-05-23</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3601\" target=\"_blank\">Re: The Worst Car I Ever Had</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=3602\" target=\"_blank\">3602</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2022-05-24</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3602\" target=\"_blank\">Hacker Stories April 20 22</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=3603\" target=\"_blank\">3603</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2022-05-25</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3603\" target=\"_blank\">Who the heck is Evil Steve? Part 1\r\n</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0405.html\" target=\"_blank\">Lurking Prion</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3604\" target=\"_blank\">3604</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2022-05-26</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3604\" target=\"_blank\">Everything You Always Wanted to Know About PEX Part 01- Let\'s Talk About PEX - Introduction </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=3605\" target=\"_blank\">3605</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2022-05-27</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3605\" target=\"_blank\">Aspire-ing to use 13 year hardware</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=3606\" target=\"_blank\">3606</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2022-05-30</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3606\" target=\"_blank\">Infinity is just a big number and other proofs</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=3607\" target=\"_blank\">3607</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2022-05-31</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3607\" target=\"_blank\">The Best Eggs in the World</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0128.html\" target=\"_blank\">pokey</a></td>\n</tr>\n</table>\n\n<h2>Comments this month</h2>\n\n<p>These are comments which have been made during the past month, either to shows released during the month or to past shows.\nThere are 24 comments in total.</p>\n<h3>Past shows</h3>\n<p>There are 5 comments on\n2 previous shows:</p>\n<ul>\n<li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3574#comments\" target=\"_blank\">hpr3574</a></strong>\n(2022-04-14) \"<em>Local Talking Newspapers</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0403.html\" target=\"_blank\">Lee</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3574#5\" target=\"_blank\">Comment 5</a>:\nelmussol on 2022-05-09:\n\"correction\"</li>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3574#6\" target=\"_blank\">Comment 6</a>:\nDave Morriss on 2022-05-09:\n\"Clitheroe, LANCASHIRE!\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3585#comments\" target=\"_blank\">hpr3585</a></strong>\n(2022-04-29) \"<em>Freedom of speech in open source, Part 2.</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0391.html\" target=\"_blank\">Some Guy On The Internet</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3585#1\" target=\"_blank\">Comment 1</a>:\nKevin O&#39;Brien on 2022-05-04:\n\"Open source vs. free software\"</li>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3585#2\" target=\"_blank\">Comment 2</a>:\nSome Guy On The Internet on 2022-05-05:\n\"The freedom to Advertise.\"</li>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3585#3\" target=\"_blank\">Comment 3</a>:\nKevin O&#39;Brien on 2022-05-05:\n\"Free Software\"</li></ul><br/>\n</li></ul>\n<h3>This month\'s shows</h3>\n<p>There are 19 comments on 10 of this month\'s shows:</p>\n<ul><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3586#comments\" target=\"_blank\">hpr3586</a></strong>\n(2022-05-02) \"<em>HPR Community News for April 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=3586#1\" target=\"_blank\">Comment 1</a>:\nbrian-in-ohio on 2022-05-19:\n\"jinx\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3588#comments\" target=\"_blank\">hpr3588</a></strong>\n(2022-05-04) \"<em>Linux Inlaws S01E55: Get yer boots on for a fresh look at init systems</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0384.html\" target=\"_blank\">monochromec</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3588#1\" target=\"_blank\">Comment 1</a>:\ncybergrue on 2022-05-04:\n\"Unix Philosophy\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3588#2\" target=\"_blank\">Comment 2</a>:\nClinton Roy on 2022-05-05:\n\"Debian systemd\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3588#3\" target=\"_blank\">Comment 3</a>:\nbrian-in-ohio on 2022-05-19:\n\"out of your depth\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3592#comments\" target=\"_blank\">hpr3592</a></strong>\n(2022-05-10) \"<em>A quick look at the Surface pro X</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0111.html\" target=\"_blank\">knightwise</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3592#1\" target=\"_blank\">Comment 1</a>:\nRobert on 2022-04-30:\n\"Fine show until ...\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3594#comments\" target=\"_blank\">hpr3594</a></strong>\n(2022-05-12) \"<em>Peely-wally in Edinburgh</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0225.html\" target=\"_blank\">Dave Morriss</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3594#1\" target=\"_blank\">Comment 1</a>:\nbrian-in-ohio on 2022-05-19:\n\"great show\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3594#2\" target=\"_blank\">Comment 2</a>:\nBeeza on 2022-05-20:\n\"Pascal\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3594#3\" target=\"_blank\">Comment 3</a>:\nDave on 2022-05-20:\n\"Thanks Brian\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3594#4\" target=\"_blank\">Comment 4</a>:\nDave Morriss on 2022-05-20:\n\"Regarding Pascal\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3597#comments\" target=\"_blank\">hpr3597</a></strong>\n(2022-05-17) \"<em>Good Idea Fairy Hunting</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0405.html\" target=\"_blank\">Lurking Prion</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3597#1\" target=\"_blank\">Comment 1</a>:\nKevin O&#39;Brien on 2022-05-18:\n\"Great show\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3597#2\" target=\"_blank\">Comment 2</a>:\nLurking Prion on 2022-05-19:\n\"Thank you!\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3598#comments\" target=\"_blank\">hpr3598</a></strong>\n(2022-05-18) \"<em>Slackware 15 - 32 bit Operating System from day one.</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=3598#1\" target=\"_blank\">Comment 1</a>:\nbittin on 2022-05-18:\n\"Audacious Winamp Skins\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3598#2\" target=\"_blank\">Comment 2</a>:\nlinuxdaddy on 2022-05-18:\n\"32-bit linux\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3598#3\" target=\"_blank\">Comment 3</a>:\nbrian-in-ohio on 2022-05-19:\n\"great show\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3598#4\" target=\"_blank\">Comment 4</a>:\nWindigo on 2022-05-21:\n\"Intrigued about slackware\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3599#comments\" target=\"_blank\">hpr3599</a></strong>\n(2022-05-19) \"<em>Linux Inlaws S01E56: Slackware - A User\'s Perspective</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0384.html\" target=\"_blank\">monochromec</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3599#1\" target=\"_blank\">Comment 1</a>:\nbrian-in-ohio on 2022-05-19:\n\"what????\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3602#comments\" target=\"_blank\">hpr3602</a></strong>\n(2022-05-24) \"<em>Hacker Stories April 20 22</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=3602#1\" target=\"_blank\">Comment 1</a>:\nWindigo on 2022-05-24:\n\"The best kind of correct\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3604#comments\" target=\"_blank\">hpr3604</a></strong>\n(2022-05-26) \"<em>Everything You Always Wanted to Know About PEX Part 01- Let\'s Talk About PEX - Introduction </em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0394.html\" target=\"_blank\">Trey</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3604#1\" target=\"_blank\">Comment 1</a>:\nLurking Prion on 2022-05-26:\n\"Made my heart happy!\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3605#comments\" target=\"_blank\">hpr3605</a></strong>\n(2022-05-27) \"<em>Aspire-ing to use 13 year hardware</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=3605#1\" target=\"_blank\">Comment 1</a>:\nTrey on 2022-05-27:\n\"Great show\"</li></ul><br/>\n</li></ul>\n\n<h2>Mailing List discussions</h2>\n<p>\nPolicy decisions surrounding HPR are taken by the community as a whole. This\ndiscussion takes place on the <a href=\"https://hackerpublicradio.org/maillist\"\ntarget=\"_blank\">Mail List</a> which is open to all HPR listeners and\ncontributors. The discussions are open and available on the HPR server under\n<a href=\"https://hackerpublicradio.org/pipermail/hpr_hackerpublicradio.org/\">Mailman</a>.\n</p>\n<p>The threaded discussions this month can be found here:</p>\n<a href=\"https://hackerpublicradio.org/pipermail/hpr_hackerpublicradio.org/2022-May/thread.html\" target=\"_blank\">https://hackerpublicradio.org/pipermail/hpr_hackerpublicradio.org/2022-May/thread.html</a>\n\n\n<h2>Events Calendar</h2>\n<p>With the kind permission of <strong>LWN.net</strong> we are linking to\n<a href=\"https://lwn.net/Calendar/\" target=\"_blank\">The LWN.net Community Calendar</a>.</p>\n<p>Quoting the site:</p>\n<blockquote>This is the LWN.net community event calendar, where we track\nevents of interest to people using and developing Linux and free software.\nClicking on individual events will take you to the appropriate web\npage.</blockquote>\n\n<h2>Any other business</h2>\n<h3 id=\"older-hpr-shows-on-archive.org-phase-2\">Older HPR shows on archive.org, phase 2</h3>\n<p>Now that all shows from number 1 to the latest have been uploaded to the Internet Archive there are other tasks to perform. We are reprocessing and re-uploading shows in the range 871 to 2429 as explained in the Community News show notes released in <a href=\"https://hackerpublicradio.org/eps.php?id=3586#older-hpr-shows-on-archive.org-phase-2\">May 2022</a>. We are keeping a running total here to show progress:</p>\n<ul>\n<li>Re-uploads done so far: 271</li>\n<li>Shows remaining to be done: 1288</li>\n<li>Shows uploaded by last Community News recording: 131</li>\n<li>Shows added since last recording: 140</li>\n</ul>\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
(3339,'2021-05-20','Linux Inlaws S01E30: Politicians and artificial intelligence part 2',3453,'Part 2 of the miniseries on Deep Learning, politicians and other approaches to intelligence (or not)','<p>After successfully navigating through the shallow (or not-so-shallow) depths of the first episode on deep learning fundamentals, our two heroes tackle a more concrete topic in this episode: How to use the damn stuff! No expenses will be spared to bring to the listeners the finer details of tensors, TensorFlow and other frameworks which serve as the basis for modern artificial intelligence / machine learning applications running on back-propagation networks (see the first episode on the foundations). Lifting the curtain even more, all will be revealed about a little corner shop called \"Google\" (well, almost all :-).\r\n</p>\r\n<h2>Links:</h2>\r\n<ul>\r\n<li>Torch: <a href=\"https://torch.ch\" target=\"_blank\">https://torch.ch</a>\r\n</li>\r\n<li>PyTorch: <a href=\"https://pytorch.org\" target=\"_blank\">https://pytorch.org</a>\r\n</li>\r\n<li>TensorFlow: <a href=\"https://www.tensorflow.org\" target=\"_blank\">https://www.tensorflow.org</a>\r\n</li>\r\n<li>Lua: <a href=\"https://www.lua.org\" target=\"_blank\">https://www.lua.org</a>\r\n</li>\r\n<li>BigTable: <a href=\"https://en.wikipedia.org/wiki/Bigtable\" target=\"_blank\">https://en.wikipedia.org/wiki/Bigtable</a>\r\n</li>\r\n<li>BigFS: <a href=\"https://en.wikipedia.org/wiki/Google_File_System\" target=\"_blank\">https://en.wikipedia.org/wiki/Google_File_System</a>\r\n</li>\r\n<li>Google\'s inner workings: <a href=\"https://www.panmacmillan.com/authors/david-a-vise/the-google-story/9781509889211\" target=\"_blank\">https://www.panmacmillan.com/authors/david-a-vise/the-google-story/9781509889211</a>\r\n</li>\r\n<li>TPUs: <a href=\"https://en.wikipedia.org/wiki/Tensor_Processing_Unit\" target=\"_blank\">https://en.wikipedia.org/wiki/Tensor_Processing_Unit</a>\r\n</li>\r\n<li>More DL frameworks: <a href=\"https://en.wikipedia.org/wiki/Comparison_of_deep-learning_software\" target=\"_blank\">https://en.wikipedia.org/wiki/Comparison_of_deep-learning_software</a>\r\n</li>\r\n<li>TIOBE index: <a href=\"https://www.tiobe.com/tiobe-index\" target=\"_blank\">https://www.tiobe.com/tiobe-index</a>\r\n</li>\r\n<li>Stackoverflow survey: <a href=\"https://insights.stackoverflow.com/survey/2020\" target=\"_blank\">https://insights.stackoverflow.com/survey/2020</a>\r\n</li>\r\n</ul>\r\n',384,111,1,'CC-BY-SA','Policitians, artificial intelligence, deep learning',0,0,1),
(3343,'2021-05-26','The Forth programming language',761,'A less than complete history of Forth','<ul>\r\n<li><p>forth the early years<br />\r\n<a href=\"https://worrydream.com/refs/Moore%20-%20Forth%20-%20The%20Early%20Years.pdf\" class=\"uri\">https://worrydream.com/refs/Moore%20-%20Forth%20-%20The%20Early%20Years.pdf</a></p></li>\r\n<li><p><a href=\"https://en.wikipedia.org/wiki/Forth_(programming_language)\" class=\"uri\">https://en.wikipedia.org/wiki/Forth_(programming_language)</a></p></li>\r\n<li><p><a href=\"https://www.forth.com/resources/forth-programming-language/\" class=\"uri\">https://www.forth.com/resources/forth-programming-language/</a></p></li>\r\n<li><p><a href=\"https://colorforth.github.io/\" class=\"uri\">https://colorforth.github.io/</a></p></li>\r\n<li><p>chuck moore on youtube</p>\r\n<ul>\r\n<li>2019 <a href=\"https://youtu.be/81bkIqPpe0g\" class=\"uri\">https://youtu.be/81bkIqPpe0g</a></li>\r\n<li>2018 <a href=\"https://youtu.be/SX3kXbLmwn4\" class=\"uri\">https://youtu.be/SX3kXbLmwn4</a></li>\r\n<li>2008 <a href=\"https://youtu.be/ydeMNRxJ3Y8\" class=\"uri\">https://youtu.be/ydeMNRxJ3Y8</a></li>\r\n</ul></li>\r\n<li><p>klaatu on lisp <a href=\"https://gnuworldorder.info/audiophile/gnuWorldOrder_405.ogg\" class=\"uri\">https://gnuworldorder.info/audiophile/gnuWorldOrder_405.ogg</a></p></li>\r\n</ul>\r\n',326,0,0,'CC-BY-SA','programming, history',0,0,1),
(3440,'2021-10-08','Lighten Layer Modes',1168,'We continue our look at the Layer Modes in GIMP with the Lighten Modes','<p>Layer Modes, sometimes called Blending Modes, allow you to combine layers in a variety of ways. We continue with the Lighten Modes, except for Dodge which we will cover in the next tutorial along with Burn. These are the Layer Modes available on the latest (at the time I write this) version of GIMP, 2.10.24.</p>\r\n<h2 id=\"links\">Links:</h2>\r\n<ul>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Luma_(video)\" class=\"uri\">https://en.wikipedia.org/wiki/Luma_(video)</a></li>\r\n<li><a href=\"https://blog.johnnovak.net/2016/09/21/what-every-coder-should-know-about-gamma/\" class=\"uri\">https://blog.johnnovak.net/2016/09/21/what-every-coder-should-know-about-gamma/</a></li>\r\n<li><a href=\"https://www.youtube.com/watch?v=Ijwb1R07aa0\" class=\"uri\">https://www.youtube.com/watch?v=Ijwb1R07aa0</a></li>\r\n<li><a href=\"https://docs.gimp.org/2.10/en/gimp-concepts-layer-modes.html\" class=\"uri\">https://docs.gimp.org/2.10/en/gimp-concepts-layer-modes.html</a></li>\r\n<li><a href=\"https://www.ahuka.com/gimp/lighten-layer-modes/\" class=\"uri\">https://www.ahuka.com/gimp/lighten-layer-modes/</a></li>\r\n</ul>\r\n',198,113,0,'CC-BY-SA','GIMP, Layer Modes, Blending Modes, Lighten',0,0,1),
(3450,'2021-10-22','Internal Commands',746,'More on DOS. This time it is Internal Commands.','<p>This tutorial looks at DOS Internal Commands, which in some sense are analogous to shell commands in Linux. That means that the command interpreter already has these loaded and ready to go when you boot.</p>\r\n<h2 id=\"links\">Links:</h2>\r\n<ul>\r\n<li><a href=\"https://webopedia.internet.com/TERM/c/command.html\" class=\"uri\">https://webopedia.internet.com/TERM/c/command.html</a></li>\r\n<li><a href=\"https://www.ahuka.com/dos-lessons-for-self-study-purposes/dos-lesson-3-internal-commands/\" class=\"uri\">https://www.ahuka.com/dos-lessons-for-self-study-purposes/dos-lesson-3-internal-commands/</a></li>\r\n</ul>\r\n',198,117,0,'CC-BY-SA','DOS, early PC computing, Internal Commands',0,0,1),
(3460,'2021-11-05','Dodge and Burn',1107,'We continue our look at the Layer Modes in GIMP with Dodge and Burn','<p>Layer Modes, sometimes called Blending Modes, allow you to combine layers in a variety of ways. We continue with the Dodge and Burn Modes. Dodge is one of the Lighten Modes, while Burn is one of the Darken Modes, but I pulled them out for their own tutorial because they are not only closely related (inverse of each other), but also because I wanted to cover their use as Tool Modes in addition to Layer Modes. These are the Layer Modes available on the latest (at the time I write this) version of GIMP, 2.10.24.</p>\r\n<h2 id=\"links\">Links:</h2>\r\n<ul>\r\n<li><a href=\"https://docs.gimp.org/2.10/en/gimp-tools-paint.html#gimp-tools-paint-options\" class=\"uri\">https://docs.gimp.org/2.10/en/gimp-tools-paint.html#gimp-tools-paint-options</a></li>\r\n<li><a href=\"https://www.ahuka.com/gimp/a-layer-mask-project/\" class=\"uri\">https://www.ahuka.com/gimp/a-layer-mask-project/</a></li>\r\n<li><a href=\"https://digitalmedia.fws.gov/digital/collection/natdiglib/id/14486/rec/210\" class=\"uri\">https://digitalmedia.fws.gov/digital/collection/natdiglib/id/14486/rec/210</a></li>\r\n<li><a href=\"https://www.youtube.com/watch?v=bbaAEZl7_44\" class=\"uri\">https://www.youtube.com/watch?v=bbaAEZl7_44</a></li>\r\n<li><a href=\"https://www.ahuka.com/gimp/dodge-and-burn/\" class=\"uri\">https://www.ahuka.com/gimp/dodge-and-burn/</a></li>\r\n</ul>\r\n',198,113,0,'CC-BY-SA','GIMP, Layer Modes, Blending Modes, Dodge and Burn',0,0,1),
(3470,'2021-11-19','External Commands and Emergency Boot Disk',1008,'More on DOS. This time it is External Commands and Emergency Boot Disk','<p>In our continuing exploration of DOS we come to the topics of External Commands and Emergency Boot Disks. We cover them together because External Commands may not be available on your Emergency Boot Disk unless you take steps to include them, unlike Internal Commands, which are always part of a Boot Disk.</p>\r\n<h2 id=\"links\">Links:</h2>\r\n<ul>\r\n<li><a href=\"https://www.ahuka.com/dos-lessons-for-self-study-purposes/dos-lesson-4-external-commands-emergency-boot-disk/\" class=\"uri\">https://www.ahuka.com/dos-lessons-for-self-study-purposes/dos-lesson-4-external-commands-emergency-boot-disk/</a></li>\r\n</ul>\r\n',198,117,0,'CC-BY-SA','DOS, early PC computing, External Commands, Emergency Boot Disk',0,0,1),
(3480,'2021-12-03','Darken Layer Modes',883,'More on Layer Modes in GIMP with the Darken Modes','<p>Layer Modes, sometimes called Blending Modes, allow you to combine layers in a variety of ways. We continue with the Darken Modes, except for Burn, which was covered in the previous tutorial. Darken modes do what they say on the tin, they make things darker, and so they are kind of the inverse of the Lighten Modes. These are the Layer Modes available on the latest (at the time I write this) version of GIMP, 2.10.24. I also take the time to discuss image formats such as JPG, PNG, and RAW.</p>\r\n<h2 id=\"links\">Links:</h2>\r\n<ul>\r\n<li><a href=\"https://www.ahuka.com/gimp/lighten-layer-modes/\" class=\"uri\">https://www.ahuka.com/gimp/lighten-layer-modes/</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Portable_Network_Graphics\" class=\"uri\">https://en.wikipedia.org/wiki/Portable_Network_Graphics</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/JPEG\" class=\"uri\">https://en.wikipedia.org/wiki/JPEG</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Raw_image_format\" class=\"uri\">https://en.wikipedia.org/wiki/Raw_image_format</a></li>\r\n<li><a href=\"https://www.youtube.com/watch?v=XbcA9iSTudY\" class=\"uri\">https://www.youtube.com/watch?v=XbcA9iSTudY</a></li>\r\n<li><a href=\"https://daviesmediadesign.com/project/open-raw-images-gimp-2-10/\" class=\"uri\">https://daviesmediadesign.com/project/open-raw-images-gimp-2-10/</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Dodging_and_burning\" class=\"uri\">https://en.wikipedia.org/wiki/Dodging_and_burning</a></li>\r\n<li><a href=\"https://docs.gimp.org/2.10/en/gimp-concepts-layer-modes.html\" class=\"uri\">https://docs.gimp.org/2.10/en/gimp-concepts-layer-modes.html</a></li>\r\n<li><a href=\"https://www.ahuka.com/gimp/darken-modes/\" class=\"uri\">https://www.ahuka.com/gimp/darken-modes/</a></li>\r\n</ul>\r\n',198,113,0,'CC-BY-SA','GIMP, Layer Modes, Blending Modes, Darken Modes',0,0,1),
(3490,'2021-12-17','The Path',906,'More on DOS. This time it is the Path.','<p>In this DOS tutorial we take a look at the Path, an important concept. While the concept continues to be used in modern operating systems like Linux, in DOS you had severe limitations you always had to be conscious of. Remember that this was in the days when 640KB was enough memory for anyone.</p>\r\n<h2 id=\"links\">Links:</h2>\r\n<ul>\r\n<li><a href=\"https://www.ahuka.com/dos-lessons-for-self-study-purposes/dos-lesson-5-the-path/\" class=\"uri\">https://www.ahuka.com/dos-lessons-for-self-study-purposes/dos-lesson-5-the-path/</a></li>\r\n</ul>\r\n',198,117,0,'CC-BY-SA','DOS, early PC computing, The Path',0,0,1),
(3349,'2021-06-03','Linux Inlaws S01E31: Interview with Paul Ramsey FOSS aficionado and entrepreneur',3923,'An interview with Paul Ramsey, FLOSS entrepreneur and OpenGeo fame','<p>\r\nIn this episode the inlaws host Paul Ramsey of OpenGeo fame. Apart from his PostgreSQL contributions,\r\nPaul is probably best known for GIS work and geo DB contributions in general (in addition to\r\noff-the-beaten track stuff like URL of his website among other things). Don\'t miss this for nuggets\r\non geo databases and beyond!\r\n</p>\r\n<h2>Links:</h2>\r\n<ul>\r\n<li>Paul Ramsey: <a href=\"https://blog.cleverelephant.ca/\" target=_blank>https://blog.cleverelephant.ca/</a></li>\r\n<li>PostgreSQL: <a href=\"https://www.postgresql.org\" target=_blank>https://www.postgresql.org</a></li>\r\n<li>PostGIS: <a href=\"https://postgis.net\" target=_blank>https://postgis.net</a></li>\r\n<li>FOSS4G 2019: <a href=\"https://www.youtube.com/watch?v=NQ5_NnrBHjo\" target=_blank>https://www.youtube.com/watch?v=NQ5_NnrBHjo</a></li>\r\n</ul>\r\n',384,111,1,'CC-BY-SA','PostgreSQL,PostGIS',0,0,1),
(3344,'2021-05-27','Infosec Podcasts Part 3 - Infosec Career and Personal Development',366,'Presenting my favorite podcasts related to information security careers and growth','<p>Inoffensive in every region of the world</p>\r\n<p>Infosec Podcasts Part 3 – Infosec Career & Personal Development</p>\r\n<p>Why am I recording this series?</p>\r\n<p>\"What podcasts you listen to\" was on the list of recommended topics</p>\r\n<p>I am passionate about information security</p>\r\n<p>We desperately need people to fill infosec jobs in many different specialties</p>\r\n<p>Infosec is a rapidly changing field, and it is critical to stay current</p>\r\n<p>As a result I listen to TONS of infosec related podcasts</p>\r\n<p>Because there are so many podcasts to list, I will break them down into 6 different episodes based on topics:</p>\r\n<ul>\r\n<li>Part 1 - News & Current Events</li>\r\n<li>Part 2 - General Information Security</li>\r\n<li>Part 3 - Career & Personal Development</li>\r\n<li>Part 4 - Social Engineering</li>\r\n<li>Part 5 -\r\n<ul>\r\n<li>Hacks & Attacks</li>\r\n<li>Technical Information & Learning</li>\r\n<li>Infosec Community / Social / History</li>\r\n</ul></li>\r\n<li>Part 6 - Infosec Leadership</li>\r\n</ul>\r\n<h2 id=\"part-3\">Part 3</h2>\r\n<h3 id=\"career-personal-development\">Career & Personal Development</h3>\r\n<ul>\r\n<li><p>Getting into Infosec - Ayman Elsawah (Monthly)<br />\r\nWas a monthly podcast, but the last recorded episode dropped February 2021<br />\r\nStories of how Infosec and Cybersecurity pros got jobs in the field so you can be inspired, motivated, and educated on your journey<br />\r\n<a href=\"https://gettingintoinfosec.com/\" class=\"uri\">https://gettingintoinfosec.com/</a></p></li>\r\n<li><p>Infosec Career Podcast – Jason Wood (Discontinued March 2020)<br />\r\nInterviews with infosec professionals discussing their career journeys<br />\r\n<a href=\"https://infoseccareer.libsyn.com/\" class=\"uri\">https://infoseccareer.libsyn.com/</a></p></li>\r\n<li><p>Cyber Security Interviews – Douglas Brush (Bi-weekly)<br />\r\nA weekly interview based podcast with top cyber security professionals discussing how they got where they are and their perspectives on the industry<br />\r\n<a href=\"https://cybersecurityinterviews.com/\" class=\"uri\">https://cybersecurityinterviews.com/</a></p></li>\r\n<li><p>Humans of Infosec - Caroline Wong & Mike Shema (Bi-weekly)<br />\r\nA weekly podcast interviewing people from diverse backgrounds involved in infosec.<br />\r\n<a href=\"https://soundcloud.com/humans-of-infosec\" class=\"uri\">https://soundcloud.com/humans-of-infosec</a></p></li>\r\n<li><p>Hacker Valley Studio – Chris Cochran & Ron Eddings (Weekly)<br />\r\nDiscussions of personal growth and maturity within Infosec & life<br />\r\n<a href=\"https://hackervalley.com/\" class=\"uri\">https://hackervalley.com/</a></p></li>\r\n<li><p>We Hack Purple – Tanya Janka (Weekly)<br />\r\nInterview based podcast discussing various infosec careers with a diverse array of guests<br />\r\n<a href=\"https://wehackpurple.com/podcast.html\" class=\"uri\">https://wehackpurple.com/podcast.html</a></p></li>\r\n</ul>\r\n',394,75,0,'CC-BY-SA','infosec, podcasts, security',0,0,1),
(3347,'2021-06-01','Ethical Analysis of Renewable Energy and Conservation',904,'I read a paper I wrote about the ethical issues of renewable energy and conservation efforts.','<h3 id=\"original-essay\">Original essay:</h3>\r\n<p><a href=\"https://hackerpublicradio.org/eps/hpr3347/hpr3347/ethical_analysis_of_renewable_energy_and_conservation.pdf\">https://hackerpublicradio.org/eps/hpr3347/hpr3347/ethical_analysis_of_renewable_energy_and_conservation.pdf</a></p>\r\n<h3 id=\"references\">References</h3>\r\n<ul>\r\n<li>Bedard, Paul (2010, March 23). High Energy Costs for the Poor Might Push Action in Congress. Washington Whispers, U.S. News, Sunday, April 11, 2010 <a href=\"https://www.usnews.com\" class=\"uri\">https://www.usnews.com</a></li>\r\n<li>Colton, Roger D. (1994, July/August). Energy and Low-Income Housing: Part I Energy Policy Hurts The Poor. NHI Shelterforce. Issue #76. Retrieved from <a href=\"https://www.nhi.org\" class=\"uri\">https://www.nhi.org</a></li>\r\n<li>Ellen (2008, October 4). Poverty and Crime [Web log message], retrieved from Defining Canada, <a href=\"https://www.definingcanada.ca\" class=\"uri\">https://www.definingcanada.ca</a></li>\r\n<li>Fellegi, Ivan P. (1997, September). On poverty and low income, retrieved March 31, 2010 from Statistics Canada web site, <a href=\"https://www.statcan.gc.ca/pub/13f0027x/13f0027x1999001-eng.htm\" class=\"uri\">https://www.statcan.gc.ca/pub/13f0027x/13f0027x1999001-eng.htm</a></li>\r\n<li>Minu (2010, April 2). Lamps | Compact Fluorescent Lamps (CFL) [Web log message]. Retrieved from House Construction in India, <a href=\"https://houseconstructionindia.blogspot.com\" class=\"uri\">https://houseconstructionindia.blogspot.com</a></li>\r\n<li>Patel, Julie (2010, March 11). NAACP and FPL: Saving too much energy hurts the poor [web log message], Retrieved from SunSentinel.com, <a href=\"https://weblogs.sun-sentinel.com\" class=\"uri\">https://weblogs.sun-sentinel.com</a></li>\r\n<li>Smith, Adam (1776). An Inquiry into the Nature And Causes of the Wealth of Nations. Public domain.</li>\r\n<li>Toohey, Marty (2009, September 21). Advocates concerned Austin Energy plans will hurt poor, elderly. statesman.com. Retrieved from www.statesman.com</li>\r\n<li>Walsh, Bryan (2009, February 17). Building Green Houses for the Poor. Time. Retrieved from <a href=\"https://www.time.com\" class=\"uri\">https://www.time.com</a>.</li>\r\n</ul>\r\n',383,0,0,'CC-BY-SA','Ethics,renewable,energy,poverty,solar,wind,conservation,green',0,0,1),
(3348,'2021-06-02','Feedback on the Article by hedorah about HPR',4420,'Join the policy discussions on the mail list','<p>hedorah posted an article <a href=\"https://foxacid.se/hedorah/posts/hpr/\">https://foxacid.se/hedorah/posts/hpr/</a>, and we read out the mail thread that resulted <a href=\"https://hackerpublicradio.org/pipermail/hpr_hackerpublicradio.org/2021-April/014931.html\">https://hackerpublicradio.org/pipermail/hpr_hackerpublicradio.org/2021-April/014931.html</a></a>',30,0,1,'CC-BY-SA','HPR, policy decisions',0,0,1),
(3500,'2021-12-31','Contrast Layer Modes',1019,'More on Layer Modes in GIMP with the Contrast Modes','<p>Layer Modes, sometimes called Blending Modes, allow you to combine layers in a variety of ways. We continue with the Contrast Modes, which are ways of combining layers that can heighten the contrast my making light pixels lighter and dark pixels darker. These are the Layer Modes available on the latest (at the time I write this) version of GIMP, 2.10.24.</p>\r\n<h2 id=\"links\">Links:</h2>\r\n<ul>\r\n<li><a href=\"https://docs.gimp.org/2.10/en/gimp-concepts-layer-modes.html\" class=\"uri\">https://docs.gimp.org/2.10/en/gimp-concepts-layer-modes.html</a></li>\r\n<li><a href=\"https://www.ahuka.com/gimp/darken-modes/\" class=\"uri\">https://www.ahuka.com/gimp/darken-modes/</a></li>\r\n</ul>\r\n',198,113,0,'CC-BY-SA','GIMP, Layer Modes, Blending Modes, Contrast Modes',0,0,1),
(3510,'2022-01-14','Syntax, Switches, and Help',1215,'We continue our look the old warhorse, DOS. This time it is Syntax, Switches, and Help.','<p>Since DOS is a command line type of operating system, it is really important that you understand the syntax of commands. The good news is that the system will do what you tell it to do. But the bad news is that it will do what you tell it to do. You have to tell it in the precisely correct way, and that means Syntax. And with a number of commands you can modify them using Switches. And where do you learn all about Syntax and Switches? Why, in the HELP system, of course!</p>\r\n<h2 id=\"links\">Links:</h2>\r\n<ul>\r\n<li><a href=\"https://www.ahuka.com/dos-lessons-for-self-study-purposes/dos-lesson-6-syntax-and-switches-help-system/\" class=\"uri\">https://www.ahuka.com/dos-lessons-for-self-study-purposes/dos-lesson-6-syntax-and-switches-help-system/</a></li>\r\n</ul>\r\n',198,117,0,'CC-BY-SA','DOS, early PC computing, syntax, switches, help',0,0,1),
(3520,'2022-01-28','Inversion Layer Modes',1064,'More on Layer Modes in GIMP with the Inversion Modes','<p>Layer Modes, sometimes called Blending Modes, allow you to combine layers in a variety of ways. We continue with the Inversion Modes, which in various ways invert the lightness and the color values of the component layers. These are the Layer Modes available on the latest (at the time I write this) version of GIMP, 2.10.24.</p>\r\n<h2 id=\"links\">Links:</h2>\r\n<ul>\r\n<li><a href=\"https://www.ahuka.com/gimp/lighten-layer-modes/\" class=\"uri\">https://www.ahuka.com/gimp/lighten-layer-modes/</a></li>\r\n<li><a href=\"https://docs.gimp.org/2.10/en/gimp-concepts-layer-modes.html\" class=\"uri\">https://docs.gimp.org/2.10/en/gimp-concepts-layer-modes.html</a></li>\r\n<li><a href=\"https://www.ahuka.com/gimp/darken-modes/\" class=\"uri\">https://www.ahuka.com/gimp/darken-modes/</a></li>\r\n</ul>',198,113,0,'CC-BY-SA','GIMP, Layer Modes, Blending Modes, Inversion Modes',0,0,1),
(3530,'2022-02-11','Filenames and ASCII',875,'We continue our look at the old warhorse, DOS. This time it is DOS filenames and ASCII','<p>In a purely text-based operating system you need to pay special attention to naming files. You won\'t have any helpful icons or thumbnails to help you locate things. So we dig into the file naming conventions in DOS, including forbidden characters. And since the possible characters all come from the ASCII character set, we do a small look at that as well.</p>\r\n<h2 id=\"links\">Links:</h2>\r\n<ul>\r\n<li><a href=\"https://webopedia.internet.com/TERM/A/ASCII.html\" class=\"uri\">https://webopedia.internet.com/TERM/A/ASCII.html</a></li>\r\n<li><a href=\"https://www.techweb.com/encyclopedia/defineterm?term=ASCIIchart\" class=\"uri\">https://www.techweb.com/encyclopedia/defineterm?term=ASCIIchart</a></li>\r\n<li><a href=\"https://www.ahuka.com/dos-lessons-for-self-study-purposes/dos-lesson-7-dos-filenames-ascii/\" class=\"uri\">https://www.ahuka.com/dos-lessons-for-self-study-purposes/dos-lesson-7-dos-filenames-ascii/</a></li>\r\n</ul>\r\n',198,117,0,'CC-BY-SA','DOS, early PC computing, filenames, ASCII',0,0,1),
(3353,'2021-06-09','My terminal journey, part 01.',2814,'Becoming terminal friendly.','<h2 id=\"book-tlcl\">Book <a href=\"https://sourceforge.net/projects/linuxcommand/files/TLCL/19.01/TLCL-19.01.pdf/download\" title=\"download link\">TLCL</a></h2>\r\n<p>The Linux Command Line: <a href=\"https://www.linuxcommand.org/tlcl.php\">https://www.linuxcommand.org/tlcl.php</a></p>\r\n<h2 id=\"my-bashrc-alias\">My .bashrc alias</h2>\r\n<pre><code># ls aliases\r\nalias la=&#39;ls -Alh --group-directories-first&#39;\r\nalias lr=&#39;ls -lh --group-directories-first --recursive&#39;\r\nalias lar=&#39;ls -Alh --group-directories-first --recursive&#39;\r\n\r\n# safety first ;)\r\nalias rmi=&#39;rm --interactive --verbose&#39;\r\nalias mvi=&#39;mv --interactive --verbose&#39;\r\nalias cpi=&#39;cp --interactive --verbose&#39;\r\n\r\n# cd reverse dir\r\nalias ..=&#39;cd ..&#39;\r\nalias .2=&#39;cd ../..&#39;\r\nalias .3=&#39;cd ../../..&#39;\r\nalias .4=&#39;cd ../../../..&#39;\r\nalias .5=&#39;cd ../../../../..&#39;\r\n\r\n# cd dir\r\nalias cd.d=&#39;cd ~/Documents/.dump&#39;\r\n\r\n# shutdown | reboot\r\nalias ssn=&#39;sudo shutdown -P now&#39;\r\nalias sr=&#39;sudo reboot&#39;\r\n\r\n# Misc\r\nalias nrpt=&#39;echo -e &quot;\\n\\n---\\n\\nNew Report\\n\\n---\\n\\n&quot;&#39;\r\n</code></pre>\r\n<h2 id=\"my-dump-script\">My dump script</h2>\r\n<pre><code>#!/bin/bash\r\n\r\ndump=dump$(date +%m-%d-%Y).txt\r\npdat=$(date +%a_%b_%d_%Y_%T)\r\n\r\ntouch $dump;\r\n\r\necho -e &quot;$pdat&quot; &gt; $dump; echo -e &quot;\\n\\nThis file is used to store terminal output for later use; now get out!\\n\\n&quot; &gt;&gt; $dump;\r\n\r\necho -e &quot;\\n\\nDump file $dump is ready for use (created on $(date +%m-%d-%Y_%T)).\\n\\n&quot;\r\n</code></pre>\r\n<h2 id=\"my-upgrade-script\">My Upgrade script</h2>\r\n<pre><code>#!/bin/bash\r\n\r\ndp=dump$(date +%m-%d-%Y).txt\r\n\r\ndate | tee -a ./$dp; echo -e &quot;\\n&quot; | tee -a ./$dp;\r\n\r\nsudo apt-get update | tee -a ./$dp; echo -e &quot;\\n&quot; | tee -a ./$dp;\r\necho -e &quot;System Update Completed.&quot; | tee -a ./$dp; echo -e &quot;\\n&quot; | tee -a ./$dp;\r\n\r\nsudo apt-get upgrade --yes | tee -a ./$dp; echo -e &quot;\\n&quot; | tee -a ./$dp;\r\necho -e &quot;System Upgrade Completed.&quot; | tee -a ./$dp; echo -e &quot;\\n&quot; | tee -a ./$dp;\r\n</code></pre>\r\n<h2 id=\"commands\">Commands</h2>\r\n<ol>\r\n<li><p>the upgrade example <code>sudo apt-get update | tee -a ~/Documents/.dump/dump05-05-2021.txt; nrpt &gt;&gt; ./dump05-05-2021.txt;</code></p></li>\r\n<li><p>the nmap example (plus the other command I couldn\'t remember while recording) <code>apt-cache search nmap &gt;&gt; ./dump05-05-2021.txt; nrpt &gt;&gt; ./dump05-05-2021.txt;</code> <code>apt-cache showpkg nmap</code></p></li>\r\n<li><p>the depends example <code>apt-cache depends nmap &gt;&gt; ./dump05-05-2021.txt;</code></p></li>\r\n<li><p>the download example <code>sudo apt-get download dict dictd dict-wn dict-gcide artha</code></p></li>\r\n<li><p>vim <code>sudo apt-get vim; vimtutor</code></p></li>\r\n<li><p>Terminal examples <code>~</code>= home folder, <code>CTRL + R</code>= command search , <code>CTRL + L</code>= clear terminal, <code>xdg-open</code>= open files with default app.</p></li>\r\n<li><p>Searching with grep example <code>ls -lhAr ~ | grep -i bash &gt;&gt; ./dump05-05-2021.txt</code></p></li>\r\n<li><p>the dump05-05-2021.txt file</p></li>\r\n</ol>\r\n<pre><code>Wed_May_05_2021_12:22:43\r\n\r\nThis file is used to store terminal output for later use; now get out!\r\n\r\n\r\nHit:1 https://dl.google.com/linux/chrome/deb stable InRelease\r\nIgn:2 https://mirror.cs.jmu.edu/pub/linuxmint/packages ulyana InRelease\r\nGet:3 https://security.ubuntu.com/ubuntu focal-security InRelease [109 kB]\r\nHit:4 https://mirror.cs.jmu.edu/pub/linuxmint/packages ulyana Release\r\nHit:5 https://mirror.cogentco.com/pub/linux/ubuntu focal InRelease\r\nHit:6 https://mirror.cogentco.com/pub/linux/ubuntu focal-updates InRelease\r\nHit:7 https://archive.canonical.com/ubuntu focal InRelease\r\nHit:8 https://mirror.cogentco.com/pub/linux/ubuntu focal-backports InRelease\r\nFetched 109 kB in 1s (158 kB/s)\r\nReading package lists...\r\n\r\n---\r\n\r\nNew Report\r\n\r\n---\r\n\r\nbrutespray - Python bruteforce tool\r\ndindel - determines indel calls from short-read data\r\ndoscan - port scanner for discovering services on large networks\r\nforensics-all - Debian Forensics Environment - essential components (metapackage)\r\nforensics-all-gui - Debian Forensics Environment - GUI components (metapackage)\r\nlibfile-map-perl - Perl module providing simple and safe memory mapping\r\nlibnmap-parser-perl - module to parse nmap scan results with perl\r\nlibwlocate-dev - Library for doing location lookup based on free openwlanmap.org data\r\nlibwlocate0 - Library for doing location lookup based on free openwlanmap.org data\r\nmapsembler2 - bioinformatics targeted assembly software\r\nmasscan - TCP port scanner\r\nncat - NMAP netcat reimplementation\r\nncrack - High-speed network authentication cracking tool\r\nndiff - The Network Mapper - result compare utility\r\nnmap - The Network Mapper\r\nnmap-common - Architecture independent files for nmap\r\nnmapsi4 - graphical interface to nmap, the network scanner\r\np0f - Passive OS fingerprinting tool\r\npads - Passive Asset Detection System\r\npnscan - Multi threaded port scanner\r\npsad - Port Scan Attack Detector\r\npython-libnmap-doc - Python NMAP Library (common documentation)\r\npython3-libnmap - Python 3 NMAP library\r\npython3-nmap - Python3 interface to the Nmap port scanner\r\npython3-scapy - Packet generator/sniffer and network scanner/discovery (Python 3)\r\nsamblaster - marks duplicates, extracts discordant/split reads\r\ntophat-recondition - post-processor for TopHat unmapped reads\r\nxprobe - Remote OS identification\r\nxscreensaver-gl - GL(Mesa) screen saver modules for screensaver frontends\r\n\r\n---\r\n\r\nNew Report\r\n\r\n---\r\n\r\nnmap\r\n  Depends: nmap-common\r\n  Depends: libc6\r\n  Depends: libgcc-s1\r\n  Depends: liblinear4\r\n  Depends: liblua5.3-0\r\n  Depends: libpcap0.8\r\n  Depends: libpcre3\r\n  Depends: libssl1.1\r\n  Depends: libstdc++6\r\n  Depends: lua-lpeg\r\n  Depends: zlib1g\r\n  Suggests: ncat\r\n  Suggests: ndiff\r\n  Suggests: &lt;zenmap&gt;\r\n</code></pre>\r\n<h2 id=\"nato-phonetic-alphabet\">NATO Phonetic Alphabet</h2>\r\n<p>The NATO phonetic alphabet is a Spelling Alphabet; a set of words used instead of letters in oral communication (i.e. over the phone or military radio). Each word (\"code word\") stands for its initial letter (alphabetical \"symbol\"). The 26 code words in the NATO phonetic alphabet are assigned to the 26 letters of the English alphabet in alphabetical order as follows: Symbol, Code Word, Morse Code, Phonic.</p>\r\n<p>(pronunciation)</p>\r\n<pre><code>A, Alfa/Alpha, AL FAH.\r\nB, Bravo, BRAH VOH.\r\nC, Charlie, CHAR LEE.\r\nD, Delta, DELL TAH.\r\nE, Echo, ECK OH.\r\nF, Foxtrot, FOKS TROT.\r\nG, Golf, GOLF.\r\nH, Hotel, HOH TELL.\r\nI, India, IN DEE AH.\r\nJ, Juliett, JEW LEE ETT.\r\nK, Kilo, KEY LOH.\r\nL, Lima, LEE MAH.\r\nM, Mike, MIKE.\r\nN, November, NO VEMBER.\r\nO, Oscar, OSS CAH.\r\nP, Papa, PAH PAH.\r\nQ, Quebec, KEH BECK.\r\nR, Romeo, ROW ME OH.\r\nS, Sierra, SEE AIRRAH.\r\nT, Tango, TANG OH.\r\nU, Uniform, YOU NEE FORM.\r\nV, Victor, VIK TAH.\r\nW, Whiskey, WISS KEY.\r\nX, X-ray, ECKS RAY.\r\nY, Yankee, YANG KEY.\r\nZ, Zulu, ZOO LOO.\r\n</code></pre>\r\n<h1 id=\"hacker-public-radio\">Hacker Public Radio</h1>\r\n<p><strong>Correspondent:</strong> <a href=\"https://hackerpublicradio.org/correspondents/0391.html\" title=\"Darwin works too.\">Some Guy On The Internet.</a> <strong>Host ID:</strong> 391 <strong>E-mail:</strong> <a href=\"Lyunpaw@gmail.com\" title=\"use  hpr391  as the email subject.\">Lyunpaw@gmail.com</a></p>\r\n<ul>\r\n<li>use <code>hpr391</code> as the subject for all emails. If not, junk filter.</li>\r\n</ul>\r\n<p><strong>license:</strong> <a href=\"https://creativecommons.org/licenses/by-sa/4.0/legalcode\" title=\"CC BY-SA 4.0\">Creative Commons Attribution-ShareAlike 4.0 International</a></p>\r\n<p><strong>Shows:</strong></p>\r\n<ol>\r\n<li><p><a href=\"https://hackerpublicradio.org/eps.php?id=3272\" title=\"hpr3272\">In GNU/Linux, there is no \"diversity\", we\'re all just data.</a></p>\r\n<ul>\r\n<li>ogg: <a href=\"https://hackerpublicradio.org/local/hpr3272.ogg\">https://hackerpublicradio.org/local/hpr3272.ogg</a></li>\r\n<li>spx: <a href=\"https://hackerpublicradio.org/local/hpr3272.spx\">https://hackerpublicradio.org/local/hpr3272.spx</a></li>\r\n<li>mp3: <a href=\"https://hackerpublicradio.org/local/hpr3272.mp3\">https://hackerpublicradio.org/local/hpr3272.mp3</a></li>\r\n</ul></li>\r\n<li><p><a href=\"https://hackerpublicradio.org/eps.php?id=3273\" title=\"hpr3273\">Embrace Firefox</a></p>\r\n<ul>\r\n<li>ogg: <a href=\"https://hackerpublicradio.org/local/hpr3273.ogg\">https://hackerpublicradio.org/local/hpr3273.ogg</a></li>\r\n<li>spx: <a href=\"https://hackerpublicradio.org/local/hpr3273.spx\">https://hackerpublicradio.org/local/hpr3273.spx</a></li>\r\n<li>mp3: <a href=\"https://hackerpublicradio.org/local/hpr3273.mp3\">https://hackerpublicradio.org/local/hpr3273.mp3</a></li>\r\n</ul></li>\r\n<li><p><a href=\"https://hackerpublicradio.org/eps.php?id=3282\" title=\"hpr3282\">HP Laptop with AMD Ryzen 3 Mobile with Radeon Graphics</a></p>\r\n<ul>\r\n<li>ogg: <a href=\"https://hackerpublicradio.org/local/hpr3282.ogg\">https://hackerpublicradio.org/local/hpr3282.ogg</a></li>\r\n<li>spx: <a href=\"https://hackerpublicradio.org/local/hpr3282.spx\">https://hackerpublicradio.org/local/hpr3282.spx</a></li>\r\n<li>mp3: <a href=\"https://hackerpublicradio.org/local/hpr3282.mp3\">https://hackerpublicradio.org/local/hpr3282.mp3</a></li>\r\n</ul></li>\r\n<li><p><a href=\"https://hackerpublicradio.org/eps.php?id=3298\" title=\"hpr3298\">Poisoning The Well</a></p>\r\n<ul>\r\n<li>ogg: <a href=\"https://hackerpublicradio.org/local/hpr3298.ogg\">https://hackerpublicradio.org/local/hpr3298.ogg</a></li>\r\n<li>spx: <a href=\"https://hackerpublicradio.org/local/hpr3298.spx\">https://hackerpublicradio.org/local/hpr3298.spx</a></li>\r\n<li>mp3: <a href=\"https://hackerpublicradio.org/local/hpr3298.mp3\">https://hackerpublicradio.org/local/hpr3298.mp3</a></li>\r\n</ul></li>\r\n<li><p><a href=\"https://hackerpublicradio.org/eps.php?id=3308\" title=\"hpr3308\">let\'s talk about Thunderbird</a></p>\r\n<ul>\r\n<li>ogg: <a href=\"https://hackerpublicradio.org/local/hpr3308.ogg\">https://hackerpublicradio.org/local/hpr3308.ogg</a></li>\r\n<li>spx: <a href=\"https://hackerpublicradio.org/local/hpr3308.spx\">https://hackerpublicradio.org/local/hpr3308.spx</a></li>\r\n<li>mp3: <a href=\"https://hackerpublicradio.org/local/hpr3308.mp3\">https://hackerpublicradio.org/local/hpr3308.mp3</a></li>\r\n</ul></li>\r\n</ol>\r\n<p><a rel=\"license\" href=\"https://creativecommons.org/licenses/by-sa/4.0/\"><img alt=\"Creative Commons License\" style=\"border-width:0\" src=\"https://i.creativecommons.org/l/by-sa/4.0/88x31.png\" /></a><br />This work is licensed under a <a rel=\"license\" href=\"https://creativecommons.org/licenses/by-sa/4.0/\">Creative Commons Attribution-ShareAlike 4.0 International License</a>.</p>\r\n',391,98,0,'CC-BY-SA','terminal, apt-get, apt-cache, .bashrc',0,0,1),
(3354,'2021-06-10','My Devices',1455,'I walk around my house and talk about any interesting Devices i have','N/A\r\n\r\n\r\n<p>\r\n<small>Added by Ken</small><br />\r\noperat0r and Son walk around the house talking about the devices that he has.\r\n</p>\r\n<ol>\r\n<li>Android meeting alarms</li>\r\n<li><a href=\"https://www.mozilla.org/en-US/firefox/new/\">Firefox</a></li>\r\n<li><a href=\"https://privacybadger.org/\">Privacy Badger</a></li>\r\n<li><a href=\"https://ublockorigin.com/\">UBlock Origin</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=3321\">DNS66</a></li>\r\n<li><a href=\"https://voice.google.com/\">Google Voice</a></li>\r\n<li>CCTV Camera, to Zone Minder</li>\r\n<li><a href=\"https://pjreddie.com/darknet/\">DarkNet</a></li>\r\n<li><a href=\"https://kodi.tv/\">Kodi</a></li>\r\n<li><a href=\"https://sonarr.tv/\">sonarr</a></li>\r\n<li><a href=\"https://radarr.video/\">radarr</a></li>\r\n<li><a href=\"https://ombi.io/\">Ombi</a></li>\r\n<li><a href=\"https://www.plex.tv/\">Plex</a></li>\r\n<li><a href=\"https://www.accuweather.com/\">AccuWeather</a></li>\r\n<li><a href=\"https://blueteamlabs.online/\">Blue Team Labs</a></li>\r\n<li>Admin mode on bluethoot TV</li>\r\n<li>iroso ncf wireless bluetooth headset</li>\r\n<li><a href=\"https://www.amazon.com/Bluetooth-Receiver-Transmitter-Wireless-Headphones/dp/B00VJTIMIS\">Keedox V4.0 Bluetooth Music Receiver Transmitter</a></li>\r\n<li><a href=\"https://www.hunterindustries.com/\">Hunter Irrigation</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Infiniti_G-series_(Q40/Q60)\">Nissan Infiniti Q40</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Wii_U\">Nintendo Wii U</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Nintendo_Switch\">Nintendo Switch</a></li>\r\n<li><a href=\"https://gorillatough.com/\">Gorilla Glue</a></li>\r\n<li>Chargemaster 3000</li>\r\n<li>Get splitbox AC</li>\r\n<li><a href=\"https://steelseries.com/gaming-headsets\">Steel Series HeadSet</a></li>\r\n<li><a href=\"https://www.tindie.com/products/RobG/msp430-nixie-clock-kit/\">MSP430 Nixie Clock kit from RobG on Tindie</a></li>\r\n<li><a href=\"https://play.google.com/store/apps/details?id=co.brili.routines&hl=en_US&gl=US\">Brili Routines - Visual Timer for Kids</a></li>\r\n<li><a href=\"https://www.sonicalert.com/SBB500SS-Alarm-Clock\">Sonic Bomb Alarm Clock</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Chromecast\">Chromecast</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Pulse_oximetry\">Pulse oximetry</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Transcutaneous_electrical_nerve_stimulation\">Transcutaneous electrical nerve stimulation (TENS)</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Roomba\">Roomba</a></li>\r\n<li><a href=\"https://www.zircon.com/categories/water-detectors/\">Zircom Wireless Water Detectors</a></li>\r\n</ol>',36,0,0,'CC-BY-SA','devices',0,0,1),
(3357,'2021-06-15','My terminal journey, part 02.',1890,'Becoming terminal friendly.','<h2 id=\"discovering-the-packages-vertical-lists\">Discovering the packages; vertical lists.</h2>\r\n<p><a href=\"https://en.wikipedia.org/wiki/APT_(software)\" title=\"wiki\">apt package manager</a></p>\r\n<ul>\r\n<li><p><strong>First Command:</strong> <code>sudo apt list --upgradeable</code></p></li>\r\n<li><p><strong>Command Breakdown:</strong></p>\r\n<ul>\r\n<li><code>sudo</code> is <strong>root privileges</strong> (to become admin for a single command).</li>\r\n<li><code>apt</code> is the Command Name.</li>\r\n<li><code>list</code> to display a list of packages satisfying certain <strong>criteria</strong>.</li>\r\n<li><code>--upgradeable</code> the <strong>criteria</strong></li>\r\n</ul></li>\r\n<li><p>Command Standard Output: (abridged)</p>\r\n<pre><code>Listing...\r\nalsa-ucm-conf/focal-updates,focal-updates 1.2.2-1ubuntu0.7 all [upgradable from: 1.2.2-1ubuntu0.6]\r\nalsa-utils/focal-updates 1.2.2-1ubuntu2.1 amd64 [upgradable from: 1.2.2-1ubuntu2]\r\nbluetooth/focal-updates,focal-updates 5.53-0ubuntu3.1 all [upgradable from: 5.53-0ubuntu3]\r\ngir1.2-webkit2-4.0/focal-updates,focal-security 2.32.0-0ubuntu0.20.04.1 amd64 [upgradable from: 2.30.6-0ubuntu0.20.04.1]\r\ngoogle-chrome-stable/stable 90.0.4430.212-1 amd64 [upgradable from: 90.0.4430.93-1]\r\niio-sensor-proxy/focal-updates 2.8-1ubuntu1 amd64 [upgradable from: 2.8-1]\r\nqemu-system-x86/focal-updates 1:4.2-3ubuntu6.16 amd64 [upgradable from: 1:4.2-3ubuntu6.15]\r\nqemu-utils/focal-updates 1:4.2-3ubuntu6.16 amd64 [upgradable from: 1:4.2-3ubuntu6.15]\r\nsamba-common-bin/focal-updates,focal-security 2:4.11.6+dfsg-0ubuntu1.8 amd64 [upgradable from:     2:4.11.6+dfsg-0ubuntu1.6]\r\n</code></pre></li>\r\n</ul>\r\n<hr />\r\n<h2 id=\"discovering-the-packages-horizontal-list\">Discovering the packages; horizontal list.</h2>\r\n<p><a href=\"https://linux.die.net/man/8/apt-get\" title=\"apt-get manpage\">apt-get package manager</a></p>\r\n<ul>\r\n<li><p><strong>Second Command:</strong> <code>sudo apt-get -u upgrade --assume-no</code></p></li>\r\n<li><p><strong>Command Breakdown:</strong></p>\r\n<ul>\r\n<li><code>sudo</code> is <strong>root privileges</strong> (to become admin for a single command).</li>\r\n<li><code>apt-get</code> is the Command Name.</li>\r\n<li><code>-u</code> or <code>--show-upgraded</code> list of packages that are to be upgraded; must be used with <code>upgrade</code>.</li>\r\n<li><code>upgrade</code> is used to install the newest versions of all packages currently installed.</li>\r\n<li><code>--assume-no</code> Automatically answers \"No\" when the command asks, “Do you want to continue? [Y/n]”. (Do you want to upgrade at this moment? No. You get it).</li>\r\n</ul></li>\r\n<li><p><strong>Note:</strong> Linux Mint 20 manpage for <code>apt-get</code> does not include the <code>-u</code> option or description.</p>\r\n<pre><code>-u, --show-upgraded\r\nShow upgraded packages. Print out a list of all packages that are to be upgraded.\r\n</code></pre></li>\r\n<li><p>Command Standard Output:</p>\r\n<pre><code>Reading package lists...\r\nBuilding dependency tree...\r\nReading state information...\r\nCalculating upgrade...\r\nThe following packages were automatically installed and are no longer required:\r\n  libllvm10 libllvm10:i386 libnvidia-common-450 libnvidia-compute-455:i386\r\n  libnvidia-decode-455:i386 libnvidia-encode-455:i386 libnvidia-fbc1-455:i386\r\n  libnvidia-gl-455:i386 libnvidia-ifr1-455:i386 nvidia-kernel-common-455\r\n  nvidia-kernel-source-455 nvidia-utils-455 xserver-xorg-video-nvidia-455\r\nUse &#39;sudo apt autoremove&#39; to remove them.\r\nThe following packages have been kept back:\r\n  libnvidia-common-450 libnvidia-common-460 linux-generic\r\n  linux-headers-generic linux-image-generic\r\nThe following packages will be upgraded:\r\n  alsa-ucm-conf alsa-utils bluetooth bluez bluez-cups bluez-obexd firefox\r\n  firefox-locale-en flatpak gir1.2-flatpak-1.0 gir1.2-javascriptcoregtk-4.0\r\n  gir1.2-webkit2-4.0 google-chrome-stable iio-sensor-proxy libasound2\r\n  libasound2-data libatopology2 libbluetooth3 libexiv2-27 libflatpak0\r\n  libjavascriptcoregtk-4.0-18 liblightdm-gobject-1-0 libmysqlclient21\r\n  libnetplan0 libsmbclient libvirt-clients libvirt-daemon\r\n  libvirt-daemon-driver-qemu libvirt-daemon-driver-storage-rbd\r\n  libvirt-daemon-system libvirt-daemon-system-systemd libvirt0 libwacom-bin\r\n  libwacom-common libwacom2 libwbclient0 libwebkit2gtk-4.0-37 libxmlb1 lightdm\r\n  linux-firmware linux-libc-dev netplan.io openvpn python3-apport\r\n  python3-problem-report python3-samba python3-yaml qemu-block-extra qemu-kvm\r\n  qemu-system-common qemu-system-data qemu-system-gui qemu-system-x86\r\n  qemu-utils samba-common samba-common-bin samba-libs smbclient thermald\r\n  xul-ext-lightning\r\n60 upgraded, 0 newly installed, 0 to remove and 5 not upgraded.\r\nNeed to get 295 MB of archives.\r\nAfter this operation, 4,023 kB of additional disk space will be used.\r\nDo you want to continue? [Y/n] N\r\nAbort.\r\n</code></pre></li>\r\n</ul>\r\n<hr />\r\n<h2 id=\"discovering-the-packages-colums--rows\">Discovering the packages; colums &amp; rows.</h2>\r\n<p><a href=\"https://linux.die.net/man/1/dpkg-query\" title=\"dpkg\">dpkg-query</a></p>\r\n<ul>\r\n<li><p><strong>Third Command:</strong> <code>dpkg-query -l</code></p></li>\r\n<li><p><strong>Command Breakdown:</strong></p>\r\n<ul>\r\n<li><code>dpkg-query</code> is the Command Name.</li>\r\n<li><code>-l</code> or <code>--list</code> list all installed packages on your system.</li>\r\n</ul></li>\r\n<li><p><strong>Fourth Command:</strong> <code>dpkg-query -L add-apt-key</code></p></li>\r\n<li><p><strong>Command Breakdown:</strong></p>\r\n<ul>\r\n<li><code>dpkg-query</code> is the Command Name.</li>\r\n<li><code>-L</code> or <code>--listfiles</code> list specific package, <strong>add-apt-key</strong> in this example, installed on your system.</li>\r\n</ul></li>\r\n<li><p>Command Standard Output: (abridged)</p>\r\n<ul>\r\n<li><code>dpkg-query -l</code> all installed packages.\r\n<pre><code>Desired=Unknown/Install/Remove/Purge/Hold\r\n| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend\r\n|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)\r\n||/ Name                                              Version                               Architecture Description\r\n+++-=================================================-=====================================-============-======================================================================================================\r\nii  accountsservice                                   0.6.55-0ubuntu12~20.04.4              amd64        query and manipulate user account information\r\nii  acl                                               2.2.53-6                              amd64        access control list - utilities\r\nii  acpi-support                                      0.143                                 amd64        scripts for handling many ACPI events\r\nii  acpid                                             1:2.0.32-1ubuntu1                     amd64        Advanced Configuration and Power Interface event daemon\r\nii  add-apt-key                                       1.0-0.5                               all          Command line tool to add GPG keys to the APT keyring\r\nii  adduser                                           3.118ubuntu2                          all          add and remove users and groups\r\nii  adwaita-icon-theme                                3.36.1-2ubuntu0.20.04.2               all          default icon theme of GNOME (small subset)\r\nii  adwaita-icon-theme-full                           3.36.1-2ubuntu0.20.04.2               all          default icon theme of GNOME\r\n</code></pre></li>\r\n<li><code>dpkg-query -L add-apt-key</code> single package.\r\n<pre><code>/.\r\n/usr\r\n/usr/share\r\n/usr/share/doc\r\n/usr/share/doc/add-apt-key\r\n/usr/share/doc/add-apt-key/README\r\n/usr/share/doc/add-apt-key/AUTHORS\r\n/usr/share/doc/add-apt-key/README.Debian\r\n/usr/share/doc/add-apt-key/copyright\r\n/usr/share/doc/add-apt-key/changelog.Debian.gz\r\n/usr/share/man\r\n/usr/share/man/man8\r\n/usr/share/man/man8/add-apt-key.8.gz\r\n/usr/sbin\r\n/usr/sbin/add-apt-key\r\n/etc\r\n/etc/default\r\n/etc/default/add-apt-key\r\n</code></pre></li>\r\n</ul></li>\r\n</ul>\r\n<hr />\r\n<h2 id=\"marking-the-packages-hold\">Marking the packages; hold.</h2>\r\n<p><a href=\"https://manpages.debian.org/stretch/apt/apt-mark.8.en.html\" title=\"apt-mark\">apt-mark</a></p>\r\n<ul>\r\n<li><p><strong>Fifth &amp; Sixth Commands:</strong> <code>sudo apt-mark hold google-chrome-stable; sudo apt-mark showhold</code></p></li>\r\n<li><p><strong>Command Breakdown:</strong></p>\r\n<ul>\r\n<li><code>sudo</code> is <strong>root privileges</strong> (to become admin for a single command).</li>\r\n<li><code>apt-mark</code> is the Command Name.</li>\r\n<li><code>hold</code> will <strong>prevent</strong> the package from being automatically installed, upgraded or removed.</li>\r\n<li><code>google-chrome-stable</code> is the package effected by hold.</li>\r\n<li><code>;</code> is the end of a command; command seperation.</li>\r\n<li><code>sudo</code> is <strong>root privileges</strong> (to become admin for a single command).</li>\r\n<li><code>apt-mark</code> is the Command Name.</li>\r\n<li><code>showhold</code> will print a list of packages effected by <code>hold</code>.</li>\r\n</ul></li>\r\n<li><p>Command Standard Output: (abridged)</p>\r\n<pre><code>google-chrome-stable set on hold.\r\n</code></pre></li>\r\n</ul>\r\n<hr />\r\n<h2 id=\"marking-the-packages-unhold\">Marking the packages; unhold.</h2>\r\n<p><a href=\"https://manpages.debian.org/stretch/apt/apt-mark.8.en.html\" title=\"apt-mark\">apt-mark</a></p>\r\n<ul>\r\n<li><p><strong>Seventh Command:</strong> <code>sudo apt-mark unhold google-chrome-stable</code></p></li>\r\n<li><p><strong>Command Breakdown:</strong></p>\r\n<ul>\r\n<li><code>sudo</code> is <strong>root privileges</strong> (to become admin for a single command).</li>\r\n<li><code>apt-mark</code> is the Command Name.</li>\r\n<li><code>unhold</code> will remove <code>hold</code>, allowing the package to be automatically installed, upgraded or removed.</li>\r\n<li><code>google-chrome-stable</code> is the package once effected by hold; no longer due to <code>unhold</code>.</li>\r\n</ul></li>\r\n<li><p><strong>Note:</strong> <code>showhold</code> will now print blank/nothing because packages are no longer effected by <code>hold</code>.</p></li>\r\n</ul>\r\n<hr />\r\n<h2 id=\"exporting-manpage-to-text-file\">Exporting Manpage to text file.</h2>\r\n<ul>\r\n<li><strong>Bonus Command:</strong> it\'s a big one.</li>\r\n</ul>\r\n<pre><code>touch apt-get01.txt; date &gt; ~/Documents/apt-get01.txt; echo -e &quot;\\n&quot; &gt;&gt; ~/Documents/apt-get01.txt; apt-get --version &gt;&gt; ~/Documents/apt-get01.txt; echo -e &quot;\\n\\napt-get --help\\n\\n&quot; &gt;&gt; ~/Documents/apt-get01.txt; apt-get --help &gt;&gt; ~/Documents/apt-get01.txt; echo -e &quot;\\n\\nman apt-get\\n\\n&quot; &gt;&gt; ~/Documents/apt-get01.txt; man apt-get &gt;&gt; ~/Documents/apt-get01.txt; echo -e &quot;\\n\\nCompleted.&quot;;\r\n</code></pre>\r\n<ul>\r\n<li><strong>Command Breakdown:</strong>\r\n<ul>\r\n<li><p><code>touch apt-get01.txt;</code> this command will create the \"apt-get01.txt\" file.</p></li>\r\n<li><p><code>date &gt; ~/Documents/apt-get01.txt;</code> this command stores the date and time with the \"apt-get01.txt\" file.</p></li>\r\n<li><p><code>echo -e \"\\n\" &gt;&gt; ~/Documents/apt-get01.txt;</code> this command gives us a blank line or new line within the \"apt-get01.txt\" file.</p></li>\r\n<li><p><code>apt-get --version &gt;&gt; ~/Documents/apt-get01.txt;</code> this command adds the version of <code>apt-get</code> we have installed to the \"apt-get01.txt\" file.</p></li>\r\n<li><p><code>echo -e \"\\n\\napt-get --help\\n\\n\" &gt;&gt; ~/Documents/apt-get01.txt;</code> this command adds to new lines or blank lines to the file then, adds the label \"apt-get -- help\" to the \"apt-get01.txt\" file.</p></li>\r\n<li><p><code>apt-get --help &gt;&gt; ~/Documents/apt-get01.txt;</code> this command adds the standard output of <code>apt-get --help</code> to the \"apt-get01.txt\" file.</p></li>\r\n<li><p><code>echo -e \"\\n\\nman apt-get\\n\\n\" &gt;&gt; ~/Documents/apt-get01.txt;</code> intentionally left blank.</p></li>\r\n<li><p><code>man apt-get &gt;&gt; ~/Documents/apt-get01.txt;</code> intentionally left blank.</p></li>\r\n<li><p><code>echo -e \"\\n\\nCompleted.\";</code> intentionally left blank.</p></li>\r\n</ul></li>\r\n</ul>\r\n<h2 id=\"nato-phonetic-alphabet\">NATO Phonetic Alphabet</h2>\r\n<p>The NATO phonetic alphabet is a Spelling Alphabet; a set of words used instead of letters in oral communication (i.e. over the phone or military radio). Each word (\"code word\") stands for its initial letter (alphabetical \"symbol\"). The 26 code words in the NATO phonetic alphabet are assigned to the 26 letters of the English alphabet in alphabetical order as follows: Symbol, Code Word, Morse Code, Phonic.</p>\r\n<p>(pronunciation)</p>\r\n<pre><code>A, Alfa/Alpha, AL FAH.\r\nB, Bravo, BRAH VOH.\r\nC, Charlie, CHAR LEE.\r\nD, Delta, DELL TAH.\r\nE, Echo, ECK OH.\r\nF, Foxtrot, FOKS TROT.\r\nG, Golf, GOLF.\r\nH, Hotel, HOH TELL.\r\nI, India, IN DEE AH.\r\nJ, Juliett, JEW LEE ETT.\r\nK, Kilo, KEY LOH.\r\nL, Lima, LEE MAH.\r\nM, Mike, MIKE.\r\nN, November, NO VEMBER.\r\nO, Oscar, OSS CAH.\r\nP, Papa, PAH PAH.\r\nQ, Quebec, KEH BECK.\r\nR, Romeo, ROW ME OH.\r\nS, Sierra, SEE AIRRAH.\r\nT, Tango, TANG OH.\r\nU, Uniform, YOU NEE FORM.\r\nV, Victor, VIK TAH.\r\nW, Whiskey, WISS KEY.\r\nX, X-ray, ECKS RAY.\r\nY, Yankee, YANG KEY.\r\nZ, Zulu, ZOO LOO.\r\n</code></pre>\r\n<h1 id=\"hacker-public-radio\">Hacker Public Radio</h1>\r\n<p><strong>Correspondent:</strong> <a href=\"https://hackerpublicradio.org/correspondents/0391.html\" title=\"Darwin works too.\">Some Guy On The Internet.</a> <strong>Host ID:</strong> 391 <strong>E-mail:</strong> <a href=\"Lyunpaw@gmail.com\" title=\"use  hpr391  as the email subject.\">Lyunpaw@gmail.com</a></p>\r\n<ul>\r\n<li>use <code>hpr391</code> as the subject for all emails. If not, junk filter.</li>\r\n</ul>\r\n<p><strong>license:</strong> <a href=\"https://creativecommons.org/licenses/by-sa/4.0/legalcode\" title=\"CC BY-SA 4.0\">Creative Commons Attribution-ShareAlike 4.0 International</a></p>\r\n<p><strong>Shows:</strong></p>\r\n<ol>\r\n<li><p><a href=\"https://hackerpublicradio.org/eps.php?id=3272\" title=\"hpr3272\">In GNU/Linux, there is no \"diversity\", we\'re all just data.</a></p>\r\n<ul>\r\n<li>ogg: <a href=\"https://hackerpublicradio.org/local/hpr3272.ogg\">https://hackerpublicradio.org/local/hpr3272.ogg</a></li>\r\n<li>spx: <a href=\"https://hackerpublicradio.org/local/hpr3272.spx\">https://hackerpublicradio.org/local/hpr3272.spx</a></li>\r\n<li>mp3: <a href=\"https://hackerpublicradio.org/local/hpr3272.mp3\">https://hackerpublicradio.org/local/hpr3272.mp3</a></li>\r\n</ul></li>\r\n<li><p><a href=\"https://hackerpublicradio.org/eps.php?id=3273\" title=\"hpr3273\">Embrace Firefox</a></p>\r\n<ul>\r\n<li>ogg: <a href=\"https://hackerpublicradio.org/local/hpr3273.ogg\">https://hackerpublicradio.org/local/hpr3273.ogg</a></li>\r\n<li>spx: <a href=\"https://hackerpublicradio.org/local/hpr3273.spx\">https://hackerpublicradio.org/local/hpr3273.spx</a></li>\r\n<li>mp3: <a href=\"https://hackerpublicradio.org/local/hpr3273.mp3\">https://hackerpublicradio.org/local/hpr3273.mp3</a></li>\r\n</ul></li>\r\n<li><p><a href=\"https://hackerpublicradio.org/eps.php?id=3282\" title=\"hpr3282\">HP Laptop with AMD Ryzen 3 Mobile with Radeon Graphics</a></p>\r\n<ul>\r\n<li>ogg: <a href=\"https://hackerpublicradio.org/local/hpr3282.ogg\">https://hackerpublicradio.org/local/hpr3282.ogg</a></li>\r\n<li>spx: <a href=\"https://hackerpublicradio.org/local/hpr3282.spx\">https://hackerpublicradio.org/local/hpr3282.spx</a></li>\r\n<li>mp3: <a href=\"https://hackerpublicradio.org/local/hpr3282.mp3\">https://hackerpublicradio.org/local/hpr3282.mp3</a></li>\r\n</ul></li>\r\n<li><p><a href=\"https://hackerpublicradio.org/eps.php?id=3298\" title=\"hpr3298\">Poisoning The Well</a></p>\r\n<ul>\r\n<li>ogg: <a href=\"https://hackerpublicradio.org/local/hpr3298.ogg\">https://hackerpublicradio.org/local/hpr3298.ogg</a></li>\r\n<li>spx: <a href=\"https://hackerpublicradio.org/local/hpr3298.spx\">https://hackerpublicradio.org/local/hpr3298.spx</a></li>\r\n<li>mp3: <a href=\"https://hackerpublicradio.org/local/hpr3298.mp3\">https://hackerpublicradio.org/local/hpr3298.mp3</a></li>\r\n</ul></li>\r\n<li><p><a href=\"https://hackerpublicradio.org/eps.php?id=3308\" title=\"hpr3308\">let\'s talk about Thunderbird</a></p>\r\n<ul>\r\n<li>ogg: <a href=\"https://hackerpublicradio.org/local/hpr3308.ogg\">https://hackerpublicradio.org/local/hpr3308.ogg</a></li>\r\n<li>spx: <a href=\"https://hackerpublicradio.org/local/hpr3308.spx\">https://hackerpublicradio.org/local/hpr3308.spx</a></li>\r\n<li>mp3: <a href=\"https://hackerpublicradio.org/local/hpr3308.mp3\">https://hackerpublicradio.org/local/hpr3308.mp3</a></li>\r\n</ul></li>\r\n</ol>\r\n<p><a rel=\"license\" href=\"https://creativecommons.org/licenses/by-sa/4.0/\"><img alt=\"Creative Commons License\" style=\"border-width:0\" src=\"https://i.creativecommons.org/l/by-sa/4.0/88x31.png\" /></a><br />This work is licensed under a <a rel=\"license\" href=\"https://creativecommons.org/licenses/by-sa/4.0/\">Creative Commons Attribution-ShareAlike 4.0 International License</a>.</p>\r\n',391,98,0,'CC-BY-SA','terminal, apt-get, apt-cache, apt-mark, dpkg',0,0,1),
(3358,'2021-06-16','BlastEm! A wicked awesome Sega Genesis/Megadrive emulator',1320,'This is an interview with the author of BlastEm, a Sega Genesis/Megadrive emulator','<p>In this Hacker Public Radio we talk to Mike about his emulator, BlastEm.</p>\r\n<p>This is the official BlastEm url: <a href=\"https://www.retrodev.com/blastem/\" class=\"uri\">https://www.retrodev.com/blastem/</a></p>\r\n',115,0,0,'CC-BY-SA','genesis megadrive emulation',0,0,1),
(3355,'2021-06-11','Tiki Hell',761,'I talk about my thoughts on outdoor torches','<p>Don\'t buy Tiki anything...</p>\r\n',36,0,0,'CC-BY-SA','outdoor, tiki',0,0,1),
(3367,'2021-06-29','Making books with linux - part 1',3367,'A discussion about assembling books using simple tools commonly found in most linux distros.','<p>Andrew and Dave describe a common itch they have been scratching. Andrew talks through his approach to document creation in this episode and Dave will describe his in the next episode.</p>\r\n<p>Andrew was inspired by a simple and elegant approach to eBook creation by Jon Kulp, possibly from listening to <a href=\"https://hackerpublicradio.org/eps.php?id=1909\">HPR 1909</a> several years ago.</p>\r\n<p>In Andrew\'s approach, bash and python scripts assemble various text files into the book, inserting figures and tables using a simple home-brew tag system to generate reference numbers such as Figure 3.7 or Table 2.2. Such auto-numbering functionality is of course provided by many other document authoring systems, such as LaTeX, but the script also uses the tags to hunt down data in CSV files and convert them into the figures. In this way, nearly all information in the book can start off as text and then be processed into anything — prose, graphics, sound or even movies — that can be included with HTML. Also a clean separation between content and appearance is kept by using a CSS file.</p>\r\n<p>This is not WYSIWYG (what you see is what you get) but using the <em>entr</em> command to monitor file changes can allow auto-generation of the HTML and even a browser refresh (using a feature found in Midori and Falkon but not many other browsers).</p>\r\n<p>Dave describes how he achieves something similar to what Andrew has created by using <em>make</em> to co-ordinate the processing. The process of compiling the source text files into a final document does have some similarities with code compilation.</p>\r\n<p>Dave and Andrew discuss how useful their methods might be to others. Some of Andrew\'s scripts are too bespoke to his use for wider consumption but the figure processing code is available online as part of the content and code of his book <a href=\"https://github.com/mcnalu/howscotlandworks\">How Scotland Works</a>.</p>\r\n<p>Andrew describes the horror of the suggestion that a non-fiction book does not need an index which prompted him to create his simple code to generate an index from a PDF. This was also motivated by laziness and a reluctance to read his own writing for the umpteenth time. Andrew then describes how this code works. The code itself can be found <a href=\"https://github.com/mcnalu/howscotlandworks/tree/master/scripts/index\">here</a>.</p>\r\n<p>Dave brings up the issue of other formats such as epub which have no concept of pages, or at least do not insist on it natively.</p>\r\n<p>The discussion moves on to other tools for document and text processing that are relevant to the tasks involved such as pandoc, LaTex and ASCIIdoc. In particular, Dave mentions that the \"look\" of LaTeX is simpler to control these days, at least as compared to the 1990s!</p>\r\n',268,0,0,'CC-BY-SA','linux,books,ebooks,scripts',0,0,1),
(3359,'2021-06-17','Linux Inlaws S01E32: Politicians and artificial intelligence part 3',2830,'Part 3 of the miniseries on Deep Learning, politicians and other approaches to intelligence (or not)','<p>In part three of the 27.64 episodes long mini-series on artificial intelligences, machine and deep learning\r\nand other hipster topics around machines trying to imitate humans (marketing made us do these :-), our\r\ntwo heroes discuss domain-specific frameworks on top of (more generic) infrastructure like TensorFlow or PyTorch.\r\nAs usual, all will be revealed and no details be spared (apart from a very few) including how to\r\ntell animals apart from humans (a tricky feat as any journalist can tell you who\'s ever faced a\r\nstampeding horde of angry politicians!).</p>\r\n<h2>Links:</h2>\r\n<ul>\r\n<li>Keras: <a href=\"https://keras.io\" target=_blank>https://keras.io</a></li>\r\n<li>Image recognition in Keras: <a href=\"https://keras.io/examples/vision/image_classification_from_scratch\" target=_blank>https://keras.io/examples/vision/image_classification_from_scratch</a></li>\r\n<li>Facial recognition using convolutional neural networks (CNN): <a href=\"https://www.sitepoint.com/keras-face-detection-recognition\" target=_blank>https://www.sitepoint.com/keras-face-detection-recognition</a></li>\r\n<li>PETA: <a href=\"https://www.peta.org\" target=_blank>https://www.peta.org</a></li>\r\n<li>User recognition based on mouse movements and deep learning: <a href=\"https://www.acta.sapientia.ro/acta-info/C12-1/info12-1-3.pdf\" target=_blank>https://www.acta.sapientia.ro/acta-info/C12-1/info12-1-3.pdf</a></li>\r\n<li>Comparison of deep learning software: <a href=\"https://en.wikipedia.org/wiki/Comparison_of_deep-learning_software\" target=_blank>https://en.wikipedia.org/wiki/Comparison_of_deep-learning_software</a></li>\r\n<li>Apache\'s mxnet: <a href=\"https://mxnet.apache.org/versions/1.8.0\" target=_blank>https://mxnet.apache.org/versions/1.8.0</a></li>\r\n<li>Classification with deep belief networks: <a href=\"https://www.ki.tu-berlin.de/fileadmin/fg135/publikationen/Hebbo_2013_CDB.pdf\" target=_blank>https://www.ki.tu-berlin.de/fileadmin/fg135/publikationen/Hebbo_2013_CDB.pdf</a></li>\r\n<li>scikit-learn: <a href=\"https://scikit-learn.org/stable\" target=_blank>https://scikit-learn.org/stable</a></li>\r\n<li>Life on Mars: <a href=\"https://www.bbc.co.uk/lifeonmars/index_non_flash.shtml\" target=_blank>https://www.bbc.co.uk/lifeonmars/index_non_flash.shtml</a></li>\r\n<li>Limitless: <a href=\"https://www.imdb.com/title/tt1219289/?ref_=fn_al_tt_1\" target=_blank>https://www.imdb.com/title/tt1219289/?ref_=fn_al_tt_1</a></li>\r\n</ul>\r\n',384,111,1,'CC-BY-SA','Keras, scitkit-learn, neural networks, Mars, Twix, Limitless, Life',0,0,1),
(3363,'2021-06-23','Electronics podcasts I listen to',319,'I go over the 4 electronics podcasts I am currently listening to.','<h2 id=\"electronics-podcasts\">Electronics podcasts</h2>\r\n<ol type=\"1\">\r\n<li><p>Hackaday podcast</p>\r\n<p>Hackaday Editors take a look at all of the interesting uses of technology that pop up on the internet each week. Topics cover a wide range like bending consumer electronics to your will, designing circuit boards, building robots, writing software, 3D printing interesting objects, and using machine tools. Get your fix of geeky goodness from new episodes every Friday morning.</p>\r\n<p>Ep 117: Chiptunes in an RCA Plug, an Arduino Floppy Drive, $50 CNC, and Wireless Switches</p>\r\n<p><a href=\"https://hackaday.libsyn.com/ep-117-chiptunes-in-an-rca-plug-an-arduino-floppy-drive-50-cnc-and-wireless-switches\" class=\"uri\">https://hackaday.libsyn.com/ep-117-chiptunes-in-an-rca-plug-an-arduino-floppy-drive-50-cnc-and-wireless-switches</a></p></li>\r\n<li><p>Embedded.fm</p>\r\n<p>Embedded.fm is a site dedicated to the many aspects of engineering. We talk about the how, why, and what of engineering, usually devices.</p>\r\n<p>The site includes a weekly audio show created and hosted by Elecia White and Christopher White. Our guests include makers, entrepreneurs, educators, and normal, traditional engineers. The show is a product of Logical Elegance, an embedded software consulting company.</p>\r\n<p>The site also includes a blog written by Elecia White, Christopher White, Andrei Chichak, and Chris Svec.</p>\r\n<p><a href=\"https://embedded.fm/about-us\" class=\"uri\">https://embedded.fm/about-us</a></p>\r\n<p>371: All Martian Things Considered</p>\r\n<p><a href=\"https://embedded.fm/episodes/371\" class=\"uri\">https://embedded.fm/episodes/371</a></p>\r\n<p>The best paper for learning more is from NASA’s JPL site:<br />\r\nThe Mars Science Laboratory Engineering Cameras<br />\r\n<a href=\"https://www-robotics.jpl.nasa.gov/publications/Mark_Maimone/fulltext.pdf\" class=\"uri\">https://www-robotics.jpl.nasa.gov/publications/Mark_Maimone/fulltext.pdf</a></p>\r\n<p>Mars rovers wiki<br />\r\n<a href=\"https://en.wikipedia.org/wiki/Mars_rover\" class=\"uri\">https://en.wikipedia.org/wiki/Mars_rover</a></p>\r\n<p>142: New and Improved Appendages</p>\r\n<p>Sarah is a kinetic artist and some of her projects include a robot army (built your own from parts printed out or purchased at robot-army.com) <a href=\"https://robot-army.com/\" class=\"uri\">https://robot-army.com/</a></p></li>\r\n<li><p>The Amp Hour Electronics Podcast</p>\r\n<p>Dave Jones from the EEVblog in Sydney (Australia), and Chris Gammell from Contextual Electronics in Chicago (USA) discuss the world of electronics design in an hour long(ish) weekly show, recorded “live” without editing or a mute button! We are also joined every other week by guests throughout the electronics industry.</p>\r\n<p>The Amp Hour is a non-scripted off-the-cuff format show that usually airs every Sunday evening US time (recorded earlier in the week). It is the worlds largest and most respected electronics oriented radio show. Discussions range from hobbyist electronics to the state of the electronics industry, components, circuit design, and general on and off-topic rants.</p>\r\n<p><a href=\"https://theamphour.com/about\" class=\"uri\">https://theamphour.com/about</a></p>\r\n<p><a href=\"https://theamphour.com/the-amp-hour-539-the-king-of-trash-with-big-clive\" class=\"uri\">https://theamphour.com/the-amp-hour-539-the-king-of-trash-with-big-clive</a></p>\r\n<p>Youtube channel: bigclivedotcom</p>\r\n<p><a href=\"https://www.youtube.com/user/bigclivedotcom\" class=\"uri\">https://www.youtube.com/user/bigclivedotcom</a></p></li>\r\n<li><p>The Contextual Electronics Podcast</p>\r\n<p>The CE Podcast is a video and audio podcast that posts twice per month. We discuss more than how electronics work and talk to our guests about why they are building them in the first place. we cover topics inside and outside the field of electronics and try to bring more context to the field.</p>\r\n<p>CEP012 – Mixed Media with Becky Stern</p>\r\n<p><a href=\"https://contextualelectronics.com/cep012-mixed-media-with-becky-stern\" class=\"uri\">https://contextualelectronics.com/cep012-mixed-media-with-becky-stern</a></p>\r\n<p>Becky is an artist and content producer who works electronics into projects using a wide variety of media and construction techniques. Becky also teaches a class on electronics at SVA in NYC. She is a product manager at Instructables.</p></li>\r\n</ol>\r\n',318,75,0,'CC-BY-SA','electronics, robots, space exploration, engineering',0,0,1),
(3362,'2021-06-22','Spam Bot Honey Pot: Eating your own dog food',1148,'Reviewing some stats and the accessibility by screen reader of this spam filter method.','<p>\r\nIn this episode, I revisit my spam bot honey pot method of spam detection for \r\nweb forms. The first part of the episode is a response to rtsn comment asking \r\nfor a follow up on how the method worked out. In the second part of the podcast \r\nI use the built-in screen reader of my Pop_OS system to review my test form and \r\nmy work form for audible accessibility and to check that the spam catching URL \r\nfield is not reveled by a screen reader.  \r\n</p>\r\n<p>\r\nFor my work site, I pushed the spam catcher to production on 16 February 2021. \r\nThe total submitted form messages from that day until today, 29 May 2021, is 661.\r\nOf the total submitted, the method identified 527 spam messages, and passed \r\nalong 134 messages. Of those 134, 38 messages were uncaught spam--while the \r\nremaining 96 messages were valid inquiries. Overall, it seems to be doing a \r\ngood job. At one point, I thought about closing down the form, but the data \r\ndoes show we are receiving enough valid messages to make it worth keeping around \r\nand this method makes finding the good messages much easier.\r\n</p>\r\n<p>\r\nDuring the second part of the podcast, I find using a screen reader, like any \r\ntool, takes some practice. It also reveals that making a form audibly accessible \r\ndoes take some care, and should be reviewed with a screen reader. My method \r\nfor hiding the honey pot URL field from the screen reader was effective, but my \r\noverall implementation to make it accessible needs more work.\r\n</p>',293,0,0,'CC-BY-SA','Spam,HTML,Forms,accessibility,screen reader',0,0,1),
(3369,'2021-07-01','Linux Inlaws S01E33: The Return of the Rust',3869,'A show with Steve Klabnik on corroded metal, hipster programming languages and the analogue world','<p>In this episode - aptly named \"The return of the Rust\" our two heroes host\r\na very special guest: no other than Steve Klabnik of Rust fame himself.\r\nNeedless to say, this hipster programming language which is on everbody\'s mind\r\nat the moment (apart maybe from a few lost souls still crying over spilled\r\ncoffee) plays a very important role in this show in addition to the newly\r\nfounded Rust Foundation hosting such eclectic members such as Microsoft,\r\nMozilla, Google and Facebook just to name a few looking after the language.</p>\r\n<h2>Links:</h2>\r\n<ul>\r\n<li>Rust: <a href=\"https://www.rust-lang.org\" target=_blank>https://www.rust-lang.org</a></li>\r\n<li>Rust Foundation: <a href=\"https://foundation.rust-lang.org\" target=_blank>https://foundation.rust-lang.org</a></li>\r\n<li>Steve Klabnik: <a href=\"https://steveklabnik.com\" target=_blank>https://steveklabnik.com</a></li>\r\n<li>Ruby on Rails: <a href=\"https://rubyonrails.org\" target=_blank>https://rubyonrails.org</a></li>\r\n<li>PyOxidizer: <a href=\"https://github.com/indygreg/PyOxidizer\" target=_blank>https://github.com/indygreg/PyOxidizer</a></li>\r\n<li>Mercurial: <a href=\"https://www.mercurial-scm.org\" target=_blank>https://www.mercurial-scm.org</a></li>\r\n<li>actix controversy: <a href=\"https://github.com/actix/actix-web/issues/289\" target=_blank>https://github.com/actix/actix-web/issues/289</a></li>\r\n<li>OpenSearch: <a href=\"https://aws.amazon.com/blogs/opensource/introducing-opensearch\" target=_blank>https://aws.amazon.com/blogs/opensource/introducing-opensearch</a></li>\r\n</ul>\r\n',384,111,1,'CC-BY-SA','Rust, actix, unsafe code, bulleted lists, pubs, OpenSearch',0,0,1),
(3631,'2022-07-04','HPR Community News for June 2022',7033,'HPR Volunteers talk about shows released and comments posted in June 2022','<style>\ntable td.shrink {\n    white-space:nowrap\n}\n</style>\n\n<h2>New hosts</h2>\n<p>\nThere were no new hosts this month.\n</p>\n\n<h2>Last Month\'s Shows</h2>\n<table id=\"t01\">\n<tr>\n<th>Id</th>\n<th>Day</th>\n<th>Date</th>\n<th>Title</th>\n<th>Host</th>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3608\" target=\"_blank\">3608</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2022-06-01</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3608\" target=\"_blank\">Battling with English - part 5</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0225.html\" target=\"_blank\">Dave Morriss</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3609\" target=\"_blank\">3609</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2022-06-02</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3609\" target=\"_blank\">Linux Inlaws S01E57: Operating System Level Virtualisation and Martin\'s Faith</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0384.html\" target=\"_blank\">monochromec</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3610\" target=\"_blank\">3610</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2022-06-03</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3610\" target=\"_blank\">DOS Wildcards; File Attributes</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0198.html\" target=\"_blank\">Ahuka</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3611\" target=\"_blank\">3611</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2022-06-06</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3611\" target=\"_blank\">HPR Community News for May 2022</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0159.html\" target=\"_blank\">HPR Volunteers</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3612\" target=\"_blank\">3612</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2022-06-07</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3612\" target=\"_blank\">Who is Evil Steve? Part 2</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0405.html\" target=\"_blank\">Lurking Prion</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3613\" target=\"_blank\">3613</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2022-06-08</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3613\" target=\"_blank\">Man buys cheap Adirondack chair</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0399.html\" target=\"_blank\">dnt</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3614\" target=\"_blank\">3614</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2022-06-09</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3614\" target=\"_blank\">Everything You Always Wanted to Know About PEX Part 02- The Joy of PEX - What is it and how is it us</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0394.html\" target=\"_blank\">Trey</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3615\" target=\"_blank\">3615</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2022-06-10</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3615\" target=\"_blank\">I am a troll and I\'m trolling HPR, trolling HPR, trolling HPR.</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0030.html\" target=\"_blank\">Ken Fallon</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3616\" target=\"_blank\">3616</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2022-06-13</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3616\" target=\"_blank\">Filling free Slots from the Reserve Queue</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0225.html\" target=\"_blank\">Dave Morriss</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3617\" target=\"_blank\">3617</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2022-06-14</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3617\" target=\"_blank\">admin admin S01E05: To Do List - 2FA</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0405.html\" target=\"_blank\">Lurking Prion</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3618\" target=\"_blank\">3618</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2022-06-15</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3618\" target=\"_blank\">The nnn terminal file manager</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0318.html\" target=\"_blank\">Archer72</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3619\" target=\"_blank\">3619</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2022-06-16</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3619\" target=\"_blank\">Linux Inlaws S01E58: Kubernetes and Friends and Sarah</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0384.html\" target=\"_blank\">monochromec</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3620\" target=\"_blank\">3620</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2022-06-17</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3620\" target=\"_blank\">Photo storage, backups, and workflow</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0198.html\" target=\"_blank\">Ahuka</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3621\" target=\"_blank\">3621</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2022-06-20</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3621\" target=\"_blank\">Watching YouTube in 2022</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0225.html\" target=\"_blank\">Dave Morriss</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3622\" target=\"_blank\">3622</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2022-06-21</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3622\" target=\"_blank\">My Network Setup.</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0391.html\" target=\"_blank\">Some Guy On The Internet</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3623\" target=\"_blank\">3623</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2022-06-22</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3623\" target=\"_blank\">Internet Security - Child Edition</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0405.html\" target=\"_blank\">Lurking Prion</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3624\" target=\"_blank\">3624</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2022-06-23</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3624\" target=\"_blank\">Everything You Always Wanted to Know About PEX Parts 3 & 4</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0394.html\" target=\"_blank\">Trey</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3625\" target=\"_blank\">3625</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2022-06-24</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3625\" target=\"_blank\">Shell Tips and Snippets - Collaborative Effort</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0380.html\" target=\"_blank\">Carl</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3626\" target=\"_blank\">3626</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2022-06-27</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3626\" target=\"_blank\">The stuff Evil Steve doesn\'t want you to know S01E06: Use a Password Manager</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0405.html\" target=\"_blank\">Lurking Prion</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3627\" target=\"_blank\">3627</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2022-06-28</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3627\" target=\"_blank\">Only Key Duo</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0036.html\" target=\"_blank\">operat0r</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3628\" target=\"_blank\">3628</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2022-06-29</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3628\" target=\"_blank\">Building a Mobile Computer Battlestation: Extended Power Supply</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0401.html\" target=\"_blank\">Mechatroniac</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3629\" target=\"_blank\">3629</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2022-06-30</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3629\" target=\"_blank\">Linux Inlaws S01E59: The Show with Red Pandas Mosaic Killers and Metal Corrosion</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0384.html\" target=\"_blank\">monochromec</a></td>\n</tr>\n</table>\n\n<h2>Comments this month</h2>\n\n<p>These are comments which have been made during the past month, either to shows released during the month or to past shows.\nThere are 25 comments in total.</p>\n<h3>Past shows</h3>\n<p>There are 2 comments on\n2 previous shows:</p>\n<ul>\n<li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3531#comments\" target=\"_blank\">hpr3531</a></strong>\n(2022-02-14) \"<em>Barrier: Software KVM</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0196.html\" target=\"_blank\">Windigo</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3531#2\" target=\"_blank\">Comment 2</a>:\nKen Fallon on 2022-06-30:\n\"Excellent !\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3606#comments\" target=\"_blank\">hpr3606</a></strong>\n(2022-05-30) \"<em>Infinity is just a big number and other proofs</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0030.html\" target=\"_blank\">Ken Fallon</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3606#1\" target=\"_blank\">Comment 1</a>:\nKevin O&#39;Brien on 2022-06-01:\n\"Not like me\"</li></ul><br/>\n</li></ul>\n<h3>This month\'s shows</h3>\n<p>There are 23 comments on 10 of this month\'s shows:</p>\n<ul><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3608#comments\" target=\"_blank\">hpr3608</a></strong>\n(2022-06-01) \"<em>Battling with English - part 5</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0225.html\" target=\"_blank\">Dave Morriss</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3608#1\" target=\"_blank\">Comment 1</a>:\nStache_AF on 2022-06-01:\n\"The Eggcorn That Gets Me\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3608#2\" target=\"_blank\">Comment 2</a>:\nWindigo on 2022-06-01:\n\"Eggcorns\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3608#3\" target=\"_blank\">Comment 3</a>:\nDave Morriss on 2022-06-01:\n\"Champing and chomping\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3608#4\" target=\"_blank\">Comment 4</a>:\nDave Morriss on 2022-06-01:\n\"A robot did it and ran away\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3609#comments\" target=\"_blank\">hpr3609</a></strong>\n(2022-06-02) \"<em>Linux Inlaws S01E57: Operating System Level Virtualisation and Martin\'s Faith</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0384.html\" target=\"_blank\">monochromec</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3609#1\" target=\"_blank\">Comment 1</a>:\nMechatroniac on 2022-06-22:\n\"Unite Germany and Russia\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3613#comments\" target=\"_blank\">hpr3613</a></strong>\n(2022-06-08) \"<em>Man buys cheap Adirondack chair</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0399.html\" target=\"_blank\">dnt</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3613#1\" target=\"_blank\">Comment 1</a>:\nWindigo on 2022-06-08:\n\"Adirondack chairs\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3613#2\" target=\"_blank\">Comment 2</a>:\ndnt on 2022-06-08:\n\"Re: Adirondack chairs\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3615#comments\" target=\"_blank\">hpr3615</a></strong>\n(2022-06-10) \"<em>I am a troll and I\'m trolling HPR, trolling HPR, trolling HPR.</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0030.html\" target=\"_blank\">Ken Fallon</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3615#1\" target=\"_blank\">Comment 1</a>:\nWindigo on 2022-06-10:\n\"Disappointing\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3615#2\" target=\"_blank\">Comment 2</a>:\nFXB on 2022-06-12:\n\"A Troll is a Troll.\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3615#3\" target=\"_blank\">Comment 3</a>:\nMechatroniac on 2022-06-13:\n\"fucking bullshit\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3617#comments\" target=\"_blank\">hpr3617</a></strong>\n(2022-06-14) \"<em>admin admin S01E05: To Do List - 2FA</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0405.html\" target=\"_blank\">Lurking Prion</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3617#1\" target=\"_blank\">Comment 1</a>:\nStache_AF on 2022-06-14:\n\"Google Authenticator\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3617#2\" target=\"_blank\">Comment 2</a>:\nLurking Prion on 2022-06-15:\n\"Google Authenticator Improvements\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3617#3\" target=\"_blank\">Comment 3</a>:\nSome Guy On The Internet on 2022-06-18:\n\"I agree.\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3617#4\" target=\"_blank\">Comment 4</a>:\nLurkingPrion on 2022-06-22:\n\"No Security..?\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3617#5\" target=\"_blank\">Comment 5</a>:\none_of_spoons on 2022-06-26:\n\"Two factor authentication : \"andOTP\"\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3619#comments\" target=\"_blank\">hpr3619</a></strong>\n(2022-06-16) \"<em>Linux Inlaws S01E58: Kubernetes and Friends and Sarah</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0384.html\" target=\"_blank\">monochromec</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3619#1\" target=\"_blank\">Comment 1</a>:\nSarah on 2022-06-22:\n\"Hello!\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3620#comments\" target=\"_blank\">hpr3620</a></strong>\n(2022-06-17) \"<em>Photo storage, backups, and workflow</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0198.html\" target=\"_blank\">Ahuka</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3620#1\" target=\"_blank\">Comment 1</a>:\nSome Guy On The Internet on 2022-06-18:\n\"Great Show\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3620#2\" target=\"_blank\">Comment 2</a>:\nKevin O&#39;Brien on 2022-06-18:\n\"Glad I could help\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3621#comments\" target=\"_blank\">hpr3621</a></strong>\n(2022-06-20) \"<em>Watching YouTube in 2022</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0225.html\" target=\"_blank\">Dave Morriss</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3621#1\" target=\"_blank\">Comment 1</a>:\nMechatroniac on 2022-06-22:\n\"Youtube is no good anymore\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3621#2\" target=\"_blank\">Comment 2</a>:\nMechatroniac on 2022-06-23:\n\"Mr Teslonian\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3624#comments\" target=\"_blank\">hpr3624</a></strong>\n(2022-06-23) \"<em>Everything You Always Wanted to Know About PEX Parts 3 & 4</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0394.html\" target=\"_blank\">Trey</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3624#1\" target=\"_blank\">Comment 1</a>:\nMr. Young on 2022-06-26:\n\"Unexpected relevance\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3625#comments\" target=\"_blank\">hpr3625</a></strong>\n(2022-06-24) \"<em>Shell Tips and Snippets - Collaborative Effort</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0380.html\" target=\"_blank\">Carl</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3625#1\" target=\"_blank\">Comment 1</a>:\ndnt on 2022-06-25:\n\"shift\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3625#2\" target=\"_blank\">Comment 2</a>:\nCarl on 2022-06-27:\n\"Thanks\"</li></ul><br/>\n</li></ul>\n\n<h2>Mailing List discussions</h2>\n<p>\nPolicy decisions surrounding HPR are taken by the community as a whole. This\ndiscussion takes place on the <a href=\"https://hackerpublicradio.org/maillist\"\ntarget=\"_blank\">Mail List</a> which is open to all HPR listeners and\ncontributors. The discussions are open and available on the HPR server under\n<a href=\"https://hackerpublicradio.org/pipermail/hpr_hackerpublicradio.org/\">Mailman</a>.\n</p>\n<p>The threaded discussions this month can be found here:</p>\n<a href=\"https://hackerpublicradio.org/pipermail/hpr_hackerpublicradio.org/2022-June/thread.html\" target=\"_blank\">https://hackerpublicradio.org/pipermail/hpr_hackerpublicradio.org/2022-June/thread.html</a>\n\n\n<h2>Events Calendar</h2>\n<p>With the kind permission of <strong>LWN.net</strong> we are linking to\n<a href=\"https://lwn.net/Calendar/\" target=\"_blank\">The LWN.net Community Calendar</a>.</p>\n<p>Quoting the site:</p>\n<blockquote>This is the LWN.net community event calendar, where we track\nevents of interest to people using and developing Linux and free software.\nClicking on individual events will take you to the appropriate web\npage.</blockquote>\n\n<h2>Any other business</h2>\n<h3 id=\"publishing-code-for-the-hpr-site\">Publishing code for the HPR site</h3>\n<p>The question came up during the month - is the HPR site code <em>open source</em>, and if so where is it?</p>\n<h3 id=\"older-hpr-shows-on-archive.org-phase-2\">Older HPR shows on archive.org, phase 2</h3>\n<p>Now that all shows from number 1 to the latest have been uploaded to the Internet Archive there are other tasks to perform. We are reprocessing and re-uploading shows in the range 871 to 2429 as explained in the Community News show notes released in <a href=\"https://hackerpublicradio.org/eps.php?id=3586#older-hpr-shows-on-archive.org-phase-2\">May 2022</a>. We are keeping a running total here to show progress:</p>\n<ul>\n<li>Re-uploads done so far: 431</li>\n<li>Shows remaining to be done: 1128</li>\n<li>Shows uploaded by last Community News recording: 271</li>\n<li>Shows added since last recording: 160</li>\n</ul>\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
(3651,'2022-08-01','HPR Community News for July 2022',2963,'HPR Volunteers talk about shows released and comments posted in July 2022','<style>\ntable td.shrink {\n    white-space:nowrap\n}\n</style>\n\n<h2>New hosts</h2>\n<p>\nWelcome to our new hosts: <br />\n\n    <a href=\"https://hackerpublicradio.org/correspondents/0406.html\" target=\"_blank\">binrc</a>, \n    <a href=\"https://hackerpublicradio.org/correspondents/0407.html\" target=\"_blank\">Celeste</a>.\n</p>\n\n<h2>Last Month\'s Shows</h2>\n<table id=\"t01\">\n<tr>\n<th>Id</th>\n<th>Day</th>\n<th>Date</th>\n<th>Title</th>\n<th>Host</th>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3630\" target=\"_blank\">3630</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2022-07-01</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3630\" target=\"_blank\">Planning an RV Trip</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0198.html\" target=\"_blank\">Ahuka</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3631\" target=\"_blank\">3631</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2022-07-04</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3631\" target=\"_blank\">HPR Community News for June 2022</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0159.html\" target=\"_blank\">HPR Volunteers</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3632\" target=\"_blank\">3632</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2022-07-05</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3632\" target=\"_blank\">Intro to web scraping with Python</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0078.html\" target=\"_blank\">Klaatu</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3633\" target=\"_blank\">3633</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2022-07-06</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3633\" target=\"_blank\">The collective history of RAID controller brands</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0129.html\" target=\"_blank\">JWP</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3634\" target=\"_blank\">3634</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2022-07-07</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3634\" target=\"_blank\">Everything You Always Wanted to Know About PEX Part 05 - PEX and the Single Installer</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0394.html\" target=\"_blank\">Trey</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3635\" target=\"_blank\">3635</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2022-07-08</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3635\" target=\"_blank\">A short podcast on a nice tool called system-monitoring-center</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0369.html\" target=\"_blank\">Jeroen Baten</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3636\" target=\"_blank\">3636</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2022-07-11</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3636\" target=\"_blank\">The Importance of Data Reduction</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0405.html\" target=\"_blank\">Lurking Prion</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3637\" target=\"_blank\">3637</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2022-07-12</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3637\" target=\"_blank\">HPR feed to Sqlite</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0342.html\" target=\"_blank\">norrist</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3638\" target=\"_blank\">3638</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2022-07-13</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3638\" target=\"_blank\">Ken drops a bear on his android phone</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0030.html\" target=\"_blank\">Ken Fallon</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3639\" target=\"_blank\">3639</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2022-07-14</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3639\" target=\"_blank\">Linux Inlaws S01E60: The Job Interview</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0384.html\" target=\"_blank\">monochromec</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3640\" target=\"_blank\">3640</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2022-07-15</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3640\" target=\"_blank\">Expert DIR use</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0198.html\" target=\"_blank\">Ahuka</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3641\" target=\"_blank\">3641</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2022-07-18</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3641\" target=\"_blank\">Turntable audio capture Part 2</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0318.html\" target=\"_blank\">Archer72</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3642\" target=\"_blank\">3642</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2022-07-19</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3642\" target=\"_blank\">Interview with a Hacker: Vitaliy</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0036.html\" target=\"_blank\">operat0r</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3643\" target=\"_blank\">3643</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2022-07-20</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3643\" target=\"_blank\">My computing history and the software I use</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0406.html\" target=\"_blank\">binrc</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3644\" target=\"_blank\">3644</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2022-07-21</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3644\" target=\"_blank\">Pinball Machine Repair Tips</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0407.html\" target=\"_blank\">Celeste</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3645\" target=\"_blank\">3645</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2022-07-22</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3645\" target=\"_blank\">How to set up a small Linux Wireguard VPN</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0369.html\" target=\"_blank\">Jeroen Baten</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3646\" target=\"_blank\">3646</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2022-07-25</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3646\" target=\"_blank\">arm, slackware, forth oh my!</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0326.html\" target=\"_blank\">Brian in Ohio</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3647\" target=\"_blank\">3647</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2022-07-26</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3647\" target=\"_blank\">Weekend projects</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0293.html\" target=\"_blank\">Rho`n</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3648\" target=\"_blank\">3648</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2022-07-27</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3648\" target=\"_blank\">A response to tomorrows show</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0030.html\" target=\"_blank\">Ken Fallon</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3649\" target=\"_blank\">3649</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2022-07-28</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3649\" target=\"_blank\">Linux Inlaws S01E61: 20 years in review</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0384.html\" target=\"_blank\">monochromec</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3650\" target=\"_blank\">3650</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2022-07-29</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3650\" target=\"_blank\">Major Destinations</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0198.html\" target=\"_blank\">Ahuka</a></td>\n</tr>\n</table>\n\n<h2>Comments this month</h2>\n\n<p>These are comments which have been made during the past month, either to shows released during the month or to past shows.\nThere are 18 comments in total.</p>\n<h3>Past shows</h3>\n<p>There are 2 comments on\n2 previous shows:</p>\n<ul>\n<li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3226#comments\" target=\"_blank\">hpr3226</a></strong>\n(2020-12-14) \"<em>Using taskwarrior to structurize your work</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0369.html\" target=\"_blank\">Jeroen Baten</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3226#3\" target=\"_blank\">Comment 3</a>:\ndnt on 2022-07-09:\n\"the urgency\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3627#comments\" target=\"_blank\">hpr3627</a></strong>\n(2022-06-28) \"<em>Only Key Duo</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0036.html\" target=\"_blank\">operat0r</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3627#1\" target=\"_blank\">Comment 1</a>:\noperat0r on 2022-07-06:\n\"Installer Changed ...\"</li></ul><br/>\n</li></ul>\n<h3>This month\'s shows</h3>\n<p>There are 16 comments on 9 of this month\'s shows:</p>\n<ul><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3630#comments\" target=\"_blank\">hpr3630</a></strong>\n(2022-07-01) \"<em>Planning an RV Trip</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0198.html\" target=\"_blank\">Ahuka</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3630#1\" target=\"_blank\">Comment 1</a>:\nbrian-in-ohio on 2022-07-05:\n\"enjoyed the show\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3630#2\" target=\"_blank\">Comment 2</a>:\nKevin O&#39;Brien on 2022-07-06:\n\"Photos\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3632#comments\" target=\"_blank\">hpr3632</a></strong>\n(2022-07-05) \"<em>Intro to web scraping with Python</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0078.html\" target=\"_blank\">Klaatu</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3632#1\" target=\"_blank\">Comment 1</a>:\nSome Guy On The Internet on 2022-07-08:\n\"Thank you\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3634#comments\" target=\"_blank\">hpr3634</a></strong>\n(2022-07-07) \"<em>Everything You Always Wanted to Know About PEX Part 05 - PEX and the Single Installer</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0394.html\" target=\"_blank\">Trey</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3634#1\" target=\"_blank\">Comment 1</a>:\ndnt on 2022-07-09:\n\"a hacker\'s plumbing system\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3637#comments\" target=\"_blank\">hpr3637</a></strong>\n(2022-07-12) \"<em>HPR feed to Sqlite</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0342.html\" target=\"_blank\">norrist</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3637#1\" target=\"_blank\">Comment 1</a>:\nKen Fallon on 2022-07-20:\n\"Daily Database Dump in SQL Format\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3642#comments\" target=\"_blank\">hpr3642</a></strong>\n(2022-07-19) \"<em>Interview with a Hacker: Vitaliy</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0036.html\" target=\"_blank\">operat0r</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3642#1\" target=\"_blank\">Comment 1</a>:\nKevin O&#39;Brien on 2022-07-20:\n\"Great show\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3643#comments\" target=\"_blank\">hpr3643</a></strong>\n(2022-07-20) \"<em>My computing history and the software I use</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0406.html\" target=\"_blank\">binrc</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3643#1\" target=\"_blank\">Comment 1</a>:\nArcher72 on 2022-07-08:\n\"First show\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3643#2\" target=\"_blank\">Comment 2</a>:\nnorrist on 2022-07-20:\n\"Plan9\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3643#3\" target=\"_blank\">Comment 3</a>:\nDave Morriss on 2022-07-20:\n\"An excellent first show\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3643#4\" target=\"_blank\">Comment 4</a>:\nbrian-in-ohio on 2022-07-24:\n\"future show\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3644#comments\" target=\"_blank\">hpr3644</a></strong>\n(2022-07-21) \"<em>Pinball Machine Repair Tips</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0407.html\" target=\"_blank\">Celeste</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3644#1\" target=\"_blank\">Comment 1</a>:\nArcher72 on 2022-07-16:\n\"Pinball machines and English\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3644#2\" target=\"_blank\">Comment 2</a>:\nTrey on 2022-07-21:\n\"Welcome!\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3644#3\" target=\"_blank\">Comment 3</a>:\nbrian-in-ohio on 2022-07-24:\n\"soundscape\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3648#comments\" target=\"_blank\">hpr3648</a></strong>\n(2022-07-27) \"<em>A response to tomorrows show</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0030.html\" target=\"_blank\">Ken Fallon</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3648#1\" target=\"_blank\">Comment 1</a>:\nLongTimeLurker on 2022-07-27:\n\"Known Unknowns\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3648#2\" target=\"_blank\">Comment 2</a>:\nE-/-y on 2022-07-28:\n\"Only the Interviews\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3649#comments\" target=\"_blank\">hpr3649</a></strong>\n(2022-07-28) \"<em>Linux Inlaws S01E61: 20 years in review</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0384.html\" target=\"_blank\">monochromec</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3649#1\" target=\"_blank\">Comment 1</a>:\nKen Fallon on 2022-06-24:\n\"response show\"</li></ul><br/>\n</li></ul>\n\n<h2>Mailing List discussions</h2>\n<p>\nPolicy decisions surrounding HPR are taken by the community as a whole. This\ndiscussion takes place on the <a href=\"https://hackerpublicradio.org/maillist\"\ntarget=\"_blank\">Mail List</a> which is open to all HPR listeners and\ncontributors. The discussions are open and available on the HPR server under\n<a href=\"https://hackerpublicradio.org/pipermail/hpr_hackerpublicradio.org/\">Mailman</a>.\n</p>\n<p>The threaded discussions this month can be found here:</p>\n<a href=\"https://hackerpublicradio.org/pipermail/hpr_hackerpublicradio.org/2022-July/thread.html\" target=\"_blank\">https://hackerpublicradio.org/pipermail/hpr_hackerpublicradio.org/2022-July/thread.html</a>\n\n\n<h2>Events Calendar</h2>\n<p>With the kind permission of <strong>LWN.net</strong> we are linking to\n<a href=\"https://lwn.net/Calendar/\" target=\"_blank\">The LWN.net Community Calendar</a>.</p>\n<p>Quoting the site:</p>\n<blockquote>This is the LWN.net community event calendar, where we track\nevents of interest to people using and developing Linux and free software.\nClicking on individual events will take you to the appropriate web\npage.</blockquote>\n\n<h2>Any other business</h2>\n<h3 id=\"olly-clark\">Olly Clark</h3>\n<p>The UK Tech community has been saddened to hear of the death of Oliver (Olly) Clark, a well known presence at OggCamp, Barcamp and Raspberry Pi meetings. He apparently died in November 2021 as a consequence of COVID-19. His family did not know who to contact in the wider community, so this news only became apparent recently.</p>\n<ul>\n<li>Twitter: <span class=\"citation\" data-cites=\"ollyclarkdotorg\">@ollyclarkdotorg</span> (<a href=\"https://twitter.com/ollyclarkdotorg\" class=\"uri\">https://twitter.com/ollyclarkdotorg</a>)</li>\n<li>Mastodon: <a href=\"https://mastodon.sdf.org/@ollyclarkdotorg\" class=\"uri\">https://mastodon.sdf.org/@ollyclarkdotorg</a></li>\n<li>Flickr: <a href=\"https://www.flickr.com/people/ollyclarkdotorg/\" class=\"uri\">https://www.flickr.com/people/ollyclarkdotorg/</a></li>\n<li>Web site: <a href=\"http://www.ollyclark.org/\" class=\"uri\">http://www.ollyclark.org/</a> (currently unavailable, but archived on the Wayback Machine at <a href=\"https://web.archive.org/web/20210801015127/https://www.ollyclark.org/\" class=\"uri\">https://web.archive.org/web/20210801015127/https://www.ollyclark.org/</a>)</li>\n</ul>\n<h3 id=\"older-hpr-shows-on-archive.org-phase-2\">Older HPR shows on archive.org, phase 2</h3>\n<p>Now that all shows from number 1 to the latest have been uploaded to the Internet Archive there are other tasks to perform. We are reprocessing and re-uploading shows in the range 871 to 2429 as explained in the Community News show notes released in <a href=\"http://hackerpublicradio.org/eps.php?id=3586#older-hpr-shows-on-archive.org-phase-2\">May 2022</a>. We are keeping a running total here to show progress:</p>\n<ul>\n<li>Re-uploads done so far: 576</li>\n<li>Shows remaining to be done: 983</li>\n<li>Shows uploaded by last Community News recording: 431</li>\n<li>Shows added since last recording: 145</li>\n</ul>\n\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
(3540,'2022-02-25','HSV Components Layer Modes',1216,'More on Layer Modes in GIMP with the HSV Components Modes','<p>Layer Modes, sometimes called Blending Modes, allow you to combine layers in a variety of ways. We continue with the HSV Components Modes, which brings us to yet another color model, in this case the Hue, Saturation, and Value model. We\'ve already looked at RGB, which is the model used for most broadcast and online uses, and the CMYK model which is used for printing. These are the Layer Modes available on the latest (at the time I write this) version of GIMP, 2.10.24.</p>\r\n<h2 id=\"links\">Links:</h2>\r\n<ul>\r\n<li><a href=\"https://docs.gimp.org/2.10/en/gimp-concepts-layer-modes.html\" class=\"uri\">https://docs.gimp.org/2.10/en/gimp-concepts-layer-modes.html</a></li>\r\n<li><a href=\"https://www.linuxtopia.org/online_books/graphics_tools/gimp_advanced_guide/gimp_guide_node55_004.html\" class=\"uri\">https://www.linuxtopia.org/online_books/graphics_tools/gimp_advanced_guide/gimp_guide_node55_004.html</a></li>\r\n<li><a href=\"https://www.youtube.com/watch?v=17Iivi0tmug&amp;t=1734s\" class=\"uri\">https://www.youtube.com/watch?v=17Iivi0tmug&amp;t=1734s</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/RGB_color_model\" class=\"uri\">https://en.wikipedia.org/wiki/RGB_color_model</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Subtractive_color\" class=\"uri\">https://en.wikipedia.org/wiki/Subtractive_color</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Color_model\" class=\"uri\">https://en.wikipedia.org/wiki/Color_model</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/HSL_and_HSV\" class=\"uri\">https://en.wikipedia.org/wiki/HSL_and_HSV</a></li>\r\n<li><a href=\"https://snappygoat.com/\" class=\"uri\">https://snappygoat.com/</a></li>\r\n<li><a href=\"https://www.ahuka.com/gimp/hsv-components-layer-modes/\" class=\"uri\">https://www.ahuka.com/gimp/hsv-components-layer-modes/</a></li>\r\n</ul>\r\n',198,113,0,'CC-BY-SA','GIMP, Layer Modes, Blending Modes, HSV Components Modes',0,0,1),
(3550,'2022-03-11','Format; Copy; Diskcopy; Xcopy',1202,'We continue our look at the old warhorse, DOS. This time it is Format and Copy commands','<p>This tutorial is mostly about working with floppy disks, or diskettes, though we also mention the formatting of hard drives, which generally required the use of a floppy drive and diskette to accomplish.</p>\r\n<h2 id=\"links\">Links:</h2>\r\n<ul>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Floppy_disk\" class=\"uri\">https://en.wikipedia.org/wiki/Floppy_disk</a></li>\r\n<li><a href=\"https://www.ahuka.com/dos-lessons-for-self-study-purposes/\" class=\"uri\">https://www.ahuka.com/dos-lessons-for-self-study-purposes/</a></li>\r\n</ul>\r\n',198,117,0,'CC-BY-SA','DOS, early PC computing, Format, Copy, Diskcopy, Xcopy',0,0,1),
(3560,'2022-03-25','LCh Components Layer Modes',758,'More on Layer Modes in GIMP with the LCh Components Modes','<p>Layer Modes, sometimes called Blending Modes, allow you to combine layers in a variety of ways. We continue with the LCh Components Modes, which brings us to yet another color model, in this case the Hue, Saturation, and Value model. We\'ve already looked at RGB, which is the model used for most broadcast and online uses, and the CMYK model which is used for printing, and in the previous tutorial we looked at the HSV model. This wraps up our look at color models, and also concluded our look at Layer Modes (or Blending Modes). These are the Layer Modes available on the latest (at the time I write this) version of GIMP, 2.10.24.</p>\r\n<h2 id=\"links\">Links:</h2>\r\n<ul>\r\n<li><a href=\"https://docs.gimp.org/2.10/en/gimp-concepts-layer-modes.html\" class=\"uri\">https://docs.gimp.org/2.10/en/gimp-concepts-layer-modes.html</a></li>\r\n<li><a href=\"https://ninedegreesbelow.com/photography/determine-image-tonality-and-palette-part-1.html\" class=\"uri\">https://ninedegreesbelow.com/photography/determine-image-tonality-and-palette-part-1.html</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/CIELAB_color_space\" class=\"uri\">https://en.wikipedia.org/wiki/CIELAB_color_space</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/CIELUV#Cylindrical_representation_.28CIELCH.29\" class=\"uri\">https://en.wikipedia.org/wiki/CIELUV#Cylindrical_representation_.28CIELCH.29</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/List_of_color_spaces_and_their_uses\" class=\"uri\">https://en.wikipedia.org/wiki/List_of_color_spaces_and_their_uses</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Luminance\" class=\"uri\">https://en.wikipedia.org/wiki/Luminance</a></li>\r\n<li><a href=\"https://www.ahuka.com/gimp/lch-components-layer-modes/\" class=\"uri\">https://www.ahuka.com/gimp/lch-components-layer-modes/</a></li>\r\n</ul>\r\n',198,113,0,'CC-BY-SA','GIMP, Layer Modes, Blending Modes, LCh Components Modes',0,0,1),
(3570,'2022-04-08','The Filesystem',1412,'We continue our look at the old warhorse, DOS. This time it is the file system.','<p>One key to working with DOS is to understand the file system. This is not just about organizing files, though that is certainly a part of it, but also about keeping your system running smoothly and recovering lost files in some circumstances.</p>\r\n<h2 id=\"links\">Links:</h2>\r\n<ul>\r\n<li><a href=\"https://en.wikipedia.org/wiki/File_Allocation_Table\" class=\"uri\">https://en.wikipedia.org/wiki/File_Allocation_Table</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Disk_sector\" class=\"uri\">https://en.wikipedia.org/wiki/Disk_sector</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Track_(disk_drive)\" class=\"uri\">https://en.wikipedia.org/wiki/Track_(disk_drive)</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Data_cluster\" class=\"uri\">https://en.wikipedia.org/wiki/Data_cluster</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/File_system_fragmentation\" class=\"uri\">https://en.wikipedia.org/wiki/File_system_fragmentation</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Root_directory\" class=\"uri\">https://en.wikipedia.org/wiki/Root_directory</a></li>\r\n<li><a href=\"https://www.ahuka.com/dos-lessons-for-self-study-purposes/dos-lesson-9-the-file-system/\" class=\"uri\">https://www.ahuka.com/dos-lessons-for-self-study-purposes/dos-lesson-9-the-file-system/</a></li>\r\n</ul>\r\n',198,117,0,'CC-BY-SA','DOS, early PC computing, file system',0,0,1),
(3364,'2021-06-24','Part One - all the covid crap',99,'My new coffee pot, covid motivation','<p>So, I\'m currently listening to the \"Feedback on the Article\" show, and am feeling like I should contribute a show.</p>\r\n<p>A long time ago now, I bought a new coffee machine for home, on the basis that I was going to be working from home for a while, and I was really missing my daily hits of actual coffee. I drink maybe four or five cups a day, depending on how early I get into work. I do try to have all this coffee in the morning, and am pretty good at not having any after lunch.</p>\r\n<p>Now, I do need to recognise where I am, Australia, overall we\'ve had a pretty good response to covid, fatalities have been very low by world standards. Having said that, I live in the part of Australia that has had the largest number and by far, longest lockdowns. Our longest one was 112 days.</p>\r\n<p>I\'ve also travelled back home, and got caught in a lockdown in my home state of Queensland over Christmas.</p>\r\n<p>Eventually, the lockdowns ended, we were allowed go back to work, and I started using my home coffee machine less and less, and I lost motivation to do this show.</p>\r\n<p>Then, of course, we had another inevitable hotel quarantine leak, and that spread to Victoria, we\'re now looking at a breakout of around sixty cases and Victoria is back on lockdown so this is my fifth lockdown, and I\'m back to working from home, and once again, I\'m appreciating my new coffee pot, and once again I have motivation to do a story on it.</p>\r\n<p>What I really want to do is to disentangle the two topics, this episode will deal with all the covid stuff, the second episode will only deal with coffee.</p>\r\n<p>So this covid rant ends here, and now I need to start writing the script for the second part of the show, before lockdown ends..</p>\r\n',315,0,0,'CC-BY-SA','covid19,coffee',0,0,1),
(3365,'2021-06-25','Diablo 2 Portable and Modding',452,'I talk about Diablo 2 and modding','<p>\r\n<a href=\"https://en.wikipedia.org/wiki/Diablo_II\">Diablo II</a>\r\n</p>\r\n<p>\r\nDiablo II is an action role-playing hack-and-slash computer video game developed by Blizzard North and published by Blizzard Entertainment in 2000 for Microsoft Windows, Classic Mac OS, and macOS. The game, with its dark fantasy and horror themes, was conceptualized and designed by David Brevik and Erich Schaefer, who, with Max Schaefer, acted as project leads on the game. The producers were Matthew Householder and Bill Roper. The game was developed over a 3 year period, with a crunch time of 1.5 years long\r\n</p>\r\n\r\n<p>\r\nSearch for \"Registry patch  diablo 2\", \"borderless gaming diablo 2\"\r\n</p>\r\n\r\n<p>\r\n<a href=\"https://diablo-archive.fandom.com/wiki/PlugY\">PlugY</a> <br />\r\nPlugY is a mod whose primary purpose is to increase the stash size for Diablo II characters. Over the years it has grown to include numerous other useful functions, such as enabling Ladder Only Rune Words outside of the Battle.net Ladder, enabling the Uber quests outside of Battle.net and various other small tweaks and additions. PlugY is not a conversion of the original Diablo, and it doesn\'t alter gameplay by changing monster stats, skills, maps or items. \r\n</p>\r\n\r\n<p>\r\n<a href=\"https://www.median-xl.com/\">median xl</a><br />\r\nThe most popular Diablo II overhaul modification, Median XL is an action RPG with extensive endgame content, deep character customisation and challenging gameplay. It offers thousands of new items, new skills for all classes, and multiple improvements to the Diablo II engine.\r\n</p>',36,0,0,'CC-BY-SA','diablo 2,video games,gaming,modding,hacking,median xl,plug y',0,0,1);
INSERT INTO `eps` (`id`, `date`, `title`, `duration`, `summary`, `notes`, `hostid`, `series`, `explicit`, `license`, `tags`, `version`, `downloads`, `valid`) VALUES (3375,'2021-07-09','Car ODB2 Fun and Fail',617,'I try to figure out ODB2 stuff again','<p>\r\n<a href=\"https://en.wikipedia.org/wiki/On-board_diagnostics\">On-board diagnostics (OBD)</a><br />\r\nFrom Wikipedia, the free encyclopedia<br />\r\nOn-board diagnostics (OBD) is an automotive term referring to a vehicle\'s self-diagnostic and reporting capability. OBD systems give the vehicle owner or repair technician access to the status of the various vehicle sub-systems. The amount of diagnostic information available via OBD has varied widely since its introduction in the early 1980s versions of on-board vehicle computers. Early versions of OBD would simply illuminate a malfunction indicator light or \"idiot light\" if a problem was detected but would not provide any information as to the nature of the problem. Modern OBD implementations use a standardized digital communications port to provide real-time data in addition to a standardized series of diagnostic trouble codes, or DTCs, which allow a person to rapidly identify and remedy malfunctions within the vehicle. \r\n</p>\r\n<p>\r\n<a href=\"https://play.google.com/store/apps/details?id=org.prowl.torque&hl=en_US&gl=US\">Torque Pro (OBD 2 and Car)</a><br />\r\nSee what your car is doing in realtime, get OBD fault codes, car performance, sensor data and more!\r\nTorque is a vehicle / car performance / diagnostics tool and scanner that uses an OBD II Bluetooth adapter to connect to your OBD2 engine management / ECU\r\n</p>\r\n<p>\r\n<a href=\"https://www.myg37.com/forums/engine-drivetrain-and-forced-induction/298338-vdc-stays-on-randomly.html\">Forum Thread</a>\r\n</p>\r\n<p>\r\n<a href=\"https://www.nicoclub.com/search#gsc.tab=0&gsc.q=infinity&gsc.sort=\">Search on NicoClub.com for Infinity Manuals</a>\r\n</p>\r\n',36,0,0,'CC-BY-SA','car,auto,odb2',0,0,1),
(3385,'2021-07-23','DIY Cat feeder!',824,'I talk about 3d printed cat feeders','<p>\r\nIn this episode operat0r builds a <a href=\"https://www.thingiverse.com/thing:27854\">cat feeder based on thingiverse.com</a>\r\n</p>',36,0,0,'CC-BY-SA','cats,3d printing,hacking,arduino',0,0,1),
(3395,'2021-08-06','Hacking Stories with Reacted: part 1',1979,'I talk about some old old old pentesting stories from days old!','<p>\r\nI talk about some old old old pentesting stories from days old!\r\n</p>',36,0,1,'CC-BY-SA','hackhacking,pentesting,red team,hacking storiesing',0,0,1),
(3405,'2021-08-20','Hacking Stories with Reacted: part 2',152,'I talk about some old old old pentesting stories from days old!','<p>\r\nI talk about some old old old pentesting stories from days old!\r\n</p>',36,0,0,'CC-BY-SA','hacking,pentesting,red team,hacking stories',0,0,1),
(3415,'2021-09-03','Hacking Stories with Reacted: part 3',836,'I talk about some old old old pentesting stories from days old!','<p>\r\nI talk about some old old old pentesting stories from days old!\r\n</p>',36,0,1,'CC-BY-SA','hacking,pentesting,red team,hacking stories',0,0,1),
(3425,'2021-09-17','Hacking Stories with Reacted: part 4',1055,'I talk about some old old old pentesting stories from days old!','<p>\r\nI talk about some old old old pentesting stories from days old!\r\n</p>',36,0,0,'CC-BY-SA','hacking,pentesting,red team,hacking stories',0,0,1),
(3435,'2021-10-01','Hacking Stories with Reacted: part 5',1060,'I talk about some old old old pentesting stories from days old!','<p>I talk about some old old old pentesting stories from days old!</p>',36,0,1,'CC-BY-SA','hacking,pentesting,red team,hacking stories',0,0,1),
(3376,'2021-07-12','Making books with Linux - part 2',2919,'Part 2 of a discussion about how two HPR hosts create books','<h2 id=\"hosts\">Hosts</h2>\r\n<ul>\r\n<li><a href=\"https://hackerpublicradio.org/correspondents/0268.html\">Andrew Conway (<em>mcnalu</em>)</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/correspondents/0225.html\">Dave Morriss</a></li>\r\n</ul>\r\n<h2 id=\"handling-incoming-hpr-shows\">Handling incoming HPR shows</h2>\r\n<ul>\r\n<li>Dave, with his <em>Janitor</em> hat on\r\n<ul>\r\n<li>Processes incoming notes, to generate HTML</li>\r\n<li>Plain text is turned to Markdown. Otherwise various Markdown flavours are acceptable, or an HTML5 fragment</li>\r\n<li>If images are included the Markdown can refer to them with URLs such as: <code>https://hackerpublicradio.org/eps/hprNNNN/name.jpg</code>\r\n<ul>\r\n<li>The <code>hprNNNN</code> element is a directory using the number you chose for your show.</li>\r\n<li>In the directory will be the images you sent.</li>\r\n<li>Other <em>assets</em> will go there too so you can refer to these in your notes as well.</li>\r\n<li>If you’re sending plain text, then markers such as <strong>&gt;&gt; Picture name.jpg here &lt;&lt;</strong> will let me make the appropriate Markdown.</li>\r\n</ul></li>\r\n<li>The directory also needs an <code>index.html</code> file, but my scripts will generate this if needed.</li>\r\n<li>I intend to document this soon.</li>\r\n</ul></li>\r\n</ul>\r\n<h2 id=\"how-dave-makes-hpr-shownotes\">How Dave makes HPR shownotes</h2>\r\n<ul>\r\n<li>Uses scripts to manage show note generation</li>\r\n<li>Uses Markdown when writing the notes\r\n<ul>\r\n<li>Scripts generate note templates and a <code>Makefile</code></li>\r\n<li>Automation using <code>make</code></li>\r\n</ul></li>\r\n<li>Uses Template Toolkit features inside notes to allow extra features\r\n<ul>\r\n<li>Notes go through a pre-processor (a script with access to the show metadata)</li>\r\n<li>The end product is Markdown which is processed with Pandoc</li>\r\n</ul></li>\r\n<li>Template Toolkit (<em>TT<sup>2</sup></em>)\r\n<ul>\r\n<li>A Perl (and Python) tool kit for making templates</li>\r\n<li>Good for generating HTML, but can generate any text</li>\r\n</ul></li>\r\n<li><em>TT<sup>2</sup></em> macros can be used to display scripts in shows relating to the subject, and to run them and capture the output. This makes it certain that the script on display <strong>really</strong> generated the output shown!</li>\r\n<li>The <code>\'Falkon\'</code> browser (originally called <code>QupZilla</code>) is great for monitoring notes since it updates when the HTML changes.\r\n<ul>\r\n<li>Dave confused it with <code>Pale Moon</code> (a fork of <code>Firefox/Mozilla</code>) when talking about tab grouping features</li>\r\n</ul></li>\r\n<li>Should this (personalised) bundle of software be released to the world?\r\n<ul>\r\n<li>Probably yes, since the thoughts in it may be useful even if the code is not.</li>\r\n</ul></li>\r\n</ul>\r\n<h2 id=\"consolidating-show-notes-into-a-book\">Consolidating show notes into a book</h2>\r\n<ul>\r\n<li>We had discussed the following topic a little in other contexts, and offline, but didn’t really look at it in this show. In brief, and for the record, the plans are:\r\n<ul>\r\n<li>There was a series on <code>\'sed\'</code>, the stream editor from the GNU project. It was called <em>“Introduction to sed”</em>, and consisted of 5 parts, which ran through 2016.</li>\r\n<li>Each episode had short and long notes as well as several examples.</li>\r\n<li>Work has begun on consolidating all of the long notes into a single document which will be released on the HPR site, in HTML and PDF formats. Perhaps ePub will be included if feasible.</li>\r\n<li>It’s seen as critical that an index be provided so that topics can be found easily. At the moment this is simplest to achieve with the PDF version, using Andrew’s index generator as discussed in part 1 of this pair of shows.</li>\r\n</ul></li>\r\n</ul>\r\n<h2 id=\"digression-about-experiences-in-uk-higher-education\">Digression about experiences in UK Higher Education</h2>\r\n<ul>\r\n<li>Change of funding through the 1980’s to the 2000’s, particularly in IT</li>\r\n<li>Moving from (often very clever) “home-brew” solutions to products from the <em>big</em> players like Microsoft and Oracle.</li>\r\n<li>The change of management style to something more like the industry methods of earlier times, many of which had been discarded.</li>\r\n<li>Perhaps there is scope for more discussion on this subject in another HPR show!</li>\r\n</ul>',225,0,1,'CC-BY-SA','Markdown,Pandoc,Template Toolkit,PDF',0,0,1),
(3373,'2021-07-07','HPR RPG Club reviews Starfinder',5175,'Starfinder is a sci-fi RPG using Dungeons & Dragons 3.5 rules','<p>\r\nYou can <a href=\"https://paizo.com/starfinder\" target=\"_blank\">purchase Starfinder directly from Paizo</a>, and you can usually find <em>Starfinder Society</em> play at your friendly local game store.\r\n</p>\r\n\r\n<p>\r\nThe alternate starship combat rules mentioned in this episode are available from <a href=\"https://www.drivethrurpg.com/product/353682/Simple-Starship-Combat?affiliate_id=845571\" target=\"_blank\">drivethrurpg.com</a> (warning: this is an affiliate link, but any purchases made through it provide Klaatu with store credit so he can buy more RPG books for future HPR Club reviews).\r\n</p>\r\n',78,95,1,'CC-BY-SA','rpg, cyberpunk, science fiction',0,0,1),
(3374,'2021-07-08','Why I love the MacBook Mid 2010',1431,'I talk about the upgrades I made to the machine and how it\'s benefited me since I got it','<p>The upgrades made to the machine were a 500 GB ssd, 16 GB of ram, and went from El Capitan to Catalina.</p>',297,0,0,'CC-BY-SA','technology,Apple,MacBook,laptop',0,0,1),
(3676,'2022-09-05','HPR Community News for August 2022',9576,'HPR Volunteers talk about shows released and comments posted in August 2022','<style>\ntable td.shrink {\n    white-space:nowrap\n}\n</style>\n\n<h2>New hosts</h2>\n<p>\nWelcome to our new hosts: <br />\n\n    <a href=\"https://hackerpublicradio.org/correspondents/0408.html\" target=\"_blank\">Stache_AF</a>, \n    <a href=\"https://hackerpublicradio.org/correspondents/0410.html\" target=\"_blank\">Hipernike</a>.\n</p>\n\n<h2>Last Month\'s Shows</h2>\n<table id=\"t01\">\n<tr>\n<th>Id</th>\n<th>Day</th>\n<th>Date</th>\n<th>Title</th>\n<th>Host</th>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3651\" target=\"_blank\">3651</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2022-08-01</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3651\" target=\"_blank\">HPR Community News for July 2022</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0159.html\" target=\"_blank\">HPR Volunteers</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3652\" target=\"_blank\">3652</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2022-08-02</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3652\" target=\"_blank\">Registered memory</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0129.html\" target=\"_blank\">JWP</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3653\" target=\"_blank\">3653</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2022-08-03</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3653\" target=\"_blank\">Hello HPR Community</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0408.html\" target=\"_blank\">Stache_AF</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3654\" target=\"_blank\">3654</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2022-08-04</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3654\" target=\"_blank\">Use the data in the Ogg feed to create a website.</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0342.html\" target=\"_blank\">norrist</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3655\" target=\"_blank\">3655</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2022-08-05</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3655\" target=\"_blank\">BSD for Linux users</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0406.html\" target=\"_blank\">binrc</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3656\" target=\"_blank\">3656</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2022-08-08</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3656\" target=\"_blank\">Importance of Small toy projects</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0342.html\" target=\"_blank\">norrist</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3657\" target=\"_blank\">3657</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2022-08-09</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3657\" target=\"_blank\">Small time sysadmin</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0391.html\" target=\"_blank\">Some Guy On The Internet</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3658\" target=\"_blank\">3658</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2022-08-10</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3658\" target=\"_blank\">Linux Inlaws S01E62: HPR\'s inner workings</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0384.html\" target=\"_blank\">monochromec</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3659\" target=\"_blank\">3659</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2022-08-11</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3659\" target=\"_blank\">Developing an HPR static site generator</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0293.html\" target=\"_blank\">Rho`n</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3660\" target=\"_blank\">3660</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2022-08-12</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3660\" target=\"_blank\">BASIC</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0198.html\" target=\"_blank\">Ahuka</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3661\" target=\"_blank\">3661</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2022-08-15</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3661\" target=\"_blank\">Ham Radio testing</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0318.html\" target=\"_blank\">Archer72</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3662\" target=\"_blank\">3662</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2022-08-16</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3662\" target=\"_blank\">Hacker Public Radio 2021 - 2022 New Years Show Part 1</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0269.html\" target=\"_blank\">Honkeymagoo</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3663\" target=\"_blank\">3663</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2022-08-17</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3663\" target=\"_blank\">How I got into Tech</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0408.html\" target=\"_blank\">Stache_AF</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3664\" target=\"_blank\">3664</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2022-08-18</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3664\" target=\"_blank\">Secret hat conversations</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0391.html\" target=\"_blank\">Some Guy On The Internet</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3665\" target=\"_blank\">3665</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2022-08-19</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3665\" target=\"_blank\">UNIX Is Sublime</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0406.html\" target=\"_blank\">binrc</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3666\" target=\"_blank\">3666</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2022-08-22</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3666\" target=\"_blank\">One Weird Trick</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0405.html\" target=\"_blank\">Lurking Prion</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3667\" target=\"_blank\">3667</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2022-08-23</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3667\" target=\"_blank\">Hacker Public Radio 2021 - 2022 New Years Show Part 2</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0269.html\" target=\"_blank\">Honkeymagoo</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3668\" target=\"_blank\">3668</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2022-08-24</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3668\" target=\"_blank\">Linux Inlaws S01E63: John Hawley on kernel dot org and other shenanigans</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0384.html\" target=\"_blank\">monochromec</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3669\" target=\"_blank\">3669</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2022-08-25</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3669\" target=\"_blank\">My First Podcast: My Journey into the Computer World</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0410.html\" target=\"_blank\">Hipernike</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3670\" target=\"_blank\">3670</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2022-08-26</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3670\" target=\"_blank\">Changing Plans</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0198.html\" target=\"_blank\">Ahuka</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3671\" target=\"_blank\">3671</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2022-08-29</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3671\" target=\"_blank\">Response to Episode 3655, \"BSD for Linux Users\"</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0152.html\" target=\"_blank\">Claudio Miranda</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3672\" target=\"_blank\">3672</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2022-08-30</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3672\" target=\"_blank\">Hacker Public Radio 2021 - 2022 New Years Show Part 3</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0269.html\" target=\"_blank\">Honkeymagoo</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3673\" target=\"_blank\">3673</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2022-08-31</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3673\" target=\"_blank\">Recording for Hacker Public Radio</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0399.html\" target=\"_blank\">dnt</a></td>\n</tr>\n</table>\n\n<h2>Comments this month</h2>\n\n<p>These are comments which have been made during the past month, either to shows released during the month or to past shows.\nThere are 28 comments in total.</p>\n<h3>Past shows</h3>\n<p>There are 4 comments on\n4 previous shows:</p>\n<ul>\n<li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3606#comments\" target=\"_blank\">hpr3606</a></strong>\n(2022-05-30) \"<em>Infinity is just a big number and other proofs</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0030.html\" target=\"_blank\">Ken Fallon</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3606#2\" target=\"_blank\">Comment 2</a>:\nKen Fallon on 2022-08-12:\n\"You see\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3629#comments\" target=\"_blank\">hpr3629</a></strong>\n(2022-06-30) \"<em>Linux Inlaws S01E59: The Show with Red Pandas Mosaic Killers and Metal Corrosion</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0384.html\" target=\"_blank\">monochromec</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3629#1\" target=\"_blank\">Comment 1</a>:\nAaron on 2022-08-12:\n\"Excellent interview\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3643#comments\" target=\"_blank\">hpr3643</a></strong>\n(2022-07-20) \"<em>My computing history and the software I use</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0406.html\" target=\"_blank\">binrc</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3643#5\" target=\"_blank\">Comment 5</a>:\nShawn on 2022-08-08:\n\"Key bindings\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3648#comments\" target=\"_blank\">hpr3648</a></strong>\n(2022-07-27) \"<em>A response to tomorrows show</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0030.html\" target=\"_blank\">Ken Fallon</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3648#3\" target=\"_blank\">Comment 3</a>:\nfolky on 2022-08-10:\n\"Known Unknowns 2.0\"</li></ul><br/>\n</li></ul>\n<h3>This month\'s shows</h3>\n<p>There are 24 comments on 13 of this month\'s shows:</p>\n<ul><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3651#comments\" target=\"_blank\">hpr3651</a></strong>\n(2022-08-01) \"<em>HPR Community News for July 2022</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0159.html\" target=\"_blank\">HPR Volunteers</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3651#1\" target=\"_blank\">Comment 1</a>:\nMike Ray on 2022-08-01:\n\"API\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3651#2\" target=\"_blank\">Comment 2</a>:\nKevin O&#39;Brien on 2022-08-11:\n\"High Winds\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3655#comments\" target=\"_blank\">hpr3655</a></strong>\n(2022-08-05) \"<em>BSD for Linux users</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0406.html\" target=\"_blank\">binrc</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3655#1\" target=\"_blank\">Comment 1</a>:\nClaudioM on 2022-08-05:\n\"Excellent Breakdown of BSD!\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3655#2\" target=\"_blank\">Comment 2</a>:\nnorrist on 2022-08-05:\n\"why I use OpenBSD and FreeBSD\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3655#3\" target=\"_blank\">Comment 3</a>:\nPhoenix on 2022-08-07:\n\"Suggestion\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3655#4\" target=\"_blank\">Comment 4</a>:\nKevin O&#39;Brien on 2022-08-11:\n\"I loved the show\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3656#comments\" target=\"_blank\">hpr3656</a></strong>\n(2022-08-08) \"<em>Importance of Small toy projects</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0342.html\" target=\"_blank\">norrist</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3656#1\" target=\"_blank\">Comment 1</a>:\nSome Guy On The Internet on 2022-08-20:\n\"Love this show.\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3657#comments\" target=\"_blank\">hpr3657</a></strong>\n(2022-08-09) \"<em>Small time sysadmin</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0391.html\" target=\"_blank\">Some Guy On The Internet</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3657#1\" target=\"_blank\">Comment 1</a>:\nLurking Prion on 2022-08-13:\n\"Thank you!\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3657#2\" target=\"_blank\">Comment 2</a>:\nKevin O&#39;Brien on 2022-08-13:\n\"Thank you\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3658#comments\" target=\"_blank\">hpr3658</a></strong>\n(2022-08-10) \"<em>Linux Inlaws S01E62: HPR\'s inner workings</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0384.html\" target=\"_blank\">monochromec</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3658#1\" target=\"_blank\">Comment 1</a>:\nTwinn on 2022-08-10:\n\"Painful\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3658#2\" target=\"_blank\">Comment 2</a>:\nSome Guy On The Internet on 2022-08-20:\n\"I have more listeners than stars in the Universe.\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3659#comments\" target=\"_blank\">hpr3659</a></strong>\n(2022-08-11) \"<em>Developing an HPR static site generator</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0293.html\" target=\"_blank\">Rho`n</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3659#1\" target=\"_blank\">Comment 1</a>:\nSome Guy On The Internet on 2022-08-20:\n\"More Magic.\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3660#comments\" target=\"_blank\">hpr3660</a></strong>\n(2022-08-12) \"<em>BASIC</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0198.html\" target=\"_blank\">Ahuka</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3660#1\" target=\"_blank\">Comment 1</a>:\nBeeza on 2022-08-18:\n\"BASIC lives on\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3660#2\" target=\"_blank\">Comment 2</a>:\nSome Guy On The Internet on 2022-08-20:\n\"Visual Basic 6.0 for the Win.\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3661#comments\" target=\"_blank\">hpr3661</a></strong>\n(2022-08-15) \"<em>Ham Radio testing</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0318.html\" target=\"_blank\">Archer72</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3661#1\" target=\"_blank\">Comment 1</a>:\nArcher72 on 2022-07-24:\n\"Left out a show note\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3663#comments\" target=\"_blank\">hpr3663</a></strong>\n(2022-08-17) \"<em>How I got into Tech</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0408.html\" target=\"_blank\">Stache_AF</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3663#1\" target=\"_blank\">Comment 1</a>:\ndnt on 2022-08-31:\n\"Welcome!\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3664#comments\" target=\"_blank\">hpr3664</a></strong>\n(2022-08-18) \"<em>Secret hat conversations</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0391.html\" target=\"_blank\">Some Guy On The Internet</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3664#1\" target=\"_blank\">Comment 1</a>:\none_of_spoons on 2022-08-25:\n\"serious talking\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3665#comments\" target=\"_blank\">hpr3665</a></strong>\n(2022-08-19) \"<em>UNIX Is Sublime</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0406.html\" target=\"_blank\">binrc</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3665#1\" target=\"_blank\">Comment 1</a>:\nKen Fallon on 2022-08-12:\n\"File extensions are valid\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3665#2\" target=\"_blank\">Comment 2</a>:\nhipernike on 2022-08-19:\n\"Bind mount\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3665#3\" target=\"_blank\">Comment 3</a>:\nSome Guy On The Internet on 2022-08-20:\n\"I like file extensions\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3665#4\" target=\"_blank\">Comment 4</a>:\none-of-spoons on 2022-08-20:\n\"Free revision.\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3666#comments\" target=\"_blank\">hpr3666</a></strong>\n(2022-08-22) \"<em>One Weird Trick</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0405.html\" target=\"_blank\">Lurking Prion</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3666#1\" target=\"_blank\">Comment 1</a>:\nKen Fallon on 2022-08-11:\n\"enthusiasm and willingness to learn\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3666#2\" target=\"_blank\">Comment 2</a>:\nLurking Prion on 2022-08-27:\n\"Rare Gems, indeed!\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3671#comments\" target=\"_blank\">hpr3671</a></strong>\n(2022-08-29) \"<em>Response to Episode 3655, \"BSD for Linux Users\"</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0152.html\" target=\"_blank\">Claudio Miranda</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3671#1\" target=\"_blank\">Comment 1</a>:\nalan86 on 2022-08-30:\n\"Feedback\"</li></ul><br/>\n</li></ul>\n\n<h2>Mailing List discussions</h2>\n<p>\nPolicy decisions surrounding HPR are taken by the community as a whole. This\ndiscussion takes place on the <a href=\"https://hackerpublicradio.org/maillist\"\ntarget=\"_blank\">Mail List</a> which is open to all HPR listeners and\ncontributors. The discussions are open and available on the HPR server under\n<a href=\"https://hackerpublicradio.org/pipermail/hpr_hackerpublicradio.org/\">Mailman</a>.\n</p>\n<p>The threaded discussions this month can be found here:</p>\n<a href=\"https://hackerpublicradio.org/pipermail/hpr_hackerpublicradio.org/2022-August/thread.html\" target=\"_blank\">https://hackerpublicradio.org/pipermail/hpr_hackerpublicradio.org/2022-August/thread.html</a>\n\n\n<h2>Events Calendar</h2>\n<p>With the kind permission of <strong>LWN.net</strong> we are linking to\n<a href=\"https://lwn.net/Calendar/\" target=\"_blank\">The LWN.net Community Calendar</a>.</p>\n<p>Quoting the site:</p>\n<blockquote>This is the LWN.net community event calendar, where we track\nevents of interest to people using and developing Linux and free software.\nClicking on individual events will take you to the appropriate web\npage.</blockquote>\n\n<h2>Any other business</h2>\n<h3 id=\"git-repository-for-hpr-development\">Git repository for HPR development</h3>\n<p>For security reasons the <a href=\"https://gitea.io/en-us/\">Gitea</a> service running on <a href=\"https://repo.anhonesthost.net\" class=\"uri\">https://repo.anhonesthost.net</a> requires people to log in with an account to view the repositories.</p>\n<p>Is this acceptable or do we need to move the code to another location?</p>\n<h3 id=\"older-hpr-shows-on-archive.org-phase-2\">Older HPR shows on archive.org, phase 2</h3>\n<p>Now that all shows from number 1 to the latest have been uploaded to the Internet Archive there are other tasks to perform. We are reprocessing and re-uploading shows in the range 871 to 2429 as explained in the Community News show notes released in <a href=\"http://hackerpublicradio.org/eps.php?id=3586#older-hpr-shows-on-archive.org-phase-2\">May 2022</a>. We are keeping a running total here to show progress:</p>\n<table>\n<tr>\n<th>\nMonth\n</th>\n<th>\nMonth count\n</th>\n<th>\nRunning total\n</th>\n<th>\nRemainder\n</th>\n</tr>\n<tr>\n<td>\n2022-04\n</td>\n<td>\n130\n</td>\n<td>\n130\n</td>\n<td>\n1428\n</td>\n</tr>\n<tr>\n<td>\n2022-05\n</td>\n<td>\n140\n</td>\n<td>\n270\n</td>\n<td>\n1288\n</td>\n</tr>\n<tr>\n<td>\n2022-06\n</td>\n<td>\n150\n</td>\n<td>\n420\n</td>\n<td>\n1138\n</td>\n</tr>\n<tr>\n<td>\n2022-07\n</td>\n<td>\n155\n</td>\n<td>\n575\n</td>\n<td>\n983\n</td>\n</tr>\n<tr>\n<td>\n2022-08\n</td>\n<td>\n155\n</td>\n<td>\n730\n</td>\n<td>\n828\n</td>\n</tr>\n</table>\n\n<p><small><small>Updated: 2022-09-03 18:34:16</small></small></p>\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
(3377,'2021-07-13','Chromebook support and more',994,'I\'ve run into disaster using my chrome book','<p>\r\nI\'ve made a special show covering the problem with chromebook support.<br />\r\nI cover the latest AntiX release.<br />\r\nI cover the latest NomadBSD release and I cover GUIX 1.3 and what I ended up using GUIX for.\r\n</p>',377,0,1,'CC-BY-SA','chromebook, AntiX, NomadBSD, GUIX, bath',0,0,1),
(3389,'2021-07-29','Tales of a Tagger',366,'Adventures and mishaps tagging past shows','<p><a href=\"https://hackerpublicradio.org/report_missing_tags.php\" class=\"uri\">https://hackerpublicradio.org/report_missing_tags.php</a></p>\r\n<h2 id=\"shows-without-a-summary-andor-tags\">Shows without a summary and/or tags</h2>\r\n<h3 id=\"page-generated-on-2021-06-11-at-204339-utc\">Page generated on 2021-06-11 at 20:43:39 UTC</h3>\r\n<h3 id=\"sort-order-id\">Sort order: id</h3>\r\n<h3 id=\"current-counts\">Current counts</h3>\r\n<ul>\r\n<li>323 shows without summaries</li>\r\n<li>306 shows without tags</li>\r\n<li>275 shows with neither summaries nor tags</li>\r\n<li>354 shows which need work</li>\r\n</ul>\r\n<h3 id=\"instructions\">Instructions</h3>\r\n<ol type=\"1\">\r\n<li>Find a show in the list below</li>\r\n<li>Check in the list which attributes are missing: summary and/or tags</li>\r\n<li>Click the show number or title to visit the show page</li>\r\n<li>Read the show notes and listen to the show to determine the missing information</li>\r\n<li>Submit your updates by email to tags at hackerpublicradio.org</li>\r\n</ol>\r\n<p>Please send simple ASCII email. No HTML please, and no multipart, encrypted or signed messages; the script can\'t handle them at the moment! (We are working on a solution to some of this though). Remember, the internals of an email are complex and the script isn\'t clever enough to deal with all the many possible formats. Please be gentle with it!</p>\r\n<p>Format the message as follows:</p>\r\n<pre><code>show:12345\r\nsummary:Using Linux at Christmas to make tomato soup in a sporran\r\ntags:linux,christmas,sporran,tomato soup\r\n\r\nshow: 12346\r\ntags: sausage,clothing,hairpiece</code></pre>\r\n<ul>\r\n<li>Start with the show:XXXX line (just the show number, no \'hpr\')</li>\r\n<li>If either the summary or the tags are already present on the show you can omit them from the group</li>\r\n<li>It\'s not possible to change existing summaries or tags by this route, only to add missing ones</li>\r\n<li>Ensure the summary text isn\'t longer than 100 characters</li>\r\n<li>The tags need to be separated by commas</li>\r\n<li>If you need to add a tag with a comma in it enclose the tag in double quotes</li>\r\n<li>The length of the tag list can\'t exceed 200 characters</li>\r\n<li>You can update more than one show per email if you want</li>\r\n<li>Blank lines between the groups of show/summary/tags lines are fine (as shown), as are comment lines beginning with \'#\'</li>\r\n</ul>\r\n<p>Updates will be processed with a script, which is run manually, and this page will be refreshed once the changes have been made. The timestamp above shows when it was last refreshed.</p>\r\n<ol type=\"1\">\r\n<li>Got carried away and broke the 100 character rule\r\n<ul>\r\n<li>can be checked in vim by hitting \'$\', goes to the last character in the line. Observe the character count at the bottom of the screen to verify this is less than 100.</li>\r\n</ul></li>\r\n<li>Went a little too far with tags, and went pretty far beyond the 200 character</li>\r\n<li>Found that these are reasonable limits, that if not followed, break the script</li>\r\n<li><strong>Don\'t be like me. Gently use these tools and they will serve you well.</strong></li>\r\n<li>Here are some of the tools I used when tagging was done right.\r\n<ol type=\"1\">\r\n<li>i3 window manager\r\n<ul>\r\n<li>Use mplayer and vim</li>\r\n</ul></li>\r\n<li>Mplayer\r\n<ul>\r\n<li><p>Play audio file faster without pitch increase</p></li>\r\n<li><p><a href=\"https://kenfallon.com/speeding-up-speech-with-mplayer\" class=\"uri\">https://kenfallon.com/speeding-up-speech-with-mplayer</a><br />\r\n{ key will slow down by 50% of the current rate<br />\r\n[ key will slow down by 10% of the current rate<br />\r\nBackspace will return the speed to normal<br />\r\n] key will speed up 10% of the current rate<br />\r\n} key will speed up by 50% of the current rate<br />\r\n9 key will decrease the volume<br />\r\n0 key will increase the volume<br />\r\n</p>\r\n<p><code>alias mplayer=\'mplayer -af scaletempo\'</code></p></li>\r\n</ul></li>\r\n<li>Android - Termux\r\n<ul>\r\n<li>Download a show via wget (Doing this on Firefox does not show progress bar)\r\n<ul>\r\n<li>PodcastAddict</li>\r\n</ul></li>\r\n<li><a href=\"https://podcastaddict.com/app\" class=\"uri\">https://podcastaddict.com/app</a></li>\r\n<li>bookmark tags\r\n<ul>\r\n<li>advantage is having timestamps where you tagged (for reference)</li>\r\n</ul></li>\r\n<li>export tags\r\n<ul>\r\n<li>Share to Pushbullet\r\n<ul>\r\n<li><a href=\"https://play.google.com/store/apps/details?id=com.pushbullet.android\" class=\"uri\">https://play.google.com/store/apps/details?id=com.pushbullet.android</a></li>\r\n<li>edit list of tags</li>\r\n</ul></li>\r\n</ul></li>\r\n</ul></li>\r\n</ol></li>\r\n<li>Enjoy old shows and lend a hand at the same time. :)</li>\r\n</ol>\r\n',318,0,0,'CC-BY-SA','tags,mplayer,Android,Termux,vim,i3 window manager',0,0,1),
(3388,'2021-07-28','Linux Inlaws S01E35: The Free Software Foundation Europe',4695,'An interview with Matthias Kirschner, Free Software Foundation Europe','<p>In this episode our aging heroes host the Free Software Foundation Europe (FSFE). Its president, Matthias\r\nKirschner talk about the past, the present and the future of free and open source software not only\r\nfrom an FSFE perspective. Never mind how he got into computers in the first place. Also, different opinions\r\nabout communism in general and its implementations (and the flaws of the first rounds of implementations)\r\nare touched upon. So historians, FLOSS users and enthusiasts, communists and free spirits: This is your episode!\r\nPlus: Ever wondered what the Towel Day is all about? Check out the second half of the episode! At our guest\'s\r\nrequest: Please note that this episode was recorded on June 1st 2021.</p>\r\n<h2>Links:</h2>\r\n<ul>\r\n<li>Free Software Foundation Europe: <a href=\"https://fsfe.org\" target=_blank>https://fsfe.org</a></li>\r\n<li>Matthias Kirschner: <a href=\"https://fsfe.org/about/people/kirschner/kirschner.en.html\" target=_blank>https://fsfe.org/about/people/kirschner/kirschner.en.html</a></li>\r\n<li>Free Software Foundation: <a href=\"https://fsf.org\" target=_blank>https://fsf.org</a></li>\r\n<li>Open Software Initiative (OSI): <a href=\"https://opensource.org\" target=_blank>https://opensource.org</a></li>\r\n<li>OSI definition of open source: <a href=\"https://opensource.org/osd\" target=_blank>https://opensource.org/osd</a></li>\r\n<li>Public Money Public Code campaign: <a href=\"https://publiccode.eu\" target=_blank>https://publiccode.eu</a></li>\r\n<li>Stallman controversy: <a href=\"https://arstechnica.com/tech-policy/2021/03/richard-stallman-returns-to-fsf-18-months-after-controversial-rape-comments\" target=_blank>https://arstechnica.com/tech-policy/2021/03/richard-stallman-returns-to-fsf-18-months-after-controversial-rape-comments</a></li>\r\n<li>Towel Day: <a href=\"https://en.wikipedia.org/wiki/Towel_Day\" target=_blank>https://en.wikipedia.org/wiki/Towel_Day</a></li>\r\n<li>FSFE podcast: <a href=\"https://fsfe.org/news/podcast.en.html\" target=_blank>https://fsfe.org/news/podcast.en.html</a></li>\r\n<li>Rutger Bregman, Human kind: <a href=\"https://www.amazon.de/Humankind-Hopeful-History-Rutger-Bregman/dp/1408898934\" target=_blank>https://www.amazon.de/Humankind-Hopeful-History-Rutger-Bregman/dp/1408898934</a></li>\r\n<li>Ashes to Ashes: <a href=\"https://www.bbc.co.uk/programmes/b00jhp3l\" target=_blank>https://www.bbc.co.uk/programmes/b00jhp3l</a></li>\r\n<li>UK met office: <a href=\"https://www.metoffice.gov.uk\" target=_blank>https://www.metoffice.gov.uk</a></li>\r\n<li>Karl Marx, A Critique of Political Economy: <a href=\"https://en.wikipedia.org/wiki/Das_Kapital\" target=_blank>https://en.wikipedia.org/wiki/Das_Kapital</a></li>\r\n</ul>\r\n',384,111,1,'CC-BY-SA','FSFE, FSF, Stallman, Hackathon, Communism, Towel Day',0,0,1),
(3580,'2022-04-22','RAW images',939,'How to work with unprocessed images in RAW formats','<p>Most of the time we work with JPEG images because that is the most common format for digital images. They have the virtue of decent quality combined with smaller file size, and so won\'t fill up your storage quite as fast. But if you want the highest quality you have to work with unprocessed images, called RAW images. These are simply the actual data recorded by the camera sensors, and they give you some advantages, such as better correction of white balance. But GIMP does not open RAW images directly. But there are some work-arounds which we discuss in this tutorial.</p>\r\n<h2 id=\"links\">Links:</h2>\r\n<ul>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Raw_image_format\" class=\"uri\">https://en.wikipedia.org/wiki/Raw_image_format</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Darktable\" class=\"uri\">https://en.wikipedia.org/wiki/Darktable</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Dcraw\" class=\"uri\">https://en.wikipedia.org/wiki/Dcraw</a></li>\r\n<li><a href=\"https://linux.die.net/man/1/dcraw\" class=\"uri\">https://linux.die.net/man/1/dcraw</a></li>\r\n<li><a href=\"https://krita.org/en/\" class=\"uri\">https://krita.org/en/</a></li>\r\n<li><a href=\"https://www.rawtherapee.com/\" class=\"uri\">https://www.rawtherapee.com/</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/DigiKam\" class=\"uri\">https://en.wikipedia.org/wiki/DigiKam</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/ImageMagick\" class=\"uri\">https://en.wikipedia.org/wiki/ImageMagick</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Shotwell_(software)\" class=\"uri\">https://en.wikipedia.org/wiki/Shotwell_(software)</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Raw_image_format\" class=\"uri\">https://en.wikipedia.org/wiki/Raw_image_format</a></li>\r\n<li><a href=\"https://howtogimp.com/raw-photos-in-gimp/\" class=\"uri\">https://howtogimp.com/raw-photos-in-gimp/</a></li>\r\n<li><a href=\"https://www.signatureedits.com/free-raw-photos/\" class=\"uri\">https://www.signatureedits.com/free-raw-photos/</a></li>\r\n<li><a href=\"https://www.signatureedits.com/raw-files-license/\" class=\"uri\">https://www.signatureedits.com/raw-files-license/</a></li>\r\n<li><a href=\"https://www.darktable.org/install/\" class=\"uri\">https://www.darktable.org/install/</a></li>\r\n<li><a href=\"https://www.rawtherapee.com/downloads/\" class=\"uri\">https://www.rawtherapee.com/downloads/</a></li>\r\n<li><a href=\"https://www.ahuka.com/gimp/raw-images/\" class=\"uri\">https://www.ahuka.com/gimp/raw-images/</a></li>\r\n</ul>\r\n',198,113,0,'CC-BY-SA','GIMP, RAW images, unprocessed images',0,0,1),
(3590,'2022-05-06','Directory Commands',872,'More on DOS. This time it is Directory commands.','<p>As we saw in the last lesson, DOS uses directories to organize the files on your disks. That means we need to use directory commands to create a structure to store our files, and to find the files we have stored there. This tutorial takes us through the various commands you can use to do this.</p>\r\n<h2 id=\"links\">Links:</h2>\r\n<ul>\r\n<li><a href=\"https://www.ahuka.com/dos-lessons-for-self-study-purposes/dos-lesson-10-directory-commands/\" class=\"uri\">https://www.ahuka.com/dos-lessons-for-self-study-purposes/dos-lesson-10-directory-commands/</a></li>\r\n</ul>\r\n',198,117,0,'CC-BY-SA','DOS, early PC computing, directory listing',0,0,1),
(3600,'2022-05-20','Digitizing Photos',791,'How to digitize old prints, slides, and negatives','<p>Today most photos are in digital formats, such as those you take with a smartphone, so they can be worked on with GIMP right away. But about old prints, slides, and negatives? Before you can work on them, they need to be digitized in some way. In this tutorial I look at some of the options you have for doing this</p>\r\n<h2 id=\"links\">Links:</h2>\r\n<ul>\r\n<li><a href=\"https://www.toptenreviews.com/best-photo-scanning-services\" class=\"uri\">https://www.toptenreviews.com/best-photo-scanning-services</a></li>\r\n<li><a href=\"https://scandigital.com/\" class=\"uri\">https://scandigital.com/</a></li>\r\n<li><a href=\"https://everpresent.com/\" class=\"uri\">https://everpresent.com/</a></li>\r\n<li><a href=\"https://www.scancafe.com/\" class=\"uri\">https://www.scancafe.com/</a></li>\r\n<li><a href=\"https://www.gophoto.com/\" class=\"uri\">https://www.gophoto.com/</a></li>\r\n<li><a href=\"https://www.digitalmemoriesonline.net/\" class=\"uri\">https://www.digitalmemoriesonline.net/</a></li>\r\n<li><a href=\"https://www.scanmyphotos.com/\" class=\"uri\">https://www.scanmyphotos.com/</a></li>\r\n<li><a href=\"https://www.pcmag.com/reviews/google-photoscan\" class=\"uri\">https://www.pcmag.com/reviews/google-photoscan</a></li>\r\n<li><a href=\"https://www.toptenreviews.com/best-slide-to-digital-image-converters\" class=\"uri\">https://www.toptenreviews.com/best-slide-to-digital-image-converters</a></li>\r\n<li><a href=\"https://www.ahuka.com/gimp/digitizing-photos/\" class=\"uri\">https://www.ahuka.com/gimp/digitizing-photos/</a></li>\r\n</ul>\r\n',198,113,0,'CC-BY-SA','GIMP, digitizing, scanning, photos',0,0,1),
(3610,'2022-06-03','DOS Wildcards; File Attributes',907,'More on DOS. This time it is DOS Wildcards and File Attributes.','<p>For this lesson we are going to fill in a couple of concepts that we will need before we go further with directories. Wildcards can let you look for files and directories without specifying the complete name, and look for items with similar names or file extensions. And file attributes are an important part of file management.</p>\r\n<h2 id=\"links\">Links:</h2>\r\n<ul>\r\n<li><a href=\"https://www.ahuka.com/dos-lessons-for-self-study-purposes/dos-lesson-11-dos-wildcards-file-attributes/\" class=\"uri\">https://www.ahuka.com/dos-lessons-for-self-study-purposes/dos-lesson-11-dos-wildcards-file-attributes/</a></li>\r\n</ul>\r\n',198,117,0,'CC-BY-SA','DOS, early PC computing, wildcards, attributes',0,0,1),
(3620,'2022-06-17','Photo storage, backups, and workflow',1222,'How to keep your photos safe','<p>If you have photos that are important to you, you should take steps to protect them. Every day someone loses a lifetime of memories because they didn\'t take these steps. Don\'t be one of them. In this tutorial I explain how <em>I</em> backup and protect my photos and what my workflow is like. You may find some ideas here that you can use.</p>\r\n<h2 id=\"links\">Links:</h2>\r\n<ul>\r\n<li><a href=\"https://www.amazon.com/Electronic-Automatic-Rotation-Resolution-1280x800IPS/dp/B07QTKQPX4/ref\" class=\"uri\">https://www.amazon.com/Electronic-Automatic-Rotation-Resolution-1280x800IPS/dp/B07QTKQPX4/ref</a></li>\r\n<li><a href=\"https://www.theguardian.com/world/2007/sep/29/argentina.film\" class=\"uri\">https://www.theguardian.com/world/2007/sep/29/argentina.film</a></li>\r\n<li><a href=\"https://www.facebook.com/\" class=\"uri\">https://www.facebook.com/</a></li>\r\n<li><a href=\"https://www.google.com/photos/about/\" class=\"uri\">https://www.google.com/photos/about/</a></li>\r\n<li><a href=\"https://www.flickr.com/\" class=\"uri\">https://www.flickr.com/</a></li>\r\n<li><a href=\"https://www.smugmug.com/plans/\" class=\"uri\">https://www.smugmug.com/plans/</a></li>\r\n<li><a href=\"https://www.shutterfly.com/\" class=\"uri\">https://www.shutterfly.com/</a></li>\r\n<li><a href=\"https://beebom.com/flickr-alternatives/\" class=\"uri\">https://beebom.com/flickr-alternatives/</a></li>\r\n<li><a href=\"https://www.gimp.org/tutorials/GIMPProfile/\" class=\"uri\">https://www.gimp.org/tutorials/GIMPProfile/</a></li>\r\n<li><a href=\"https://www.ahuka.com/gimp/photo-storage-backups-and-workflow/\" class=\"uri\">https://www.ahuka.com/gimp/photo-storage-backups-and-workflow/</a></li>\r\n</ul>\r\n',198,113,0,'CC-BY-SA','GIMP, Photo storage, Photo backup, Photo workflow',0,0,1),
(3379,'2021-07-15','Linux Inlaws S01E34: The one with the intelligence',2716,'Part four of the three-part miniseries on deep learning and artificial intelligence','<p>\r\n    In this fourth part of our three-part miniseries on Deep and Machine Learning our two heroes shed some\r\n    light on a DL architecture called Generative Pre-Trained Transformer (GPT), a pretty sophistic piece\r\n    of software that fools most humans when it comes to authoring text (ideal for budding writers with\r\n    a block in place). Other topics of discussion includes OpenAI (the company behind this framework),\r\n    Elon Musk, Bitcoin, Microsoft and if the GPT can actually pass the Turing test. All will be revealed -\r\n    don\'t miss this episode!\r\n</p>\r\n<h2>Links:</h2>\r\n<ul>\r\n<li>OpenAI: <a href=\"https://openai.com\" target=_blank>https://openai.com</a></li>\r\n<li>GPT: <a href=\"https://openai.com/projects\" target=_blank>https://openai.com/projects</a></li>\r\n<li>The Turing Test: <a href=\"https://en.wikipedia.org/wiki/Turing_test\" target=_blank>https://en.wikipedia.org/wiki/Turing_test</a></li>\r\n<li>GPT-2 source code: <a href=\"https://github.com/openai/gpt-2\" target=_blank>https://github.com/openai/gpt-2</a></li>\r\n<li>GPT meta-progamming: <a href=\"https://www.lesswrong.com/posts/zZLe74DvypRAf7DEQ/meta-programming-gpt-a-route-to-superintelligence\" target=_blank>https://www.lesswrong.com/posts/zZLe74DvypRAf7DEQ/meta-programming-gpt-a-route-to-superintelligence</a></li>\r\n<li>GPT-3 interview: <a href=\"https://www.youtube.com/watch?v=PqbB07n_uQ4\" target=_blank>https://www.youtube.com/watch?v=PqbB07n_uQ4</a></li>\r\n<li>DSDS: <a href=\"https://en.wikipedia.org/wiki/Deutschland_sucht_den_Superstar\" target=_blank>https://en.wikipedia.org/wiki/Deutschland_sucht_den_Superstar</a></li>\r\n<li>GPT-3 sample 1: <a href=\"https://linuxinlaws.eu/files/padawans.txt\" target=_blank>https://linuxinlaws.eu/files/padawans.txt</a></li>\r\n<li>GPT-3 sample 2: <a href=\"https://linuxinlaws.eu/files/HGttG.txt\" target=_blank>https://linuxinlaws.eu/files/HGttG.txt</a></li>\r\n</ul>\r\n',384,111,1,'CC-BY-SA','GPT-3, OpenAI, Elon Musk, Microsoft, Bitcoin, meta-programming',0,0,1),
(3381,'2021-07-19','Learning to skate',2152,'Klaatu goes for a walk, and talks about learning to ride a skateboard','<p>Apologies for the heavy breathing. I chose (unwisely, in terms of audio) to walk up a steep hill.</p>\r\n',78,0,0,'CC-BY-SA','skateboard',0,0,1),
(3378,'2021-07-14','A bit of my experience with Starlink internet service',608,'some ramblings about satellite internet service and how Starlink is different','<p>Starlink website: <a href=\"https://www.starlink.com/\" class=\"uri\">https://www.starlink.com/</a></p>\r\n\r\n<p>Starlink from Wikipedia: <a href=\"https://en.wikipedia.org/wiki/Starlink\" class=\"uri\">https://en.wikipedia.org/wiki/Starlink</a></p>\r\n\r\n<p>\r\nStarlink is a satellite internet constellation being constructed by SpaceX providing satellite Internet access. The constellation will consist of thousands of mass-produced small satellites in low Earth orbit (LEO), which communicate with designated ground transceivers. The SpaceX satellite development facility in Redmond, Washington houses the Starlink research, development, manufacturing, and orbit control teams. The cost of the decade-long project to design, build, and deploy the constellation was estimated by SpaceX in May 2018 to be at least US$10 billion.\r\n</p>\r\n<p>\r\nProduct development began in 2015. Two prototype test-flight satellites were launched in February 2018. Additional test satellites and 60 operational satellites were deployed in May 2019. SpaceX launches up to 60 satellites at a time, aiming to deploy 1,584 of the 260 kg (570 lb) spacecraft to provide near-global service by late 2021 or 2022. SpaceX started a private beta service in the Northern United States in August 2020 and a public beta in October 2020, service beginning at high latitudes between 44° and 52° North.\r\n</p>\r\n<p>\r\nOn 15 October 2019, the United States Federal Communications Commission (FCC) submitted filings to the International Telecommunication Union (ITU) on SpaceX\'s behalf to arrange spectrum for 30,000 additional Starlink satellites to supplement the 12,000 Starlink satellites already approved by the FCC.\r\n</p>\r\n<p>\r\nAstronomers have raised concerns about the constellations’ effect on ground-based astronomy and how the satellites will add to an already jammed orbital environment. In response, SpaceX has implemented several upgrades to Starlink satellites aimed at reducing their brightness during operation. The satellites are equipped with krypton-fueled Hall thrusters which allow them to de-orbit at the end of their life. Additionally, the satellites are designed to autonomously avoid collisions based on uplinked tracking data.\r\n</p>\r\n',243,0,0,'CC-BY-SA','internet, leo, satellites, ISP',0,0,1),
(3382,'2021-07-20','How I fixed a fault on my car for free thanks to YouTube',760,'How I fixed a fault on my car for free and as an added bonus without injuring myself!','<p>I had a spare moment and found this show on my hard drive. Cheers MrX</p>\r\n<p><a href=\"https://www.youtube.com/watch?v=kl1_VM_j5r8\">YouTube video I found that explains how to fix a rattling heat shield for free</a></p>\r\n<p><em>Picture of the fix!</em><br />\r\n<img src=\"https://hackerpublicradio.org/eps/hpr3382/hpr3382/heat-shield-repair.jpg\" alt=\"Picture of the fix!\" /></p>\r\n',201,0,1,'CC-BY-SA','Car, Repair, Hack, DIY',0,0,1),
(3383,'2021-07-21','My gEeeky Experiment - Part 1',1029,'ClaudioM talks about how he revived his lowly Asus Eee PC 901 netbook with OpenBSD.','<ul>\r\n<li>Blog post: <a href=\"https://claudiomiranda.wordpress.com/2020/01/04/my-geeeky-experiment-part-1/\" class=\"uri\">https://claudiomiranda.wordpress.com/2020/01/04/my-geeeky-experiment-part-1/</a></li>\r\n<li>Asus Eee PC 901 info via Wikipedia (first paragraph in link): <a href=\"https://en.wikipedia.org/wiki/Asus_Eee_PC#Other_Eee_90x_models\" class=\"uri\">https://en.wikipedia.org/wiki/Asus_Eee_PC#Other_Eee_90x_models</a></li>\r\n<li>OpenBSD Web Site: <a href=\"https://www.openbsd.org/\" class=\"uri\">https://www.openbsd.org/</a></li>\r\n<li>Duplicating installed packages on another machine, via the OpenBSD FAQ: <a href=\"https://www.openbsd.org/faq/faq15.html#PkgDup\" class=\"uri\">https://www.openbsd.org/faq/faq15.html#PkgDup</a></li>\r\n<li>Video of Eee PC 901 running OpenBSD 6.6: <a href=\"https://imgur.com/KHJj8lK\" class=\"uri\">https://imgur.com/KHJj8lK</a></li>\r\n<li>Mastodon post from <span class=\"citation\" data-cites=\"solene\">@solene</span><span class=\"citation\" data-cites=\"bsd.network\">@bsd.network</span> about the Firefox port on OpenBSD: <a href=\"https://bsd.network/@solene/106481939809930365\" class=\"uri\">https://bsd.network/@solene/106481939809930365</a></li>\r\n</ul>\r\n<p>CPU on my Dell Latitude E6410 via sysctl: hw.model=Intel(R) Core(TM) i5 CPU M 520 @ 2.40GHz</p>\r\n',152,0,0,'CC-BY-SA','asus,eeepc,openbsd,bsd,linux',0,0,1),
(3384,'2021-07-22','Page Numbers in EPUB eBook Files',1699,'Response to HPR 3367 I describe how to specify page numbers in an EPUB eBook.','<p>This episode is a response to <a href=\"https://hackerpublicradio.org/eps.php?id=3367\">hpr3367</a> by Andrew Conway and Dave Morriss. One of the topics they brought up was the thorny issue of page numbers in e-books. Most of the time you don\'t need to worry about page numbers in ebooks, if you\'re reading fiction for example. The whole point of an ebook is that the texts can reflow to fit the page no matter what size the screen is or what font-size you\'ve chosen. This is a major accessibility feature of all e-book formats. One reason you might want to specify actual page numbers, though, is if you\'re dealing with a technical or academic book, and you need to be able to refer to specific passages in the book by page number, as you are expected to do in academic research. Or, as Andrew and Dave were discussing, you might need to create an index in your ebook that would send your readers back to specific pages like in a paper book.</p>\r\n\r\n<p>I\'ve thought about this before but never really gotten into the weeds and figured out how to make it happen. In fact, when I was creating the new digital editions of the Counterpoint textbooks like I discussed in <a href=\"https://hackerpublicradio.org/eps.php?id=1512\">hpr1512</a>, I actually took the trouble to put page number anchors through the entire thing, so that at a future date I would be able to enable real page numbers. This was a key part of the source file\'s infrastructure, which helped me quickly find the passages I was working on in my huge HTML file. Those anchors are not quite in the correct format for EPUB, but they are consistent and I will easily be able to write a script to fix them. I haven\'t done that yet, but now that I figured out how to do it on some smaller examples, this is on my to-do list.</p>\r\n\r\n<p>Anyway while I was listening to Dave and Andrew talk about this, I thought I remembered reading somewhere that in the newest ePub specification, EPUB 3, there was support for publisher\'s page numbers to deal with precisely this issue. Their discussion prompted me to see if I could make it work. I\'m happy to report success, although with some qualifications, which I will get into.</p>\r\n\r\n<h3>Converting to EPUB 3</h3>\r\n\r\n<p>The first thing to do is to upgrade your ebook from EPUB2 to EPUB3. There are a couple of ways to do this. The way I did it was to use the ebook editor in a recent version of Calibre. When you open up the EPUB for editing, go to the <code>Tools</code> menu and choose <code>Upgrade book internals</code>. This will create the new navigation file <code>nav.xhtml</code> to replace the old <code>toc.ncx</code> file. You\'ll need to edit this new file later to enable the page numbers.</p>\r\n\r\n<h3>Insert page anchors</h3>\r\n\r\n<p>Next you need to put your page anchors in there. This could be very tedious if you haven\'t done any preparatory work, such as putting visible page numbers in plain sight in square brackets [21] the way I did for a couple of ebooks. It wasn\'t very elegant, but at least it was easy to find where the page breaks were. I have a <a href=\"https://hackerpublicradio.org/eps.php?id=1284\">Blather</a> voice command that triggers a python script to create these things. Here\'s an example of page number anchor, which goes in the main text of the book wherever you want to insert a page number. This will not be visible to the reader inline. This is for page 57:</p>\r\n\r\n<pre>\r\n&lt;span epub:type=&quot;pagebreak&quot; id=&quot;page57&quot; title=&quot;57&quot;&gt;&lt;/span&gt;\r\n</pre>\r\n\r\n<h3>Page List in Navigation File</h3>\r\n\r\n<p>Finally you need to put a <strong>page list</strong> in the new navigation file. This is simply an ordered list with hyperlinks to every page anchor that you put in your ebook. This will not be visible to the reader, but it\'s critical to making everything work. Here\'s a minimal example from my first attempt. This only covers Pages 122 to 126. This is the kind of page numbering you might need if you created an ebook from a five-page article from an academic journal that appeared in the middle of the volume.</p>\r\n\r\n\r\n<pre>\r\n&lt;nav epub:type=&quot;page-list&quot; hidden=&quot;hidden&quot;&gt;\r\n    &lt;ol&gt;\r\n        &lt;li&gt;&lt;a href=&quot;filename.html#page122&quot;&gt;122&lt;/a&gt;&lt;/li&gt;\r\n        &lt;li&gt;&lt;a href=&quot;filename.html#page123&quot;&gt;123&lt;/a&gt;&lt;/li&gt;\r\n        &lt;li&gt;&lt;a href=&quot;filename.html#page124&quot;&gt;124&lt;/a&gt;&lt;/li&gt;\r\n        &lt;li&gt;&lt;a href=&quot;filename.html#page125&quot;&gt;125&lt;/a&gt;&lt;/li&gt;\r\n        &lt;li&gt;&lt;a href=&quot;filename.html#page126&quot;&gt;126&lt;/a&gt;&lt;/li&gt;\r\n    &lt;/ol&gt;\r\n&lt;/nav&gt;\r\n</pre>\r\n\r\n<p>I\'m not sure it matters where you put this navigation block in the <code>nav.xhmtl</code> file, but I put mine between the table of contents and the landmarks blocks.</p>\r\n\r\n<h3>Scripting the creation of page list</h3>\r\n\r\n<p>It could be very tedious to create a page list like this, so of course I wrote a script to automate a lot of the heavy lifting. I\'m sure Dave can write one that\'s more elegant than this, but this is what I came up with in about 5 minutes and it did the job, with the exception of putting the right URL for each link. I did a little bit of post-production to search and replace the URLs generated in the script with what I needed for the specific eBook. I think if you added a third command-line argument with a URL, you can solve this problem. The difficulty with larger books will be when you have more than one internal HTML file in the book, you will have to go through very carefully and make sure that the link goes to the correct file. I saved the script as <code>pagelist.sh</code> and put it in my <code>$PATH</code>.</p>\r\n\r\n<p>Command to run to generate a page list from pages 42 to 61:</p>\r\n\r\n<pre>\r\npagelist.sh 42 61\r\n</pre>\r\n\r\n<p>And here\'s the script:</p>\r\n\r\n<pre>\r\n#!/bin/bash\r\n\r\n# grab beginning and ending pages from 1st and 2nd\r\n# CLI arguments, and specify a tmp file to put stuff\r\nstart=&quot;$1&quot;\r\nend=&quot;$2&quot;\r\nnavfile=/tmp/navfile.txt\r\n\r\n# put the top matter for the nav block\r\necho \'&lt;nav epub:type=&quot;page-list&quot; hidden=&quot;hidden&quot;&gt;\' &gt; $navfile\r\necho &quot;    &lt;ol&gt;&quot; &gt;&gt; $navfile\r\n\r\n# iterate through the page numbers making list item for each one.\r\n# should replace filename with your ebook\'s actual filename\r\nfor i in $(seq $start $end); do\r\n	echo &quot;        &lt;li&gt;&lt;a href=\\&quot;filename.html#page$i\\&quot;&gt;$i&lt;/a&gt;&lt;/li&gt;&quot; &gt;&gt; $navfile\r\ndone\r\n\r\n# close out the list and nav block\r\necho &quot;    &lt;/ol&gt;&quot; &gt;&gt; $navfile\r\necho &quot;&lt;/nav&gt;&quot; &gt;&gt; $navfile\r\n\r\nexit 0\r\n</pre>\r\n\r\nThen you just need to copy and paste what was generated from the script into your editor and make sure all of the URLs are correct, then stick that navigation block into the <code>nav.xhtml</code> file.\r\n\r\n<h3>Conclusions</h3>\r\n\r\n<p>So, once you have the page anchors and the page list in place in your EPUB3 ebook, everything should work. The problem is that so far the only ebook reader I have found that renders the page numbers correctly on the screen is the iBooks app on iOS. I tried it on my Kobo dedicated eReader, on the Marvin ePub reader on iOS and on Overdrive on Android, and none of them displayed my shiny page numbers. iBooks was the only one, but it did so perfectly after choosing \"show publisher page numbers\" on the table of contents menu. It was pretty magical. A quick internet search confirms that there is very little e-book reader or app support for displaying these page numbers.</p>\r\n\r\n<p>However, the embedded page numbers will still be useful if what you want to do is create an index that directs readers back to specific pages. On the one hand, indexes are not as critical as they used to be because you can search through the text of e-books very easily. What you can\'t do easily is <em>browse</em> an eBook the way you can browse a paper book index to see what topics might catch your eye. This might be something only academics do. It\'s not uncommon for an academic to pick up a book and flip right to the bibliography and the index!</p>\r\n\r\n\r\n<h2>Links</h2>\r\n\r\n<ul>\r\n	<li><a href=\"https://kb.daisy.org/publishing/docs/navigation/pagelist.html\">Examples of different page number code formatting</a> from the Accessible Publishing Knowledge Base</li>\r\n	<li><a href=\"https://idpf.org/epub/301/spec/epub-contentdocs.html#sec-xhtml-nav-def-types\">EPUB 3 Specification for navigation document</a>, including page numbers</li>\r\n	<li><a href=\"https://calibre-ebook.com/\">Calibre eBook management software</a></li>\r\n</ul>\r\n',238,0,0,'CC-BY-SA','ebooks, epub, scripting, calibre',0,0,1),
(3386,'2021-07-26','What\'s for dinner?',1342,'Some scripts and a database for randomly choosing which meal to cook','<h2 id=\"overview\">Overview</h2>\n<p>I live on my own, but I cook for members of my family from time to time. Each week we all get together and cook dinner for Wednesday and Thursday. I usually do the cooking but we are starting to share these duties for certain meals.</p>\n<p>In 2019 I thought it would be useful if I had some sort of random chooser to decide what next week’s meal was going to be. I wrote a Bash script called <code>choose_meal</code>, using a simple CSV file of meal names and the date last eaten to avoid choosing the same one too often. The shortcomings of this approach soon became apparent!</p>\n<p>It wasn’t long before <code>choose_meal</code> was rewritten in <a href=\"https://www.perl.org/\" title=\"Perl scripting language\">Perl</a>. This time I decided to use a database, and chose <a href=\"https://www.sqlite.org/index.html\"><code>SQLite</code></a> to create it. My database contained just two tables, one for the meals themselves (called slightly confusingly <code>\'meal_history\'</code>), and another for a record of the choices made (called <code>\'meal_log\'</code>) – the ability to produce historical reports seemed like a desirable feature!</p>\n<p>In 2019 the design of this system was very specific to our needs: one choice per week on a Wednesday. It was not something that could be used by anyone else – which seemed like a bad idea.</p>\n<p>In late 2020 and early 2021 the system was redesigned, as will be discussed in the detailed notes. In May 2021 a more general design was added to the public <a href=\"https://gitlab.com/davmo/weekly_menus\" title=\"Weekly Menus repository\">GitLab repository</a> and the preparation of this show was begun.</p>\n<p>I had never intended this system to hold recipes. This was partly because I have built a collection of recipes I have constructed from various sources and amended as I have made them. I print these and keep them in a ring-binder for reference as I cook. In some cases the meals described in the database are multi-component ones (such as the dishes that make up a curry for example), so it doesn’t seem appropriate to hold these here.</p>\n<p>I might rethink this in the future however.</p>\n<h2 id=\"long-notes\">Long notes</h2>\n<p>Follow this link to <a href=\"hpr3386_full_shownotes.html\">read the detailed notes</a> associated with this episode.</p>\n<h2 id=\"links\">Links</h2>\n<ul>\n<li><p><a href=\"https://www.perl.org/\">Perl</a></p>\n<ul>\n<li><a href=\"https://www.perl.org/get.html\">Perl 5</a>: (currently v5.35.0)</li>\n<li><a href=\"https://www.raku.org/\">Raku</a>: originally called Perl 6, a totally different scripting language.</li>\n<li><a href=\"https://www.perl.com/article/announcing-perl-7/\">Perl 7</a>: updates to Perl 5, removal of some historical stuff</li>\n</ul></li>\n<li><p><a href=\"https://www.sqlite.org/index.html\">SQLite</a>: a C-language library that implements a small, fast, self-contained, high-reliability, full-featured, SQL database engine.</p></li>\n<li><p><a href=\"https://gitlab.com/davmo/weekly_menus\">GitLab repository for <em>Weekly Menus</em></a></p></li>\n</ul>\n',225,0,1,'CC-BY-SA','Perl,SQLite3,database,food',0,0,1),
(3387,'2021-07-27','Infosec Podcasts Part 5  Grab bag',483,'Presenting my favorite podcasts related to various aspects of information security','<p>Inoffensive in every region of the world.</p>\r\n<p>Thank you to everyone who has listened to my previous episodes. I hope I am not boring you all to death!</p>\r\n<p>Why am I recording this series?</p>\r\n<ul>\r\n<li>You can hear my reasoning for why I am making this series by listening to the introduction to any of the previous four episodes in this series. Yes, this is a shameless plug for you to listen to my other works.</li>\r\n</ul>\r\n<p>Because there are so many podcasts to list, I have broken them down into 6 different episodes based on topics:</p>\r\n<ul>\r\n<li>Part 1 - News &amp; Current Events</li>\r\n<li>Part 2 - General Information Security</li>\r\n<li>Part 3 - Career &amp; Personal Development</li>\r\n<li>Part 4 - Social Engineering</li>\r\n<li>Part 5 -\r\n<ul>\r\n<li>Hacks &amp; Attacks</li>\r\n<li>Technical Information &amp; Learning</li>\r\n<li>Infosec Community / Social / History</li>\r\n</ul></li>\r\n<li>Part 6 - Infosec Leadership</li>\r\n</ul>\r\n<h2 id=\"part-5\">Part 5</h2>\r\n<h3 id=\"hacks--attacks\">Hacks &amp; Attacks</h3>\r\n<ul>\r\n<li><p>Malicious Life Ran Levi sponsored by Cybereason (Periodically)</p>\r\n<ul>\r\n<li>Detailed descriptions of specific historical events in cybersecurity</li>\r\n<li><a href=\"https://malicious.life/\">https://malicious.life/</a></li>\r\n</ul></li>\r\n<li><p>Darknet Diaries - Jack Rhysider (Bi-Weekly)</p>\r\n<ul>\r\n<li>Stories from the darker side of the net</li>\r\n<li><a href=\"https://darknetdiaries.com/\">https://darknetdiaries.com/</a></li>\r\n</ul></li>\r\n</ul>\r\n<h3 id=\"technical-information--learning\">Technical information / learning</h3>\r\n<ul>\r\n<li><p>Digital Forensic Survival Podcast - Michael Leclair (Weekly)</p>\r\n<ul>\r\n<li>A weekly deep dive into digital forensics</li>\r\n<li><a href=\"https://digitalforensicsurvivalpodcast.com/\">https://digitalforensicsurvivalpodcast.com/</a></li>\r\n</ul></li>\r\n<li><p>The Offensive Security Podcast - TJ Null and Jeremy Miller (Harbinger) and sponsored by Offensive Security (Creators of the OSCP Offensive Security Certified Professional certification)</p>\r\n<ul>\r\n<li>Probably belongs in the Career &amp; Personal Development category, but I discovered it after I had already recorded that episode.</li>\r\n<li>Interviews with Red team practitioners and other security professionals, related to the various certifications and training available with Offensive Security.</li>\r\n<li><a href=\"https://www.offensive-security.com/podcast/\">https://www.offensive-security.com/podcast/</a></li>\r\n</ul></li>\r\n</ul>\r\n<h3 id=\"community--social--history\">Community / Social / History</h3>\r\n<ul>\r\n<li><p>Command Line Heroes - Saron Yitbarek and sponsored by Red Hat (Weekly with gaps between seasons)</p>\r\n<ul>\r\n<li>Tells the stories about how got to be where we are today, from open source to dev-ops, hardware, programming languages, and everything in between</li>\r\n<li><a href=\"https://www.redhat.com/en/command-line-heroes\">https://www.redhat.com/en/command-line-heroes</a></li>\r\n</ul></li>\r\n<li><p>Beers with Talos - Mitch Neff, Craig Williams, Joel Esler, Matt Olney all part of Cisco Talos Research Center (Periodically)</p>\r\n<ul>\r\n<li>A light hearted and sarcastic podcast which touches on current issues of interest to the hosts</li>\r\n<li><a href=\"https://www.talosintelligence.com/podcasts\">https://www.talosintelligence.com/podcasts</a></li>\r\n</ul></li>\r\n</ul>\r\n<p>I hope that this series has helped introduce you to some new and interesting listening options. Give some of them a try, and I would love to get your feedback in the episode comments on the HPR website.</p>\r\n<p>The next and final episode of this series will be about Information Security Leadership podcasts.</p>\r\n<p>Thank you for listening.</p>',394,75,1,'CC-BY-SA','infosec, podcasts, security',0,0,1),
(3399,'2021-08-12','Linux Inlaws S01E36: Open Source Licenses',3361,'The ultimate show on open source licenses or how to fall asleep without chemicals','<p>\r\n    In this episode Chris is trying hard to get Martin to sleep by elaborating on the\r\n    subject of free and open source software licenses but fails miserably. Listen to a\r\n    more than riveting episode on the ins and outs of licensing FLOSS code bases in addition\r\n    to banter about Brexit, plans for a reshaping of Europe after the invasion of England\r\n    and Wales, Northern Ireland and Scotland leave the UK.\r\n</p>\r\n\r\n<h2>Links:</h2>\r\n<ul>\r\n<li>MI6: <a href=\"https://www.sis.gov.uk\" target=_blank>https://www.sis.gov.uk</a></li>\r\n<li>OSI definition of free and open source software: <a href=\"https://opensource.org/osd\" target=_blank>https://opensource.org/osd</a></li>\r\n<li>VMware GPL lawsuit: <a href=\"https://sfconservancy.org/news/2015/mar/05/vmware-lawsuit\" target=_blank>https://sfconservancy.org/news/2015/mar/05/vmware-lawsuit</a></li>\r\n<li>Copyleft: <a href=\"https://www.gnu.org/licenses/copyleft.html\" target=_blank>https://www.gnu.org/licenses/copyleft.html</a></li>\r\n<li>Permissive licensing: <a href=\"https://en.wikipedia.org/wiki/Permissive_software_license\" target=_blank>https://en.wikipedia.org/wiki/Permissive_software_license</a></li>\r\n<li>Affero GPL: <a href=\"https://en.wikipedia.org/wiki/Affero_General_Public_License\" target=_blank>https://en.wikipedia.org/wiki/Affero_General_Public_License</a></li>\r\n<li>TerminusDB license change: <a href=\"https://blog.terminusdb.com/we-love-gplv3-but-are-switching-license-to-apache-2-0-terminusdb\" target=_blank>https://blog.terminusdb.com/we-love-gplv3-but-are-switching-license-to-apache-2-0-terminusdb</a></li>\r\n<li>Audacity usage restriction issue: <a href=\"https://github.com/audacity/audacity/issues/1213\" target=_blank>https://github.com/audacity/audacity/issues/1213</a></li>\r\n<li>Redis Source Available License: <a href=\"https://redislabs.com/wp-content/uploads/2019/09/redis-source-available-license.pdf\" target=_blank>https://redislabs.com/wp-content/uploads/2019/09/redis-source-available-license.pdf</a></li>\r\n<li>GoodFORM: <a href=\"https://goodformcode.com\" target=_blank>https://goodformcode.com</a></li>\r\n<li>Server Side Public License: <a href=\"https://www.mongodb.com/licensing/server-side-public-license\" target=_blank>https://www.mongodb.com/licensing/server-side-public-license</a></li>\r\n<li>Creative Commons licenses: <a href=\"https://creativecommons.org/choose\" target=_blank>https://creativecommons.org/choose</a></li>\r\n<li>Clarkson\'s Farm: <a href=\"https://en.wikipedia.org/wiki/Clarkson%27s_Farm\" target=_blank>https://en.wikipedia.org/wiki/Clarkson%27s_Farm</a></li>\r\n<li>Taking Lives: <a href=\"https://www.imdb.com/title/tt0364045/?ref_=fn_al_tt_1\" target=_blank>https://www.imdb.com/title/tt0364045/?ref_=fn_al_tt_1</a></li>\r\n</ul>\r\n',384,111,1,'CC-BY-SA','Licensing, GNU, BSD, MIT, Taking Lives, MI6, Clarkson\'s Farm, Open Source Initiative',0,0,1),
(3696,'2022-10-03','HPR Community News for September 2022',3283,'HPR Volunteers talk about shows released and comments posted in September 2022','<style>\ntable td.shrink {\n    white-space:nowrap\n}\n</style>\n\n<h2>New hosts</h2>\n<p>\nThere were no new hosts this month.\n</p>\n\n<h2>Last Month\'s Shows</h2>\n<table id=\"t01\">\n<tr>\n<th>Id</th>\n<th>Day</th>\n<th>Date</th>\n<th>Title</th>\n<th>Host</th>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3674\" target=\"_blank\">3674</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2022-09-01</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3674\" target=\"_blank\">Emergency Show posted in 2012. MUD</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0078.html\" target=\"_blank\">Klaatu</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3675\" target=\"_blank\">3675</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2022-09-02</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3675\" target=\"_blank\">Plan 9: An exercise in futility</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0406.html\" target=\"_blank\">binrc</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3676\" target=\"_blank\">3676</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2022-09-05</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3676\" target=\"_blank\">HPR Community News for August 2022</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0159.html\" target=\"_blank\">HPR Volunteers</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3677\" target=\"_blank\">3677</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2022-09-06</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3677\" target=\"_blank\">Hacker Public Radio 2021 - 2022 New Years Show Part 4</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0269.html\" target=\"_blank\">Honkeymagoo</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3678\" target=\"_blank\">3678</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2022-09-07</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3678\" target=\"_blank\">\"Stupid Users\" ... no, not those users, the other \"stupid users\"</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0405.html\" target=\"_blank\">Lurking Prion</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3679\" target=\"_blank\">3679</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2022-09-08</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3679\" target=\"_blank\">Linux Inlaws S01E64: Non-profits in the US: A closer look at 501(c)s</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0384.html\" target=\"_blank\">monochromec</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3680\" target=\"_blank\">3680</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2022-09-09</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3680\" target=\"_blank\">EDIT</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0198.html\" target=\"_blank\">Ahuka</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3681\" target=\"_blank\">3681</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2022-09-12</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3681\" target=\"_blank\">Rust 101 Episode 3: Functionally Insane</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0396.html\" target=\"_blank\">BlacKernel</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3682\" target=\"_blank\">3682</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2022-09-13</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3682\" target=\"_blank\">Hacker Public Radio 2021 - 2022 New Years Show Part 5</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0269.html\" target=\"_blank\">Honkeymagoo</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3683\" target=\"_blank\">3683</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2022-09-14</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3683\" target=\"_blank\">Add a favourite to OSMAnd</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0030.html\" target=\"_blank\">Ken Fallon</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3684\" target=\"_blank\">3684</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2022-09-15</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3684\" target=\"_blank\">Wake on Lan</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0129.html\" target=\"_blank\">JWP</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3685\" target=\"_blank\">3685</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2022-09-16</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3685\" target=\"_blank\">Budget and an Android app</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0318.html\" target=\"_blank\">Archer72</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3686\" target=\"_blank\">3686</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2022-09-19</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3686\" target=\"_blank\"> Followup for HPR3675: Clarifications on the path traversal bug</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0406.html\" target=\"_blank\">binrc</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3687\" target=\"_blank\">3687</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2022-09-20</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3687\" target=\"_blank\">Hacker Public Radio 2021 - 2022 New Years Show Part 6</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0269.html\" target=\"_blank\">Honkeymagoo</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3688\" target=\"_blank\">3688</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2022-09-21</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3688\" target=\"_blank\">Education, Certifications, and sipping on the Socials</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0405.html\" target=\"_blank\">Lurking Prion</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3689\" target=\"_blank\">3689</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2022-09-22</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3689\" target=\"_blank\">Linux Inlaws S01E65: TerminusDB</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0384.html\" target=\"_blank\">monochromec</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3690\" target=\"_blank\">3690</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2022-09-23</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3690\" target=\"_blank\">Planning the Trip</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0198.html\" target=\"_blank\">Ahuka</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3691\" target=\"_blank\">3691</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2022-09-26</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3691\" target=\"_blank\">Starship.rs the best prompt I don\'t use</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0078.html\" target=\"_blank\">Klaatu</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3692\" target=\"_blank\">3692</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2022-09-27</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3692\" target=\"_blank\">What is a real hacker?</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0405.html\" target=\"_blank\">Lurking Prion</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3693\" target=\"_blank\">3693</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2022-09-28</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3693\" target=\"_blank\">Fixing the automatic cutoff mechanism to an electric mower</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0293.html\" target=\"_blank\">Rho`n</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3694\" target=\"_blank\">3694</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2022-09-29</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3694\" target=\"_blank\">Robo Tripping Ravelords of the Apocalypse</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0401.html\" target=\"_blank\">Mechatroniac</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3695\" target=\"_blank\">3695</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2022-09-30</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3695\" target=\"_blank\">How I watch youtube with newsboat</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0406.html\" target=\"_blank\">binrc</a></td>\n</tr>\n</table>\n\n<h2>Comments this month</h2>\n\n<p>These are comments which have been made during the past month, either to shows released during the month or to past shows.\nThere are 39 comments in total.</p>\n<h3>Past shows</h3>\n<p>There are 8 comments on\n8 previous shows:</p>\n<ul>\n<li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2449#comments\" target=\"_blank\">hpr2449</a></strong>\n(2017-12-21) \"<em>Org-mode mobile solution</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0326.html\" target=\"_blank\">Brian in Ohio</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=2449#2\" target=\"_blank\">Comment 2</a>:\nSinza on 2022-09-06:\n\"Pinephone\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2756#comments\" target=\"_blank\">hpr2756</a></strong>\n(2019-02-25) \"<em>Bash Tips - 20</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0225.html\" target=\"_blank\">Dave Morriss</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=2756#1\" target=\"_blank\">Comment 1</a>:\nUnnamed on 2022-09-30:\n\"Untitled\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3655#comments\" target=\"_blank\">hpr3655</a></strong>\n(2022-08-05) \"<em>BSD for Linux users</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0406.html\" target=\"_blank\">binrc</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3655#5\" target=\"_blank\">Comment 5</a>:\nKen Fallon on 2022-09-08:\n\"Featured on BSD Now 471\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3658#comments\" target=\"_blank\">hpr3658</a></strong>\n(2022-08-10) \"<em>Linux Inlaws S01E62: HPR\'s inner workings</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0384.html\" target=\"_blank\">monochromec</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3658#3\" target=\"_blank\">Comment 3</a>:\noperat0r on 2022-09-05:\n\"awesome\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3662#comments\" target=\"_blank\">hpr3662</a></strong>\n(2022-08-16) \"<em>Hacker Public Radio 2021 - 2022 New Years Show Part 1</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0269.html\" target=\"_blank\">Honkeymagoo</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3662#1\" target=\"_blank\">Comment 1</a>:\nKen Fallon on 2022-09-02:\n\"Thanks To:\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3667#comments\" target=\"_blank\">hpr3667</a></strong>\n(2022-08-23) \"<em>Hacker Public Radio 2021 - 2022 New Years Show Part 2</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0269.html\" target=\"_blank\">Honkeymagoo</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3667#1\" target=\"_blank\">Comment 1</a>:\nKen Fallon on 2022-09-02:\n\"Thanks To:\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3672#comments\" target=\"_blank\">hpr3672</a></strong>\n(2022-08-30) \"<em>Hacker Public Radio 2021 - 2022 New Years Show Part 3</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0269.html\" target=\"_blank\">Honkeymagoo</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3672#1\" target=\"_blank\">Comment 1</a>:\nKen Fallon on 2022-09-02:\n\"Thanks To:\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3673#comments\" target=\"_blank\">hpr3673</a></strong>\n(2022-08-31) \"<em>Recording for Hacker Public Radio</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0399.html\" target=\"_blank\">dnt</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul>\n<li>\n<a href=\"https://hackerpublicradio.org/eps.php?id=3673#1\" target=\"_blank\">Comment 1</a>:\nCarl on 2022-09-05:\n\"Great Tips!\"</li></ul><br/>\n</li></ul>\n<h3>This month\'s shows</h3>\n<p>There are 31 comments on 9 of this month\'s shows:</p>\n<ul><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3675#comments\" target=\"_blank\">hpr3675</a></strong>\n(2022-09-02) \"<em>Plan 9: An exercise in futility</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0406.html\" target=\"_blank\">binrc</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3675#1\" target=\"_blank\">Comment 1</a>:\none_of_spoons on 2022-09-02:\n\"Directive gem.\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3675#2\" target=\"_blank\">Comment 2</a>:\nClaudioM on 2022-09-02:\n\"plan9 / 9p\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3675#3\" target=\"_blank\">Comment 3</a>:\nnorrist on 2022-09-02:\n\"In-Depth Series: Learning Awk\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3675#4\" target=\"_blank\">Comment 4</a>:\nken on 2022-09-03:\n\"Editors note not Ken Fallon\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3675#5\" target=\"_blank\">Comment 5</a>:\npasserby on 2022-09-03:\n\"fake news\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3675#6\" target=\"_blank\">Comment 6</a>:\nwill on 2022-09-03:\n\"come back to plan9\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3676#comments\" target=\"_blank\">hpr3676</a></strong>\n(2022-09-05) \"<em>HPR Community News for August 2022</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0159.html\" target=\"_blank\">HPR Volunteers</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3676#1\" target=\"_blank\">Comment 1</a>:\nArcher72 on 2022-09-04:\n\"Good show - I made it to the end\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3676#2\" target=\"_blank\">Comment 2</a>:\nClaudioM on 2022-09-05:\n\"Another One Made It to the End!\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3676#3\" target=\"_blank\">Comment 3</a>:\nMike Ray on 2022-09-05:\n\"A11y and abbreviations\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3676#4\" target=\"_blank\">Comment 4</a>:\noperat0r on 2022-09-06:\n\"I made it !\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3676#5\" target=\"_blank\">Comment 5</a>:\nfolky on 2022-09-06:\n\"Did make it too\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3676#6\" target=\"_blank\">Comment 6</a>:\nbrian-in-ohio on 2022-09-06:\n\"the show\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3676#7\" target=\"_blank\">Comment 7</a>:\nnorrist on 2022-09-06:\n\"Public access to HPR site Generator\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3676#8\" target=\"_blank\">Comment 8</a>:\nMiguel on 2022-09-06:\n\"I made it!!\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3676#9\" target=\"_blank\">Comment 9</a>:\nStache_AF on 2022-09-07:\n\"Made It\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3677#comments\" target=\"_blank\">hpr3677</a></strong>\n(2022-09-06) \"<em>Hacker Public Radio 2021 - 2022 New Years Show Part 4</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0269.html\" target=\"_blank\">Honkeymagoo</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3677#1\" target=\"_blank\">Comment 1</a>:\nKen Fallon on 2022-09-02:\n\"Thanks To:\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3677#2\" target=\"_blank\">Comment 2</a>:\nFilly Buster on 2022-09-06:\n\"Filibuster\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3678#comments\" target=\"_blank\">hpr3678</a></strong>\n(2022-09-07) \"<em>\"Stupid Users\" ... no, not those users, the other \"stupid users\"</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0405.html\" target=\"_blank\">Lurking Prion</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3678#1\" target=\"_blank\">Comment 1</a>:\nSome Guy On The Internet on 2022-09-08:\n\"Stupid=\"NO BACKUPS!\"\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3678#2\" target=\"_blank\">Comment 2</a>:\nLurking Prion on 2022-09-09:\n\"No Backups\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3678#3\" target=\"_blank\">Comment 3</a>:\nLurking Prion on 2022-09-09:\n\"Not a podcast\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3678#4\" target=\"_blank\">Comment 4</a>:\nSome Guy On The Internet on 2022-09-10:\n\"You\'re Fine (...preemptive strike).\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3682#comments\" target=\"_blank\">hpr3682</a></strong>\n(2022-09-13) \"<em>Hacker Public Radio 2021 - 2022 New Years Show Part 5</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0269.html\" target=\"_blank\">Honkeymagoo</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3682#1\" target=\"_blank\">Comment 1</a>:\nKen Fallon on 2022-09-02:\n\"Thanks To:\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3687#comments\" target=\"_blank\">hpr3687</a></strong>\n(2022-09-20) \"<em>Hacker Public Radio 2021 - 2022 New Years Show Part 6</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0269.html\" target=\"_blank\">Honkeymagoo</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3687#1\" target=\"_blank\">Comment 1</a>:\nKen Fallon on 2022-09-02:\n\"Thanks To:\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3692#comments\" target=\"_blank\">hpr3692</a></strong>\n(2022-09-27) \"<em>What is a real hacker?</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0405.html\" target=\"_blank\">Lurking Prion</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3692#1\" target=\"_blank\">Comment 1</a>:\nbrian-in-ohio on 2022-09-27:\n\"cussing\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3692#2\" target=\"_blank\">Comment 2</a>:\nLurking Prion on 2022-09-28:\n\"Yes, I probably need a hug\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3694#comments\" target=\"_blank\">hpr3694</a></strong>\n(2022-09-29) \"<em>Robo Tripping Ravelords of the Apocalypse</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0401.html\" target=\"_blank\">Mechatroniac</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3694#1\" target=\"_blank\">Comment 1</a>:\none_of_spoons on 2022-09-29:\n\"{inspirational artifice}\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3694#2\" target=\"_blank\">Comment 2</a>:\nClaudioM on 2022-09-29:\n\"Great Story\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3694#3\" target=\"_blank\">Comment 3</a>:\nKen Fallon on 2022-09-29:\n\"I loved this\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3694#4\" target=\"_blank\">Comment 4</a>:\nMechatroniac on 2022-09-29:\n\"Thanks\"</li><li><a href=\"https://hackerpublicradio.org/eps.php?id=3694#5\" target=\"_blank\">Comment 5</a>:\nbrian-in-ohio on 2022-09-30:\n\"the show\"</li></ul><br/>\n</li><li><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3695#comments\" target=\"_blank\">hpr3695</a></strong>\n(2022-09-30) \"<em>How I watch youtube with newsboat</em>\"\nby <a href=\"https://hackerpublicradio.org/correspondents/0406.html\" target=\"_blank\">binrc</a>.</li>\n<li style=\"list-style: none; display: inline\">\n<ul><li><a href=\"https://hackerpublicradio.org/eps.php?id=3695#1\" target=\"_blank\">Comment 1</a>:\nfolky on 2022-09-30:\n\"Great for gpodder too\"</li></ul><br/>\n</li></ul>\n\n<h2>Mailing List discussions</h2>\n<p>\nPolicy decisions surrounding HPR are taken by the community as a whole. This\ndiscussion takes place on the <a href=\"https://hackerpublicradio.org/maillist\"\ntarget=\"_blank\">Mail List</a> which is open to all HPR listeners and\ncontributors. The discussions are open and available on the HPR server under\n<a href=\"https://hackerpublicradio.org/pipermail/hpr_hackerpublicradio.org/\">Mailman</a>.\n</p>\n<p>The threaded discussions this month can be found here:</p>\n<a href=\"https://hackerpublicradio.org/pipermail/hpr_hackerpublicradio.org/2022-September/thread.html\" target=\"_blank\">https://hackerpublicradio.org/pipermail/hpr_hackerpublicradio.org/2022-September/thread.html</a>\n\n\n<h2>Events Calendar</h2>\n<p>With the kind permission of <strong>LWN.net</strong> we are linking to\n<a href=\"https://lwn.net/Calendar/\" target=\"_blank\">The LWN.net Community Calendar</a>.</p>\n<p>Quoting the site:</p>\n<blockquote>This is the LWN.net community event calendar, where we track\nevents of interest to people using and developing Linux and free software.\nClicking on individual events will take you to the appropriate web\npage.</blockquote>\n\n<h2>Any other business</h2>\n<h3 id=\"fosdem-2023\">FOSDEM 2023</h3>\n<p>FOSDEM 2023 will take place in Brussels, Belgium at the Université Libre de Bruxelles (or ULB) next February on the weekend of the 4th and 5th.</p>\n<p>HPR had a stand at the last in-person event, representing <em>Free Culture Podcasts</em>. There is a call for proposals out at the moment for those wishing to run a stand for the forthcoming event.</p>\n<h3 id=\"older-hpr-shows-on-archive.org-phase-2\">Older HPR shows on archive.org, phase 2</h3>\n<p>Now that all shows from number 1 to the latest have been uploaded to the Internet Archive there are other tasks to perform. We are reprocessing and re-uploading shows in the range 871 to 2429 as explained in the Community News show notes released in <a href=\"http://hackerpublicradio.org/eps.php?id=3586#older-hpr-shows-on-archive.org-phase-2\">May 2022</a>. We are keeping a running total here to show progress:</p>\n<table>\n<tr>\n<th>\nMonth\n</th>\n<th>\nMonth count\n</th>\n<th>\nRunning total\n</th>\n<th>\nRemainder\n</th>\n</tr>\n<tr>\n<td>\n2022-04\n</td>\n<td>\n130\n</td>\n<td>\n130\n</td>\n<td>\n1428\n</td>\n</tr>\n<tr>\n<td>\n2022-05\n</td>\n<td>\n140\n</td>\n<td>\n270\n</td>\n<td>\n1288\n</td>\n</tr>\n<tr>\n<td>\n2022-06\n</td>\n<td>\n150\n</td>\n<td>\n420\n</td>\n<td>\n1138\n</td>\n</tr>\n<tr>\n<td>\n2022-07\n</td>\n<td>\n155\n</td>\n<td>\n575\n</td>\n<td>\n983\n</td>\n</tr>\n<tr>\n<td>\n2022-08\n</td>\n<td>\n155\n</td>\n<td>\n730\n</td>\n<td>\n828\n</td>\n</tr>\n<tr>\n<td>\n2022-09\n</td>\n<td>\n150\n</td>\n<td>\n880\n</td>\n<td>\n678\n</td>\n</tr>\n</table>\n\n<p><small><small>Updated: 2022-10-02 11:47:18</small></small></p>\n\n',159,47,1,'CC-BY-SA','Community News',0,0,1),
(3392,'2021-08-03','Structured error reporting',1714,'Tuula talks about how she improved build times by breaking down error reporting to smaller parts','<h2 id=\"initial-state\">Initial state</h2>\r\n<p>When I originally wanted a unified error reporting on the server-side, I made one huge type that enumerated all the possible error cases that could be reported:</p>\r\n<pre><code>-- | Error codes for all errors returned by API\r\ndata ErrorCode\r\n    -- common error codes\r\n    = ResourceNotFound\r\n    | InsufficientRights\r\n    | FailedToParseDataInDatabase\r\n    -- errors specific to news\r\n    | SpecialEventHasAlreadyBeenResolved\r\n    | UnsupportedArticleType\r\n    | SpecialNewsExtractionFailed\r\n    | TriedToMakeChoiceForRegularArticle\r\n    -- errors specific to simulation state\r\n    | SimulationStatusNotFound\r\n    | DeltaTIsTooBig\r\n    | TurnProcessingAndStateChangeDisallowed\r\n    | SimulationNotOpenForCommands\r\n    | SimulationNotOpenForBrowsing\r\n    -- errors specific to people\r\n    | StatIsTooLow Text\r\n    | CouldNotConfirmDateOfBirth\r\n    | DateOfBirthIsInFuture\r\n    | FirstNameIsEmpty\r\n    | FamilyNameIsEmpty\r\n    | CognomenIsEmpty\r\n    | RegnalNumberIsLessThanZero\r\n    -- errors specific to new person creation\r\n    | AgeBracketStartIsGreaterThanEnd\r\n    | PersonCreationFailed\r\n    deriving (Show, Read, Eq)\r\n</code></pre>\r\n<p>Then I had some helper functions to turn any value of that type into a nice error message:</p>\r\n<pre><code>errorCodeToStatusCode :: ErrorCode -&gt; Int\r\nstatusCodeToText :: Int -&gt; ByteString\r\nerrorCodeToText :: ErrorCode -&gt; Text\r\nraiseIfErrors :: [ErrorCode] -&gt; HandlerFor App ()\r\n</code></pre>\r\n<p><code>errorCodeToStatusCode</code> was responsible for turning <code>ErrorCode</code> into http status code. For example <code>StatIsTooLow \"intrigue\"</code> would be <code>400</code>. <code>statusCodeToText</code> would take this code and turn it into short error message given in http response. <code>400</code> would be <code>Bad Request</code>. <code>errorCodeToText</code> would give a bit more verbose explanation of what happened, <code>StatIsTooLow \"intrigue\"</code> would be mapped to <code>\"Stat intrigue is too low\"</code>. Finally <code>raiseIfErrors</code> would take a list of <code>ErrorCode</code> and use these helper functions to turn them into a http response with correct status code, error message and json body detailing all errors that had happened:</p>\r\n<pre><code>[\r\n    { code:\r\n        { tag: &quot;StatIsTooLow&quot;\r\n        , contents: &quot;intrique&quot;\r\n        }\r\n    , error: &quot;Stat intrigue is too low&quot;\r\n    }\r\n]\r\n</code></pre>\r\n<p>There’s two tags: <code>code</code>, which contains machine readable details about the error and <code>error</code>, which contains error message that can be shown to user.</p>\r\n<p>While this worked fine, there was some problems with it. <code>ErrorCode</code> type was growing larger and larger and the module it was defined in was referred all over the codebase. Every time I added a new error message, all the modules that used error reporting had to be compiled and it was getting slow.</p>\r\n<h2 id=\"solution\">Solution</h2>\r\n<p>Breaking up the <code>ErrorCode</code> to smaller types and moving them to different modules would means less modules were going to built when I added a new error code. The problem was that <code>raiseIfErrors :: [ErrorCode] -&gt; HandlerFor App ()</code> wanted a list of <code>ErrorCode</code> and elements in a list have to be of same type.</p>\r\n<p>I started by splitting <code>ErrorCode</code> to smaller types. Each of the smaller error types have automatically derived toJSON and fromJSON functions for serializing them to and from JSON:</p>\r\n<pre><code>data PersonCreationError =\r\n    StatIsTooLow Text\r\n    | CouldNotConfirmDateOfBirth\r\n    | DateOfBirthIsInFuture\r\n    | FirstNameIsEmpty\r\n    | FamilyNameIsEmpty\r\n    | CognomenIsEmpty\r\n    | RegnalNumberIsLessThanZero\r\n    deriving (Show, Read, Eq)\r\n\r\n$(deriveJSON defaultOptions &#39;&#39;PersonCreationError)\r\n</code></pre>\r\n<p>That <code>$(deriveJSON defaultOptions \'\'PersonCreationError)</code> is template haskell call. Basically it invokes a <code>deriveJSON</code> function with <code>PersonCreationError</code> as parameter and compiles and splices the resulting code here. This is fast and easy way of generating <code>ToJSON</code> and <code>FromJSON</code> instances and avoiding having to write them by hand. It is very similar to how Lisp macros work.</p>\r\n<p>Then I defined a type class, that has functions for getting a http status code and a error message that can be shown to user. <code>statusCodeToText</code> I could use as is, without any modifications:</p>\r\n<pre><code>class ErrorCodeClass a where\r\n    httpStatusCode :: a -&gt; Int\r\n    description :: a -&gt; Text\r\n</code></pre>\r\n<p>I have to have instance of <code>ErrorCodeClass</code> defined for each and every smaller error type. Here’s an excerpt of <code>PersonCreationError</code> showing how it would look like:</p>\r\n<pre><code>instance ErrorCodeClass PersonCreationError where\r\n    httpStatusCode = \\case\r\n        StatIsTooLow _ -&gt; 400\r\n        CouldNotConfirmDateOfBirth -&gt; 500\r\n...\r\n\r\n    description = \\case\r\n        StatIsTooLow s -&gt;\r\n            &quot;Stat &quot; ++ s ++ &quot; is too low&quot;\r\n...\r\n</code></pre>\r\n<p>A little note: <code>description = \\case</code> relies on lambda case extension. It is just a slightly different way of writing:</p>\r\n<pre><code>    description d =\r\n        case d of\r\n</code></pre>\r\n<p>This allows me to turn values of these smaller error types into error messages that could be sent to the user.</p>\r\n<p>The second part of the solution is to figure out a way to put values of these smaller error types into same list. If a list is of type <code>[PersonCreationError]</code>, it can’t contain values of <code>CommonError</code> and vice versa. Creating a wrapper like:</p>\r\n<pre><code>data ECode a = ECode a\r\n</code></pre>\r\n<p>doesn’t work, because then I would have elements of type <code>ECode PersonCreationError</code> and <code>ECode CommonError</code>, which are of different type. What I need, is a way to wrap all these different types into a wrapper that loses the type of wrapped value. Another problem is that I need to place constraints on what kind of values can be wrapped. I need them to have instances for <code>ErrorCodeClass</code> (for getting error information) and ToJSON (for serializing them into JSON). There’s several ways of doing this, but I chose to use generalized algebraic data types (GADTs for short):</p>\r\n<pre><code>{-# LANGUAGE GADTs #-}\r\n\r\ndata ECode where\r\n    ECode :: (ErrorCodeClass a, ToJSON a) =&gt; a -&gt; ECode\r\n</code></pre>\r\n<p>Now type <code>ECode</code> has one value constructor, also named to <code>ECode</code>, which takes one parameter <code>a</code>. <code>a</code> can be anything, as long as there’s <code>ErrorCodeClass</code> and <code>ToJSON</code> instances defined for it. Calling this constructor will return <code>ECode</code>. If you compare this with the previous definition of <code>ECode</code>, you’ll notice two major differences:</p>\r\n<ul>\r\n<li><code>a</code> is constrained to have specific type class instances</li>\r\n<li>resulting type is <code>ECode</code>, not <code>ECode a</code></li>\r\n</ul>\r\n<p>The second part means that I can wrap different types into <code>ECode</code> and place them into a same list without problems. Type of that list is simply <code>[ECode]</code>.</p>\r\n<p>But having a list of error codes wrapped in <code>ECode</code> isn’t going to do much to us. We need to be able to turn them into http status code, text and list of error messages. Luckily we have a type class just for that:</p>\r\n<pre><code>instance ErrorCodeClass ECode where\r\n    httpStatusCode (ECode a) =\r\n        httpStatusCode a\r\n\r\n    description (ECode a) =\r\n        description a\r\n</code></pre>\r\n<p><code>httpStatusCode</code> of <code>ECode</code> is <code>httpStatusCode</code> of the value <code>ECode</code> wraps. Similarly <code>description</code> of <code>ECode</code> is <code>description</code> of the wrapped value.</p>\r\n<p>For turning <code>ECode</code> into JSON, I opted for hand written instance:</p>\r\n<pre><code>instance ToJSON ECode where\r\n    toJSON (ECode a) =\r\n        object [ &quot;HttpCode&quot; .= httpStatusCode a\r\n               , &quot;FaultCode&quot; .= toJSON a\r\n               , &quot;ErrorDescription&quot; .= description a\r\n               ]\r\n</code></pre>\r\n<p>This gives me complete control over how I want to report errors to the client.</p>\r\n<p>Final piece of the puzzle is <code>raiseIfErrors</code> function:</p>\r\n<pre><code>raiseIfErrors :: [ECode] -&gt; HandlerFor App ()\r\nraiseIfErrors errors = do\r\n    when (not $ null errors) $ do\r\n        let code = fromMaybe 500 $ errors ^? ix 0 . to httpStatusCode\r\n        let msg = statusCodeToText code\r\n        sendStatusJSON (Status code msg) $ toJSON errors\r\n</code></pre>\r\n<p>If there are any elements in the passed in list, grab the http status code and text from the first element of the list. I was considering writing some sort of logic to deduce which error code to return in case there are more than one type in the list, but decided against it. There doesn’t seem to be any easy way to decide between HTTP 400 Bad Request and HTTP 500 Internal Server Error. So I just return the first one. Body of the response contains list of errors codes:</p>\r\n<pre><code>[\r\n    { HttpCode: 400\r\n    , FaultCode: {\r\n        Tag: &quot;StatIsTooLow&quot;\r\n        , Contents: &quot;intrique&quot;\r\n        }\r\n    , ErrorDescription: &quot;Stat intrigue is too low&quot;\r\n    }\r\n]\r\n</code></pre>\r\n<p>Since manually wrapping things in <code>ECode</code> gets tedious after a while, I defined function for each type of error that does that for me:</p>\r\n<pre><code>statIsTooLow :: Text -&gt; ECode\r\nstatIsTooLow s = ECode $ StatIsTooLow s\r\n</code></pre>\r\n<p>Now, instead of writing <code>ECode $ StatIsTooLow \"intrigue\"</code>, I can write <code>statIsTooLow \"intrigue\"</code>. And if I ever decide to change internals of errors again, I can change how these functions are defined and hopefully don’t have to change each and every place where they’re being used.</p>\r\n<h2 id=\"different-solution\">Different solution</h2>\r\n<p>Another way to tackle this problem is to use records instead of algebraic data types:</p>\r\n<pre><code>data ECode = ECode\r\n    { httpCode :: Int\r\n    , description :: Text\r\n    }\r\n\r\nstatIsTooLow :: Text -&gt; ECode\r\nstatIsTooLow s =\r\n    ECode\r\n    { httpCode = 400\r\n    , description = &quot;Stat &quot; ++ s ++ &quot; is too low&quot;\r\n    }\r\n</code></pre>\r\n',364,107,1,'CC-BY-SA','haskell, error reporting',0,0,1),
(3393,'2021-08-04','We need to talk about XML',1885,'An extensible markup language? This is too good to be true!','<p>Klaatu introduces XML.</p>\r\n\r\n<p>\r\nThe sample XML document discussed in this episode is&#58;\r\n</p>\r\n\r\n<pre>\r\n<code>\r\n&#60;xml&gt;\r\n  &#60;sol&gt;\r\n    &#60;planet&gt;\r\n      &#60;name&gt;\r\n        Mercury\r\n      &#60;&#47;name&gt;\r\n      &#60;albedo&gt;\r\n        0.11\r\n      &#60;&#47;albedo&gt;\r\n    &#60;&#47;planet&gt;\r\n    &#60;planet&gt;\r\n      &#60;name&gt;\r\n        Venus\r\n      &#60;&#47;name&gt;\r\n      &#60;albedo&gt;\r\n        0.7\r\n      &#60;&#47;albedo&gt;\r\n    &#60;&#47;planet&gt;\r\n    &#60;planet&gt;\r\n      &#60;name&gt;\r\n        Terra\r\n      &#60;&#47;name&gt;\r\n      &#60;albedo&gt;\r\n        0.39\r\n      &#60;&#47;albedo&gt;\r\n    &#60;&#47;planet&gt;\r\n  &#60;&#47;sol&gt;\r\n&#60;&#47;xml&gt;\r\n</code>\r\n</pre>\r\n',78,0,0,'CC-BY-SA','xml,data,markup,markdown',0,0,1),
(3394,'2021-08-05','Be an XML star with xmlstarlet',1591,'Parse XML from the terminal','<p>See the layout of an XML document</p>\r\n\r\n<pre><code>\r\n$ xmlstarlet elements planets.xml\r\nxml\r\nxml/sol\r\nxml/sol/planet\r\nxml/sol/planet/name\r\nxml/sol/planet/albedo\r\nxml/sol/planet\r\nxml/sol/planet/name\r\nxml/sol/planet/albedo\r\nxml/sol/planet\r\nxml/sol/planet/name\r\nxml/sol/planet/albedo\r\n</code>\r\n</pre>\r\n\r\n<p>See content of the <strong>planet</strong> node</p>\r\n\r\n<pre><code>\r\n$ xmlstarlet select -t --value-of \'/xml/sol/planet\' planets.xml\r\n\r\n        Mercury\r\n        0.11\r\n\r\n        Venus\r\n        0.7\r\n\r\n        Terra\r\n        0.39\r\n</code></pre>\r\n\r\n<p>Get the third instance of the <strong>planet</strong> node</p>\r\n\r\n<pre><code>\r\n$ xmlstarlet select -t --value-of \'/xml/sol/planet[3]\' planets.xml\r\nTerra\r\n0.39\r\n</code></pre>\r\n\r\n<p>Get only the planets with an albedo greater than 0.25</p>\r\n\r\n<pre><code>\r\n$ xmlstarlet select -t --value-of \'/xml/sol/planet[albedo > 0.25]\' planets.xml\r\n\r\nVenus\r\n0.7\r\n\r\nTerra\r\n0.39\r\n</code></pre>\r\n\r\n<p>Get only the planets closer to Sol than the third planet</p>\r\n\r\n<pre><code>\r\n$ xmlstarlet select -t --value-of \'/xml/sol/planet[position() < 3]\' planets.xml\r\n\r\nMercury\r\n0.11\r\n\r\nVenus\r\n0.7\r\n</code></pre>\r\n\r\n<p>Learn more XPath functions at <a href=\"https://developer.mozilla.org/en-US/docs/Web/XPath\" target=\"_blank\">Mozilla Developer Network</a>.</p>\r\n\r\n<p>Download xmlstarlet from <a href=\"https://xmlstar.sourceforge.net\"\r\ntarget=\"_blank\">xmlstar.sourceforge.net</a> (<a href=\"https://sourceforge.net/projects/xmlstar/\">https://sourceforge.net/projects/xmlstar/</a>).\r\n</p>\r\n',78,0,0,'CC-BY-SA','xml,data,markup,markdown',0,0,1),
(3441,'2021-10-11','Murphy Work Bench',842,'Operator talks about hitting his head on his work bench','<ul>\r\n<li>PROS:\r\n<ul>\r\n<li>easy clean up just fold and vacuum</li>\r\n<li>height is great for tall people so I\'m not hunched over the table</li>\r\n<li>saves space</li>\r\n</ul></li>\r\n<li>CONS:\r\n<ul>\r\n<li>I ran into it 2 times so I rounded the edges</li>\r\n<li>I just now hit my head on it ... folded and crashed everything on the table to the ground and pic I custom made fell of the wall and into my AC water bucket</li>\r\n<li>loud when using and setting up everything echoes though the walls at night etc</li>\r\n</ul></li>\r\n</ul>\r\n<!-- . -->\r\n<ul>\r\n<li><a href=\"https://smile.amazon.com/gp/product/B08F4VNT9P\" class=\"uri\">https://smile.amazon.com/gp/product/B08F4VNT9P</a> $60</li>\r\n<li>MDF cut at Lowes $50</li>\r\n</ul>\r\n<p><img src=\"https://hackerpublicradio.org/eps/hpr3441/hpr3441/WorkBench.gif\" alt=\"https://hackerpublicradio.org/eps/hpr3441/hpr3441/WorkBench.gif\" /></p>\r\n',36,0,1,'CC-BY-SA','DIY,wood working,hacking',0,0,1),
(3396,'2021-08-09','Card roles in Magic the Gathering',2367,'There are over 25,000 cards in MTG. You only need 60 to play.','<p>Cutting to the chase&#58;</p>\r\n<p>When getting into Magic the Gathering, it&#39;s easy to get overwhelmed and confused by choice. Instead of thinking about cards, I&#39;ve learnt to think about the game mechanic roles that a deck needs to have satisfied, and then I look for cards that fill those roles.\r\n</p>\r\n\r\n<p>My list is by no means definitive, but I think these are the basic universal roles you need, regardless of how you play&#58;</p>\r\n\r\n<ul>\r\n<li>Mana base&#58; Land cards. These provide you with mana so you can play cards. For a 60 card deck, anticipate requiring about 24. In a later episode, I&#39;ll talk about additional ways to manage mana.</li>\r\n<li>General purpose&#58; Creatures, enchantments, instants, artifacts, and so on. These are cards, costing a full spectrum of mana amounts &#40;some you can play for 1 or 2 mana, others require 4 and 5 and more&#41;, that you need to populate your deck. These don&#39;t need to be anything special, unless you want to spend money for really fancy cards, but I assume you&#39;re not listening to me if you&#39;re a pro player.<//i>\r\n<li>Card draw&#58; You&#39;re going to deplete your hand unless you have cards that give you permission to draw more cards than just your allotted one-per-turn.</li>\r\n<li>Recursion&#58; When you&#39;re forced to discard a card you really really wanted to play, you&#39;ll be glad to have some cards that grant you permission to bring that card back from your graveyard. This is called &#34;recursion&#34; by Magic players.</li>\r\n</ul>\r\n\r\n<p>There are other card types that can be useful, but they may be best for specific strategies. The ones I list here are, I believe, pretty universal.\r\n</p>\r\n\r\n<p>You can find lists of cards that fill specific roles with a simple Internet search. For instance, if you realize you have no cards that let you replenish your hand, you might search for &#34;best cards to draw cards MTG&#34; and get directed to a site like <a href=\"https://tappedout.net/mtg-decks/list-of-edh-draw-cards/\" target=\"_blank\">TappedOut.net</a> or <a href=\"https://magic.wizards.com/en/articles/archive/feature/top-50-card-drawing-cards-2003-03-21-0\" target=\"_blank\">magic.wizards.com</a>.</p>\r\n\r\n<p>Go to your local game store or an online vendor to buy just the cards you need. Because there are so many to choose from in any given category, you get to control the price. I have a rule for myself that do not spend over $2 on any single card.\r\n</p>\r\n\r\n<p>When trying to fill roles, I generally aim to get 4 cards that do the thing I need. Sometimes I get exactly the same card 4 times, other times I get a variety of cards to fill the role. Either way, 4 usually feels like a good draw frequency for each role.</p>\r\n\r\n',78,0,0,'CC-BY-SA','magic, mtg, card, tcg',0,0,1),
(3401,'2021-08-16','Mana hacks',1924,'Klaatu muses about mana ramping in Magic the Gathering','<p>The categories of mana ramps I have defined for myself are&#58;</p>\r\n<ul>\r\n<li>Mana acquired outside of the land drop action</li>\r\n<li>Getting more mana for less</li>\r\n<li>Mana saved up over time</li>\r\n</ul>\r\n',78,95,0,'CC-BY-SA','magic, mtg, card, tcg, mana',0,0,1),
(3397,'2021-08-10','What is a PineTime',595,'In this podcast I talk a little bit about the pinetime.','<p>\r\nThis is the first impression of a PineTime watch that I bought about a week ago and have already done some changes to the underlying code. I think this is an interesting project and open source so you can contribute.\r\n</p>\r\n<p>\r\nGithub repository:\r\n<a href=\"https://github.com/JF002/InfiniTime\">https://github.com/JF002/InfiniTime</a>\r\n</p>\r\n<p>\r\nSales page:\r\n<a href=\"https://www.pine64.org/pinetime/\">https://www.pine64.org/pinetime/</a>\r\n</p>',382,0,0,'CC-BY-SA','open source, watch, coding',0,0,1),
(3406,'2021-08-23','A study of cards in games',1633,'Currency, deterrent, coersion, clutter, rules','<p>What function cards have in games.</p>',78,95,0,'CC-BY-SA','card, game',0,0,1),
(3402,'2021-08-17','Reading a manifesto: Declaration of Digital Autonomy',877,'Reading and brief commentary and background on Molly DeBlanc\'s and Karen Sandler\'s techautonomy.org','<p><em>This episode, as its source material, is licensed under the Creative Commons Attribution-ShareAlike 4.0 International license.</em></p>\r\n<h2 id=\"previously\">Previously</h2>\r\n<ul>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=3317\">hpr3317</a> :: Reading a manifesto: Towards A Cooperative Technology Movement</li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=3326\">hpr3326</a> :: HPR Community News for April 2021</li>\r\n</ul>\r\n<h2 id=\"free-software-timeline\">Free Software Timeline</h2>\r\n<ul>\r\n<li>1983-09: <a href=\"https://www.gnu.org/gnu/initial-announcement.html\">The GNU Project announced</a></li>\r\n<li>1985-03: The GNU Manifesto <a href=\"https://www.gnu.org/gnu/manifesto.en.html\">[1987, GNU]</a> <a href=\"https://archive.org/details/dr_dobbs_journal_vol_10/page/n197/mode/2up\">[Dr. Dobb\'s 1985, Internet Archive]</a></li>\r\n<li>1986-02: The <a href=\"https://www.gnu.org/philosophy/free-sw.en.html\">Free Software Definition</a> <a href=\"https://www.gnu.org/bulletins/bull1.txt\">[original bulletin]</a></li>\r\n<li>1997-05: <a href=\"https://www.catb.org/~esr/writings/cathedral-bazaar/\">The Cathedral and the Bazaar</a></li>\r\n<li>1997-07: The <a href=\"https://www.debian.org/social_contract#guidelines\">Debian Free Software Guidelines</a> <a href=\"https://lists.debian.org/debian-announce/1997/msg00017.html\">[original mail]</a></li>\r\n<li>1998-01: The Mozilla Project</li>\r\n<li>1998-02: The Open Source Initiative</li>\r\n<li>1998-02: The <a href=\"https://opensource.org/osd\">Open Source Definition</a></li>\r\n<li>2011-02: Simon Phipps\'s <a href=\"https://webmink.com/essays/open-by-rule/\">Open-By-Rule Benchmark</a></li>\r\n<li>2015-02: <a href=\"https://opensourcedesign.net/2015/02/01/opensourcedesign-fosdem\">FOSDEM 2015 Open Source Design track</a></li>\r\n<li>2017-07: <a href=\"https://ekprayogblog.wordpress.com/2017/07/13/open-design-manifesto/\">Open Design Manifesto (ekprayog)</a></li>\r\n<li>2018-08: DebConf 18: <em>That\'s a free software Issue!</em> by Sandler and de Blanc <a href=\"https://debconf18.debconf.org/talks/38-thats-a-free-software-issue/\">[debconf]</a> <a href=\"https://peertube.debian.social/videos/watch/1461a829-a7fe-421a-9f0e-ef9b5db96ea9\">[peertube]</a></li>\r\n<li>2019-09: <a href=\"https://stallman.org/archives/2019-jul-oct.html#16_September_2019_%28Resignation%29\">rms resigns from the FSF</a></li>\r\n<li>2020-04: <a href=\"https://github.com/opensourcedesign/opensourcedesign.github.io/blob/e5e2ece7f08d16bc634f5e065cd27251862f616d/manifesto.md\">Open Source Design Manifesto (opensourcedesign.net)</a></li>\r\n<li>2020-07: GUADEC 2020: Principles of Digital Autonomy <a href=\"https://invidious.namazso.eu/watch?v=60cwBKZFIf4\">[invidious]</a> <a href=\"https://www.youtube.com/watch?v=60cwBKZFIf4\">[youtube]</a></li>\r\n<li>2020-08: DebConf 2020: Principles of Digital Autonomy <a href=\"https://debconf20.debconf.org/talks/97-introducing-the-principles-of-digital-autonomy/\">[debconf]</a> <a href=\"https://peertube.debian.social/videos/watch/0ccc2893-06dd-4c36-81d1-838441666bec\">[peertube]</a></li>\r\n<li>2021-03: Simon Phipps\'s <a href=\"https://meshedinsights.com/2021/03/18/rights-ratchet-score-card/\">A Rights Ratchet Score Card</a></li>\r\n<li>2021-03: <a href=\"https://media.libreplanet.org/u/libreplanet/m/unjust-computing-clamps-down/\">LibrePlanet 2021: rms returns to FSF board</a></li>\r\n<li>2021-04: Cooperative Technology manifesto <a href=\"https://hackerpublicradio.org/eps.php?id=3317\">[hpr3317]</a> <a href=\"https://cooperativetechnology.codeberg.page/\">[official]</a></li>\r\n</ul>\r\n<p>Further sources for timeline:</p>\r\n<ul>\r\n<li><a href=\"https://en.wikipedia.org/wiki/History_of_netscape\">https://en.wikipedia.org/wiki/History_of_netscape</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/History_of_free_and_open-source_software\">https://en.wikipedia.org/wiki/History_of_free_and_open-source_software</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/The_Cathedral_and_the_Bazaar\">https://en.wikipedia.org/wiki/The_Cathedral_and_the_Bazaar</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Open_Source_Initiative\">https://en.wikipedia.org/wiki/Open_Source_Initiative</a></li>\r\n</ul>\r\n<h2 id=\"people\">People</h2>\r\n<h3 id=\"molly-deblanc\">Molly DeBlanc</h3>\r\n<p><a href=\"https://deblanc.net/blog/about/\">https://deblanc.net/blog/about/</a></p>\r\n<ul>\r\n<li>Former Campaigns Manager, FSF</li>\r\n<li>Former President of the Board, OSI</li>\r\n<li>Current Strategic Initiatives Manager, GNOME Foundation</li>\r\n<li>Current Debian Community Team</li>\r\n</ul>\r\n<h3 id=\"karen-sandler\">Karen Sandler</h3>\r\n<p><a href=\"https://en.wikipedia.org/wiki/Karen_Sandler\">https://en.wikipedia.org/wiki/Karen_Sandler</a></p>\r\n<ul>\r\n<li>Former General Counsel, SFLC</li>\r\n<li>Former Executive Director, GNOME Foundation</li>\r\n<li>Current Executive Director, SFC</li>\r\n</ul>\r\n<h2 id=\"manifesto\">Manifesto</h2>\r\n<p><a href=\"https://techautonomy.org/\">https://techautonomy.org/</a></p>\r\n<h3 id=\"declaration-of-digital-autonomy-draft-0-1-\">Declaration of Digital Autonomy (draft 0.1)</h3>\r\n<p>We demand a world in which technology is created to protect and empower the people who use it. Our technology must respect the rights and freedoms of those users. We need to take control for the purpose of collectively building a better world in which technology works in service to the good of human kind, protecting our rights and digital autonomy as individuals.</p>\r\n<p>We have become more reliant than ever on technology that we intertwine into every aspect of our lives. That technology is currently made not for us, those using it. Rather, it is for the companies who intend to monetize its use and whoever owns the associated copyrights and patents. Services are run via networked software  on computers we never directly interact with. Our devices are designed to only function while broadcasting our intimate information regardless of whether the transmission of that information is necessary functionality. We generate data that we do not have access to, that is bought, sold, and traded between corporations and governments. Technologies we\'re increasingly being forced to use reinforce and amplify social inequalities. As schools and jobs go online, high speed computing, centralized services and Internet become inescapably necessary. Technology is designed and implemented to oppress, often with sexist, classist, and racist implications. Rather than being served by these tools, we are instead in service to them. These gatekeepers of our technology are not individual people or public organizations who think about the wellbeing of others, but instead are corporations, governments and others with agendas that do not include our best interests. Our technology has become the basic infrastructure on which our society functions, and yet the individuals who use it have no say or control over its function.</p>\r\n<p>It\'s time to change  our digital destiny.</p>\r\n<p>We believe it is necessary for technology to provide opportunity for: informed consent of use; transparent development and operation; privacy and security from bad actors; interaction without fear of surveillance; technology to work primarily on the terms of the people using it; functionality inside and outside of connected networks; use with other services and other software, repair; and connection, and not alienation, from the technology itself and that which is created from it.</p>\r\n<p>We therefore call for the adoption of the following principles for ethical technology:</p>\r\n<ul>\r\n<li><h4 id=\"in-service-of-the-people-who-use-it\">In service of the people who use it</h4>\r\nFrom conception through to public availability, technology must be in the service of the people and communities who use it. This includes a freedom from surveillance, data gathering, data sales, and vendor and file format lock-in.  When it becomes apparent that the technology, as it is delivered, does not meet the needs of a given person, that person is able to change and repair their technology. Technology must have an option for use without an Internet connection.</li>\r\n<li><h4 id=\"informed-consent\">Informed consent</h4>\r\nPeople must have the ability to study and understand the technology in order to decide whether using it as is is the right choice for them. People must be able to determine, either directly or through third parties, how the technology is operating and what information it is collecting, storing and selling. Additionally, there should be no punitive responses for declining consent -- practical alternatives must be offered, whether those are changes to the underlying technology or compatible updates from the original provider or from third parties.</li>\r\n<li><h4 id=\"empowering-individual-and-collective-digital-action\">Empowering individual and collective digital action</h4>\r\n<p>When people discover that their technology is not functioning in their interest, or that the trade offs to use it have become too burdensome, they must have the ability to change what they are using, including the ability to replace the software on a device that they have purchased if it is not serving their interests and to use the technology while not being connected to a centralized network or choose a different network.</p>\r\n<p>Technology should not just be designed for the individuals using it, but also the communities of users. These communities can be those intentionally built around a piece of technology, geographic in nature, or united by another shared purpose. This includes having the ability and right to organize to repair the technology on and to migrate essential data to other solutions. Ownership of essential data must belong to the community relying on them.</p>\r\n</li>\r\n<li><h4 id=\"protect-people-s-privacy-and-other-rights-by-design\">Protect people\'s privacy and other rights by design</h4>\r\nBuilding technology must be done to respect  the rights of people, including those of privacy, open communication, and the safety to develop ideas without fear of monitoring, risk, or retribution. These cannot be tacked on as afterthoughts, but instead must be considered during the entire design and distribution process. Services should plan to store the minimum amount of data necessary to deliver the service in question, not collect data that may lay the groundwork for a profitable business model down the road. Regular deletion of inessential data should be planned from the outset. Devices need to have the ability to run and function while not transmitting data. All of these requirements are to better ensure privacy, as everytime a device wirelessly transmits or otherwise broadcasts data there is opportunity for interference or theft of that data.</li>\r\n</ul>\r\n<p>We, as individuals, collectives, cultures, and societies, are making this call in the rapidly changing face of technology and its deepening integration into our lives. Technology must support us as we forge our own digital destinies as our connectivity to digital networks and one another changes in ways we anticipate and in ways we have yet to imagine. Technology makers and those who use this technology can form the partnerships necessary to build the equitable, hopeful future we dream of.</p>\r\n<p><em>We\'d love to hear what you think! Let us know by emailing thoughts@ this domain.</em></p>\r\n<p><em>The Declaration of Digital Autonomy is (c) Molly de Blanc and Karen M. Sandler, 2020, licensed under Creative Commons Attribution-ShareAlike 4.0 International.</em></p>\r\n',311,0,1,'CC-BY-SA','manifesto, community, free software, open source, politics, philosophy, digital autonomy',0,0,1),
