(4405,'2025-06-20','What did I do at work today?',4170,'Lee does some coding and testing for a class library that accesses a database','\n<p>\nThis is about developing Visual Basic classes for a web application. The classes access an SQL Server database via Stored Procedures.</p>\n<p>\n<br>\n</p>\n<h2>\nTests.vb</h2>\n<pre class=\"ql-syntax\" spellcheck=\"false\">\nPrivate Sub ResourceTypeTests()\r\n    ResourceTypeAddTest()\r\n    ResourceTypeGetTest()\r\nEnd Sub\r\n\r\nPrivate Sub ResourceTypeAddTest()\r\n    Dim fake As New Fake\r\n\r\n    Console.WriteLine(\"Adding resource type\")\r\n    Console.WriteLine()\r\n\r\n    Dim objResourceType As New ResourceType With {\r\n        .ResourceTypeID = 0,\r\n        .ResourceTypeName = fake.Noun\r\n    }\r\n    OutputResourceType(objResourceType)\r\n    Dim ResourceTypeID As Integer = objResourceType.Add()\r\n    Console.WriteLine(\"Added Resource Type ID \" &amp; ResourceTypeID)\r\n    Console.WriteLine()\r\n\r\n    Console.WriteLine(\"Modifying resource type with ID \" &amp; ResourceTypeID)\r\n    Console.WriteLine()\r\n\r\n    fake = New Fake\r\n    With objResourceType\r\n        .ResourceTypeID = ResourceTypeID\r\n        .ResourceTypeName = fake.Noun\r\n    End With\r\n    Console.WriteLine(\"Modification\")\r\n    OutputResourceType(objResourceType)\r\n    Dim newResourceTypeID As Integer = objResourceType.Add()\r\n    Console.WriteLine(\"Modified ResourceTypeID \" &amp; newResourceTypeID)\r\n    Console.WriteLine()\r\nEnd Sub\r\n\r\nPrivate Sub ResourceTypeGetTest()\r\n    Console.WriteLine(\"Fetching resource types\")\r\n    Console.WriteLine()\r\n    Dim objResourceType As New ResourceType()\r\n    Dim ResourceTypeList As List(Of ResourceType) = objResourceType.GetResourceTypes()\r\n    For Each ResourceType As ResourceType In ResourceTypeList\r\n        OutputResourceType(ResourceType)\r\n    Next\r\nEnd Sub\r\n\r\nPrivate Sub OutputResourceType(ResourceType As ResourceType)\r\n    Console.WriteLine(\"Resource Type ID \" &amp; ResourceType.ResourceTypeID)\r\n    Console.WriteLine(\"Resource Type Name \" &amp; ResourceType.ResourceTypeName)\r\n    Console.WriteLine()\r\nEnd Sub\r\n</pre>\n<h2>\nResourceType.vb</h2>\n<pre class=\"ql-syntax\" spellcheck=\"false\">\nPublic Class ResourceType\r\n    Private m_ResourceTypeID As Integer\r\n    Private m_ResourceTypeName As String\r\n\r\n    Private ReadOnly dataFields As New List(Of String) From {\r\n        \"ResourceTypeID\", \"ResourceTypeName\"\r\n    }\r\n\r\n    Private ReadOnly objFields = dataFields\r\n\r\n    Dim objGlobals As New Globals\r\n    Dim _ConnectionString As String = objGlobals.getConnectionString()\r\n\r\n    Property ResourceTypeID As Integer\r\n        Get\r\n            ResourceTypeID = m_ResourceTypeID\r\n        End Get\r\n        Set(value As Int32)\r\n            m_ResourceTypeID = value\r\n        End Set\r\n    End Property\r\n\r\n    Property ResourceTypeName As String\r\n        Get\r\n            ResourceTypeName = m_ResourceTypeName\r\n        End Get\r\n        Set(value As String)\r\n            m_ResourceTypeName = value\r\n        End Set\r\n    End Property\r\n\r\n    Public Function Add() As Int32\r\n        Dim ReturnValue As Int32\r\n        Try\r\n            ReturnValue = StoredProcOutInt(\r\n                _ConnectionString, \"dbo.ResourceType_Add\", Me,\r\n                dataFields, objFields, \"NewResourceTypeID\"\r\n            )\r\n        Catch ex As Exception\r\n            ErrorRecorder(\"Resource.Add\", ex.Message, ex.Data.ToString)\r\n            ReturnValue = 0\r\n        End Try\r\n        Return ReturnValue\r\n    End Function\r\n\r\n    Public Function GetResourceTypes() As List(Of ResourceType)\r\n        Dim ObjResourceTypes As New List(Of ResourceType)\r\n        Try\r\n            StoredProc(Of ResourceType)(\r\n            _ConnectionString, \"dbo.ResourceType_Get\",\r\n            dataFields, objFields, ObjResourceTypes\r\n        )\r\n        Catch ex As Exception\r\n            ErrorRecorder(\"ResourceType.GetResourceTypes\", ex.Message, ex.Data.ToString)\r\n        End Try\r\n        Return ObjResourceTypes\r\n    End Function\r\nEnd Class\r\n</pre>\n<h2>\nResourceType_Add.sql</h2>\n<pre class=\"ql-syntax\" spellcheck=\"false\">\nSET QUOTED_IDENTIFIER ON\r\nGO\r\nSET ANSI_NULLS ON\r\nGO\r\n\r\nCREATE PROCEDURE [dbo].[ResourceType_Add]\r\n    @ResourceTypeID INT,\r\n    @ResourceTypeName NVARCHAR(100),    \r\n    @NewResourceTypeID INT OUTPUT\r\nAS\r\nBEGIN\r\n    SET NOCOUNT ON;\r\n\r\n    IF @ResourceTypeID = 0\r\n        BEGIN\r\n            INSERT INTO dbo.ResourceType\r\n                    ( ResourceType_Name                    \r\n                    )\r\n            VALUES  ( @ResourceTypeName\r\n                    )\r\n            SET @NewResourceTypeID = SCOPE_IDENTITY()\r\n        END\r\n    ELSE\r\n        BEGIN\r\n            UPDATE dbo.ResourceType\r\n            SET ResourceType_Name = @ResourceTypeName                \r\n            WHERE ResourceTypeID = @ResourceTypeID\r\n            SET @NewResourceTypeID = @ResourceTypeID\r\n        END    \r\nEND\r\nGO\r\n</pre>\n<h2>\nResourceType_Get.sql</h2>\n<pre class=\"ql-syntax\" spellcheck=\"false\">\nSET QUOTED_IDENTIFIER ON\r\nGO\r\nSET ANSI_NULLS ON\r\nGO\r\n\r\n\r\nCREATE PROCEDURE [dbo].[ResourceType_Get]\r\nAS\r\nBEGIN\r\n    SET NOCOUNT ON;\r\n\r\n    SELECT ResourceTypeID AS ResourceTypeID,\r\n        ResourceType_Name AS ResourceTypeName\r\n    FROM dbo.ResourceType\r\nEND\r\nGO\r\n</pre>\n<p>\n<br>\n</p>\n\n\n',403,0,1,'CC-BY-SA','visual basic, testing, sql server',0,0,1),
(4407,'2025-06-24','A \'re-response\' Bash script',754,'My take on Ken\'s response to Kevie\'s show 4398','\n<article>\n\r\n<h2 id=\"introduction\">\nIntroduction</h2>\n\r\n<p>\nOn 2025-06-19 Ken Fallon did a show, number <a\r\nhref=\"https://hackerpublicradio.org/eps/hpr4404/index.html\">\n4404</a>\n,\r\nresponding to Kevie\'s show <a\r\nhref=\"https://hackerpublicradio.org/eps/hpr4398/index.html\">\n4398</a>\n,\r\nwhich came out on 2025-06-11.</p>\n\r\n<p>\nKevie was using a Bash pipeline to find the latest episode in an RSS\r\nfeed, and download it. He used <code>\ngrep</code>\n to parse the XML of the\r\nfeed.</p>\n\r\n<p>\nKen\'s response was to suggest the use of <code>\nxmlstarlet</code>\n to\r\nparse the XML because such a complex structured format as XML cannot\r\nreliably be parsed without a program that \"understands\" the intricacies\r\nof the format\'s structure. The same applies to other complex formats\r\nsuch as HTML, YAML and JSON.</p>\n\r\n<p>\nIn his show Ken presented a Bash script which dealt with this problem\r\nand that of the ordering of episodes in the feed. He asked how others\r\nwould write such a script, and thus I was motivated to produce this\r\nresponse to his response!</p>\n\r\n<h2 id=\"alternative-script\">\nAlternative script</h2>\n\r\n<p>\nMy script is a remodelling of Ken\'s, not a completely different\r\nsolution. It contains a few alternative ways of doing what Ken did, and\r\na reordering of the parts of his original. We will examine the changes\r\nin this episode.</p>\n\r\n<h3 id=\"script\">\nScript</h3>\n\r\n<pre>\n<code>\n#!/bin/bash\r\n# Original (c) CC-0 Ken Fallon 2025\r\n# Modified by Dave Morriss, 2025-06-14 (c) CC-0\r\n\r\npodcast=&quot;https://tuxjam.otherside.network/feed/podcast/&quot;\r\n\r\n# [1]\r\nwhile read -r item\r\ndo\r\n    # [2]\r\n    pubDate=&quot;${item%;*}&quot;\r\n    # [3]\r\n    pubDate=&quot;$( &bsol;date --date=&quot;${pubDate}&quot; --universal +%FT%T )&quot;\r\n    # [4]\r\n    url=&quot;${item#*;}&quot;\r\n    # [5]\r\n    echo &quot;${pubDate};${url}&quot;\r\ndone &lt; &lt;(curl --silent &quot;${podcast}&quot; | &bsol;\r\n    xmlstarlet sel --text --template --match &#39;rss/channel/item&#39; &bsol;\r\n    --value-of &#39;concat(pubDate, &quot;;&quot;, enclosure/@url)&#39; --nl - ) | &bsol;\r\nsort --numeric-sort --reverse | &bsol;\r\nhead -1 | &bsol;\r\ncut -f2 -d&#39;;&#39; | wget --quiet --input-file=- # [6]</code>\n</pre>\n\r\n<p>\nI have placed some comments in the script in the form of\r\n<code>\n\'# [1]\'</code>\n and I\'ll refer to these as I describe the changes\r\nin the following numbered list.</p>\n\r\n<p>\n<small>\n<em>\nNote:</em>\n I checked, and the script will run with the\r\ncomments, though they are only there to make it easier to refer to\r\nthings.</small>\n</p>\n\r\n<ol type=\"1\">\n\r\n<li>\n<p>\nThe format of the pipeline is different. It starts by defining a\r\n<code>\nwhile</code>\n loop, but the data which the <code>\nread</code>\n\r\ncommand receives comes from a <em>\nprocess substitution</em>\n of the form\r\n<code>\n\'&lt;(statements)\'</code>\n (see the <a\r\nhref=\"https://hackerpublicradio.org/eps/hpr2045/hpr2045_full_shownotes.html#process-substitution\">\n<em>\nprocess\r\nsubstitution section</em>\n of \"hpr2045 :: Some other Bash tips\"</a>\n). I\r\nhave arranged the pipeline in this way because it\'s bad practice to\r\nplace a <code>\nwhile</code>\n in a pipeline, as discussed in the show: <a\r\nhref=\"\">\nhpr3985 :: Bash snippet - be careful when feeding data to\r\nloops</a>\n.<br />\n\r\n<small>\n(I added <code>\n-r</code>\n to the <code>\nread</code>\n because\r\n<code>\nshellcheck</code>\n, which I run in the <code>\nvim</code>\n editor,\r\nnagged me!)</small>\n</p>\n</li>\n\r\n<li>\n<p>\nThe lines coming from the <em>\nprocess substitution</em>\n are from\r\nrunning <code>\ncurl</code>\n to collect the feed, then using\r\n<code>\nxmlstarlet</code>\n to pick out the <code>\npubDate</code>\n field of\r\nthe item, and the <code>\nurl</code>\n attribute of the\r\n<code>\nenclosure</code>\n field returning them as two strings separated by\r\na semicolon (<code>\n\';\'</code>\n). This is from Ken\'s original code. Each\r\nline is read into the variable <code>\nitem</code>\n, and the first element\r\n(before the semicolon) is extracted with the Bash expression\r\n<code>\n\"${item%;*}\"</code>\n. Parameter manipulation expressions were\r\nintroduced in <a\r\nhref=\"https://hackerpublicradio.org/eps/hpr1648/index.html\">\nHPR show\r\n1648</a>\n. See the full notes section <a\r\nhref=\"https://hackerpublicradio.org/eps/hpr1648/hpr1648_full_shownotes.html#remove-matching-suffix-pattern\">\nRemove\r\nmatching suffix pattern</a>\n for this one.</p>\n</li>\n\r\n<li>\n<p>\nI modified Ken\'s <code>\ndate</code>\n command to simplify the\r\ngeneration of the ISO8601 date and time by using the pattern\r\n<code>\n+%FT%T</code>\n. This just saves typing!</p>\n</li>\n\r\n<li>\n<p>\nThe <code>\nurl</code>\n value is extracted from the contents of\r\n<code>\nitem</code>\n with the expression <code>\n\"${item#*;}</code>\n. See the\r\nsection of show 1648 entitled <a\r\nhref=\"https://hackerpublicradio.org/eps/hpr1648/hpr1648_full_shownotes.html#remove-matching-prefix-pattern\">\nRemove\r\nmatching prefix pattern</a>\n for details.</p>\n</li>\n\r\n<li>\n<p>\nThe <code>\necho</code>\n which generates the list of podcast URLs\r\nprefixed with an ISO time stamp uses <code>\n\';\'</code>\n as the delimiter\r\nwhere Ken used a <code>\ntab</code>\n character. I assume this was done for\r\nthe benefit of either the following <code>\nsort</code>\n or the\r\n<code>\nawk</code>\n script. It\'s not needed for <code>\nsort</code>\n since it\r\nsorts the line as-is and doesn\'t use fields. My version doesn\'t use\r\n<code>\nawk</code>\n.</p>\n</li>\n\r\n<li>\n<p>\nRather than using <code>\nawk</code>\n I use <code>\ncut</code>\n to\r\nremove the time stamp from the front of each line, returning the second\r\nfield delimited by the semicolon. The result of this will be the URL for\r\n<code>\nwget</code>\n to download. In this case <code>\nwget</code>\n receives\r\nthe URL on standard input (<em>\nSTDIN</em>\n), and the\r\n<code>\n--input-file=-</code>\n option tells it to use that information for\r\nthe download.</p>\n</li>\n\r\n</ol>\n\r\n<h2 id=\"conclusion\">\nConclusion</h2>\n\r\n<p>\nI\'m not sure my solution is <em>\nbetter</em>\n in any significant way. I\r\nprefer to use Bash functionality to do things where calling\r\n<code>\nawk</code>\n or <code>\nsed</code>\n could be overkill, but that\'s just\r\na personal preference.</p>\n\r\n<p>\nI might have replaced the <code>\nhead</code>\n and <code>\ncut</code>\n with\r\na <code>\nsed</code>\n expression, such as the following as the last\r\nline:</p>\n\r\n<pre>\n<code>\nsed -e &#39;1{s/^.&bsol;+;//;q}&#39; | wget --quiet --input-file=-</code>\n</pre>\n\r\n<p>\nHere, the <code>\nsed</code>\n expression operates on the first line from\r\nthe <code>\nsort</code>\n, where it removes everything from the start of the\r\nline to the semicolon. The expression then causes <code>\nsed</code>\n to\r\nquit, so that only the edited first line is passed to\r\n<code>\nwget</code>\n.</p>\n\r\n<h2 id=\"links\">\nLinks</h2>\n\r\n<ul>\n\r\n<li>\n<a\r\nhref=\"https://hackerpublicradio.org/eps/hpr1648/index.html\">\nhpr1648 ::\r\nBash parameter manipulation</a>\n\r\n<ul>\n\r\n<li>\n<a\r\nhref=\"https://hackerpublicradio.org/eps/hpr1648/hpr1648_full_shownotes.html#remove-matching-suffix-pattern\">\nSection\r\nentitled <em>\nRemove matching suffix pattern</em>\n</a>\n</li>\n\r\n<li>\n<a\r\nhref=\"https://hackerpublicradio.org/eps/hpr1648/hpr1648_full_shownotes.html#remove-matching-prefix-pattern\">\nSection\r\nentitled <em>\nRemove matching prefix pattern</em>\n</a>\n</li>\n\r\n<li>\n<a\r\nhref=\"https://hackerpublicradio.org/eps/hpr1648/hpr1648_diagram.pdf\">\nDiagram\r\nshowing the Bash parameter manipulation methods</a>\n</li>\n\r\n</ul>\n</li>\n\r\n<li>\n<a\r\nhref=\"https://hackerpublicradio.org/eps/hpr2045/index.html\">\nhpr2045 ::\r\nSome other Bash tips</a>\n\r\n<ul>\n\r\n<li>\n<a\r\nhref=\"https://hackerpublicradio.org/eps/hpr2045/hpr2045_full_shownotes.html#process-substitution\">\nSection\r\non <em>\nprocess substitution</em>\n</a>\n</li>\n\r\n</ul>\n</li>\n\r\n<li>\n<a href=\"\">\nhpr3985 :: Bash snippet - be careful when feeding data to\r\nloops</a>\n</li>\n\r\n<li>\n<a\r\nhref=\"https://hackerpublicradio.org/eps/hpr4398/index.html\">\nhpr4398 ::\r\nCommand line fun: downloading a podcast <em>\nby Kevie</em>\n</a>\n</li>\n\r\n<li>\n<a\r\nhref=\"https://hackerpublicradio.org/eps/hpr4404/index.html\">\nhpr4404 ::\r\nKevie nerd snipes Ken by grepping xml <em>\nby Ken Fallon</em>\n</a>\n</li>\n\r\n</ul>\n\r\n</article>\n\n\n',225,0,1,'CC-BY-SA','Bash,scripting',0,0,1),
(4411,'2025-06-30','The Pachli project',4325,'Dave and Kevie interview Nik from the Pachli project','\n    <p>\n      In this episode <a href=\"https://mastodon.me.uk/@thelovebug\"\n        rel=\"noopener noreferrer\" target=\"_blank\">\n        Dave</a> and <a href=\"https://mastodon.me.uk/@kevie\"\n        rel=\"noopener noreferrer\" target=\"_blank\">\n        Kevie</a> chat with Nik from the <a href=\"https://pachli.app\"\n        rel=\"noopener noreferrer\" target=\"_blank\">\n        Pachli</a> project.&nbsp;&nbsp;</p>\n    <p>\n      Pachli is a free/open-source Mastodon/Fediverse client for\n      Android.</p>\n    <p>\n      We talk in depth about Nik\'s background, Pachli\'s name and origin,\n      and the motivation for creating another client for the\n      Fediverse.&nbsp;Also discussed is Pachli\'s association with the <a\n        href=\"https://nivenly.org/\" rel=\"noopener noreferrer\"\n        target=\"_blank\">\n        Nivenly Foundation</a>\n      , and how users and developers can contribute to the project as a\n      whole.</p>\n    <p>\n      With thanks to Nik for his time and candor.</p>\n    <ul>\n      <li>\n        Fediverse: <a href=\"https://mastodon.social/@nikclayton\"\n          rel=\"noopener noreferrer\" target=\"_blank\">\n          @nikclayton@mastodon.social</a>\n      </li>\n      <li>\n        Fediverse: <a href=\"https://mastodon.social/@pachli\"\n          rel=\"noopener noreferrer\" target=\"_blank\">\n          @pachli@mastodon.social</a>\n      </li>\n      <li>\n        Email: <a href=\"mailto:team@pachli.app\" rel=\"noopener\n          noreferrer\" target=\"_blank\">\n          team@pachli.app</a>\n      </li>\n      <li>\n        Website: <a href=\"https://pachli.app\" rel=\"noopener noreferrer\"\n          target=\"_blank\">\n          pachli.app</a>\n      </li>\n      <li>\n        GitHub: <a href=\"https://github.com/pachli/pachli-android\"\n          rel=\"noopener noreferrer\" target=\"_blank\">\n          pachli-android</a>\n      </li>\n    </ul>\n    <p>\n      <br>\n    </p>',314,78,0,'CC-BY-SA','pachli, interview, fediverse, development, developer',0,0,1),
(4417,'2025-07-08','Newest matching file',1322,'Writing a function or script to find a given file','\n<article>\n\r\n<h1 id=\"overview\">\nOverview</h1>\n\r\n<p>\nSeveral years ago I wrote a Bash script to perform a task I need to\r\nperform almost every day - find the newest file in a series of\r\nfiles.</p>\n\r\n<p>\nAt this point I was running a camera on a Raspberry Pi which was\r\nattached to a window and viewed my back garden. I was taking a picture\r\nevery 15 minutes, giving them names containing the date and time, and\r\nstoring them in a directory. It was useful to be able to display the\r\nlatest picture.</p>\n\r\n<p>\nSince then, I have found that searching for newest files useful in\r\nmany contexts:</p>\n\r\n<ul>\n\r\n<li>\n<p>\nFind the image generated by my random recipe chooser, put in the\r\nclipboard and send it to the Telegram channel for my family.</p>\n</li>\n\r\n<li>\n<p>\nGenerate a weather report from <code>\nwttr.in</code>\n and send it\r\nto Matrix.</p>\n</li>\n\r\n<li>\n<p>\nFind the screenshot I just made and put it in the\r\nclipboard.</p>\n</li>\n\r\n</ul>\n\r\n<p>\nOf course, I could just use the same name when writing these various\r\nfiles, rather than accumulating several, but I often want to look back\r\nthrough such collections. If I am concerned about such files\r\naccumulating in an unwanted way I write <code>\ncron</code>\n scripts which\r\nrun every day and delete the oldest ones.</p>\n\r\n<h2 id=\"original-script\">\nOriginal script</h2>\n\r\n<p>\nThe first iteration of the script was actually written as a Bash\r\nfunction which was loaded at login time. The function is called\r\n<code>\nnewest_matching_file</code>\n and it takes two arguments:</p>\n\r\n<ul>\n\r\n<li>\n<p>\nA file glob expression to match the file I am looking\r\nfor.</p>\n</li>\n\r\n<li>\n<p>\nAn optional directory to look for the file. If this is omitted,\r\nthen the current directory will be used.</p>\n</li>\n\r\n</ul>\n\r\n<p>\nThe first version of this function was a bit awkward since it used a\r\n<code>\nfor</code>\n loop to scan the directory, using the glob pattern to\r\nfind the file. Since Bash glob pattern searches will return the search\r\npattern when they fail, it was necessary to use the\r\n<code>\nnullglob</code>\n (see references) option to prevent this, turning\r\nit on before the search and off afterwards.</p>\n\r\n<p>\nThis technique was replaced later with a pipeline using the\r\n<code>\nfind</code>\n command.</p>\n\r\n<h2 id=\"improved-bash-script\">\nImproved Bash script</h2>\n\r\n<p>\nThe version using <code>\nfind</code>\n is what I will explain here.</p>\n\r\n<pre>\n<code>\nfunction newest_matching_file {\r\n    local glob_pattern=${1-}\r\n    local dir=${2:-$PWD}\r\n\r\n    # Argument number check\r\n    if [[ $# -eq 0 || $# -gt 2 ]]; then\r\n        echo &#39;Usage: newest_matching_file GLOB_PATTERN [DIR]&#39; &gt;&amp;2\r\n        return 1\r\n    fi\r\n\r\n    # Check the target directory\r\n    if [[ ! -d $dir ]]; then\r\n        echo &quot;Unable to find directory $dir&quot; &gt;&amp;2\r\n        return 1\r\n    fi\r\n\r\n    local newest_file\r\n\r\n    # shellcheck disable=SC2016\r\n    newest_file=$(find &quot;$dir&quot; -maxdepth 1 -name &quot;$glob_pattern&quot; &bsol;\r\n        -type f -printf &quot;%T@ %p&bsol;n&quot; | sort | sed -ne &#39;${s/.&bsol;+ //;p}&#39;)\r\n\r\n    # Use printf instead of echo in case the file name begins with &#39;-&#39;\r\n    [[ -n $newest_file ]] &amp;&amp; printf &#39;%s&bsol;n&#39; &quot;$newest_file&quot;\r\n\r\n    return 0\r\n}</code>\n</pre>\n\r\n<p>\nThe function is in the file <code>\nnewest_matching_file_1.sh</code>\n,\r\nand it\'s loaded (\"sourced\", or declared) like this:</p>\n\r\n<pre>\n<code>\n. newest_matching_file_1.sh</code>\n</pre>\n\r\n<p>\nThe <code>\n\'.\'</code>\n is a short-hand version of the command\r\n<code>\nsource</code>\n.</p>\n\r\n<p>\nI actually have two versions of this function, with the second one\r\nusing a regular expression, which the <code>\nfind</code>\n command is able\r\nto search with, but I prefer this one.</p>\n\r\n<h3 id=\"explanation\">\nExplanation</h3>\n\r\n<ul>\n\r\n<li>\n<p>\nThe first two lines beginning with <code>\nlocal</code>\n define\r\nvariables local to the function holding the arguments. The first,\r\n<code>\nglob_pattern</code>\n is expected to contain something like\r\n<code>\nscreenshot_2025-04-*.png</code>\n. The second will hold the\r\ndirectory to be scanned, or if omitted, will be set to the current\r\ndirectory.</p>\n</li>\n\r\n<li>\n<p>\nNext, an <code>\nif</code>\n statement checks that there are the\r\nright number of arguments, aborting if not. Note that the\r\n<code>\necho</code>\n command writes to STDERR (using\r\n<code>\n\'&gt;&amp;2\'</code>\n), the error channel.</p>\n</li>\n\r\n<li>\n<p>\nAnother <code>\nif</code>\n statement checks that the target\r\ndirectory actually exists, and aborts if not.</p>\n</li>\n\r\n<li>\n<p>\nAnother local variable <code>\nnewest_file</code>\n is defined. It\'s\r\ngood practice not to create global variables in functions since they\r\nwill \"leak\" into the calling environment.</p>\n</li>\n\r\n<li>\n<p>\nThe variable <code>\nnewest_file</code>\n is set to the result of a\r\ncommand substitution containing a pipeline:</p>\n\r\n<ul>\n\r\n<li>\nThe <code>\nfind</code>\n command searches the target directory.\r\n<ul>\n\r\n<li>\nUsing <code>\n-maxdepth 1</code>\n limits the search to the chosen\r\ndirectory and does not descend into sub-directories.</li>\n\r\n<li>\nThe search pattern is defined by\r\n<code>\n-name \"$glob_pattern\"</code>\n</li>\n\r\n<li>\nUsing <code>\n-type f</code>\n limits the search to files</li>\n\r\n<li>\nThe <code>\n-printf \"%T@ %p&bsol;n\"</code>\n argument returns the file\'s last\r\nmodification time as the number of seconds since the Unix epoch\r\n<code>\n\'%T@\'</code>\n. This is a number which is larger if the file is\r\nolder. This is followed, after a space, by the full path to the file\r\n(<code>\n\'%p\'</code>\n), and a newline.</li>\n\r\n</ul>\n</li>\n\r\n<li>\nThe matching file names are sorted. Because each is preceded by a\r\nnumeric time value, they will be sorted in ascending order of age.</li>\n\r\n<li>\nFinally <code>\nsed</code>\n is used to return the last file in the\r\nsorted list with the program <code>\n\'${s/.&bsol;+ //;p}\'</code>\n:\r\n<ul>\n\r\n<li>\nThe use of the <code>\n-n</code>\n option ensures that only lines which\r\nare explicitly printed will be shown.</li>\n\r\n<li>\nThe <code>\nsed</code>\n program looks for the last line (using\r\n<code>\n\'$\'</code>\n). When found the leading numeric time is removed with\r\n\'<code>\ns/.&bsol;+ //\'</code>\n and the result is printed (with\r\n<code>\n\'p\'</code>\n).</li>\n\r\n</ul>\n</li>\n\r\n<li>\nThe end result will either be the path to the newest file or nothing\r\n(because there was no match).</li>\n\r\n</ul>\n</li>\n\r\n<li>\n<p>\nThe expression <code>\n\'[[ -n $newest_file ]]\'</code>\n will be true\r\nif <code>\n$newest_file</code>\n variable is not empty, and if that is the\r\ncase, the contents of the variable will be printed on STDOUT, otherwise\r\nnothing will be printed.</p>\n</li>\n\r\n<li>\n<p>\nNote that the script returns 1 (false) if there is a failure, and\r\n0 (true) if all is well. A null return is regarded as success.</p>\n</li>\n\r\n</ul>\n\r\n<h4 id=\"script-update\">\nScript update</h4>\n\r\n<p>\nWhile editing the audio for this show I realised that there is a flaw\r\nin the Bash function <code>\nnewest_matching_file</code>\n. This is in the\r\n<code>\nsed</code>\n script used to process the output from\r\n<code>\nfind</code>\n.</p>\n\r\n<p>\nThe <code>\nsed</code>\n commands used in the script delete all\r\ncharacters up to a space, assuming that this is the only space in the\r\nlast line. However, if the file name itself contains spaces, this will\r\nnot work because regular expressions in <code>\nsed</code>\n are\r\n<em>\ngreedy</em>\n. What is deleted in this case is everything up to and\r\nincluding the <em>\nlast</em>\n space.</p>\n\r\n<p>\nI created a directory called <code>\ntests</code>\n and added the\r\nfollowing files:</p>\n\r\n<pre>\n<code>\n&#39;File 1 with spaces.txt&#39;\r\n&#39;File 2 with spaces.txt&#39;\r\n&#39;File 3 with spaces.txt&#39;</code>\n</pre>\n\r\n<p>\nI then ran the <code>\nfind</code>\n command as follows:</p>\n\r\n<pre>\n<code>\n$ find tests -maxdepth 1 -name &#39;File*&#39; -type f -printf &quot;%T@ %p&bsol;n&quot; | sort | sed -ne &#39;${s/.&bsol;+ //;p}&#39;\r\nspaces.txt</code>\n</pre>\n\r\n<p>\nI adjusted the <code>\nsed</code>\n call to\r\n<code>\nsed -ne \'${s/[^ ]&bsol;+ //;p}\'</code>\n. This uses the regular\r\nexpression:</p>\n\r\n<pre>\n<code>\ns/[^ ]&bsol;+ //</code>\n</pre>\n\r\n<p>\nThis now specifies that what it to be removed is every\r\n<em>\nnon-space</em>\n up to and including the first space. The result\r\nis:</p>\n\r\n<pre>\n<code>\n$ find tests -maxdepth 1 -name &#39;File*&#39; -type f -printf &quot;%T@ %p&bsol;n&quot; | sort | sed -ne &#39;${s/[^ ]&bsol;+ //;p}&#39;\r\ntests/File 3 with spaces.txt</code>\n</pre>\n\r\n<p>\nThis change has been propagated to the copy on\r\n<code>\nGitLab</code>\n.</p>\n\r\n<h3 id=\"usage\">\nUsage</h3>\n\r\n<p>\nThis function is designed to be used in commands or other\r\nscripts.</p>\n\r\n<p>\nFor example, I have an alias defined as follows:</p>\n\r\n<pre>\n<code>\nalias copy_screenshot=&quot;xclip -selection clipboard -t image/png -i &bsol;$(newest_matching_file &#39;Screenshot_*.png&#39; ~/Pictures/Screenshots/)&quot;</code>\n</pre>\n\r\n<p>\nThis uses <code>\nxclip</code>\n to load the latest screenshot into the\r\nclipboard, so I can paste it into a social media client for example.</p>\n\r\n<h2 id=\"perl-alternative\">\nPerl alternative</h2>\n\r\n<p>\nDuring the history of this family of scripts I wrote a Perl version.\r\nThis was originally because the Bash function gave problems when run\r\nunder the Bourne shell, and I was using <code>\npdmenu</code>\n a lot which\r\ninternally runs scripts under that shell.</p>\n\r\n<pre>\n<code>\n#!/usr/bin/env perl\r\n\r\nuse v5.40;\r\n\r\nuse open &#39;:std&#39;, &#39;:encoding(UTF-8)&#39;;    # Make all IO UTF-8\r\n\r\nuse Cwd;\r\nuse File::Find::Rule;\r\n\r\n#\r\n# Script name\r\n#\r\n( my $PROG = $0 ) =~ s|.*/||mx;\r\n\r\n#\r\n# Use a regular expression rather than a glob pattern\r\n#\r\nmy $regex = shift;\r\n\r\n#\r\n# Get the directory to search, defaulting to the current one\r\n#\r\nmy $dir = shift // getcwd();\r\n\r\n#\r\n# Have to have the regular expression\r\n#\r\ndie &quot;Usage: $PROG regex [DIR]&bsol;n&quot; unless $regex;\r\n\r\n#\r\n# Collect all the files in the target directory without recursing. Include the\r\n# path and let the caller remove it if they want.\r\n#\r\nmy @files =  File::Find::Rule-&gt;file()\r\n    -&gt;name(qr/$regex/)\r\n    -&gt;maxdepth(1)\r\n    -&gt;in($dir);\r\n\r\ndie &quot;Unsuccessful search&bsol;n&quot; unless @files;\r\n\r\n#\r\n# Sort the files by ascending modification time, youngest first\r\n#\r\n@files = sort {-M($a) &lt;=&gt; -M($b)} @files;\r\n\r\n#\r\n# Report the one which sorted first\r\n#\r\nsay $files[0];\r\n\r\nexit;</code>\n</pre>\n\r\n<h3 id=\"explanation-1\">\nExplanation</h3>\n\r\n<ul>\n\r\n<li>\n<p>\nThis is fairly straightforward Perl script, run out of an\r\nexecutable file with a <em>\nshebang</em>\n line at the start indicating\r\nwhat is to be used to run it - <code>\nperl</code>\n.</p>\n</li>\n\r\n<li>\n<p>\nThe preamble defines the Perl version to use, and indicates that\r\n<code>\nUTF-8</code>\n (character sets like Unicode) will be acceptable for\r\nreading and writing.</p>\n</li>\n\r\n<li>\n<p>\nTwo modules are required:</p>\n\r\n<ul>\n\r\n<li>\n<code>\nCwd</code>\n: provides functions for determining the pathname of\r\nthe current working directory.</li>\n\r\n<li>\n<code>\nFile::Find::Rule</code>\n: provides tools for searching the file\r\nsystem (similar to the <code>\nfind</code>\n command, but with more\r\nfeatures).</li>\n\r\n</ul>\n</li>\n\r\n<li>\n<p>\nNext the variable <code>\n$PROG</code>\n is set to the name under\r\nwhich the script has been invoked. This is useful when giving a brief\r\nsummary of usage.</p>\n</li>\n\r\n<li>\n<p>\nThe first argument is then collected (with <code>\nshift</code>\n)\r\nand placed into the variable <code>\n$regex</code>\n.</p>\n</li>\n\r\n<li>\n<p>\nThe second argument is optional, but if omitted, is set to the\r\ncurrent working directory. We see the use of <code>\nshift</code>\n again,\r\nbut if this returns nothing (is undefined), the <code>\n\'//\'</code>\n\r\noperator invokes the <code>\ngetcwd()</code>\n function to get the current\r\nworking directory.</p>\n</li>\n\r\n<li>\n<p>\nIf the <code>\n$regex</code>\n variable is not defined, then\r\n<code>\ndie</code>\n is called to terminate the script with an error\r\nmessage.</p>\n</li>\n\r\n<li>\n<p>\nThe search itself is invoked using <code>\nFile::Find::Rule</code>\n\r\nand the results are added to the array <code>\n@files</code>\n. The\r\nmulti-line call shows several methods being called in a \"chain\" to\r\ndefine the rules and invoke the search:</p>\n\r\n<ul>\n\r\n<li>\n<code>\nfile()</code>\n: sets up a file search</li>\n\r\n<li>\n<code>\nname(qr/$regex/)</code>\n: a rule which applies a regular\r\nexpression match to each file name, rejecting any that do not match</li>\n\r\n<li>\n<code>\nmaxdepth(1)</code>\n: a rule which prevents the search from\r\ndescending below the top level into sub-directories</li>\n\r\n<li>\n<code>\nin($dir)</code>\n: defines the directory to search (and also\r\nbegins the search)</li>\n\r\n</ul>\n</li>\n\r\n<li>\n<p>\nIf the search returns no files (the array is empty), the script\r\nends with an error message.</p>\n</li>\n\r\n<li>\n<p>\nOtherwise the <code>\n@files</code>\n array is sorted. This is done\r\nby comparing modification times of the files, with the array being\r\nreordered such that the \"youngest\" (newest) file is sorted first. The\r\n<code>\n&lt;=&gt;</code>\n operator checks if the value of the left operand\r\nis greater than the value of the right operand, and if yes then the\r\ncondition becomes true. This operator is most useful in the Perl\r\n<code>\nsort</code>\n function.</p>\n</li>\n\r\n<li>\n<p>\nFinally, the newest file is reported.</p>\n</li>\n\r\n</ul>\n\r\n<h3 id=\"usage-1\">\nUsage</h3>\n\r\n<p>\nThis script can be used in almost the same way as the Bash variant.\r\nThe difference is that the pattern used to match files is a Perl regular\r\nexpression. I keep this script in my <code>\n~/bin</code>\n directory, so it\r\ncan be invoked just by typing its name. I also maintain a symlink called\r\n<code>\nnmf</code>\n to save typing!</p>\n\r\n<p>\nThe above example, using the Perl version, would be:</p>\n\r\n<pre>\n<code>\nalias copy_screenshot=&quot;xclip -selection clipboard -t image/png -i &bsol;$(nmf &#39;Screenshot_.*&bsol;.png&#39; ~/Pictures/Screenshots/)&quot;</code>\n</pre>\n\r\n<p>\nIn regular expressions <code>\n\'.*\'</code>\n means \"any character zero or\r\nmore times\". The <code>\n\'.\'</code>\n in <code>\n\'.png\'</code>\n is escaped\r\nbecause we need an actual dot character.</p>\n\r\n<h2 id=\"conclusion\">\nConclusion</h2>\n\r\n<p>\nThe approach in both cases is fairly simple. Files matching a pattern\r\nare accumulated, in the Bash case including the modification time. The\r\nfiles are sorted by modification time and the one with the lowest time\r\nis the answer. The Bash version has to remove the modification time\r\nbefore printing.</p>\n\r\n<p>\nThis algorithm could be written in many ways. I will probably try\r\nrewriting it in other languages in the future, to see which one I think\r\nis best.</p>\n\r\n<h1 id=\"references\">\nReferences</h1>\n\r\n<ul>\n\r\n<li>\nGlob expansion:\r\n<ul>\n\r\n<li>\n<a\r\nhref=\"https://en.wikipedia.org/wiki/Glob_%28programming%29\">\nWikipedia\r\narticle on glob patterns</a>\n</li>\n\r\n</ul>\n</li>\n\r\n</ul>\n\r\n<ul>\n\r\n<li>\nHPR shows covering <code>\nglob</code>\n expansion:\r\n<ul>\n\r\n<li>\n<a\r\nhref=\"https://hackerpublicradio.org/eps/hpr2278/index.html\">\nFinishing\r\noff the subject of expansion in Bash (part 1)</a>\n</li>\n\r\n<li>\n<a\r\nhref=\"https://hackerpublicradio.org/eps/hpr2293/index.html\">\nFinishing\r\noff the subject of expansion in Bash (part 2)</a>\n</li>\n\r\n</ul>\n</li>\n\r\n</ul>\n\r\n<ul>\n\r\n<li>\nGitLab repository holding these files:\r\n<ul>\n\r\n<li>\n<a href=\"https://gitlab.com/oss_tools/hprmisc\">\n<em>\nhprmisc</em>\n -\r\nMiscellaneous scripts, notes, etc pertaining to HPR episodes which I\r\nhave contributed</a>\n</li>\n\r\n</ul>\n</li>\n\r\n</ul>\n\r\n</article>\n\n\n',225,0,1,'CC-BY-SA','Bash,function,Perl,find',0,0,1),
(4414,'2025-07-03','Bellroy Tech Kit Review',582,'Kevie shares his thoughts on the Bellroy Tech Kit','\n<p>\nHaving purchased a new cable bag from Bellroy at the start of the year, Kevie shares his thoughts on the <a href=\"https://bellroy.com/products/tech-kit?color=arcade_grey&amp;material=dura_lite_ripstop&amp;size=standard#slide-0\" rel=\"noopener noreferrer\" target=\"_blank\">\nBellroy Travel Kit</a>\n.</p>\n\n\n',296,0,0,'CC-BY-SA','travel, bag',0,0,1),
(4461,'2025-09-08','Battle of the mic\'s',351,'Lee compares recording with some different microphones','\n    <p>\n      Microphones compared:</p>\n    <ol>\n      <li><a\nhref=\"https://www.bose.com/p/quietcomfort-35-wireless-headphones-ii/QC35II-HEADPHONEARN-SIL-WW.html\">Bose\n          QC35 Headset</a></li>\n      <li><a href=\"https://support.apple.com/en-us/111901\">\n          Macbook Pro M1 16\"</a></li>\n      <li><a href=\"https://us.ankerwork.com/products/a3308\">\n          Anker PowerConf S330</a></li>\n      <li><a href=\"https://www.akg.com/lyra.html\">\n          AKG Pro Audio Lyra</a></li>\n      <li><a href=\"https://support.apple.com/en-us/111977\">\n          iPad Pro 12.9\" 4th Gen</a></li>\n    </ol>\n    <p>\n      Photo: AKG mic with Sensic SA-30 boom arm &amp; Aokeo pop filter</p>\n    <p>\n      <a href=\"hpr4461_image_1.jpeg\">\n        <img src=\"hpr4461_image_1_tn.jpeg\">\n      </a>\n    </p>',403,45,0,'CC-BY-SA','microphones, audacity',0,0,1),
(4413,'2025-07-02','KDE custom shortcuts are easy and useful',274,'The episode describes how to access the custom shortcuts in KDE desktop things you can do.','\n<p>\nIf you go to the system settings in the main menu for KDE and scroll down, you can get to shortcuts and under shortcuts, there is a thing called custom shortcuts, and you can do anything you want in here.</p>\n<p>\n<br>\n</p>\n<p>\n<br>\n</p>\n<p>\n<a href=\"hpr4413_image_1.png\">\n<img src=\"hpr4413_image_1_tn.png\" alt=\"\">\n</a>\n</p>\n<p>\n<br>\n</p>\n\n\n',425,0,0,'CC-BY-SA','kde, linux',0,0,1),
(4415,'2025-07-04','Sony WH-CH700N A2DP stops working in Fedora',646,'How months of troubleshooting came down to a comment in a forum','\n<p>\nAfter updating the firmware on my Sony Noise Cancelling Headset, and upgrading to <a href=\"https://fedoraproject.org/\" rel=\"noopener noreferrer\" target=\"_blank\">\nFedora 40</a>\n, my <a href=\"https://en.wikipedia.org/wiki/List_of_Bluetooth_profiles#Advanced_Audio_Distribution_Profile_(A2DP\" rel=\"noopener noreferrer\" target=\"_blank\">\nA2DP</a>\n) profiles stopped working.</p>\n<p>\nI did a quick search and found someone with the same issue and it would be fixed in a Kernel upgrade. Common enough on a bleeding edge that is Fedora, however as the months moved on and the kernel upgraded, the problem remained.</p>\n<p>\nI tried to implement workarounds several times but eventually came across this passage from <a href=\"https://discussion.fedoraproject.org/t/no-audio-output-with-bluetooth-headset-in-hsp-hfp-profile-mic-works-output-doesn-t/155135/4\" rel=\"noopener noreferrer\" target=\"_blank\">\nhank aka hankuoffroad on the Fedora Forums</a>\n</p>\n<p>\n<br>\n</p>\n<blockquote>\nThis is a known behavior when using Bluetooth audio on Linux on hands-free mode: you cannot use A2DP for high-quality audio output while simultaneously using the Bluetooth microphone via HSP/HFP, due to profile limitations in the Bluetooth specification and current Linux audio stack.</blockquote>\n<p>\nI knew this of course, but my <a href=\"https://www.sony.ca/en/electronics/headband-headphones/wh-ch700n\" rel=\"noopener noreferrer\" target=\"_blank\">\nSony WH-CH700N Wireless Noise Cancelling Headphones</a>\n don\'t have a microphone. ... Hold on how does Noise Cancelling work exactly again ?</p>\n<p>\n<br>\n</p>\n<blockquote>\nActive noise control (ANC), also known as noise cancellation (NC), or active noise reduction (ANR), is a method for reducing unwanted sound by the addition of a second sound specifically designed to cancel the first</blockquote>\n<p>\n<a href=\"https://en.wikipedia.org/wiki/Active_noise_control\" rel=\"noopener noreferrer\" target=\"_blank\">\nWikipedia</a>\n</p>\n<p>\nIf the first is the background noise, it needs a microphone to capture it so it can be inverted.</p>\n<p>\nAh ha...I had recently also disabled my <a href=\"https://en.wikipedia.org/wiki/Zoom_H2_Handy_Recorder\" rel=\"noopener noreferrer\" target=\"_blank\">\nZoom H2v2</a>\n as it was now sometimes acting as a speaker.</p>\n<p>\nSo presumably pipewire tries to find any microphone on the system, when it cant find the best one it will resort to the one used for noise canceling in the headset.</p>\n<p>\nOnce the headset is been used for audio in as well, then there isn\'t enough bandwidth to do high definition audio, so you end up with the low quality two way profiles.</p>\n<p>\nWould the solution be as easy as enabling a proper microphone . . . .</p>\n\n\n',30,0,0,'CC-BY-SA','WH-CH700N, A2DP, NoiseCancelling, Fedora',0,0,1),
(4425,'2025-07-18','Introducing Linux Matters',2294,'Long overdue, we share a teaser of another excellent Creative Commons Podcast.','\n    <h1>\n      About Linux Matters</h1>\n    <p>\n      <img src=\"hpr4425_image_ext_1.webp\">\n    </p>\n    <p>\n      Join 3 experienced Open Source professionals as they discuss the\n      impact Linux has in their daily lives. Upbeat family-friendly\n      banter, conversation and discussion for Linux enthusiasts and\n      casual observers of all ages. A new episode every two weeks\n      covering terminal productivity, desktop experience, development,\n      gaming, hosting, hardware, community, cloud-native and all the\n      Linux Matters that matter.</p>\n    <h3>\n      Links</h3>\n    <ul>\n      <li>\n        Website: <a href=\"https://linuxmatters.sh/\" rel=\"noopener\n          noreferrer\" target=\"_blank\">\n          https://linuxmatters.sh/</a>\n      </li>\n      <li>\n        License: <a\n          href=\"https://creativecommons.org/licenses/by-nc/4.0/\"\n          rel=\"noopener noreferrer\" target=\"_blank\">\n          Creative Commons Attribution-NonCommercial 4.0 International</a>\n        license.</li>\n      <li>\n        RSS: <a href=\"https://linuxmatters.sh/episode/index.xml\"\n          rel=\"noopener noreferrer\" target=\"_blank\">\n          https://linuxmatters.sh/episode/index.xml</a>\n      </li>\n    </ul>',30,75,0,'CC-BY-NC','Linux Matters',0,0,1),
(4431,'2025-07-28','Thermosol refill challenges',885,'Presenter explores Thermosol refill challenges','\n    <p>Presenter explores Thermosol refill challenges, proprietary\n      adapters, and DIY solutions to optimize mosquito repellent\n      efficiency. </p>\n    <p>New Design Metal Refill Adapter For Thermacell Butane Cartridge\n      DIY US Shipping</p>\n    <p><a href=\"https://www.thingiverse.com/thing:4963965\">https://www.thingiverse.com/thing:4963965</a>\n      ( IDK if works ... )</p>\n    <p><a href=\"https://www.ebay.com/itm/375229842193\">https://www.ebay.com/itm/375229842193</a></p>\n    <p><a href=\"https://www.ebay.com/itm/256712359477\">https://www.ebay.com/itm/256712359477</a></p>\n    <p><a href=\"https://www.ebay.com/itm/386734600195\">https://www.ebay.com/itm/386734600195</a></p>\n    <p><a href=\"https://www.youtube.com/watch?v=r6lAzan0MiU\">https://www.youtube.com/watch?v=r6lAzan0MiU</a></p>\n    <p><a href=\"https://www.youtube.com/watch?v=FIf2SMrDY7E\">https://www.youtube.com/watch?v=FIf2SMrDY7E</a></p>\n    <p>Wine Bottle Torch Kit 8 Pack, Includes 8 Long Life Torch Wicks,\n      Lamp Cover &amp; Brass Wick Mount(13.7 Inch,Bottle not Included)</p>\n    <p><a\nhref=\"https://www.amazon.com/Bottle-Torch-Wicks-Copper-Included/dp/B01MSRJJTA\">https://www.amazon.com/Bottle-Torch-Wicks-Copper-Included/dp/B01MSRJJTA</a>\n    </p>\n    <p>Aldi</p>\n    <p><a href=\"https://www.thingiverse.com/thing:4780152\">https://www.thingiverse.com/thing:4780152</a></p>\n    <p><a href=\"https://www.thingiverse.com/thing:2104000\">https://www.thingiverse.com/thing:2104000</a></p>\n    <h2 id=\"ideas-\">IDEAS:</h2>\n    <ol>\n      <li>\n        <p>Thermosol mosquito repellent devices require specific refill\n          methods. </p>\n      </li>\n      <li>\n        <p>Proprietary butane adapters create refill barriers for\n          Thermosol. </p>\n      </li>\n      <li>\n        <p>3D-printed adapters offer a customizable refill solution. </p>\n      </li>\n      <li>\n        <p>Butane refill systems include nozzles tailored to Thermosol\n          cartridges. </p>\n      </li>\n      <li>\n        <p>Proprietary check valves in cartridges complicate refills. </p>\n      </li>\n      <li>\n        <p>Pressure management is critical during refilling. </p>\n      </li>\n      <li>\n        <p>Marking the fill line prevents overfilling. </p>\n      </li>\n      <li>\n        <p>O-rings must be carefully removed to access check valves. </p>\n      </li>\n      <li>\n        <p>A wood screw can extract the proprietary check valve. </p>\n      </li>\n      <li>\n        <p>Refilled Thermosol devices often use Chinese-yum pads. </p>\n      </li>\n      <li>\n        <p>Discolored pads indicate the need for replacement. </p>\n      </li>\n      <li>\n        <p>Yard waste storage increases fire risk for Thermosol. </p>\n      </li>\n      <li>\n        <p>\"Slit in the middle\" adapters enable effective refills. </p>\n      </li>\n      <li>\n        <p>Adapter design mimics regular butane cartridge geometry. </p>\n      </li>\n      <li>\n        <p>Fuel escape through slits rather than central tube. </p>\n      </li>\n      <li>\n        <p>Overfilling leads to excessive pressure buildup. </p>\n      </li>\n      <li>\n        <p>Reusing empty Thermosol containers via refills. </p>\n      </li>\n      <li>\n        <p>Combining DIY methods with commercial refill kits. </p>\n      </li>\n      <li>\n        <p>Alternative nozzles may fail without proper adapter. </p>\n      </li>\n      <li>\n        <p>Proprietary valve removal enables long-term cost savings.</p>\n      </li>\n    </ol>\n    <h2 id=\"recommendations-\">RECOMMENDATIONS:</h2>\n    <ol>\n      <li>\n        <p>Use 3D-printed adapters for Thermosol refills. </p>\n      </li>\n      <li>\n        <p>Extract proprietary check valves with a wood screw. </p>\n      </li>\n      <li>\n        <p>Mark the fill line to prevent overfilling. </p>\n      </li>\n      <li>\n        <p>Replace o-rings carefully to avoid damage. </p>\n      </li>\n      <li>\n        <p>Store Thermosol in fire-safe containers. </p>\n      </li>\n      <li>\n        <p>Combine DIY slits with commercial nozzles. </p>\n      </li>\n      <li>\n        <p>Swap out discolored pads regularly. </p>\n      </li>\n      <li>\n        <p>Repurpose empty Thermosol containers via refills. </p>\n      </li>\n      <li>\n        <p>Use a tapered object with a central slit for refills. </p>\n      </li>\n      <li>\n        <p>Avoid proprietary adapters by modifying existing nozzles. </p>\n      </li>\n      <li>\n        <p>Pressurize and depressurize during refill cycles. </p>\n      </li>\n      <li>\n        <p>Source affordable Chinese-yum pads for replacements. </p>\n      </li>\n      <li>\n        <p>Inspect valves for one-way check mechanisms. </p>\n      </li>\n      <li>\n        <p>Follow video tutorials for adapter installation. </p>\n      </li>\n      <li>\n        <p>Prioritize sealed containers for long-term storage. </p>\n      </li>\n      <li>\n        <p>Adapt butane lighter attachments for Thermosol. </p>\n      </li>\n      <li>\n        <p>Test refill methods with empty containers first. </p>\n      </li>\n      <li>\n        <p>Document fill line marks for future reference. </p>\n      </li>\n      <li>\n        <p>Compare DIY solutions to commercial refill kits. </p>\n      </li>\n      <li>\n        <p>Advocate for open-standard Thermosol refills.</p>\n      </li>\n    </ol>',36,0,1,'CC-BY-SA','Thermosol, Refill, Adapter, DIY, Mosquito',0,0,1),
(4424,'2025-07-17','How I use Newsboat for Podcasts and Reddit',341,'Archer72 talks about how he uses Newsboat and Podboat together for podcast listening','\r\n<p>Hello, this is your host, Archer72 for another episode of Hacker\r\nPublic Radio</p>\r\n<p>In this episode, I talk about how I use Newsboat and Podboat for a\r\ncouple of tasks.</p>\r\n<p>I don’t always use Podboat for podcasts, but it is useful when\r\nlistening from my laptop</p>\r\n<p>For my other podcast listening, I used Antennapod</p>\r\n<p>Newsboat source of feeds is from a url list in\r\n<code>~/.config/newsboat/urls</code></p>\r\n\r\n\r\n<h3>Newsboat url list</h3>\r\n\r\n<pre>\r\n<code>\r\n# (Bible)\r\nhttps://feeds.feedburner.com/hl-int-tv-en-kjv \"Bible\" (Bible)\r\n\r\n# (Reddit) \r\nhttps://www.reddit.com/r/commandline.rss \"Commandline\" (Reddit)\r\nhttps://www.reddit.com/r/raspberry_pi.rss \"~Raspberry Pi\" (Reddit)\r\n\r\n# (Lemmy)\r\nhttps://lemmy.sdf.org/feeds/local.xml?sort=New \"Lemmy SDF\" (Lemmy)\r\n\r\n# (Podcasts)\r\nhttp://gnuworldorder.info/ogg.xml \"Gnu_World_Order\"\r\n\r\n# Tuxjam.Otherside.Network\r\nhttps://tuxjam.otherside.network/feed \"TuxJam\"\r\nhttps://tuxjam.otherside.network/feed/uncut \"TuxJam Uncut\"\r\nhttps://thebugcast.org/category/podcast/feed \"The Bugcast\"\r\n\r\n# Hacker Public Radio\r\nhttp://hackerpublicradio.org/rss-future.php HackerPublicRadio_future_feed \"~Hacker Public Radio ~ Future feed\" (HPR)\r\nhttp://hackerpublicradio.org/hpr_ogg_rss.php \"HPR_two_week_feed\" (HPR)\r\nhttp://hackerpublicradio.org/comments_rss.php HPR_comment_feed \"HPR_Comments\" (HPR)\r\nhttps://archive.org/services/collection-rss.php?collection=dlarc-hackerpublicradio \"~HPR Amateur Radio - Archive.org\" (HPR)\r\n\r\n# Other Tech podcasts\r\nhttps://feeds.fireside.fm/asknoah/rss \"The Ask Noah Show\"\r\nhttps://feeds.feedburner.com/urandom-podcast/ogg \"Urandom Podcast\"\r\nhttps://ubuntu.social/@linuxmatters\r\n\r\n# (Youtube)\r\nhttps://www.youtube.com/feeds/videos.xml?channel_id=UC2eYFnH61tmytImy1mTYvhA \"Luke Smith\" (Youtube) \r\nhttps://www.youtube.com/feeds/videos.xml?channel_id=UCH6ttJZ3T5gA-r_7PYkHk9g \"SGOTI\" (Youtube)\r\nhttps://www.youtube.com/feeds/videos.xml?channel_id=UCVls1GmFKf6WlTraIb_IaJg \"DistroTube\" (Youtube)\r\nhttps://www.youtube.com/feeds/videos.xml?channel_id=UC9x0AN7BWHpCDHSm9NiJFJQ \"Network Chuck\" (Youtube)\r\n\r\n# Import from Newpipe\r\n\r\nhttps://www.youtube.com/feeds/videos.xml?channel_id=UC_SLthyNX_ivd-dmsFgmJVg \"Jeremy Fielding\" (Youtube)\r\nhttps://www.youtube.com/feeds/videos.xml?channel_id=UCJ0-OtVpF0wOKEqT2Z1HEtA \"ElectroBOOM\" (Youtube)\r\nhttps://www.youtube.com/feeds/videos.xml?channel_id=UCv1Kcz-CuGM6mxzL3B1_Eiw \"Gardiner Bryant\" (Youtube)\r\nhttps://www.youtube.com/feeds/videos.xml?channel_id=UC3s0BtrBJpwNDaflRSoiieQ \"Hak5\" (Youtube)\r\nhttps://www.youtube.com/feeds/videos.xml?channel_id=UCR-DXc1voovS8nhAvccRZhg \"Jeff Geerling\" (Youtube)\r\nhttps://www.youtube.com/feeds/videos.xml?channel_id=UCzgA9CBrIXPtkB2yNTTiy1w \"Level 2 Jeff\" (Youtube)\r\nhttps://www.youtube.com/feeds/videos.xml?channel_id=UCLx053rWZxCiYWsBETgdKrQ \"LGR\" (Youtube)\r\nhttps://www.youtube.com/feeds/videos.xml?channel_id=UCXuqSBlHAE6Xw-yeJA0Tunw \"Linus Tech Tips\" (Youtube)\r\nhttps://www.youtube.com/feeds/videos.xml?channel_id=UCm9K6rby98W8JigLoZOh6FQ \"LockPickingLawyer\" (Youtube)\r\nhttps://www.youtube.com/feeds/videos.xml?channel_id=UCjFaPUcJU1vwk193mnW_w1w \"Modern Vintage Gamer\" (Youtube)\r\nhttps://www.youtube.com/feeds/videos.xml?channel_id=UCP8QhVVoM7IKD0YwnvnPPbg \"Pater Practicus\" (Youtube)\r\nhttps://www.youtube.com/feeds/videos.xml?channel_id=UCjr2bPAyPV7t35MvcgT3W8Q \"The Hated One\" (Youtube)\r\nhttps://www.youtube.com/feeds/videos.xml?channel_id=UCo71RUe6DX4w-Vd47rFLXPg \"typecraft\" (Youtube)\r\n\r\n## From Mrs. Archer\r\nhttps://www.youtube.com/feeds/videos.xml?channel_id=UCld68syR8Wi-GY_n4CaoJGA \"Brodie Robertson\" (Youtube)\r\nhttps://www.youtube.com/feeds/videos.xml?channel_id=UCg6gPGh8HU2U01vaFCAsvmQ \"Chris Titus Tech\" (Youtube)\r\nhttps://www.youtube.com/feeds/videos.xml?channel_id=UCoryWpk4QVYKFCJul9KBdyw \"Switched To Linux\" (Youtube)\r\nhttps://www.youtube.com/feeds/videos.xml?channel_id=UCJf7AT2BzFT-31z0d-bc8Rg \"Windows, computers and Technology\" (Youtube)\r\nhttps://www.youtube.com/feeds/videos.xml?channel_id=UC5UAwBUum7CPN5buc-_N1Fw \"The Linux Experiment\" (Youtube)\r\nhttps://www.youtube.com/feeds/videos.xml?channel_id=UCmyGZ0689ODyReHw3rsKLtQ \"Michael Tunnell\" (Youtube)\r\n\r\n# (News)\r\nhttps://olfconference.org/feed/ \"OLF Conference\" (News)\r\n</code>\r\n</pre>\r\n\r\n\r\n<blockquote>\r\n<p>To organize the url list, tags can be used, along with a description\r\nof the feed. This only give an internal description, as the Main title\r\nis determined by the RSS feed itself. This can be manually set, for\r\nexample, in the HPR Future feed. The default feed title is the same as\r\nthe feed for two weeks. To set manually, us a tilde <code>~</code>\r\nbefore the Feed Title shown in this example. Tags follow the Feed Title,\r\ntyped in parentheses and with no spaces. Multiple tags can be used\r\nhere.</p>\r\n</blockquote>\r\n<pre><code>http://hackerpublicradio.org/rss-future.php HackerPublicRadio_future_feed &quot;~Hacker Public Radio ~ Future feed&quot; (HPR)</code></pre>\r\n<p>Not all feeds in the url list are podcasts. Some are Reddit feeds,\r\nwhile others are youtube channels.</p>\r\n<blockquote>\r\n<p>The first item I go to in the morning is my Bible daily verse. I\r\nheard one new host mention that he reads some, and thought it might be\r\ninteresting to include this.</p>\r\n</blockquote>\r\n<p>The next 2 entries are from Reddit, and can be modified to contain\r\nthe rss feed in this way:</p>\r\n<ul>\r\n<li>Replace the /r/commandline with /r/commandline.rss</li>\r\n<li>add \"Title\" and \"(Tag)\"\r\n<ul>\r\n<li>https://www.reddit.com/r/commandline.rss \"Commandline\" (Reddit)</li>\r\n</ul></li>\r\n</ul>\r\n<p>The next entry, which I only include one, is the Lemmy instance for\r\nlemmy.sdf.org</p>\r\n<blockquote>\r\n<p>Lemmy is part of the Fediverse, and became popular after the June\r\n2023 controversy involving charging excessive money for Reddit’s\r\nAPI.<br />\r\nThis in turn, caused third party Reddit apps to be no longer viable.</p>\r\n</blockquote>\r\n<p><a\r\nhref=\"https://alternativeto.net/news/2023/7/reddit-s-new-api-charging-policy-forces-popular-reddit-clients-to-shut-down\"\r\ntitle=\"Alternativeto.net - API Charging Policy\">Alternativeto.net - API\r\nCharging Policy</a></p>\r\n<p><a href=\"https://en.wikipedia.org/wiki/Lemmy_(social_network)\"\r\ntitle=\"Wikipedia - Lemmy_(social_network)\">Wikipedia -\r\nLemmy_(social_network)</a></p>\r\n<p>Next, we’ll start on the <code>~/.config/newsboat/config</code>\r\nfile</p>\r\n\r\n<h3>Newsboat config file</h3>\r\n\r\n<pre>\r\n<code>\r\n# Podboat\r\n download-path \"~/Downloads/podcasts/%h/%n\"\r\n# %h - Hostname\r\n# %n - Podcast name\r\n# Example: hub.hackerpublicradio.org\r\n#          gnuworldorder.info\r\n#          media.blubrry.com/The Bugcast\r\n#          archive.org/TuxJam\r\n download-filename-format \"%n - %t.%u\" \r\n# %n - Name of the podcast feed\r\n# %t - Title of the podcast episode\r\n# %u - Indicates the file extension\r\n podlist-format \"%4i [%6dMB/%6tMB] [%5p %%] %-10S %b\"\r\n# Table 7. Available Identifiers for podlist-format\r\n# %i - Download index, 4 indicating number of digits\r\n# %6dMB/%6tMB - Downloaded (in MB) / Total file size (in MB)\r\n# [%5p %%] - Percent downloaded\r\n#  %-10S - Status - {queued, downloading, ready, played, deleted}\r\n#\r\n#  4.18. Format Strings\r\n#  %b - Boolean string\r\n\r\n# load URLS on launch\r\nauto-reload  yes\r\n\r\n# vim binds\r\nbind-key j down\r\nbind-key k up\r\nbind-key j next articlelist\r\nbind-key k prev articlelist\r\nbind-key J next-feed articlelist\r\nbind-key K prev-feed articlelist\r\nbind-key G end\r\nbind-key g home\r\n# bind-key d pagedown - default\r\nbind-key D pagedown\r\nbind-key u pageup\r\nbind-key l open\r\nbind-key h quit\r\nbind-key a toggle-article-read\r\nbind-key n next-unread\r\nbind-key N prev-unread\r\n# bind-key D pb-download - default\r\nbind-key d pb-download\r\nbind-key U show-urls\r\nbind-key x pb-delete\r\n\r\n# Colors\r\nhighlight article \"^Feed:.*\" color5 color0 \r\nhighlight article \"^Title:.*\" color3 color0 bold\r\nhighlight article \"^Author:.*\" color2 color0\r\nhighlight article \"^Date:.*\" color223 color0 \r\nhighlight article \"^Link:.*\" color4 color0 \r\nhighlight article \"^Flags:.*\" color9 color0                                     \r\nhighlight article \"\\\\[[0-9][0-9]*\\\\]\" color66 default bold\r\nhighlight article \"\\\\[image [0-9][0-9]*\\\\]\" color109 default bold\r\n\r\n\r\ncolor listnormal cyan default\r\ncolor listfocus black yellow standout bold\r\ncolor listnormal_unread cyan default\r\ncolor listfocus_unread yellow default bold\r\ncolor info red black bold\r\ncolor article cyan default\r\n\r\n# macro setup\r\nbrowser linkhandler\r\nmacro , open-in-browser\r\n\r\n# download-path ~/.newsboat/queue\r\nplayer \"mpv --vid=no\"\r\nmacro 1 set browser \"mpv --vid=no\"; one; set browser lynx\r\n\r\n# launch video player\r\nmacro v set browser \"setsid -f mpv\" ; open-in-browser ; set browser linkhandler\r\n\r\n# download video\r\nmacro d set browser \"yt-dlp\"; open-in-browser ; set browser linkhandler\r\n\r\n# download audio only\r\nmacro a set browser \"yt-dlp --embed-metadata -xic -f bestaudio/best\" ; open-in-browser ; set browser linkhandler\r\n\r\n</code>\r\n</pre>\r\n\r\n\r\n<p>When enqueing a podcast for Podboat, I changed the default<br />\r\ndownload path to <code>~/Downloads/podcasts/</code> using\r\n<code>download-path \"~/Downloads/podcasts/%h/%n\"</code></p>\r\n<p>Where %h is the Hostname, and %n is the Podcast name</p>\r\n<p>The file name is formatted in the following way</p>\r\n<p><code>%n - %t.%u</code></p>\r\n<p>Where %n is the podcast name, %t is the podcast title and %u\r\nindicates the file extension</p>\r\n<p>Finally, there is a custom line for <code>podlist-format</code> which\r\nfor podcast purposes I won’t list out.</p>\r\n<p>This includes a Download index to 4 places, percentage of each\r\npodcast downloaded, and Podcast status</p>\r\n<p>When I use Podboat, after the set of podcasts are enqued I found a\r\nway to monitor the bluetooth connection,<br />\r\nin order to pause a show with the bluetooth button on an earbud.</p>\r\n<p>The first part of this puzzle is to have <code>mpris-proxy</code>,\r\nwhich is included in the <code>bluez-utils</code></p>\r\n<p><a href=\"https://wiki.archlinux.org/title/MPRIS\"\r\ntitle=\"Archwiki - MPRIS\">Archwiki - MPRIS</a></p>\r\n<p>Then enable the service with\r\n<code>systemctl --user enable mpris-proxy.service</code> and\r\n<code>systemctl --user start mpris-proxy.service</code></p>\r\n<p>After that,\r\n<code>git clone https://github.com/hoyon/mpv-mpris.git</code> from <a\r\nhref=\"https://github.com/hoyon/mpv-mpris\"\r\ntitle=\"Github - hoyon/mpv-mpris\">Github - hoyon/mpv-mpris</a></p>\r\n<p><code>cd mpv-mpris</code> and <code>make</code>, with the resulting\r\n<code>mpris.so</code> copied to <code>~/.config/mpv/scripts/</code></p>\r\n<h2 id=\"newsboat-documentation\">Newsboat documentation</h2>\r\n<p><a href=\"https://newsboat.org/releases/2.40/docs/newsboat.html\"\r\ntitle=\"Newsboat Documentation page\">Newsboat Documentation page</a></p>\r\n<h2 id=\"format-strings\">Format strings</h2>\r\n<p><a\r\nhref=\"https://newsboat.org/releases/2.40/docs/newsboat.html#_format_strings\"\r\ntitle=\"Newsboat Documentation page - Format Strings\">Newsboat\r\nDocumentation page - Format Strings</a></p>\r\n<p>\r\n<a href=\"hpr4424_image_1.png\">\r\n<img src=\"hpr4424_image_1_tn.png\" title=\"Screenshot of Newsboat and Podboat in a Tmux session\" alt=\"Screenshot of Newsboat and Podboat in a Tmux session\">\r\n</a>\r\n</p>\r\n\r\n\r\n\r',318,0,0,'CC-BY-SA','Newsboat, Podboat, Bible, Reddit, Lemmy, Youtube, MPRIS, Podcatcher',0,0,1),
(4418,'2025-07-09','My Desktop Applications',856,'Kevie goes over his must have applications whenever he installs a new distro','\n    <p>\n      <a href=\"https://tuxjam.otherside.network/\" rel=\"noopener\n        noreferrer\" target=\"_blank\">\n        TuxJam</a> co-host <a href=\"https://mastodon.me.uk/@kevie\"\n        rel=\"noopener noreferrer\" target=\"_blank\">\n        Kevie</a> goes over the desktop applications that he currently\n      uses, January 2025 at the time of recording. These include:</p>\n    <ul>\n      <li>\n        <a href=\"https://peazip.github.io/\" rel=\"noopener noreferrer\"\n          target=\"_blank\">\n          Peazip</a>\n      </li>\n      <li>\n        <a href=\"https://lutris.net/\" rel=\"noopener noreferrer\"\n          target=\"_blank\">\n          Lutris</a>\n      </li>\n      <li>\n        <a href=\"https://www.gimp.org/\" rel=\"noopener noreferrer\"\n          target=\"_blank\">\n          GIMP</a>\n      </li>\n      <li>\n        <a href=\"https://inkscape.org/\" rel=\"noopener noreferrer\"\n          target=\"_blank\">\n          Inkscape</a>\n      </li>\n      <li>\n        <a href=\"https://tuba.geopjr.dev/\" rel=\"noopener noreferrer\"\n          target=\"_blank\">\n          Tuba</a>\n      </li>\n      <li>\n        <a href=\"https://www.mumble.info/downloads/\" rel=\"noopener\n          noreferrer\" target=\"_blank\">\n          Mumble</a>\n      </li>\n      <li>\n        <a href=\"https://desktop.telegram.org/\" rel=\"noopener\n          noreferrer\" target=\"_blank\">\n          Telegram</a>\n      </li>\n      <li>\n        <a href=\"https://calibre-ebook.com/\" rel=\"noopener noreferrer\"\n          target=\"_blank\">\n          Calibre</a>\n      </li>\n      <li>\n        <a href=\"https://github.com/pdfarranger/pdfarranger\"\n          rel=\"noopener noreferrer\" target=\"_blank\">\n          PDF Arranger</a>\n      </li>\n      <li>\n        <a href=\"https://bluefish.openoffice.nl/\" rel=\"noopener\n          noreferrer\" target=\"_blank\">\n          Bluefish Editor</a>\n      </li>\n      <li>\n        <a href=\"https://wiki.gnome.org/Apps/EasyTAG\" rel=\"noopener\n          noreferrer\" target=\"_blank\">\n          Easytag</a>\n      </li>\n      <li>\n        <a href=\"https://goodvibes.readthedocs.io/en/stable/\"\n          rel=\"noopener noreferrer\" target=\"_blank\">\n          Goodvibes</a>\n      </li>\n      <li>\n        <a href=\"https://obsproject.com/\" rel=\"noopener noreferrer\"\n          target=\"_blank\">\n          OBS Studio</a>\n      </li>\n      <li>\n        <a href=\"https://www.openshot.org/\" rel=\"noopener noreferrer\"\n          target=\"_blank\">\n          Openshot</a>\n      </li>\n      <li>\n        <a href=\"https://github.com/ryonakano/reco\" rel=\"noopener\n          noreferrer\" target=\"_blank\">\n          Reco</a>\n      </li>\n      <li>\n        <a href=\"https://www.audacityteam.org/\" rel=\"noopener\n          noreferrer\" target=\"_blank\">\n          Audacity</a>\n      </li>\n    </ul>',296,0,0,'CC-BY-SA','Linux, desktop, applications',0,0,1),
(4419,'2025-07-10','YouTube Subscriptions 2025 #1',972,'Part one of my list of subscribed channels','\n    <p>\n      I am subscribed to a number of YouTube channels, and I am sharing\n      them with you.</p>\n    <h3>\n      Links:</h3>\n    <ul>\n      <li>\n        <a href=\"https://www.youtube.com/@2LegsAPaulMcCartneyPodcast\"\n          rel=\"noopener noreferrer\" target=\"_blank\">\n          https://www.youtube.com/@2LegsAPaulMcCartneyPodcast</a>\n      </li>\n      <li>\n        <a href=\"https://www.youtube.com/@AdamNeely\" rel=\"noopener\n          noreferrer\" target=\"_blank\">\n          https://www.youtube.com/@AdamNeely</a>\n      </li>\n      <li>\n        <a href=\"https://www.youtube.com/@AlReviewsWho\" rel=\"noopener\n          noreferrer\" target=\"_blank\">\n          https://www.youtube.com/@AlReviewsWho</a>\n      </li>\n      <li>\n        <a href=\"https://www.youtube.com/@AlternateHistoryHub\"\n          rel=\"noopener noreferrer\" target=\"_blank\">\n          https://www.youtube.com/@AlternateHistoryHub</a>\n      </li>\n      <li>\n        <a href=\"https://www.youtube.com/@amawaterways\" rel=\"noopener\n          noreferrer\" target=\"_blank\">\n          https://www.youtube.com/@amawaterways</a>\n      </li>\n      <li>\n        <a href=\"https://www.youtube.com/@theSpaceVixen\" rel=\"noopener\n          noreferrer\" target=\"_blank\">\n          https://www.youtube.com/@theSpaceVixen</a>\n      </li>\n      <li>\n        <a\n          href=\"https://www.youtube.com/channel/UC1AtM-B9YZTSoMcKt1yDieg\"\n          rel=\"noopener noreferrer\" target=\"_blank\">\n          https://www.youtube.com/channel/UC1AtM-B9YZTSoMcKt1yDieg</a>\n      </li>\n      <li>\n        <a href=\"https://www.youtube.com/@TheRealAndyMcKee\"\n          rel=\"noopener noreferrer\" target=\"_blank\">\n          https://www.youtube.com/@TheRealAndyMcKee</a>\n      </li>\n      <li>\n        <a\n          href=\"https://www.youtube.com/channel/UCxgAH7EcmKhC9bLm7xQ971g\"\n          rel=\"noopener noreferrer\" target=\"_blank\">\n          https://www.youtube.com/channel/UCxgAH7EcmKhC9bLm7xQ971g</a>\n      </li>\n      <li>\n        <a href=\"https://www.youtube.com/@ApartmentSessions\"\n          rel=\"noopener noreferrer\" target=\"_blank\">\n          https://www.youtube.com/@ApartmentSessions</a>\n      </li>\n      <li>\n        <a\n          href=\"https://www.youtube.com/@arthurc.clarkecenterforhum6745\"\n          rel=\"noopener noreferrer\" target=\"_blank\">\n          https://www.youtube.com/@arthurc.clarkecenterforhum6745</a>\n      </li>\n      <li>\n        <a\n          href=\"https://www.youtube.com/@associationofirishcelticfe4447\"\n          rel=\"noopener noreferrer\" target=\"_blank\">\n          https://www.youtube.com/@associationofirishcelticfe4447</a>\n      </li>\n      <li>\n        <a href=\"https://www.palain.com/\" rel=\"noopener noreferrer\"\n          target=\"_blank\">\n          https://www.palain.com/</a>\n      </li>\n    </ul>\n    <p>\n      <br>\n    </p>',198,106,0,'CC-BY-SA','YouTube, Channels, Subscriptions',0,0,1),
(4422,'2025-07-15','hajime - part 2 - in depth',1024,'Hajime episode 2 a more in depth look to it\'s workings and some questions answered.','\n    <p>Where oxo answers some of the questions about hajime</p>\n    <p> <a href=\"https://codeberg.org/oxo/hajime#readme\">oxo/hajime -\n        Codeberg.org</a></p>\n    <p><a\n        href=\"https://codeberg.org/oxo/hajime/src/branch/main/make-recov\">hajime/prep/make-recov\n        at main - oxo/hajime - Codeberg.org</a></p>\n    <p><a\n        href=\"https://codeberg.org/oxo/hajime/src/branch/main/prep/isolatest\">hajime/prep/isolatest\n        at main - oxo/hajime - Codeberg.org</a></p>',448,0,0,'CC-BY-SA','oxo,bash,commandline,archlinux,installation,script,hajime',0,0,1),
(4423,'2025-07-16','YouTube Subscriptions 2025 #2',957,'Part two of my list of subscribed channels','\n<p>\nI am subscribed to a number of YouTube channels, and I am sharing them with you.</p>\n<p>\n<br>\n</p>\n<h3>\nLinks:</h3>\n<ul>\n<li>\n<a href=\"https://www.youtube.com/@BackToSpace\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.youtube.com/@BackToSpace</a>\n</li>\n<li>\n<a href=\"https://www.youtube.com/@bakerstreetjournal1642\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.youtube.com/@bakerstreetjournal1642</a>\n</li>\n<li>\n<a href=\"https://www.youtube.com/@BBCEarthExplore\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.youtube.com/@BBCEarthExplore</a>\n</li>\n<li>\n<a href=\"https://www.youtube.com/@besmart\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.youtube.com/@besmart</a>\n</li>\n<li>\n<a href=\"https://www.youtube.com/@BeyondTheSofa\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.youtube.com/@BeyondTheSofa</a>\n</li>\n<li>\n<a href=\"https://www.youtube.com/@BillBruford\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.youtube.com/@BillBruford</a>\n</li>\n<li>\n<a href=\"https://www.youtube.com/@BizarreBeasts\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.youtube.com/@BizarreBeasts</a>\n</li>\n<li>\n<a href=\"https://www.youtube.com/@boesthius\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.youtube.com/@boesthius</a>\n</li>\n<li>\n<a href=\"https://www.youtube.com/@braincraft\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.youtube.com/@braincraft</a>\n</li>\n<li>\n<a href=\"https://www.youtube.com/@BreakRoomofGeeks\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.youtube.com/@BreakRoomofGeeks</a>\n</li>\n<li>\n<a href=\"https://www.youtube.com/@briantylercohen\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.youtube.com/@briantylercohen</a>\n</li>\n<li>\n<a href=\"https://www.youtube.com/@ButterflySpanish\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.youtube.com/@ButterflySpanish</a>\n</li>\n<li>\n<a href=\"https://www.youtube.com/@cab801\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.youtube.com/@cab801</a>\n</li>\n<li>\n<a href=\"https://www.youtube.com/@candyrat\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.youtube.com/@candyrat</a>\n</li>\n<li>\n<a href=\"https://www.youtube.com/@carcareclues\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.youtube.com/@carcareclues</a>\n</li>\n<li>\n<a href=\"https://www.youtube.com/@carhelpcorner\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.youtube.com/@carhelpcorner</a>\n</li>\n<li>\n<a href=\"https://www.palain.com/\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.palain.com/</a>\n</li>\n</ul>\n<p>\n<br>\n</p>\n\n\n',198,0,0,'CC-BY-SA','YouTube, Channels, Subscriptions',0,0,1),
(4429,'2025-07-24','Handcrafting and Bartering discussion w. Elsbeth',2569,'Elsbeth discusses how to make money as a crafter and how the barter and trade system might be better','\n    <p> Elsbeth talks about her passion for crochet and other hand\n      crafts, and reflects on the marketing and selling of these items,\n      leading her to think about different forms of trade, even in the\n      context of software production. She steps through setting up an\n      online shop on Etsy.</p>\n    <p>Crochet - a process of creating textiles by using a crochet hook\n      to interlock loops of yarn, thread, or strands of other materials.\n      - <a href=\"https://en.wikipedia.org/wiki/Crochet\">https://en.wikipedia.org/wiki/Crochet</a></p>\n    <p>Barter - a system of exchange in which participants in a\n      transaction directly exchange goods or services for other goods or\n      services without using a medium of exchange, such as money - <a\n        href=\"https://en.wikipedia.org/wiki/Barter\">https://en.wikipedia.org/wiki/Barter</a></p>\n    <p>Open-source bounty - a monetary reward for completing a task in\n      an open-source software project - <a\n        href=\"https://en.wikipedia.org/wiki/Open-source_bounty\">https://en.wikipedia.org/wiki/Open-source_bounty</a></p>\n    <p>Bug bounty program - a deal offered by many websites,\n      organizations, and software developers by which individuals can\n      receive recognition and compensation for reporting bugs,\n      especially those pertaining to security vulnerabilities - <a\n        href=\"https://en.wikipedia.org/wiki/Bug_bounty_program\">https://en.wikipedia.org/wiki/Bug_bounty_program</a></p>\n    <p>Gitcoin - one initiative supporting the development of open\n      source projects and monetizing open source software through\n      bounties - <a href=\"https://www.gitcoin.co/program\">https://www.gitcoin.co/program</a></p>\n    <p>Etsy, Inc. is an American e-commerce company with an emphasis on\n      the selling of handmade or vintage items and craft supplies. - <a\n        href=\"https://en.wikipedia.org/wiki/Etsy\">https://en.wikipedia.org/wiki/Etsy</a>\n      - <a href=\"https://www.etsy.com\">https://www.etsy.com</a></p>\n    <p>Explicit content notice solely for possible language</p>',446,0,1,'CC-BY-SA','barter, handcrafts, handicrafts, craft, crafting, business, selling, technology,',0,0,1),
(4434,'2025-07-31','Newsboat part 2 - Podcasts and Youtube',432,'Archer72 talks about Podcasts and Youtube subscriptions in Newsboat and quick tip','\n    <p>\n      Hello, this is your host, Archer72 for another episode of Hacker\n      Public Radio</p>\n    <p>\n      In this podcast, I touch on items in my url list on newsboat,\n      including both podcasts and youtube channels.</p>\n    <p>\n      <br>\n    </p>\n    <pre class=\"ql-syntax\" spellcheck=\"false\"># (Podcasts)\nhttp://gnuworldorder.info/ogg.xml \"Gnu World Order\"\n\n# Tuxjam.Otherside.Network\nhttps://tuxjam.otherside.network/feed \"TuxJam\"\nhttps://tuxjam.otherside.network/feed/uncut \"TuxJam Uncut\"\nhttps://thebugcast.org/category/podcast/feed \"The Bugcast\"\n\n# Hacker Public Radio\nhttp://hackerpublicradio.org/rss-future.php HackerPublicRadio_future_feed \"~Hacker Public Radio ~ Future feed\" (HPR)\nhttp://hackerpublicradio.org/hpr_ogg_rss.php \"HPR_two_week_feed\" (HPR)\nhttp://hackerpublicradio.org/comments_rss.php HPR_comment_feed \"HPR_Comments\" (HPR)\nhttps://archive.org/services/collection-rss.php?collection=dlarc-hackerpublicradio \"~HPR Amateur Radio - Archive.org\" (HPR)\n\n# Other Tech podcasts\nhttps://feeds.fireside.fm/asknoah/rss \"The Ask Noah Show\"\nhttps://feeds.feedburner.com/urandom-podcast/ogg \"Urandom Podcast\"\nhttps://ubuntu.social/@linuxmatters\n\n# (Youtube)\nhttps://www.youtube.com/feeds/videos.xml?channel_id=UC2eYFnH61tmytImy1mTYvhA \"Luke Smith\" (Youtube) \nhttps://www.youtube.com/feeds/videos.xml?channel_id=UCH6ttJZ3T5gA-r_7PYkHk9g \"SGOTI\" (Youtube)\nhttps://www.youtube.com/feeds/videos.xml?channel_id=UCVls1GmFKf6WlTraIb_IaJg \"DistroTube\" (Youtube)\nhttps://www.youtube.com/feeds/videos.xml?channel_id=UC9x0AN7BWHpCDHSm9NiJFJQ \"Network Chuck\" (Youtube)\n\n# Import from Newpipe\n\nhttps://www.youtube.com/feeds/videos.xml?channel_id=UC_SLthyNX_ivd-dmsFgmJVg \"Jeremy Fielding\" (Youtube)\nhttps://www.youtube.com/feeds/videos.xml?channel_id=UCJ0-OtVpF0wOKEqT2Z1HEtA \"ElectroBOOM\" (Youtube)\nhttps://www.youtube.com/feeds/videos.xml?channel_id=UCv1Kcz-CuGM6mxzL3B1_Eiw \"Gardiner Bryant\" (Youtube)\nLoves Linux, video games and online privacy\nhttps://www.youtube.com/feeds/videos.xml?channel_id=UC3s0BtrBJpwNDaflRSoiieQ \"Hak5\" (Youtube)\nSecurity show. Creators of the WiFi Pineapple, USB Rubber Ducky &amp; more. \nhttps://www.youtube.com/feeds/videos.xml?channel_id=UCR-DXc1voovS8nhAvccRZhg \"Jeff Geerling\" (Youtube)\nauthor, developer, maker, fan of Raspberry Pi and other SBC\'s (Single Board Computers\nhttps://www.youtube.com/feeds/videos.xml?channel_id=UCzgA9CBrIXPtkB2yNTTiy1w \"Level 2 Jeff\" (Youtube)\nJeff Geerling, but more advanced\nhttps://www.youtube.com/feeds/videos.xml?channel_id=UCLx053rWZxCiYWsBETgdKrQ \"LGR\" (Youtube)\nRetro Gaming and computing\nhttps://www.youtube.com/feeds/videos.xml?channel_id=UCXuqSBlHAE6Xw-yeJA0Tunw \"Linus Tech Tips\" (Youtube)\nReviews, engineering projects, and news\nhttps://www.youtube.com/feeds/videos.xml?channel_id=UCm9K6rby98W8JigLoZOh6FQ \"LockPickingLawyer\" (Youtube)\nPoints out weaknesses and defect in physical security locks\nhttps://www.youtube.com/feeds/videos.xml?channel_id=UCjFaPUcJU1vwk193mnW_w1w \"Modern Vintage Gamer\" (Youtube)\nFocus on modern and retro tech gaming\nhttps://www.youtube.com/feeds/videos.xml?channel_id=UCP8QhVVoM7IKD0YwnvnPPbg \"Pater Practicus\" (Youtube)\nVaried collection of project videos from model railways to Raspberry Pi\nhttps://www.youtube.com/feeds/videos.xml?channel_id=UCjr2bPAyPV7t35MvcgT3W8Q \"The Hated One\" (Youtube)\nCreating video essays on privacy, monopoly power, corruption\nhttps://www.youtube.com/feeds/videos.xml?channel_id=UCo71RUe6DX4w-Vd47rFLXPg \"typecraft\" (Youtube)\nFocus on NeoVim\n\n## From Mrs. Archer\nhttps://www.youtube.com/feeds/videos.xml?channel_id=UCg6gPGh8HU2U01vaFCAsvmQ \"Chris Titus Tech\" (Youtube)\nDebloat Windows and Learn Linux Videos\nhttps://www.youtube.com/feeds/videos.xml?channel_id=UCoryWpk4QVYKFCJul9KBdyw \"Switched To Linux\" (Youtube)\nhelping people make the switch to a Linux based desktop system and get real work done.\nhttps://www.youtube.com/feeds/videos.xml?channel_id=UCJf7AT2BzFT-31z0d-bc8Rg \"Windows, computers and Technology\" (Youtube)\nChannel run by a PC enthusiast\nhttps://www.youtube.com/feeds/videos.xml?channel_id=UC5UAwBUum7CPN5buc-_N1Fw \"The Linux Experiment\" (Youtube)\nJust Linux desktop news, simple tutorials, application spotlights, and opinion pieces\nhttps://www.youtube.com/feeds/videos.xml?channel_id=UCmyGZ0689ODyReHw3rsKLtQ \"Michael Tunnell\" (Youtube)\nHost of This Week in Linux weekly news show.\n\n</pre>\n    <h2>\n      Quick tip</h2>\n    <p>\n      Start newsboat with a different url list, for example</p>\n    <p>\n      <br>\n    </p>\n    <pre class=\"ql-syntax\" spellcheck=\"false\">newsboat -u ~/.config/newsboat/urls-trains\n</pre>\n    <p>\n      <code> </code>\n    </p>\n    <pre class=\"ql-syntax\" spellcheck=\"false\">\nhttps://www.youtube.com/feeds/videos.xml?channel_id=UCy55vDLvGWe9DqcLi7hFd_g \"Woodside Train Camera @woodsidetraincam\" (Youtube) (Trains)\n\n</pre>\n    <img\nsrc=\"hpr4434_image_1.png\"\n      alt=\"Screenshot - trains entry in Newsboat\" height=\"474\"\n      width=\"960\">\n    \n',318,0,0,'CC-BY-SA','Newsboat, Podcasts, Youtube',0,0,1),
(4426,'2025-07-21','My Command Line Applications',710,'Kevie goes over his must have command line applications whenever he installs a new distro','\n<p>\n<a href=\"https://tuxjam.otherside.network/\" rel=\"noopener noreferrer\" target=\"_blank\">\nTuxJam</a>\n co-host <a href=\"https://mastodon.me.uk/@kevie\" rel=\"noopener noreferrer\" target=\"_blank\">\nKevie</a>\n goes over the command line applications that he currently uses, January 2025 at the time of recording. These include:</p>\n<p>\n<br>\n</p>\n<ul>\n<li>\n<a href=\"https://www.mpg123.org/\" rel=\"noopener noreferrer\" target=\"_blank\">\nmpg123</a>\n - Playing audio streams</li>\n<li>\n<a href=\"https://ffmpeg.org/\" rel=\"noopener noreferrer\" target=\"_blank\">\nffmpeg</a>\n - Recording audio streams</li>\n<li>\n<a href=\"https://moc.daper.net/\" rel=\"noopener noreferrer\" target=\"_blank\">\nMOC</a>\n - Music player</li>\n<li>\n<a href=\"https://lynx.browser.org/\" rel=\"noopener noreferrer\" target=\"_blank\">\nLynx</a>\n - browser</li>\n<li>\n<a href=\"http://www.mutt.org/\" rel=\"noopener noreferrer\" target=\"_blank\">\nMutt</a>\n - email client</li>\n<li>\n<a href=\"https://github.com/dylanaraps/neofetch\" rel=\"noopener noreferrer\" target=\"_blank\">\nNeofetch</a>\n - System information</li>\n<li>\n<a href=\"https://weechat.org/\" rel=\"noopener noreferrer\" target=\"_blank\">\nWeechat</a>\n - IRC client</li>\n</ul>\n<p>\n<br>\n</p>\n\n\n',296,0,0,'CC-BY-SA','CLI, command line, applications, software',0,0,1),
(4427,'2025-07-22','Tale of Two (Wireless) Keyboards',256,'Comparing my old Logitech K400r with my new Rii K22','\n    <p>\n      Hi. My name is Moss Bliss, and this is Hacker Public Radio. This\n      is my 3rd HPR solo podcast, and you can also hear me on mintCast\n      and Full Circle Weekly News most weeks.</p>\n    <p>\n      <br>\n    </p>\n    <p>\n      I watch TV via streaming on a <a\nhref=\"https://www.lenovo.com/mx/es/p/computadoras-de-escritorio/thinkcentre/serie-m-tiny/thinkcentre-m700/11tc1mtm700\">Lenovo\n        ThinkCentre M700 Tiny</a>. I change streams and services using a\n      wireless keyboard, from my recliner across the room. For a couple\n      years, I was using a <a\n        href=\"https://www.logitech.com/en-us/shop/p/k400-plus-touchpad-keyboard\">Logitech\n        K400r,</a> and it worked pretty well. Good keys, nice touchpad,\n      a couple of extra features. It was kind of flimsy though, with\n      lots of flex and keys popping off from time to time -- not so much\n      of a problem as they popped back on well -- and then the plastic\n      on-off slider just wore out. It had a raised strip on the plastic\n      slider which served as something to grab with a nail, and it just\n      eventually wore down. So I went looking for something perhaps a\n      bit sturdier.</p>\n    <p>\n      <br>\n    </p>\n    <p>\n      What I found was a <a\n        href=\"http://www.riitek.com/product/267.html\">Rii Model K22</a>.\n      The box had some different numbers in addition to that, and the\n      label on the keyboard also had other numbers, but the best way to\n      find it is to look for the K22. It was a solid, mostly metal,\n      keyboard, so I bought it. No flex to speak of, and the keys are\n      made to not pop off.</p>\n    <p>\n      <br>\n    </p>\n    <p>\n      There are some caveats. The volume up-down and mute buttons are\n      part of the touchpad, not physical buttons, and are not lighted.\n      In a dark room, with a black keyboard and touchpad, it can be easy\n      to hit the wrong area of the touchpad. Also, I have yet to get the\n      scroll feature -- supposedly the right side of the touchpad -- to\n      work properly, but most of the time I can scroll with two fingers\n      on the touchpad. Also, and I have no clue why, it sometimes brings\n      up a menu I\'ve never seen before getting this keyboard. Yes, it\'s\n      pretty easy to make it go away, but still...</p>\n    <p>\n      <br>\n    </p>\n    <p>\n      Unlike the K400r, the K22 has a rechargeable battery built in, and\n      charges via USB-C. Also, the touchpad is significantly larger than\n      that of the K400r. I have had no problems with touchpad\'s\n      responsiveness, other than the issues already mentioned. I\'m not\n      really very good with touchpads, so perhaps I just haven\'t learned\n      the features.</p>\n    <p>\n      <br>\n    </p>\n    <p>\n      I paid $18 at Walmart for the K400r, although currently on Amazon\n      it is going for $39.89 with a cheaper model for $19.99. The\n      cheaper model has fewer buttons and a few cutbacks on design\n      features. The K400r has a 4.2 star rating, with 67% 5-star and 16%\n      4-star. The Amazon AI reports, \"Customers find the keyboard\n      functional and easy to use. They appreciate its responsive keys\n      and convenient setup. Many find it a good value for the price,\n      lightweight, and convenient to use from the couch. However,\n      opinions differ on the size and touchpad responsiveness.\" The\n      Logitech is wifi only, but it does come with the ubiquitous\n      Logitech wifi dongle.</p>\n    <p>\n      <br>\n    </p>\n    <p>\n      The Rii K22 is currently $24.99, minus a 15% coupon as of this\n      writing.&nbsp;It has a 3.9 star rating, with 56% 5-star and 15%\n      4-star. Amazon\'s AI reports, \"Customers find the keyboard works\n      well on all devices and has a responsive touchpad. They appreciate\n      its compact size and good build quality. However, some customers\n      have reported issues with missing keystrokes and keypad\n      malfunctions. There are mixed opinions on the touchpad, battery\n      life, and typing experience.\" The Rii keyboard can use wifi or\n      Bluetooth easily, and comes with a wifi dongle.</p>\n    <p>\n      <br>\n    </p>\n    <p>\n      While I\'m a touch typist, I don\'t use this keyboard for typing, so\n      I can\'t comment on its missing keystrokes. I\'m sure there are use\n      cases where the Rii K22 would not be the best fit, but for my use,\n      it is a huge step up from the K400r. The build quality and\n      materials alone make it perfect for my use, where I sit in my\n      recliner and use it to maneuver my browser and streams, and then\n      toss it in the corner when I\'m done.</p>\n    <p>\n      <br>\n    </p>\n    <p>\n      If you have a need for a wireless keyboard, I hope you will look\n      at the Rii K22. But that\'s it for me this time. Thank you for\n      listening, and I hope to be back soon.</p>',431,0,0,'CC-BY-SA','keyboard, wireless, wifi, bluetooth, rechargable, battery',0,0,1),
(4428,'2025-07-23','Fixing AVI Indexes',475,'How to fix missing or damaged AVI indexes','\n<p>\nI like to download video files from the Internet, and I have faced annoying problem: Broken or missing AVI indexes. My initial search for a solution was turning up paid software, but I persisted and found a nice open source solution using our old friend ffmeg. The command to use on the command line is:</p>\n<pre class=\"ql-syntax\" spellcheck=\"false\">\nffmpeg -i input.avi -c copy output.avi\r\n</pre>\n<p>\nI found this to be very quick and easy, and I got the new output file in seconds.</p>\n<h3>\nLinks</h3>\n<ul>\n<li>\n<a href=\"https://superuser.com/questions/4570/how-can-i-repair-a-broken-avi-file\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://superuser.com/questions/4570/how-can-i-repair-a-broken-avi-file</a>\n</li>\n<li>\n<a href=\"https://www.palain.com/\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.palain.com/</a>\n</li>\n</ul>\n<p>\n<br>\n</p>\n\n\n',198,0,0,'CC-BY-SA','AVI, Indexes',0,0,1),
(4432,'2025-07-29','YouTube Subscriptions 2025 #3',890,'Part three of my list of subscribed channels','\n<p>\nI am subscribed to a number of YouTube channels, and I am sharing them with you.</p>\n<h3>\nLinks:</h3>\n<ul>\n<li>\n<a href=\"https://www.youtube.com/@CATLOfficial\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.youtube.com/@CATLOfficial</a>\n</li>\n<li>\n<a href=\"https://www.youtube.com/@CGPGrey\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.youtube.com/@CGPGrey</a>\n</li>\n<li>\n<a href=\"https://www.youtube.com/@ChandraXray\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.youtube.com/@ChandraXray</a>\n</li>\n<li>\n<a href=\"https://www.youtube.com/@ChristelDeeOfficial\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.youtube.com/@ChristelDeeOfficial</a>\n</li>\n<li>\n<a href=\"https://www.youtube.com/@YogsCiv\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.youtube.com/@YogsCiv</a>\n</li>\n<li>\n<a href=\"https://www.youtube.com/channel/UCkAMVxoX7t-aq3dfNKTVsNg\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.youtube.com/channel/UCkAMVxoX7t-aq3dfNKTVsNg</a>\n</li>\n<li>\n<a href=\"https://www.youtube.com/@cleverdickfilms\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.youtube.com/@cleverdickfilms</a>\n</li>\n<li>\n<a href=\"https://www.youtube.com/@Cliffs_Edge\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.youtube.com/@Cliffs_Edge</a>\n</li>\n<li>\n<a href=\"https://www.youtube.com/@coffeebreaklanguages\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.youtube.com/@coffeebreaklanguages</a>\n</li>\n<li>\n<a href=\"https://www.youtube.com/@CONsoleRoom\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.youtube.com/@CONsoleRoom</a>\n</li>\n<li>\n<a href=\"https://www.youtube.com/@ContentLitwithSimonFay\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.youtube.com/@ContentLitwithSimonFay</a>\n</li>\n<li>\n<a href=\"https://www.youtube.com/@CouncilofGeeks\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.youtube.com/@CouncilofGeeks</a>\n</li>\n<li>\n<a href=\"https://www.youtube.com/@crashcourse\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.youtube.com/@crashcourse</a>\n</li>\n<li>\n<a href=\"https://www.youtube.com/@CrispyPro\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.youtube.com/@CrispyPro</a>\n</li>\n<li>\n<a href=\"https://www.palain.com/\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.palain.com/</a>\n</li>\n</ul>\n\n\n',198,106,0,'CC-BY-SA','YouTube, Channels, Subscriptions',0,0,1),
(4433,'2025-07-30','Nerd Responce to URandom Podcast',1626,'operat0r rambles about his leet setup for his desk and server','\n    <p>\n      Today we\'ll be talking about my setup based on a <a\n        href=\"https://urandom-podcast.info/\">Urandom</a> episode that\n      sparked my interest.</p>\n    <p>\n      And I\'m pretty sure they mentioned in that episode about having a\n      <a href=\"https://en.wikipedia.org/wiki/KVM_switch\">KVM</a> or a\n      USB switch we\'re both, but I know there was mention of a KVM, but\n      I wanted to ready to know specifically for my setup, what I found\n      successful instead of doing the whole KVM thing, or running an\n      HDMI cable forever, I found it doing a USB switch and just\n      manually pressing the switch on the inputs for your monitor, I\'ve\n      worked great for me.</p>',36,0,0,'CC-BY-SA','audio,video, hardware,automation,AV',0,0,1),
(4435,'2025-08-01','Philosophy, Cosmology, Physics, and just what is up with Hairy Larry\'s brain.',550,'Immanuel Kant was an influential philosopher back in the 18th he inspired this song.','\n<p>\nDJ Hairy Larry Presents Hairy Larry Playing Noumenology</p>\n<p>\nFrom The Archives Of Something Blue 2025-01-12</p>\n<p>\nThanks Marty, today I\'m going to improvise jazz piano on a song inspired by Immanuel Kant.</p>\n<p>\nNow Immanuel Kant was an influential philosopher back in the 18th century and he remains influential today. Kant created a dichotomy between phenomenon and noumena where phenomenon applies to things we can perceive with the senses and noumena are things that cannot be perceived. So I wrote this song called \"Noumenolgy\" about the study of things that cannot be perceived.</p>\n<p>\nAt first I thought this would be an ideal academic tenure, I mean, who could prove you wrong? But further thought led me to many scientists who deal with noumena on a daily basis.</p>\n<p>\nTake cosmology for instance, the study of the origins of the universe. Cosmologists have come up with the idea of the big bang, something that happened about 14 billion years ago. They check how fast the universe is expanding to come up with a number like that. And they keep building bigger and bigger telescopes because the farther away something is the longer it took for it\'s light to get to us which means we\'re really looking back into the past when we look at distant galaxies.</p>\n<p>\nWell, the big bang is noumenal. I mean, nobody\'s going to actually perceive it. So you could say that some cosmologists are, in fact, noumenologists.</p>\n<p>\nOr take particle physics. String theory, where we look at the stuff that makes protons and electrons, started as a mathematical exercise without proof in the real world. Definitely noumenologically inclined.</p>\n<p>\nBut those particle physicists kept building bigger and bigger cyclotrons banging atoms together to see what escaped and they started detecting the mathematically predicted sub-particles. I read last week that they discovered a particle that has mass going in one direction and no mass going in the other. Now, how does that work?</p>\n<p>\nMoving on from philosophy, cosmology, and physics to noumena that actually affect ordinary people. Songwriters have written more songs about it than any other subject. Stories about it finance the publishing industry allowing them to publish books on philosophy and cosmology. And Jesus preached about it as his core message. Of course, I\'m talking about love, something everyone experiences that has no phenomenal existence.</p>\n<p>\nYou can\'t see it. You can\'t touch it. What is love? remains a valid philosophical question. So there we are. Back to Kant.</p>\n<p>\nOn the song \"Noumenology\" I scat sing with a bebop and a doowop replacing actual words. So I got to thinking this morning, maybe I should write a lyric? Maybe about a cosmologist and a physicist who fall in love. Or even better a cosmologist and a physicist who bond over their shared their love for noumenology.</p>\n<p>\nWhich brings us to the big question. Just what is up with Hairy Larry\'s brain and how does he come up with this stuff? I\'m going to reveal my secret. Sometimes it\'s dreams. And sometimes, in the morning, when I\'m not ready to get out of bed, you know what I mean, you\'ve been there, my mind just goes tick tick tick and the next thing you know I\'ve written another podcast.</p>\n<p>\nSo now, from my \"Hairy Larry Livestreams\" album, here I am scat singing to \"Noumenology\".</p>\n<p>\nDJ Hairy Larry Presents Hairy Larry Playing Noumenology</p>\n<p>\nFrom The Archives Of Something Blue 2024-08-11</p>\n<p>\n<a href=\"https://sbblues.com/2025/01/13/dj-hairy-larry-presents-hairy-larry-playing-noumenology/\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://sbblues.com/2025/01/13/dj-hairy-larry-presents-hairy-larry-playing-noumenology/</a>\n</p>\n<p>\nHairy Larry Livestream</p>\n<p>\nSomething Blue Archives</p>\n<p>\n<a href=\"https://archive.org/details/hairylarrylivestreams\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://archive.org/details/hairylarrylivestreams</a>\n</p>\n<p>\nSomething Blue Archives - List Of Concerts</p>\n<p>\n<a href=\"https://archive.org/details/somethingbluearchives?sort=-publicdate\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://archive.org/details/somethingbluearchives?sort=-publicdate</a>\n</p>\n<p>\nmusic</p>\n<p>\nAnd that\'s Hairy Larry singing \"Noumenology\". Don\'t miss Something Blue, Saturday night at 10:00, for more piano improvisatation from my \"Hairy Larry Livestreams\" album. Plus Sun Ra, David Dellacroce, Lee Ritenour, and Dave Grusin.</p>\n<p>\nAnd that\'s Hairy Larry singing \"Noumenology\". Don\'t miss Something Blue, tonight at 10:00, for more piano improvisatation from my \"Hairy Larry Livestreams\" album. Plus Sun Ra, David Dellacroce, Lee Ritenour, and Dave Grusin.</p>\n\n\n',436,22,0,'CC-BY-SA','philosophy, cosmology, physics, music, Noumenology, jazz, composer, writer, podcaster',0,0,1),
(4451,'2025-08-25','Game Modding',715,'You don\'t have time to play games all day? ','\n    <p>GTA Family friendly </p>\n    <p><a\n        href=\"https://www.gta5-mods.com/scripts/family-friendly-free-roaming\">https://www.gta5-mods.com/scripts/family-friendly-free-roaming</a></p>\n    <p>FO76:</p>\n    <p>Glowing Items</p>\n    <p><a href=\"https://www.nexusmods.com/fallout76/mods/102\">https://www.nexusmods.com/fallout76/mods/102</a></p>\n    <p>Fast Terminals - Instantly text display</p>\n    <p><a href=\"https://www.nexusmods.com/fallout76/mods/1316\">https://www.nexusmods.com/fallout76/mods/1316</a></p>\n    <p>Perk Loadout Manager</p>\n    <p><a href=\"https://www.nexusmods.com/fallout76/mods/124\">https://www.nexusmods.com/fallout76/mods/124</a></p>\n    <p>Bobblehead ESP</p>\n    <p><a href=\"https://www.nexusmods.com/fallout76/mods/2231\">https://www.nexusmods.com/fallout76/mods/2231</a></p>\n    <p>Recipes and Plans Glow</p>\n    <p><a href=\"https://www.nexusmods.com/fallout76/mods/84\">https://www.nexusmods.com/fallout76/mods/84</a></p>\n    <p>RatMonkeys Glowing Caps Stash Tins</p>\n    <p><a href=\"https://www.nexusmods.com/fallout76/mods/98\">https://www.nexusmods.com/fallout76/mods/98</a></p>\n    <p>Glowing Map Fragments</p>\n    <p><a href=\"https://www.nexusmods.com/fallout76/mods/542\">https://www.nexusmods.com/fallout76/mods/542</a></p>\n    <p>ore_glow</p>\n    <p><a href=\"https://www.nexusmods.com/fallout76/mods/207\">https://www.nexusmods.com/fallout76/mods/207</a></p>\n    <p>Lockpick Bar 76 Reskin</p>\n    <p><a href=\"https://www.nexusmods.com/fallout76/mods/1004\">https://www.nexusmods.com/fallout76/mods/1004</a></p>\n    <p>schedule1:</p>\n    <p>Minimap - Full Version</p>\n    <p><a href=\"https://www.nexusmods.com/schedule1/mods/113\">https://www.nexusmods.com/schedule1/mods/113</a></p>',36,0,0,'CC-BY-SA','gaming',0,0,1),
(4437,'2025-08-05','One Possible Definition of \"Hacker\"',572,'A Definition of Hacker','\n<p>\nHello folks of Hacker Public Radio.</p>\n<p>\n<br>\n</p>\n<p>\n\"A hacker is someone who invades computers\". \"A hacker is someone who codes\". \"Hacker is someone in love with technology\". \"Hacker is a geek, who is a person who likes nerdy things\".</p>\n<p>\n<br>\n</p>\n<p>\nAll of those are more or less correct and of course you know someone that applies one of those popular concepts of the term. I\'ll defend one other, that can be as imprecise as every other, but, I feel, brings the concept closer to the general meaning of the word: \"A hacker is someone in pursuit of efficiency and knowledge, be it in some specific field or maybe in anything that can be known\".</p>\n<p>\n<br>\n</p>\n<p>\nTo be a hacker is more a characteristic of the brain than of something someone does. It\'s targeted to what achieve emotional, relevant responses to the person, that has to do with purpose. Everyone has a purpose, and we can see purpose as a matrix.</p>\n<p>\n<br>\n</p>\n<p>\nPURPOSE:</p>\n<p>\n<br>\n</p>\n<p>\n</p>\n<p>\nI&nbsp;&nbsp;|&nbsp;</p>\n<p>\nM | Relevant    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;Relevant</p>\n<p>\nP&nbsp;| purpose&nbsp;&nbsp;&nbsp;     &nbsp;&nbsp;&nbsp;| purpose</p>\n<p>\nO&nbsp;| + no success&nbsp;&nbsp;| + success</p>\n<p>\nR&nbsp;|&nbsp;- - - - - - - - - - - - - - - -</p>\n<p>\nT&nbsp;|</p>\n<p>\nA&nbsp;| Not relevant    &nbsp;| Not relevant</p>\n<p>\nN&nbsp;| purpose&nbsp;&nbsp;       &nbsp;&nbsp;&nbsp;| purpose</p>\n<p>\nC&nbsp;| + no success  &nbsp;| + success</p>\n<p>\nE&nbsp;|</p>\n<p>\n* * * * * * * * * * * * * *</p>\n<p>\nSUCCESS </p>\n<p>\n<br>\n</p>\n<p>\nWhere is the happy hacker located? Let\'s remember, a hacker is someone that seeks out meaning. The definition proposed in this show is: \"A hacker is someone in pursuit of efficiency and knowledge\". So, the blessed hacer is the one on the top of the matrix of purpose: it is someone that has a purpose that is relevant to him. He does not need success, he needs a reason to pursue it, even though the results are not always 100% dependent on him.</p>\n<p>\n<br>\n</p>\n<p>\nIf someone gives him (or her, of course) one ideia of purpose, and he adopts it as his personal search, he can achieve great success&nbsp; be it on any area you can imagine. But, if it is not of his heart, he will end up being less than he could be, feeling unsuccessful. Because, a hacker is not searching for efficiency on the void: he needs his brain inputted in what has relevance on this own, intimate understanding of the universe. And this is why \"a hacker is someone in pursuit of knowledge and efficiency\". Both together, conveying as a meaning, a meaning the hacker dedicates himself to, and that makes him happy, even in days, months or years without observable results.</p>\n<p>\n<br>\n</p>\n<p>\nThat need of purpose is not common to humanity.</p>\n<p>\n<br>\n</p>\n<p>\nThere are many many people happy in working on what comes at hand, receiving the payment, ranting about the payment and living the life Learning, pursuing purposes, lacking empathy (as hackers sometimes do), are not traits of personality of many many people. They do not try to use their brains to maximum learning, to have transcending conversations, to, eventually, teaching other people, formally or informally.</p>\n<p>\n<br>\n</p>\n<p>\nWhy this contrast is presented? Because a hacker is someone different, not only in the tastes and preferences. It\'s not a matter of what you like more, or how you prefer to do or not to do things. It\'s an entirely differen mind, more sensitive in some parts, more out-of-this-world in some others.</p>\n<p>\n<br>\n</p>\n<p>\nThose were some points of a possible definition of hacker — that involves efficiency and knowledge as a particular composition of his thinking and feeling structure Passing through the blessings and difficulties of this particular mode of seeing the world, the universe and so on.</p>\n<p>\n<br>\n</p>\n<p>\nSo this is why there are computer hackers, life hackers, hackers, simply... and not everyone will end their lives knowing how to make a computer say Hello World. — Because a hacker can know and do many things — like crocheting clothes on Second Life — but not necessarily will have any interest in programming</p>\n<p>\n<br>\n</p>\n<p>\nAnd every hacker is different.</p>\n<p>\n<br>\n</p>\n<p>\nAre you one? Do you think someone can become a hacker or is this a form factor, a person comes to be without operation of the will?</p>\n<p>\n<br>\n</p>\n<p>\nYou may leave a comment or, record an episode here at Hacker Public Radio.</p>\n<p>\n<br>\n</p>\n<p>\nHere with you is Antoine.</p>\n<p>\n<br>\n</p>\n<p>\nBye bye.</p>\n\n\n',441,0,0,'CC-BY-SA','Hacker definition, concept of hacker, Matrix of purpose',0,0,1),
(4438,'2025-08-06','doodoo zero ',394,'episode zero in a mini-series about creating a todo application','\n    <p>\n      This episode is the \"why?\" episode. Why am I doing this? </p>\n    <p>\n      <br>\n    </p>\n    <p>\n      code for doodoo is being posted to <a\n        href=\"https://gitlab.com/jezra/doodoo\">https://gitlab.com/jezra/doodoo</a></p>\n    <a href=\"https://gitlab.com/jezra/doodoo\"> </a>',243,0,0,'CC-BY-SA','python, software development, dung',0,0,1),
(4439,'2025-08-07','Rejecting a show ?',1401,'The reason given is  \"using HPR as a means to push a particular product or view\" ','\n<p>\nA reading of the comments on the Mail list discussion <a href=\"https://lists.hackerpublicradio.com/pipermail/hpr/2025-July/004883.html\" rel=\"noopener noreferrer\" target=\"_blank\">\nRejecting a show on the grounds that it is \"using HPR as a means to push a particular product or view\" </a>\n&nbsp;</p>\n<p>\n<br>\n</p>\n<p>\nSee: <a href=\"https://lists.hackerpublicradio.com/pipermail/hpr/2025-July/004883.html\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://lists.hackerpublicradio.com/pipermail/hpr/2025-July/004883.html</a>\n</p>\n\n\n',30,0,1,'CC-BY-SA','HPR, policy, Proselytism',0,0,1),
(4444,'2025-08-14','Introduction into the E.R.P. application called Odoo',1475,'In this podcast I give a small introduction into the E.R.P. application called Odoo. ','\n    <p>\n      <b>Odoo</b> is a business management software suite developed in\n      Belgium. It includes modules for <a\n        href=\"https://en.wikipedia.org/wiki/Customer_relationship_management\"\n        title=\"Customer relationship management\">customer relationship\n        management</a>, <a\n        href=\"https://en.wikipedia.org/wiki/E-commerce\"\n        title=\"E-commerce\">e-commerce</a>, billing, accounting,\n      manufacturing, warehouse operations, project management, and\n      inventory management.<br>\n    </p>\n    <div id=\"siteSub\" class=\"noprint\">\n      <a href=\"https://en.wikipedia.org/wiki/Odoo\">From Wikipedia, the\n        free encyclopedia</a></div>\n    <h3>Links</h3>\n    <ul>\n      <li>\n        Main odoo company website: <a href=\"https://www.odoo.com\">https://www.odoo.com</a></li>\n      <li>\n        Odoo Community Association: <a\n          href=\"https://www.odoo-community.org\">https://www.odoo-community.org</a></li>\n      <li>\n        Odoo source repository: <a href=\"https://github.com/odoo/odoo\">https://github.com/odoo/odoo</a></li>\n    </ul>',369,126,0,'CC-BY-SA','odoo,erp,application',0,0,1),
(4449,'2025-08-21','How to install Odoo 18 on a virtual machine',1621,'In this podcast I explain how to install Odoo 18 on a (virtual) machine and start using it.','\n    <p>Create a vm with Debian 12 and at least 4 Gb of RAM and say 20-30\n      Gb disc space.</p>\n    <p>installation</p>\n    <p>============</p>\n    <p>sudo apt install -y gpg postgresql </p>\n    <p>wget -q -O - <a href=\"https://nightly.odoo.com/odoo.key\">https://nightly.odoo.com/odoo.key</a>\n      | sudo gpg --dearmor -o\n      /usr/share/keyrings/odoo-archive-keyring.gpg</p>\n    <p>echo \'deb\n      [signed-by=/usr/share/keyrings/odoo-archive-keyring.gpg] <a\n        href=\"https://nightly.odoo.com/18.0/nightly/deb/\">https://nightly.odoo.com/18.0/nightly/deb/</a>\n      ./\' | sudo tee /etc/apt/sources.list.d/odoo.list</p>\n    <h1 id=\"odoo-ce-latest-nightly-build\">Odoo CE latest nightly build</h1>\n    <p><a\nhref=\"https://nightly.odoo.com/18.0/nightly/deb/odoo_18.0.latest_all.deb\">https://nightly.odoo.com/18.0/nightly/deb/odoo_18.0.latest_all.deb</a></p>\n    <p>sudo apt-get update &amp;&amp; sudo apt-get install -y odoo</p>\n    <h1 id=\"install-wkhtmltopdf\">Install wkhtmltopdf</h1>\n    <p>wget -O wkhtmltox_0.12.6.1-3.bookworm_amd64.deb <a\nhref=\"https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6.1-3/wkhtmltox_0.12.6.1-3.bookworm_amd64.deb\">https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6.1-3/wkhtmltox_0.12.6.1-3.bookworm_amd64.deb</a></p>\n    <p>dpkg -i wkhtmltox_0.12.6.1-3.bookworm_amd64.deb</p>\n    <p>apt install -f -y</p>\n    <p>apt install -y python3-xlwt python3-num2words\n      python3-phonenumbers</p>\n    <p>systemctl status odoo</p>\n    <p>First use</p>\n    <p>=========</p>\n    <p>http://<your-server-ip>:8069/</your-server-ip></p>\n    <p>Will relocate to /web/database/selector</p>\n    <p>Master Password to protect this form</p>\n    <p>Database Name.</p>\n    <p>Email: your email</p>\n    <p>Password: your desired password</p>\n    <p>Phone Number: optional</p>\n    <p>Language: your desired language</p>\n    <p>Country: select your country</p>\n    <p>Demo Data: select to get demo data.</p>\n    <p>Click \"Create database\"</p>\n    <p>Wait.</p>\n    <p>Login.</p>\n    <p>You see /odoo/apps.</p>\n    <p>Upper left square-icon shows \'Apps\' and \'Settings\'.</p>\n    <p>Let\'s install a simple app: contacts</p>\n    <p>Search in the search bar for \"contacts\" and when displayed, click\n      the \'Activate\' button of the \"contacts\" app.</p>\n    <p>When done, the same menu now contains: Discuss, To-do, contacts,\n      Project, Email Marketing, Surveys, Employees </p>\n    <p>and the earlier mentioned Apps and Settings.</p>\n    <p>Go back to \'Apps\' and Activate the \"Sales\" app. This will also\n      install the \"Invoicing\" app.</p>\n    <p>Time to start playing around.</p>\n    <p>Some tech stuff, interesting locations</p>\n    <p>===============</p>\n    <p>/etc/odoo/odoo.conf</p>\n    <p>Here you can add additional addons later:\n      /var/lib/odoo/.local/share/Odoo/addons/18.0/</p>\n    <p>Here are all files uploaded to Odoo: find\n      /var/lib/odoo/.local/share/Odoo/filestore/</p>\n    <p>This is where user sessions are administrated: find\n      /var/lib/odoo/.local/share/Odoo/sessions/</p>\n    <p>And these are the main locations where the Odoo program can be\n      found.</p>\n    <p>ls -al /usr/lib/python3/dist-packages/odoo/</p>\n    <p>ls -al /usr/lib/python3/dist-packages/odoo/addons/</p>\n    <p>ls -al /usr/lib/python3/dist-packages/odoo/addons/ | wc</p>',369,126,0,'CC-BY-SA','odoo,erp,application',0,0,1),
(4442,'2025-08-12','Orthopedagogiek - what it is.',502,'Manon explains what this field of care is and why we need it.','\n    <p>\n      In today\'s show, Manon describes the field of Orthopedagogiek is,\n      This is an established field in care in the Netherlands and other\n      European Countries. It takes a broader view of identifying issues\n      with people in relation to their surroundings.</p>\n    <h3>\n      Links.</h3>\n    <ul>\n      <li>\n        <a href=\"https://www.nvo.nl/english-information\" rel=\"noopener\n          noreferrer\" target=\"_blank\">\n          https://www.nvo.nl/english-information</a> An explanation from\n        the </li>\n      <li>\n        <a href=\"https://nl.wikipedia.org/wiki/Orthopedagogiek\"\n          rel=\"noopener noreferrer\" target=\"_blank\">\n          https://nl.wikipedia.org/wiki/Orthopedagogiek</a> (Note the\n        English translation points to a different field)</li>\n      <li>\n        <a href=\"https://iris.who.int/handle/10665/345301\" rel=\"noopener\n          noreferrer\" target=\"_blank\">\n          https://iris.who.int/handle/10665/345301</a> World Health\n        Organization. (2021). Comprehensive mental health action plan\n        2013–2030. </li>\n      <li>\n        <a href=\"https://ikkanhet.nl/orthopedagoog-gezocht-ggz-in-nood/\"\n          rel=\"noopener noreferrer\" target=\"_blank\">\n          https://ikkanhet.nl/orthopedagoog-gezocht-ggz-in-nood/</a> The NVO article (In Dutch)</li>\n    </ul>\n    <p>\n      <br>\n    </p>\n    <p>\n    </p>',449,71,0,'CC-BY-SA','Orthopedagogiek, Mental Health, Netherlands',0,0,1),
(4446,'2025-08-18','Calling on AI to resque HPR',1183,'LLM chatbots are going to explain us how to save Hacker Public Radio','\n<p>\nToo much episodes came from the reserve queue. So this is the ideal moment to give myself a good feeling and upload an episode to HPR - feeling really important about how I helped out the project.</p>\n<p>\n<br>\n</p>\n<p>\nBut then again... I\'m lazy... so I called in the help of AI</p>\n<p>\nAnd I\'m not a bit lazy... so I called in the help of SIX LLM chatbots.</p>\n<p>\nI asked them all how we can save HPR from oblivion.</p>\n<p>\n<br>\n</p>\n<p>\nThe good news: all six chatbots agree that HPR isn\'t going away.</p>\n<p>\nThe bad news: they have different opinions on all the rest.</p>\n<p>\n<br>\n</p>\n<p>\nReviewing the differences between different chatbots and how they answer questions...</p>\n<p>\nHere are the threads:</p>\n<ul>\n<li>\nChatGPT: <a href=\"https://chatgpt.com/share/6891b9e1-c33c-8009-8405-1ebe1bf246b9\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://chatgpt.com/share/6891b9e1-c33c-8009-8405-1ebe1bf246b9</a>\n</li>\n<li>\nGrok: <a href=\"https://grok.com/share/c2hhcmQtMw%3D%3D_58a5c45c-97ab-404f-95e6-e5d72426674d\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://grok.com/share/c2hhcmQtMw%3D%3D_58a5c45c-97ab-404f-95e6-e5d72426674d</a>\n</li>\n<li>\nGemini: <a href=\"https://g.co/gemini/share/067ba2876c99\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://g.co/gemini/share/067ba2876c99</a>\n</li>\n<li>\nClaude: <a href=\"https://claude.ai/share/7a63eae0-e1f3-46ea-affd-85573bbab72c\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://claude.ai/share/7a63eae0-e1f3-46ea-affd-85573bbab72c</a>\n</li>\n</ul>\n<p>\nFor Mistral (Le Chat) - I accidentally copied the wrong link, so I don\'t have it anymore.</p>\n<p>\nFor Deepseek: this one doesn\'t have a share function. I have it in offline form though.</p>\n\n\n',433,0,0,'CC-BY-SA','AI, llm, comparison',0,0,1),
(4445,'2025-08-15','doodoo one',580,'episode 1 of a miniseries about creating a todo app','    <p> Can\'t keep track of a notebook ?<br>\n    </p>\n    <p>Always know where your phone is ?<br>\n    </p>\n    <p>Want to keep track of your <a\n        href=\"https://gitlab.com/jezra/doodoo\" rel=\"noopener noreferrer\"\n        target=\"_blank\">doodoo</a> ?</p>\n    <p> <a href=\"https://microdot.readthedocs.io/en/latest/index.html\"\n        rel=\"noopener noreferrer\" target=\"_blank\"> microdot web\n        framework</a> </p>',243,0,0,'CC-BY-SA','python, html, javascript, todo',0,0,1),
(4452,'2025-08-26','Turn Coffee Into Code - Slogans from Tech(Companies, App, People)',454,'5 Slogans interesting, from software I like','\n    <ul>\n      <li>\n        <strong>\n          Private coffee</strong>\n      </li>\n    </ul>\n    <p>\n      From the website:</p>\n    <p>\n      \"<em>\n        Private.coffee is a non-profit association dedicated to\n        supporting privacy and digital sovereignty.&nbsp;</em>\n    </p>\n    <p>\n      <br>\n    </p>\n    <p>\n      <em>\n        We provide privacy-respecting alternatives to common services,\n        educate users about digital privacy, and advocate for a more\n        private and secure internet.</em>\n      \"</p>\n    <p>\n      <br>\n    </p>\n    <p>\n      I came to it while searching for a Matrix homeserver in <a\n        href=\"https://joinmatrix.org/\">https://joinmatrix.org/</a></p>\n    <p>\n      <br>\n    </p>\n    <p>\n      Slogan: \"Open-source software is best served hot\"</p>\n    <p>\n      Site: <a href=\"https://private.coffee/\">https://private.coffee/</a></p>\n    <p>\n      <br>\n    </p>\n    <ul>\n      <li>\n        <strong>\n          Fluffychat</strong>\n      </li>\n    </ul>\n    <p>\n      From the website:</p>\n    <p>\n      \"<em>\n        FluffyChat is an open source, nonprofit and cute [matrix] client\n        written in Flutter. The goal of the app is to create an easy to\n        use instant messenger which is open source and accessible for\n        everyone.</em>\n      \"</p>\n    <p>\n      <br>\n    </p>\n    <p>\n      The most pleasant messenger I\'ve ever used. Beautiful (and that\'s\n      the meaning of \"cute\"), can be used on the web or app.</p>\n    <p>\n      <br>\n    </p>\n    <p>\n      Once, the developer, Krille-chan, I think on Mastodon, said some\n      users thought \"cute\" was not professional. But, for him, it was a\n      way to convey the meaning of beautiful. So, the slogan stays as:</p>\n    <p>\n      <br>\n    </p>\n    <p>\n      Slogan: \"The cutest messenger in [matrix]\"</p>\n    <p>\n      Site: <a href=\"https://fluffychat.im/\" rel=\"noopener noreferrer\"\n        target=\"_blank\">\n        https://fluffychat.im/</a>\n    </p>\n    <p>\n      <br>\n    </p>\n    <ul>\n      <li>\n        <strong>\n          Soatok blog</strong>\n      </li>\n    </ul>\n    <p>\n      From the website:</p>\n    <p>\n      \"<em>\n        Writings about information security, cryptography, software, and\n        humanity, from a member of the furry fandom.</em>\n      \"</p>\n    <p>\n      <br>\n    </p>\n    <p>\n      A respected man that studies and works with cryptography. Among\n      other themes, he analyses messengers, and protocols in general,\n      and explains — sometimes discovering grave vulnerabilities. His\n      post recommending to not use Session made the app developers itch.\n      <a href=\"https://mastodon.social/@session/113842153274328231\"\n        rel=\"noopener noreferrer\" target=\"_blank\">\n        They responded</a> to Soatok on their social media (without\n      mentioning his name, only \"a blogger\") saying the points raised\n      were unfounded.</p>\n    <p>\n      <br>\n    </p>\n    <p>\n      Slogan (if not simply the title...): \"Dhole moments\" (Dhole is an\n      Asian wild dog)</p>\n    <p>\n      Site: <a href=\"https://soatok.blog/\" rel=\"noopener noreferrer\"\n        target=\"_blank\">\n        https://soatok.blog/</a>\n    </p>\n    <p>\n      <br>\n    </p>\n    <ul>\n      <li>\n        <strong>\n          4d2</strong>\n      </li>\n    </ul>\n    <p>\n      From the website:</p>\n    <p>\n      \"<em>\n        So it\'s come to this...you\'ve met us</em>\n    </p>\n    <p>\n      <em>\n        Since 2001, 4d2 dot org has worked to provide interested folks\n        with free access to communication and collaboration services in\n        a mixed Linux/BSD environment. We focus on technical\n        transparency, user privacy and free speech, with a dash of\n        cypherpunk and retrocomputing for good measure</em>\n      \".</p>\n    <p>\n      <br>\n    </p>\n    <p>\n      It\'s like the Private Coffee we\'ve seen before. I discovered this\n      one first, looking for Matrix homeserver to try. This one has the\n      advantage of having WhatsApp bridge.</p>\n    <p>\n      <br>\n    </p>\n    <p>\n      And so I wanted to present this one, but no slogans, so I made a\n      concession: not a slogan, but the nonprofit corporation that\n      operates 4d2: \"All Computers Are Brilliant\" (Inc.)</p>\n    <p>\n      Site: <a href=\"https://4d2.org/\" rel=\"noopener noreferrer\"\n        target=\"_blank\">\n        https://4d2.org/</a>\n    </p>\n    <p>\n      <br>\n    </p>\n    <ul>\n      <li>\n        <strong>\n          Frugalware Linux</strong> (<em>\n          in memoriam</em>\n        )</li>\n    </ul>\n    <p>\n      I loved this distribution! I felt the king on the hills with it,\n      still on my initial enchantment with Linux.</p>\n    <p>\n      From the website:</p>\n    <p>\n      \"<em>\n        Frugalware is a general purpose linux distribution, designed for\n        intermediate users (who are not afraid of text mode).</em>\n    </p>\n    <p>\n      <br>\n    </p>\n    <p>\n      <em>\n        We try to make Frugalware as simple as possible while not\n        forgetting to keep it comfortable for the user. We try to ship\n        fresh and stable software, as close to the original source as\n        possible, because in our opinion most software is the best as\n        is, and doesn’t need patching.</em>\n      \"</p>\n    <p>\n      <br>\n    </p>\n    <p>\n      Slogan: \"Let\'s make things frugal\"</p>\n    <p>\n      Site: <a href=\"https://frugalware.org/\" rel=\"noopener noreferrer\"\n        target=\"_blank\">\n        https://frugalware.org/</a>\n    </p>\n    <p>\n      <br>\n    </p>\n    <p>\n      Those are some that come from what I use or used and that I\n      separated to talk to you all.</p>\n    <p>\n      <br>\n    </p>\n    <p>\n      You may find around some developers with this one: \"transforming\n      coffee into code\". Cool, too. I only don\'t remember one\n      specifically that says so.</p>\n    <p>\n      <br>\n    </p>\n    <p>\n      Here, with you, is Antoine.</p>\n    <p>\n      And I thank you for listening.</p>\n    <p>\n      <br>\n    </p>\n    <p>\n      Bye, bye!</p>',441,0,0,'CC-BY-SA','slogans, soatok, furry, matrix',0,0,1),
(4447,'2025-08-19','Interview with Margreet Pakkert at the Flevoland 2025 Field Work Archaeology Open Day.',799,'The shipwrek is a Dutch Waterschip with two chambers to keep fish alive until reaching port.','<p> Today we talk with Margreet Pakkert, who was kind enough to record an interview during the <a href=\"https://www.cultureelerfgoed.nl/actueel/nieuws/2025/07/14/veldschool-scheepsarcheologie-flevoland-2025-van-start\" rel=\"noopener noreferrer\" target=\"_blank\"> Flevoland 2025 Field Work Archaeology Open Day</a> . The students were supervised as they document a Dutch <a href=\"https://nl.wikipedia.org/wiki/Waterschip\" rel=\"noopener noreferrer\" target=\"_blank\"> Waterschip</a> . This is a type of fishing vessel that was common in the <a href=\"https://en.wikipedia.org/wiki/Zuiderzee\" rel=\"noopener noreferrer\" target=\"_blank\"> Zuiderzee</a> before it was <a href=\"https://en.wikipedia.org/wiki/Zuiderzee_Works\" rel=\"noopener noreferrer\" target=\"_blank\"> reclaimed</a> to form the province of <a href=\"https://en.wikipedia.org/wiki/Flevoland\" rel=\"noopener noreferrer\" target=\"_blank\"> Flevoland</a> . As fish were caught they were kept alive in two chambers in the boat that were open to the sea¸ allowing the fishermen to deliver the freshest of fish to <a href=\"https://asterix.fandom.com/wiki/Unhygienix\" rel=\"noopener\nnoreferrer\" target=\"_blank\"> their market</a> .</p> <p> As the water table in Flevoland is lowering, the shipwreck will soon rot away. So the team are out teaching students the craft of documenting the find and preserving what is unique. The ship itself sank between 1520 and 1530.</p>\n\n<video controls width=\"800\">\n  <source src=\"hpr4447_VID_20250802_100139Z.mp4\" type=\"video/mp4\" />\n</video>\n\n<p>\nDownload <a href=\"hpr4447_VID_20250802_100139Z.mp4\">hpr4447_VID_20250802_100139Z.mp4</a> video.\n</p>\n\n\n<h2> Links</h2>\n<ul>\n<li> <a href=\"https://en.wikipedia.org/wiki/Zuiderzee\" rel=\"noopener noreferrer\" target=\"_blank\"> Zuiderzee</a> </li> \n<li> <a href=\"https://en.wikipedia.org/wiki/Zuiderzee_Works\" rel=\"noopener noreferrer\" target=\"_blank\"> Zuiderzee Works</a></li>\n<li> <a href=\"https://en.wikipedia.org/wiki/Flevoland\" rel=\"noopener noreferrer\" target=\"_blank\"> Flevoland</a> </li> \n<li> <a href=\"https://nl.wikipedia.org/wiki/Waterschip\" rel=\"noopener noreferrer\" target=\"_blank\"> Waterschip</a> in Dutch</li>\n<li> <a href=\"https://www.cultureelerfgoed.nl/actueel/nieuws/2025/07/14/veldschool-scheepsarcheologie-flevoland-2025-van-start\" rel=\"noopener noreferrer\" target=\"_blank\"> Veldschool Scheepsarcheologie Flevoland 2025 van start</a> in Dutch</li>\n<li><a href=\"https://en.wikipedia.org/wiki/Dendroarchaeology\">Dendroarchaeology</a> </li>\n<li> <a href=\"https://asterix.fandom.com/wiki/Unhygienix\" rel=\"noopener noreferrer\" target=\"_blank\"> Unhygienix</a> </li>\n<li> <a href=\"https://en.wikipedia.org/wiki/Maritime_archaeology\" rel=\"noopener noreferrer\" target=\"_blank\"> Maritime archaeolog</a></li>\n<li> <a href=\"https://en.wikipedia.org/wiki/Photogrammetry\" rel=\"noopener noreferrer\" target=\"_blank\"> Photogrammetry</a></li>\n<li> <a href=\"https://sketchfab.com/cultural_and_maritimeheritage/collections/zo31-an-early-16th-century-watership-c0be3aa7658c46f19b0c073a3baa36b9\" rel=\"noopener noreferrer\" target=\"_blank\"> 3D Modle of Ship</a></li> \n<li> <a href=\"https://en.wikipedia.org/wiki/Lidar\" rel=\"noopener noreferrer\" target=\"_blank\"> Lidar</a> </li>\n<li> <a href=\"https://www.artec3d.com/\" rel=\"noopener noreferrer\" target=\"_blank\"> Artec 3D scanners</a> </li>\n</ul>\n\n<h2>Images</h2>\n\n<h3>The front/Fore</h3>\n\n<p>\nThere is a large event tent often used for weddings, covering the escalation area.\nThe legs of two people can be seen standing on the grass above two archaeologists who are in the wreck.\nFrom the grass level, there is a 30cm/1 Foot layer of sandy soil until there wreck begins.\nThe body of the ship is exposed and we can see the interlocking planks that form the hull.\nThere is a \"stepping stone\" path made from sand bags from the keel/center spine of the ship, to the surface.\nOne archaeologist stands at the end of this path with a bucket and at his feet is a scoop that he is using to fill it.\nThe lower part of the ship is filling with water that is seeping in from the surrounding ground.\nAnother archaeologist stands in the Bow/Front of the ship with a drawing board where she is making a record of the find.\nThe view down the tent from front to back. The ship lies about 15\nDegrees to port (left in direction of travel)\nA photographer is taking pictures.\n</p>\n\n</p>\n<a href=\"hpr4447_image_20250802_103955Z.jpg\"><img src=\"hpr4447_image_20250802_103955Z_tn.jpg\" ></a>\n<a href=\"hpr4447_image_20250802_100136Z.jpg\"><img src=\"hpr4447_image_20250802_100136Z_tn.jpg\" ></a>\n<a href=\"hpr4447_image_20250802_125549Z.jpg\"><img src=\"hpr4447_image_20250802_125549Z_tn.jpg\" ></a>\n<a href=\"hpr4447_image_20250802_125553Z.jpg\"><img src=\"hpr4447_image_20250802_125553Z_tn.jpg\" ></a>\n<a href=\"hpr4447_image_20250802_125522Z.jpg\"><img src=\"hpr4447_image_20250802_125522Z_tn.jpg\" ></a>\n<a href=\"hpr4447_image_20250802_125530Z.jpg\"><img src=\"hpr4447_image_20250802_125530Z_tn.jpg\" ></a>\n<a href=\"hpr4447_image_20250802_125541Z.jpg\"><img src=\"hpr4447_image_20250802_125541Z_tn.jpg\" ></a>\n\n<h3>The <a href=\"https://nl.wikipedia.org/wiki/Bun_(schip)\">bun/fish compartment</a></h3>\n<p>\nIn the body of the ship we see three wooden partitions, that form\nthe two chambers that were used to keep the fish alive.\nAlthough not visible to the untrained eye, there are holes to the\noutside sea.\n</p>\n<a href=\"hpr4447_image_20250802_100151Z.jpg\"><img src=\"hpr4447_image_20250802_100151Z_tn.jpg\" ></a>\n<a href=\"hpr4447_image_20250802_125435Z.jpg\"><img src=\"hpr4447_image_20250802_125435Z_tn.jpg\" ></a>\n<a href=\"hpr4447_image_20250802_125452Z.jpg\"><img src=\"hpr4447_image_20250802_125452Z_tn.jpg\" ></a>\n<a href=\"hpr4447_image_20250802_125500Z.jpg\"><img src=\"hpr4447_image_20250802_125500Z_tn.jpg\" ></a>\n<a href=\"hpr4447_image_20250802_104010Z.jpg\"><img src=\"hpr4447_image_20250802_104010Z_tn.jpg\" ></a>\n<a href=\"hpr4447_image_20250802_105513Z.jpg\"><img src=\"hpr4447_image_20250802_105513Z_tn.jpg\" ></a>\n\n<h3>The Mast hole in the keel</h3>\n<p>\n<a href=\"hpr4447_image_20250802_103939Z.jpg\"><img src=\"hpr4447_image_20250802_103939Z_tn.jpg\" ></a>\n<a href=\"hpr4447_image_20250802_125602Z.jpg\"><img src=\"hpr4447_image_20250802_125602Z_tn.jpg\" ></a>\n<a href=\"hpr4447_image_20250802_125607Z.jpg\"><img src=\"hpr4447_image_20250802_125607Z_tn.jpg\" ></a>\n<br>\nA close up of the 2M/6Foot wooden sleeper that lies on a forklift\npallet.\nIt is about 15CM/6Inches thick.\nThis has a about 30cm/1 Foot square hole in it, that is only about\n5CM/2Inch deep.\nThis was used to hold the bottom of the mast.\n</p>\n\n<h3>The Timbers</h3>\n<p>\nViews of the overlapping timbers with cut marks, and pins holding them together.\n</p>\n\n<a href=\"hpr4447_image_20250802_125443Z.jpg\"><img src=\"hpr4447_image_20250802_125443Z_tn.jpg\" ></a>\n<a href=\"hpr4447_image_20250802_125446Z.jpg\"><img src=\"hpr4447_image_20250802_125446Z_tn.jpg\" ></a>\n<a href=\"hpr4447_image_20250802_125507Z.jpg\"><img src=\"hpr4447_image_20250802_125507Z_tn.jpg\" ></a>\n<a href=\"hpr4447_image_20250802_125510Z.jpg\"><img src=\"hpr4447_image_20250802_125510Z_tn.jpg\" ></a>\n<a href=\"hpr4447_image_20250802_125512Z.jpg\"><img src=\"hpr4447_image_20250802_125512Z_tn.jpg\" ></a>\n<a href=\"hpr4447_image_20250802_125515Z.jpg\"><img src=\"hpr4447_image_20250802_125515Z_tn.jpg\" ></a>\n\n\n\n<h3>The Back/Aft</h3>\n\n<p>\nA view from the back from the back of the ship. We can see that\nthere is a rip in the hull behind the last fish compartment and\nthe back of the ship.\nWas this a collision or did it occur after sinking ?\nAn archaeologist is fighting a loosing battle to scoop out water.\n</p>\n<a href=\"hpr4447_image_20250802_104023Z.jpg\"><img src=\"hpr4447_image_20250802_104023Z_tn.jpg\" ></a>\n<a href=\"hpr4447_image_20250802_125350Z.jpg\"><img src=\"hpr4447_image_20250802_125350Z_tn.jpg\" ></a>\n<a href=\"hpr4447_image_20250802_125404Z.jpg\"><img src=\"hpr4447_image_20250802_125404Z_tn.jpg\" ></a>\n<a href=\"hpr4447_image_20250802_125409Z.jpg\"><img src=\"hpr4447_image_20250802_125409Z_tn.jpg\" ></a>\n<a href=\"hpr4447_image_20250802_125427Z.jpg\"><img src=\"hpr4447_image_20250802_125427Z_tn.jpg\" ></a>\n<a href=\"hpr4447_image_20250802_105434Z.jpg\"><img src=\"hpr4447_image_20250802_105434Z_tn.jpg\" ></a>\n<a href=\"hpr4447_image_20250802_105444Z.jpg\"><img src=\"hpr4447_image_20250802_105444Z_tn.jpg\" ></a>\n<a href=\"hpr4447_image_20250802_105454Z.jpg\"><img src=\"hpr4447_image_20250802_105454Z_tn.jpg\" ></a>\n<a href=\"hpr4447_image_20250802_105458Z.jpg\"><img src=\"hpr4447_image_20250802_105458Z_tn.jpg\" ></a>\n<a href=\"hpr4447_image_20250802_120601Z.jpg\"><img src=\"hpr4447_image_20250802_120601Z_tn.jpg\" ></a>\n<a href=\"hpr4447_image_20250802_121033Z.jpg\"><img src=\"hpr4447_image_20250802_121033Z_tn.jpg\" ></a>\n<a href=\"hpr4447_image_20250802_121039Z.jpg\"><img src=\"hpr4447_image_20250802_121039Z_tn.jpg\" ></a>\n<a href=\"hpr4447_image_20250802_121238Z.jpg\"><img src=\"hpr4447_image_20250802_121238Z_tn.jpg\" ></a>\n<a href=\"hpr4447_image_20250802_125352Z.jpg\"><img src=\"hpr4447_image_20250802_125352Z_tn.jpg\" ></a>\n<a href=\"hpr4447_image_20250802_125354Z.jpg\"><img src=\"hpr4447_image_20250802_125354Z_tn.jpg\" ></a>\n\n\n\n\n<h3>The glamour of the dig.</h3>\n\n<p>\nThe back of the site tent showing the woodland in the background, a pile of soil that was removed, and a another pile of rotting wood from the ship.\nThere is a makeshift pool of water used to store water pumped from the wreck.\nThe front of the site tent showing the woodland in the background, some storage shipping containers, some steel plates used to spread the load of heavy machinery.\nA 2M/6Foot wooden sleeper lies on a forklift pallet.\nA earthen mound is in front of the woods.\nIn front of that is a very wet and damp looking tarpaulin with parts of the ship. They are normally kept wet covered with another tarpaulin so they will not rot.\nEach has a label on it.\nSome are held vertical by sandbags.\nThere is a view of the pile of rotten wood, the eacavated soiland the pump pool.\nThere are some rusted iron as braces in the wood. \nThere is a rust shaped axe.\n</p>\n\n<a href=\"hpr4447_image_20250802_103924Z.jpg\"><img src=\"hpr4447_image_20250802_103924Z_tn.jpg\" ></a>\n<a href=\"hpr4447_image_20250802_103927Z.jpg\"><img src=\"hpr4447_image_20250802_103927Z_tn.jpg\" ></a>\n<a href=\"hpr4447_image_20250802_104028Z.jpg\"><img src=\"hpr4447_image_20250802_104028Z_tn.jpg\" ></a>\n<a href=\"hpr4447_image_20250802_120613Z.jpg\"><img src=\"hpr4447_image_20250802_120613Z_tn.jpg\" ></a>\n<a href=\"hpr4447_image_20250802_120649Z.jpg\"><img src=\"hpr4447_image_20250802_120649Z_tn.jpg\" ></a>\n<a href=\"hpr4447_image_20250802_120653Z.jpg\"><img src=\"hpr4447_image_20250802_120653Z_tn.jpg\" ></a>\n<a href=\"hpr4447_image_20250802_120908Z.jpg\"><img src=\"hpr4447_image_20250802_120908Z_tn.jpg\" ></a>\n<a href=\"hpr4447_image_20250802_104032Z.jpg\"><img src=\"hpr4447_image_20250802_104032Z_tn.jpg\" ></a>\n<a href=\"hpr4447_image_20250802_104035Z.jpg\"><img src=\"hpr4447_image_20250802_104035Z_tn.jpg\" ></a>\n<a href=\"hpr4447_image_20250802_125209Z.jpg\"><img src=\"hpr4447_image_20250802_125209Z_tn.jpg\" ></a>\n<a href=\"hpr4447_image_20250802_125214Z.jpg\"><img src=\"hpr4447_image_20250802_125214Z_tn.jpg\" ></a>\n<a href=\"hpr4447_image_20250802_125217Z.jpg\"><img src=\"hpr4447_image_20250802_125217Z_tn.jpg\" ></a>\n<a href=\"hpr4447_image_20250802_125222Z.jpg\"><img src=\"hpr4447_image_20250802_125222Z_tn.jpg\" ></a>\n<a href=\"hpr4447_image_20250802_125226Z.jpg\"><img src=\"hpr4447_image_20250802_125226Z_tn.jpg\" ></a>\n<a href=\"hpr4447_image_20250802_125228Z.jpg\"><img src=\"hpr4447_image_20250802_125228Z_tn.jpg\" ></a>\n<a href=\"hpr4447_image_20250802_125230Z.jpg\"><img src=\"hpr4447_image_20250802_125230Z_tn.jpg\" ></a>\n<a href=\"hpr4447_image_20250802_125233Z.jpg\"><img src=\"hpr4447_image_20250802_125233Z_tn.jpg\" ></a>\n<a href=\"hpr4447_image_20250802_125235Z.jpg\"><img src=\"hpr4447_image_20250802_125235Z_tn.jpg\" ></a>\n<a href=\"hpr4447_image_20250802_125238Z.jpg\"><img src=\"hpr4447_image_20250802_125238Z_tn.jpg\" ></a>\n<a href=\"hpr4447_image_20250802_125241Z.jpg\"><img src=\"hpr4447_image_20250802_125241Z_tn.jpg\" ></a>\n<a href=\"hpr4447_image_20250802_125243Z.jpg\"><img src=\"hpr4447_image_20250802_125243Z_tn.jpg\" ></a>\n<a href=\"hpr4447_image_20250802_125247Z.jpg\"><img src=\"hpr4447_image_20250802_125247Z_tn.jpg\" ></a>\n<a href=\"hpr4447_image_20250802_125252Z.jpg\"><img src=\"hpr4447_image_20250802_125252Z_tn.jpg\" ></a>\n<a href=\"hpr4447_image_20250802_125257Z.jpg\"><img src=\"hpr4447_image_20250802_125257Z_tn.jpg\" ></a>\n<a href=\"hpr4447_image_20250802_125305Z.jpg\"><img src=\"hpr4447_image_20250802_125305Z_tn.jpg\" ></a>\n<a href=\"hpr4447_image_20250802_105222Z.jpg\"><img src=\"hpr4447_image_20250802_105222Z_tn.jpg\" ></a>\n\n<h3>Information Displays</h3>\n\n<p>\n\nA informational poster showing how they determined the date to be <a href=\"https://en.wikipedia.org/wiki/Dendroarchaeology\">Dendroarchaeology</a>.\nIf two trees grew during the same period, the thickness of their rings during that period will be the same. \nArchaeologist were able to make a complete historical map of tree rings going back to prehistory.\nThey did this by comparing the overlapping tree rings from in existing buildings, shipwrecks and artwork. \nIn some cases there were receipts from wood choppers for the timbers.\nFurther back can be used by comparing overlapping rings in different artifacts.\n</p>\n<a href=\"hpr4447_image_20250802_124157Z.jpg\"><img src=\"hpr4447_image_20250802_124157Z_tn.jpg\" ></a>\n\n\n<p>\nA drawing of the ship cross-sections through the center, a top, front and back view.\nThen a drawing of the ship with triangle sail at the front, and a square sale at the back with rigging.\nThe cross section shows where the <a href=\"https://nl.wikipedia.org/wiki/Bun_(schip)\">bun/fish compartment</a> was located in the middle behind the mast at the bottom of the ship.\n</p>\n<a href=\"hpr4447_image_20250802_104221Z.jpg\"><img src=\"hpr4447_image_20250802_104221Z_tn.jpg\" ></a><br />\n\n<p>\nA informational poster tells us the shipwreck was discovered in 1972 when the land was drained.\nThe ship is 16 meter long and 5.5 meter wide, which is a small version as they often got to 20 meter in length.\nThe ship was complete to the top of the <a href=\"https://nl.wikipedia.org/wiki/Bun_(schip)\">bun/fish compartment</a>.\nIt sank somewhere between 1520 and 1530.\nIt continues to give a timeline of the discovery.<br />\nThe next poster shows the 3d scans from 2022 to 2025.<br />\n2022 Shows the front half of the ship with a rats nest of broken timbers.<br />\n2023 The entire top deck is exposed <br />\n2024 and 2025 show the wood is now cleared down to the frame of the ship.<br />\nThere are also 3D printed versions of the scans in cases.\n</p>\n<a href=\"hpr4447_image_20250802_124203Z.jpg\"><img src=\"hpr4447_image_20250802_124203Z_tn.jpg\" ></a>\n<a href=\"hpr4447_image_20250802_104231Z.jpg\"><img src=\"hpr4447_image_20250802_104231Z_tn.jpg\" ></a>\n<a href=\"hpr4447_image_20250802_105319Z.jpg\"><img src=\"hpr4447_image_20250802_105319Z_tn.jpg\" ></a>\n<a href=\"hpr4447_image_20250802_105323Z.jpg\"><img src=\"hpr4447_image_20250802_105323Z_tn.jpg\" ></a>\n<a href=\"hpr4447_image_20250802_105334Z.jpg\"><img src=\"hpr4447_image_20250802_105334Z_tn.jpg\" ></a>\n\n<p>\nThe 3d scanner used to record some of the models.\n</p>\n<a href=\"hpr4447_image_20250802_105347Z.jpg\"><img src=\"hpr4447_image_20250802_105347Z_tn.jpg\" ></a>\n<a href=\"hpr4447_image_20250802_105353Z.jpg\"><img src=\"hpr4447_image_20250802_105353Z_tn.jpg\" ></a>\n\n<p>\nA map showing the shipping routes through the Zuiderzee.\n</p>\n<a href=\"hpr4447_image_20250802_124342Z.jpg\"><img src=\"hpr4447_image_20250802_124342Z_tn.jpg\" ></a>\n\n<p>\nItems that visitors are encouraged to touch are fresh moss used to seal the lats, a piece of timber, some iron nails, and braces to keep the planks together.\n</p>\n<a href=\"hpr4447_image_20250802_104808Z.jpg\"><img src=\"hpr4447_image_20250802_104808Z_tn.jpg\" ></a>\n<p>\nItems that visitors are not allowed to touch include, barrel taps, rings, actual moss, fish bones, and a box of other finds.\n</p>\n<a href=\"hpr4447_image_20250802_104815Z.jpg\"><img src=\"hpr4447_image_20250802_104815Z_tn.jpg\" ></a>\n\n\n<h3>The Author</h3>\n\n<p>\n<a href=\"https://nl.linkedin.com/in/wouter-waldus-9153b\"><img src=\"https://media.licdn.com/dms/image/v2/C4D03AQEF5yQ0oODBjA/profile-displayphoto-shrink_200_200/profile-displayphoto-shrink_200_200/0/1620831288870?e=2147483647&v=beta&t=lj4nEUrOXPFR0nPJGHYc-Sef-gUE3ZnkXuuQ7wSWttI\" /></a><br />\nThe author Wouter Waldus was there to discuss the dig, marine archaeology, and his many books.\n<ul>\n<li><a href=\"https://www.matrijs.com/boek/turfvaart-op-de-zuiderzee-scheepswrakken-in-flevoland-1550-1700/\">Turfvaart op de Zuiderzee. Scheepswrakken in Flevoland, 1550-1700</a></li>\n<li><a href=\"https://www.blikvelduitgevers.nl/product-page/gezonken-erfgoed\">Gezonken Erfgoed</a></li>\n<li><a href=\"https://www.bol.com/nl/nl/p/de-ijsselkogge-hanzeverleden-boven-water/9200000102939593/\">De IJsselkogge. Hanzeverleden boven water</a></li>\n<li><a href=\"https://www.veldshop.nl/en/wrakken-in-wereldzeeen.html\">Wrakken in wereldzeeën - Vergane Nederlandse schepen uit de zeventiende eeuw</a></li>\n</ul>\n\n\n\n</p>\n<a href=\"hpr4447_image_20250802_124646Z.jpg\"><img src=\"hpr4447_image_20250802_124646Z_tn.jpg\" ></a>\n<a href=\"hpr4447_image_20250802_124653Z.jpg\"><img src=\"hpr4447_image_20250802_124653Z_tn.jpg\" ></a>\n<a href=\"hpr4447_image_20250802_124658Z.jpg\"><img src=\"hpr4447_image_20250802_124658Z_tn.jpg\" ></a>\n\n',30,0,0,'CC-BY-SA','Waterschip, Zuiderzee, Flevoland, Archaeology, 3D Scans',0,0,1),
(4448,'2025-08-20','YouTube Subscriptions 2025 #4',986,'Part four of my list of subscribed channels','\n<p>\nI am subscribed to a number of YouTube channels, and I am sharing them with you.</p>\n<p>\n<br>\n</p>\n<h3>\nLinks</h3>\n<ul>\n<li>\n<a href=\"https://www.youtube.com/@cruiseaddicts\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.youtube.com/@cruiseaddicts</a>\n</li>\n<li>\n<a href=\"https://www.youtube.com/@CruiseFever\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.youtube.com/@CruiseFever</a>\n</li>\n<li>\n<a href=\"https://www.youtube.com/@Cruisehive\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.youtube.com/@Cruisehive</a>\n</li>\n<li>\n<a href=\"https://www.youtube.com/@CruiseRadio\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.youtube.com/@CruiseRadio</a>\n</li>\n<li>\n<a href=\"https://www.youtube.com/@Cruzelycom\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.youtube.com/@Cruzelycom</a>\n</li>\n<li>\n<a href=\"https://www.youtube.com/@CultureSonar\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.youtube.com/@CultureSonar</a>\n</li>\n<li>\n<a href=\"https://www.youtube.com/@D-Day24Hours-sm5pe\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.youtube.com/@D-Day24Hours-sm5pe</a>\n</li>\n<li>\n<a href=\"https://www.youtube.com/@thedavidpakmanshow\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.youtube.com/@thedavidpakmanshow</a>\n</li>\n<li>\n<a href=\"https://www.youtube.com/@DaviesMediaDesign\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.youtube.com/@DaviesMediaDesign</a>\n</li>\n<li>\n<a href=\"https://www.youtube.com/@SamyulDavis\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.youtube.com/@SamyulDavis</a>\n</li>\n<li>\n<a href=\"https://www.youtube.com/@deepcuts\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.youtube.com/@deepcuts</a>\n</li>\n<li>\n<a href=\"https://www.youtube.com/@KQEDDeepLook\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.youtube.com/@KQEDDeepLook</a>\n</li>\n<li>\n<a href=\"https://www.youtube.com/@DeepSkyVideos\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.youtube.com/@DeepSkyVideos</a>\n</li>\n<li>\n<a href=\"https://www.youtube.com/@DiscussingNetwork\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.youtube.com/@DiscussingNetwork</a>\n</li>\n<li>\n<a href=\"https://www.youtube.com/@DiscussingTrek\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.youtube.com/@DiscussingTrek</a>\n</li>\n<li>\n<a href=\"https://www.youtube.com/@doctorohosadventures3476\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.youtube.com/@doctorohosadventures3476</a>\n</li>\n<li>\n<a href=\"https://www.youtube.com/@DoctorWho\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.youtube.com/@DoctorWho</a>\n</li>\n<li>\n<a href=\"https://www.youtube.com/@DonRossMusic\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.youtube.com/@DonRossMusic</a>\n</li>\n<li>\n<a href=\"https://www.youtube.com/@Donsfamilyvacations\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.youtube.com/@Donsfamilyvacations</a>\n</li>\n<li>\n<a href=\"https://www.palain.com/\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.palain.com/</a>\n</li>\n</ul>\n<p>\n<br>\n</p>\n\n\n',198,106,0,'CC-BY-SA','YouTube, Channels, Subscriptions',0,0,1),
(4454,'2025-08-28','AI, It\'s a Trap!',235,'Archer72 talks about AI rabbit holes','\n<p>\nHello, this is Archer72 for Hacker Public Radio.</p>\n\r\n<p>\nIn episode, it seems that AI is a trap. This over-arching\r\ngeneralization is my opinion and may not reflect the opinions of\r\nHPR.</p>\n\r\n<p>\nSo the back story to this is that I was listening to the 26 hour\r\nHacker Public Radio New Year’s show, and the discussion came up in the\r\n<a href=\"https://t.me/techandcoffee\"\r\ntitle=\"Tech and Coffee Telegram Channel\">\nTech and Coffee Telegram\r\nChannel</a>\n My Resolution was to stop using ChatGPT for an AI chat bot,\r\nwith the implication being to not using AI at all, but instead, to use\r\n<a href=\"https://duckduckgo.com\" title=\"Duckduckgo\">\nDuckduckgo</a>\n and\r\n<a href=\"https://search.brave.com\" title=\"Brave Search\">\nBrave\r\nSearch</a>\n</p>\n\r\n<p>\nProbably less than a week or two later, I was trying to figure out\r\nsomething, and figured that I’d use the easy way and use <a\r\nhref=\"https://claude.ai\" title=\"Claude.ai\">\nClaude.ai</a>\n , which is\r\nactually pretty good if you have short and concise questions. I’ve found\r\nthat if you have a long drawn-out question, it is better to do a Google\r\nor <a href=\"https://duckduckgo.com\" title=\"Duckduckgo\">\nDuck search</a>\n\r\nand document your results.<br />\n\r\nI document in Vim, but you can use whatever is best.</p>\n\r\n<p>\nThis way you can clearly show what works and doesn’t work and refer\r\nto what you find later, instead of relying on an online service. And\r\nsometimes, depending on the AI bot you use, exporting is not very\r\nstraightforward. With the exception of <a\r\nhref=\"https://duckduckgo.com/?q=DuckDuckGo+AI+Chat&amp;ia=chat&amp;duckai=1\"\r\ntitle=\"Duck.ai\">\nDuck.ai</a>\n, that has a button for a quick share of a\r\ntext file. Then you share it to your self somewhere else like in <a\r\nhref=\"https://account.proton.me/mail\" title=\"Proton mail\">\nProton\r\nmail</a>\n</p>\n\r\n<p>\nWell… Over the past weekend, I was just making a quick upload button\r\nto my own server. The previous weekend, I got HTTPS working. This was\r\njust from following the guide on the <a\r\nhref=\"https://letsencrypt.org/docs/\"\r\ntitle=\"Let&#39;s Encrypt - Documentation\">\nLet’s Encrypt -\r\nDocumentation</a>\n and <a\r\nhref=\"https://certbot.eff.org/instructions?ws=apache&amp;os=pip\"\r\ntitle=\"EFF Certbot instruction - Apache2\">\nEFF Certbot instruction -\r\nApache2</a>\n websites. At least that time, instead of using the AI bot, I\r\njust followed clear documentation.</p>\n\r\n<p>\nSee, the thing about going right to the <a\r\nhref=\"https://wiki.debian.org\" title=\"Debian Wiki\">\nDebian Wiki</a>\n or\r\nthe <a href=\"https://wiki.archlinux.org\" title=\"Arch Wiki\">\nArch Wiki</a>\n\r\nis that users and developer have already documented plenty. I figured\r\nout that part of the hacker method is not to take the ‘easy’ way, but to\r\ndocument out what you are trying to learn.</p>\n\r\n<p>\nSo this past weekend, I was trying to learn something about that\r\nupload form, and I probably took longer going back and forth with the AI\r\nbot than If I had taken the time to search the documentation. And even\r\nif it did take longer with the documentation, I would have learned\r\nsomething else and created a Markdown document of my own. There is a\r\ntool I use once in a while, which is part of the <a\r\nhref=\"https://duckduckgo.com\" title=\"Duckduckgo\">\nDuckduckgo</a>\n search,\r\ncalled <a href=\"https://duckduckgo.com/?t=h_&amp;q=web&amp;assist=true\"\r\ntitle=\"Search Assist\">\nSearch Assist</a>\n</p>\n\r\n<p>\nThis can be good, because a have a horrible memory. If there is\r\nsomething small that I can’t remember how to do, I let <a\r\nhref=\"https://duckduckgo.com/?q=DuckDuckGo+AI+Chat&amp;ia=chat&amp;duckai=1\"\r\ntitle=\"Duck.ai\">\nDuck.ai</a>\n take care of it. But recently, I have turned\r\noff the option where it says to sometimes show <a\r\nhref=\"https://duckduckgo.com/?t=h_&amp;q=web&amp;assist=true\"\r\ntitle=\"Search Assist\">\nSearch Assist</a>\n, but instead only when it is on\r\ndemand. That way I won’t be tempted to go down a rabbit hole in order to\r\nfind what I am looking for. Instead base what I am looking for on\r\nstandard tools.</p>\n\r\n<p>\nSo Yes, AI is a trap, but is also useful for certain things. But if\r\nyou are careful how you use it, it’s not always a bad thing.</p>\n\r\n<p>\nThis has been Archer72 for Hacker Public Radio.</p>\n\r\n<p>\nFeel free to comment on this or any other show. Ken says it is the\r\nMana by which we pay our hosts. Also, feel free to record a response\r\nshow to this or other shows.</p>\n\r\n\n\n',318,0,0,'CC-BY-SA','AI, Search, DuckDuckGo, Claude.ai, Duck.ai, Apache2, Certbot',0,0,1),
(4469,'2025-09-18','Disagree With Me - 3 Statements About Life Living',383,'Antoine, who is not a life hacker, thinks that he thinks as one','\n<p>\nHello from Antoine. A show without a script, with 3 bullet points:</p>\n<p>\n<br>\n</p>\n<p>\n<strong>\n1. </strong>\nIt\'s better to have had 1 million dollars, and spend it all in a bed investment, rather than having had 5 dollars and lose 10 dollars.</p>\n<p>\n<br>\n</p>\n<p>\nIn one case, you are not in debt, you can start on zero with a clean mind (the past is only past). In another case, there is a debt, you wasted what you even did not have at first. That\'s a problem.</p>\n<p>\n<br>\n</p>\n<p>\nLosses happen all the time, in sports for example, and people in general understand. Albeit, when it has to do with family problems, or financial lack of success, there is all kind of malicious judgement for the bad choices of the other one.</p>\n<p>\n<br>\n</p>\n<p>\n<br>\n</p>\n<p>\n<strong>\n2. </strong>\nA good work is a work where one does what he has to do, in the time he sold to the work.</p>\n<p>\n<br>\n</p>\n<p>\nIt\'s not a matter of being on the desk more time than your colleagues, it\'s a matter of giving your work capacity for the time agreed in exchange of the payment agreed upon. In one word, honesty. Even if not as a moral value you agree with in a specific case, the obedience is the result of having your mind in the same way your body is going, and that is enjoyment.</p>\n<p>\n<br>\n</p>\n<p>\n<br>\n</p>\n<p>\n<strong>\n3. </strong>\nYour attitudes show if you have a purpose in what you\'re doing, or you\'re taking it with the belly (doing it in a non-vigorous way, without enthusiasm).</p>\n<p>\n<br>\n</p>\n<p>\nIf you have a purpose, you are enjoying, because it has a purpose. You, after all! (Not because of big loads of material things, but, simply, purpose. Relations and purpose.)</p>\n\n\n',441,0,0,'CC-BY-SA','Meaning, Purpose, Life hack, Thoughts',0,0,1),
(4453,'2025-08-27','IPv6 for Luddites',3064,'Beni tries to convince Andrew that disabling IPv6 isn\'t the solution','\n<h1>\nIPv6 for Luddites</h1>\n<p>\n<br>\n</p>\n<p>\nAndrew (aka mcnalu) recently triggered Beni by saying that he turns off <a href=\"https://en.wikipedia.org/wiki/IPv6\" rel=\"noopener noreferrer\" target=\"_blank\">\nIPv6</a>\n in order to get devices working on his home network. In this show Beni educates Andrew the <a href=\"https://en.wikipedia.org/wiki/Luddite\" rel=\"noopener noreferrer\" target=\"_blank\">\nLuddite</a>\n and explains why moving from IPv4 to IPv6 is a good idea. They also explore how IPv6 can be used in a world where ISPs and devices do not all support it and what tools, tips and tricks are available during this rather long transitional phase to the newish (like 30 years old, a blink of an eye in IT) protocol.</p>\n<p>\n<br>\n</p>\n<h2>\nRelevant RFCs</h2>\n<p>\n<br>\n</p>\n<ul>\n<li>\n<a href=\"https://www.rfc-editor.org/rfc/rfc4861\" rel=\"noopener noreferrer\" target=\"_blank\">\nRFC 4861: Neighbor Discovery</a>\n (basically the ICMP based replacement of ARP)</li>\n<li>\n<a href=\"https://www.rfc-editor.org/rfc/rfc4862\" rel=\"noopener noreferrer\" target=\"_blank\">\nRFC 4862: Stateless Address Configuration</a>\n</li>\n<li>\n<a href=\"https://www.rfc-editor.org/rfc/rfc4941\" rel=\"noopener noreferrer\" target=\"_blank\">\nRFC 4941: Privacy Extension for SLAAC</a>\n</li>\n<li>\n<a href=\"https://datatracker.ietf.org/doc/html/rfc6146\" rel=\"noopener noreferrer\" target=\"_blank\">\nRFC 6146: NAT64</a>\n</li>\n<li>\n<a href=\"https://datatracker.ietf.org/doc/html/rfc6147\" rel=\"noopener noreferrer\" target=\"_blank\">\nRFC 6147: DNS64</a>\n</li>\n<li>\n<a href=\"https://datatracker.ietf.org/doc/html/rfc6877\" rel=\"noopener noreferrer\" target=\"_blank\">\nRFC 6877: XLAT464</a>\n (Allow your legacy software to talk to its legacy server in an IPv6 only environment)</li>\n</ul>\n\n\n',288,0,0,'CC-BY-SA','ipv6,networking',0,0,1),
(4455,'2025-08-29','YouTube Subscriptions 2025 #5',1003,'Part five of my list of subscribed channels','\n<p>\nI am subscribed to a number of YouTube channels, and I am sharing them with you.</p>\n\n<h3>\nLinks:</h3>\n<ul>\n<li>\n<a href=\"https://www.youtube.com/@Doug.Helvering\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.youtube.com/@Doug.Helvering</a>\n</li>\n<li>\n<a href=\"https://www.youtube.com/@duolingo\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.youtube.com/@duolingo</a>\n</li>\n<li>\n<a href=\"https://www.youtube.com/@Eatsleepcruise1\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.youtube.com/@Eatsleepcruise1</a>\n</li>\n<li>\n<a href=\"https://www.youtube.com/@EmmaCruises\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.youtube.com/@EmmaCruises</a>\n</li>\n<li>\n<a href=\"https://www.youtube.com/@EmperorTigerstar\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.youtube.com/@EmperorTigerstar</a>\n</li>\n<li>\n<a href=\"https://www.youtube.com/@extrahistory\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.youtube.com/@extrahistory</a>\n</li>\n<li>\n<a href=\"https://www.youtube.com/@emmanigma_\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.youtube.com/@emmanigma_</a>\n</li>\n<li>\n<a href=\"https://www.youtube.com/@fab4free4all20\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.youtube.com/@fab4free4all20</a>\n</li>\n<li>\n<a href=\"https://www.youtube.com/@FabFourArchivist\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.youtube.com/@FabFourArchivist</a>\n</li>\n<li>\n<a href=\"https://www.youtube.com/@FallofCivilizations\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.youtube.com/@FallofCivilizations</a>\n</li>\n<li>\n<a href=\"https://www.youtube.com/@fantomonline\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.youtube.com/@fantomonline</a>\n</li>\n<li>\n<a href=\"https://www.youtube.com/@Fireoflearning\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.youtube.com/@Fireoflearning</a>\n</li>\n<li>\n<a href=\"https://www.youtube.com/@firesigntheatre8684\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.youtube.com/@firesigntheatre8684</a>\n</li>\n<li>\n<a href=\"https://www.youtube.com/@FiveWhoFans\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.youtube.com/@FiveWhoFans</a>\n</li>\n<li>\n<a href=\"https://www.youtube.com/@frasercain\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.youtube.com/@frasercain</a>\n</li>\n<li>\n<a href=\"https://www.youtube.com/@FurPeaceRanch\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.youtube.com/@FurPeaceRanch</a>\n</li>\n<li>\n<a href=\"https://www.youtube.com/@fyfluiddynamics\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.youtube.com/@fyfluiddynamics</a>\n</li>\n<li>\n<a href=\"https://www.palain.com/\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.palain.com/</a>\n</li>\n</ul>\n\n\n',198,106,0,'CC-BY-SA','YouTube, Channels, Subscriptions',0,0,1),
(4479,'2025-10-02','Who is the Algernon for Whom are the Flowers?',1345,'The original short story. *Attention*: Full of revelations of the plot (Spoilers).','\n<ul>\n<li>\n<strong>\nWhat is it?</strong>\n</li>\n</ul>\n<p>\n Flowers for Algernon is a short science fiction story. Originally that. It was later developed as a novel.</p>\n<p>\n<br>\n</p>\n<ul>\n<li>\n<strong>\nHow did I come unto it?</strong>\n</li>\n</ul>\n<p>\n I know I have heard the title years before. So, when I saw it recently at the entrance on the bookstore, in a beautiful hardcover, I gave it a view. I did not decided to buy, but it stayed with me, specially for having few pages. </p>\n<p>\n<br>\n</p>\n<p>\nI knew nothing of the plot, I only recognized the title, vaguely, as something I heard before as a praised work — and Isaac Asimov, who handed Keyes the Hugo Award for this short story, in 1960, as Best Novelette of 1959, \"praised it lavishly\" (source: Arthur Bruce Evans, of DePauw University.&nbsp;<a href=\"http://academic.depauw.edu/aevans_web/HONR101-02/WebPages/Fall2009/Rae/Daniel%20Keyes%27s%20Flowers%20for%20Algernon/pages/keyes_works.htm\" rel=\"noopener noreferrer\" target=\"_blank\">\n<em>\nDaniel Keyes\'s Works</em>\n</a>\n).</p>\n<p>\n<br>\n</p>\n<p>\nI then, weeks or months later, searched about.and discovered it was originally a short story. And available online. In the moment of the interest aroused (soon before producing this.HPR episode), I was more than happy with the immediate possibility of reading, instead of having to wait to buy the book or letting it stay until the next visit to the Public Library of Paraná (that is, of my state in Brazil), that might have a copy.</p>\n<p>\n<br>\n</p>\n<p>\nThe first lines won me, so I kept reading, in two \"seats\", two moments, on the phone. It is 26 pages long.</p>\n<p>\nNow, to the story.</p>\n<p>\n<br>\n</p>\n<ul>\n<li>\n<strong>\nThe plot</strong>\n</li>\n</ul>\n<p>\n (Here starts a full revelation of the plot, if you want to stop listening.)</p>\n<p>\n<br>\n</p>\n<p>\n<em>\n(No personal written notes here, comment made directly to audio — so, more stuttered as I tried to find the ideas and words; thanks for the patience!)</em>\n</p>\n<p>\n<br>\n</p>\n<ul>\n<li>\n<strong>\nCuriosity: The Simpsons</strong>\n</li>\n</ul>\n<p>\n \"As well as cinematic and stage adaptations, the book inspired a musical, starring Michael Crawford, and an episode of The Simpsons.</p>\n<p>\n<br>\n</p>\n<p>\nIn the episode, called Homr, Homer Simpson discovers that a crayon lodged in his brain has been responsible for his stupidity.</p>\n<p>\n<br>\n</p>\n<p>\nOn its removal, Homer becomes clever, only to have the crayon re-inserted after becoming distanced from family and friends.</p>\n<p>\n<br>\n</p>\n<p>\nAired in 2001, the episode won an Emmy for outstanding animated programme.\" (Source: BBC. <a href=\"https://www.bbc.com/news/entertainment-arts-27900662\" rel=\"noopener noreferrer\" target=\"_blank\">\n<em>\nFlowers for Algernon writer Daniel Keyes dies at 86</em>\n</a>\n. June 18, 2014.)</p>\n<p>\n<br>\n</p>\n<ul>\n<li>\n<strong>\nEnding... the author</strong>\n</li>\n</ul>\n<p>\n The author, Daniel Keyes, died on June 15, 2014, aged 86, from complications of pneumonia, at his home in Boca Raton (Florida, USA). His only wife, Aurea Georgina Vazquez, whom he married in 1952, had died one year, one month and one day before, on May 14, 2013.They had two daughters.</p>\n<p>\n<br>\n</p>\n<ul>\n<li>\n<strong>\nLinks:</strong>\n</li>\n</ul>\n<p>\n Wikipedia page for the story Flowers for Algernon: <a href=\"https://en.m.wikipedia.org/wiki/Flowers_for_Algernon\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://en.m.wikipedia.org/wiki/Flowers_for_Algernon</a>\n</p>\n<p>\n Only that.</p>\n<p>\n<br>\n</p>\n<p>\n<br>\n</p>\n<p>\nThanks for the opportunity to share!</p>\n\n\n',441,0,0,'CC-BY-SA','litterature award, Algernon, Flowers for Algernon, Science fiction',0,0,1),
(4457,'2025-09-02','doodoo deuce ',739,'episode two of creating doodoo: a todo app to get dung done','\n    <h1 id=\"doodoo\">doodoo</h1>\n    <p>A web based todo list application, for all the dung I need to get\n      done <a href=\"https://gitlab.com/jezra/doodoo\">doodoo</a>\n      utilized microdot framework.</p>\n    <p>The simplest way to install microdot for use with doodoo, is to\n      run <code>make install-microdot</code>, which will attempt to\n      download the necessary file using wget. </p>\n    <p>The doodoo server can be started by running <code>make serve</code>.\n      The default port is 3864 (DUNG on a phone number pad)</p>',243,0,0,'CC-BY-SA','python, software development, dung',0,0,1),
(4458,'2025-09-03','Creating an animation in Powerpoint',538,'how I created a short animation in power point','\n    <p>\n      I created a short animation to illustrate how agile project\n      management works</p>\n    <h3>\n      flippaclip:</h3>\n    <p><a href=\"https://flipaclip.com/\">\n        https://flipaclip.com/</a></p>\n    <a href=\"https://flipaclip.com/\"> </a>',430,126,0,'CC-BY-SA','Powerpoint,Animation,presentations',0,0,1),
(4459,'2025-09-04','How I got into tech',259,'I describe how I got into technology and what stories I would like to tell.','\n<p>\nHello, I\'m Wojciech (pronounciation available at <a href=\"https://en.wiktionary.org/wiki/Wojciech\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://en.wiktionary.org/wiki/Wojciech</a>\n), I\'m a nerd from Poland, I work as a software engineer.</p>\n<p>\n<br>\n</p>\n<p>\nI\'ve found HPR about a year ago and wanted to record a show since. But life is busy. I\'m trying it out, in a supermarket parking lot in my car. This is my second attempt, so we\'ll see how it works.</p>\n<p>\n<br>\n</p>\n<p>\nHow I got into tech? In a way I\'ve kind of always been there. At least since I was a child. The story that I like to tell is when I was about 4 years old my cousing launched me Mortal Kombat on his Amiga computer and I got interested. That\'s my oldest tech related memory. As a kid I\'ve mostly played video games. Mostly on clones of old 8-bit consoles like Atari 2600 or NES, later some unspecified models of Commodore and Schneider computers. I don\'t even remember what exact models they were. Got my first PC at about 10 years old, it was an Intel 486SX, 12 MB RAM, 850 MB HDD, running Windows 95. Still mostly playing games on the computer but, as it was running Windows, as you maybe know, with Windows come problems. Sometimes user-induced, but not always. Spoiler, it\'s been over 25 years and this trend continues.</p>\n<p>\n<br>\n</p>\n<p>\nAround the same time my sister went to high school and got a Turbo Pascal textbook. This is what really got me interested in programming and that\'s when my interests and career in software development begun. Since that time I had a very good idea what I want to do in life. I just knew I wanted to work with computers, primarily doing software engineering. I went to a technical university, Wrocław University of Science and Technology. And there I got interested in other computer related things like networking and I also got into digital and analog electronics. Just because I really wanted to go that one level deeper, to learn about how computers work, and electronics in general.</p>\n<p>\n<br>\n</p>\n<p>\nI also have other interests, but tech and non-tech related, like for example science fiction literature and I would like to record some shows about those in the future. We shall see.</p>\n<p>\n<br>\n</p>\n<p>\nThere is one specific story I want to tell, but I think I will save it for October. Why October? Because it is a workplace horror story about... Windows. Well, not really a horror story story, but it was really bizarre and can be described as such. In the meantime I don\'t want to promise anything. But maybe I will record a show about what I am currently doing at work, which is the topic of audit trail in software applications. But I am chaotic and may do something entirely different. We shall see.</p>\n<p>\n<br>\n</p>\n<p>\nI think that\'s all I want to say today. I would really appreciate if you left some feedback. Was the audio OK, is my English enough, did I speak too fast? English is not my first language and I\'ve noticed over the years that I really tend to speak too fast when using English. And that\'s it, thank you for listening. Hopefully we\'ll hear in the future from me.</p>\n\n\n',450,29,0,'CC-BY-SA','tech, intro, gaming, programming, Windows',0,0,1),
(4486,'2025-10-13','A code off my mind',1274,'Lee touches on a few aspects of coding as an occupation and ponders neurodivergence','\n<p>\n<h3>\nPart I</h3>\n - Lee talks about:</p>\n<ul style=\"\">\n<li style=\"\">\nCyber - Capture the flag, providing OAuth, Secure design and static typing</li>\n<li style=\"\">\nDatabases - SQL Server, MySQL and SQLite</li>\n<li style=\"\">\nTest Frameworks</li>\n<li>\nGenerative AI for coding</li>\n<li style=\"\">\nHardware (as in IoT, not as in computers)</li>\n</ul>\n<p style=\"\">\n<br style=\"\">\n</p>\n<p style=\"\">\n<h3>\nPart II</h3>\n - A ramble about neurdivergence</p>\n<ul style=\"\">\n<li style=\"\">\nIn academia and work</li>\n<li style=\"\">\nAccommodation vs Encouraging work styles that fit the task</li>\n<li>\nRemote working</li>\n<li style=\"\">\nUnusual career paths</li>\n<li style=\"\">\nTechnical communication</li>\n</ul>\n<p>\n<br style=\"\">\n</p>\n<p>\n<u style=\"\">\nSome personal code projects</u>\n</p>\n<p>\n<br style=\"\">\n</p>\n<ul style=\"\">\n<li>\n<a href=\"https://github.com/macsplit/urltomarkdown\" rel=\"noopener noreferrer\" target=\"_blank\" style=\"\">\nUrl to Markdown</a>\n</li>\n<li style=\"\">\n<a href=\"https://github.com/macsplit/konsole-system-commands-plugin\" rel=\"noopener noreferrer\" target=\"_blank\" style=\"\">\nKonsole extension</a>\n</li>\n<li style=\"\">\n<a href=\"https://github.com/macsplit/termbook\" rel=\"noopener noreferrer\" target=\"_blank\" style=\"\">\nEpub in a terminal</a>\n</li>\n<li style=\"\">\n<a href=\"https://github.com/macsplit/markdown-table-generator\" rel=\"noopener noreferrer\" target=\"_blank\" style=\"\">\nMarkdown table generator</a>\n</li>\n<li>\n<a href=\"https://gist.github.com/macsplit/a77c53aff7e2c6242838ffc3517fb802\" rel=\"noopener noreferrer\" target=\"_blank\" style=\"\">\nMySQL output formatter</a>\n</li>\n</ul>\n<p>\n<br style=\"\">\n</p>\n<p style=\"\">\n<u style=\"\">\nResources of note</u>\n</p>\n<p>\n<br style=\"\">\n</p>\n<ul style=\"\">\n<li style=\"\">\n<a href=\"https://www.lancaster.ac.uk/work-foundation/publications/the-changing-workplace\" rel=\"noopener noreferrer\" target=\"_blank\" style=\"\">\nReport on Changing the Workplace (2022)</a>\n - about disability and remote working</li>\n<li style=\"\">\n<a href=\"Model Context Protocol\" rel=\"noopener noreferrer\" target=\"_blank\" style=\"\">\nModel Context Protocol</a>\n - A way to give AI chat bots access to software systems to increase their relevant knowledge and abilities</li>\n<li style=\"\">\n<a href=\"https://www.manning.com/books/secure-by-design\" rel=\"noopener noreferrer\" target=\"_blank\" style=\"\">\nSecure by Design book</a>\n</li>\n</ul>\n<p>\n<br style=\"\">\n</p>\n<p style=\"\">\n<em style=\"\">\nNo chatbots were harmed in the making of this episode</em>\n</p>\n\n\n',403,0,1,'CC-BY-SA','cyber, databases, testing, ai, iot, neurodiversity',0,0,1),
(4462,'2025-09-09','HPR Beer Garden - Intro and Dessert Stouts ',2272,'Kevie and Dave start a new series of beer themed shows starting with Dessert Stouts','\n    <p>\n      Kevie and Dave (AKA The Love Bug) start a new series of shows with\n      a focus upon beer. In this first episode the pair discuss about\n      how they were introduced to beer and how it became more than a\n      hobby/something to do at the weekend. They go on to discuss a\n      relatively new style of beer in the Dessert/Pastry Stout. Dave\n      looks at the <a\n        href=\"https://brewdog.com/products/rocky-road-440ml\">Rocky Road\n        Marshmallow Stout by Brewdog</a>, whilst Kevie reviews <a\n        href=\"https://www.beeradvocate.com/beer/profile/35989/752931/\">Bertha\n        Chocolate Cake Stout by Northern Monk</a>.</p>\n    <p>\n      <a href=\"hpr4462_image_1.png\">\n        <img src=\"hpr4462_image_1_tn.png\">\n      </a>\n    </p>\n    <p>\n      Connect with the guys on Untappd:</p>\n    <ul>\n      <li>\n        <a href=\"https://untappd.com/user/thelovebug\" rel=\"noopener\n          noreferrer\" target=\"_blank\">\n          Dave</a>\n      </li>\n      <li>\n        <a href=\"https://untappd.com/user/kevie49\" rel=\"noopener\n          noreferrer\" target=\"_blank\">\n          Kevie</a>\n      </li>\n    </ul>',296,14,0,'CC-BY-SA','beer',0,0,1),
(4463,'2025-09-10','Software Freedom Day NJ, briefly.  ',97,'A quick summary of what we\'re doing for Soiftware Freedom Day.','\n<p>\nSoftware Freedom Day.&nbsp;It is a world-wide series of events to celebrate free software, and we\'re having one right here in New Jersey at Montclair State University.</p>\n\n<p>\nIt is held on the third Saturday of September world-wide, which his year is the 20th of September.</p>\n\n<p>\nWe\'re going to talk about what free software is, and why it\'s important for everyone.&nbsp;&nbsp;</p>\n<p>\nWhat kind of software is available for your existing computer, and how you can extend the life of your computer by loading another OS on it.&nbsp;There will be a talk on self hosting, so that you can keep better control of your data.&nbsp;There will also be a talk on Social Networking with free software called \"Mastodon and the Fediverse\", there will also be talks on Wikipedia, and contrinuting to Free Software.</p>\n\n<p>\nThere is a huge variety of software out there, and we\'d like to take some time to tell people about it.&nbsp;&nbsp;This is a community event, and we\'d love to see people from all over come out!</p>\n\n<p>\nHere are some links for more information:</p>\n\n<p>\n<a href=\"https://softwarefreedom.neocities.org/\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://softwarefreedom.neocities.org/</a>\n</p>\n\n<p>\nalso, the foundation site</p>\n\n<p>\n<a href=\"https://digitalfreedoms.org/en/sfd/events/software-freedom-day-2025-new-jersey\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://digitalfreedoms.org/en/sfd/events/software-freedom-day-2025-new-jersey</a>\n</p>\n\n\n<p>\nSo find an event near you, look online to see which events are streaming, or start planning for an event in your area for next year.&nbsp;&nbsp;</p>\n\n<p>\nHope to see you in New Jersey soon!</p>\n\n\n',444,0,0,'CC-BY-SA','sfd, SoftwareFreedomDay, NewJersey, NJ, FreeSoftware, event, montclair',0,0,1),
(4465,'2025-09-12','Playing Civilization V, Part 3',1021,'We continue our look at the game mechanics of Civlization V.','\n    <h1>\n      Playing Civilization V, Part 3</h1>\n    <h2>\n      Victory Types</h2>\n    <p>\n      This is a good time to discuss the Victory types in Civ 5. We have\n      talked about choosing appropriate strategies and that mostly has\n      to do with what kind of Victory you are aiming for. Now you can\n      change the objective as the game goes on, so if you realize you\n      can’t win your original Victory type, you can switch to another.\n      But success is a lot easier if you make the right choices early\n      on.</p>\n    <ul>\n      <li>\n        Domination – To win this, you must keep possession of your own\n        original capital, and capture everyone else’s original capital.\n        Original capital is the first city founded by each Empire. It\n        can never be destroyed, but can be captured. Once the original\n        capital city of an Empire is captured, another city will become\n        the <em>\n          current </em>\n        capital, but capturing that does not count towards victory, and\n        a current capital can be destroyed.</li>\n      <li>\n        Science – To win this, build and launch a spaceship to Alpha\n        Centauri. To build a spaceship requires technologies at the end\n        of the Technology tree, but you don’t have to actually research\n        every possible technology to do this. You build the parts in\n        your various cities, and assemble them in your Capital. Once you\n        have assembled all the parts, the spaceship will automatically\n        launch and you win the game.</li>\n      <li>\n        Cultural – This depends on your culture compared to the other\n        Empires, and involves the Tourism mechanic. If you attract\n        tourists from another Empire, your culture will become more\n        dominant over theirs. There are 6 levels for your Empire\n        vis-a-vis the others: Unknown, Exotic, Familiar, Popular,\n        Influential, and Dominant. These are defined by the amount of\n        tourism you receive from an Empire compared with their own\n        production of Culture. If the tourism you receive is at least\n        equal to their own Culture production, you are Influential. And\n        to get Culture victory you have to be at least Influential with\n        every other Empire still in the game. The basic source of\n        tourism comes from Great Works of Art, and Artifacts. Great\n        Works of Art are produced by Great Artists, and Artifacts are\n        dug up by your Archeologists once you discover this. Your own\n        Culture production both defends against tourism of other Empires\n        (i.e. your own citizens would rather enjoy your culture than\n        travel to other Empires), and helps to produce the Great Works\n        of Art. This victory type and the Tourism Mechanic is one of the\n        innovations in Civ 5 , and carries over and is developed further\n        in Civ 6.</li>\n      <li>\n        Diplomatic – To win this, you have to voted in as World Leader\n        in the United Nations. You can gain votes in several ways.\n        First, you can liberate the conquered capital of another Empire\n        and return it to them. That will guarantee that they will vote\n        for you in the United Nations. Or, and this is most common, you\n        can ally with City-States and get their vote in the UN. Finally,\n        if a City-State has been previously conquered by another Empire,\n        you can liberate it and they will vote for you in the UN. Once\n        the UN is achieved, votes take place every 20 turns, so if you\n        fall short on one try, you can try to line up more votes for the\n        next try, which usually means allying with a few more\n        City-States.</li>\n      <li>\n        Time – If no one has won by the above means, the Empire with the\n        highest score when time runs out will win. In a Standard game,\n        that is in 2050 AD, and is turn 500. But note that turn 500 is\n        not a turn when you can make a play. Your last chance to\n        actually do anything is turn 499.</li>\n    </ul>\n    <h2>\n      Terrain</h2>\n    <p>\n      Civilization V changed the game board from squares to hexes, which\n      was the first big change. But another change makes terrain even\n      more important in Civ V, and that is that you can only have one\n      unit per tile. The giant death stacks of units that you could\n      employ in Civ III and Civ IV are now gone. That means that any\n      military campaign will mostly be fought on a variety of tiles.\n      Most of this we will discuss later when we look at the military\n      and how to fight wars, but knowing how terrain affects your units\n      in terms of strength and mobility will be a big part of that. So\n      first we need to know what the Terrain Types are. Of course, the\n      other reason we need to know this is in terms of where to settle,\n      where to farm, where to mine, and so on. And special resources are\n      a modifier, but first we’ll look at the Terrain Types by\n      themselves. They can be analyzed in terms of their Base\n      Production, i.e., what they will produce without any improvements\n      such as farms and mines, Movement Cost, i.e. how many movement\n      points it takes to move into the Tile, and Defensive Bonus, i.e.\n      how the strength of your units is modified if they are in combat.</p>\n    <ul>\n      <li>\n        Grassland – Base Production = 2 Food, Movement Cost = 1, and\n        Defensive Bonus = -33%</li>\n      <li>\n        Plains – Base Production = 1 Food and 1 Production, Movement\n        Cost = 1, and Defensive Bonus = -33%</li>\n      <li>\n        Desert – Base Production = Nothing, Movement Cost = 1, and\n        Defensive Bonus = -33%</li>\n      <li>\n        Ocean – Base Production = 1 Food and 1 Gold, Movement Cost = 1</li>\n      <li>\n        Lake – Base Production = 2 Food and 1 Gold , Movement Cost = 1</li>\n      <li>\n        Tundra – Base Production = 1 Food, Movement Cost = 1</li>\n      <li>\n        Snow – Base Production = None, Movement Cost = 1, and Defensive\n        Bonus = -33%</li>\n    </ul>\n    <p>\n      These basic Terrain Types can then be modified by Terrain\n      Features, which can be stacked. For example, you could have a\n      Plains tile with Hills and a Forest.</p>\n    <ul>\n      <li>\n        Hills – Base Production = 0 Food and 2 Production, Movement Cost\n        = 2, and Defensive Bonus = +25%. Note that the Base Production\n        for Hills will be 0 Food and 2 Production regardless of the\n        underlying Terrain Type.</li>\n      <li>\n        Forest – Base Production = 1 Food and 1 Production, Movement\n        Cost = 2, and Defensive Bonus = +25%. Note that the Base\n        Production for tiles with Forests will be 1 Food and 1\n        Production regardless of the underlying Terrain Type. But\n        Forests can be cleared by Workers once Mining is discovered.</li>\n      <li>\n        Jungle – Production effect = -1 Production, Movement Cost = 2,\n        and Defensive Bonus = +25%. Jungles can be cleared by Workers\n        once Bronze Working is discovered, and should be.</li>\n      <li>\n        Mountain – Production = 0, Movement = impassable except for Air\n        units, and for Carthaginian units once they have earned a Great\n        General. Defensive Bonus = +25%</li>\n      <li>\n        River – Rivers run along the borders of tiles. They add +1 Gold.\n        Attacking across a river reduces your attack strength by 20%.\n        Crossing a river will end movement for most units unless there\n        is a road with a bridge.</li>\n      <li>\n        Marsh – Production effect = -1 Food, Movement Cost = 2. Can be\n        removed by workers once Masonry is discovered. If you have a\n        Marsh tile in your city, have the workers remove the Marsh\n        before you attempt to work the tile.</li>\n      <li>\n        Coast – These are the water tiles with relatively shallow water\n        along the coast of a land mass. They are lighter in color than\n        deep ocean tiles. Coast tiles can be traveled on by early water\n        units which cannot travel on the deeper ocean tiles. Coast tiles\n        produce one gold each.</li>\n      <li>\n        Flood plains – These tiles can be found sometimes along river\n        banks. They produce 2 food, but can also produce disease\n        outbreaks.</li>\n      <li>\n        Oasis – Produce +3 Food and +1 Gold. These tiles cannot be\n        improved other than to add roads and railroads.</li>\n      <li>\n        Ice – At the top and bottom of the map are ice tiles\n        representing the north and south poles. Airplanes can fly over\n        these tiles, and submarines can go under them, but otherwise\n        they are impassable</li>\n      <li>\n        Fallout – Once nuclear weapons have been discovered, you can\n        have tiles that are covered by fallout. This will reduce food by\n        3, production by 3, and gold by 3. Movement cost is 2. In\n        practice this will mean the tile produces nothing. A Worker unit\n        can clean this up, but it will take time. So until that happens,\n        you should look for opportunities to move your citizen into some\n        other occupation until it is cleaned up. And you have to clean\n        it up before building or restoring any improvements.</li>\n      <li>\n        Atoll – This tile type was added in a patch with the Polynesian\n        DLC. It is an ocean tile that produces 1 Food and +1 Production.\n        Movement cost is 1.</li>\n    </ul>\n    <p>\n      Admittedly, this is a lot of detail to take in, but there are a\n      few basic rules you might want to keep in mind. First, you don’t\n      want to settles cities where there are lots of Desert, Tundra, or\n      Snow tiles. One or two Tundra tiles are OK if there are other\n      positive features, like access to a luxury resource, but Desert\n      and Snow tiles are completely useless. Again if there are lots of\n      desirable tiles available, having one or two Desert or Snow is not\n      problem, since in most cases you never will work all of the tiles\n      in most cities. But look for the good tiles. Similarly, Mountain\n      tiles are not generally useful, however if you are going for a\n      Science victory they can be handy if you settle a city immediately\n      adjacent to a mountain, since that will let you build an\n      Observatory in the city. Observatories cost zero maintenance and\n      add 50% to the science output of the city, making them very\n      valuable. Mountains are also handy as barriers to keep away your\n      enemies. Jungle tiles can also cause disease outbreaks, but\n      clearing the jungle from the tile will put a stop to that. I will\n      always clear away any jungle or Marsh tiles within my cities.\n      Defensive bonuses are also important, but that is better covered\n      when we get to warfare.</p>\n    <p>\n      <br>\n    </p>\n    <p>\n      From: <a\nhref=\"https://www.palain.com/gaming/civilization-v/playing-civilization-v-part-3/\"\n        rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.palain.com/gaming/civilization-v/playing-civilization-v-part-3/</a>\n    </p>',198,122,0,'CC-BY-SA','Computer games, strategy games, Civilization V, victory, terrain',0,0,1),
(4464,'2025-09-11','Replacing the Trackpad on my Laptop',669,'Claudio talks about how he took a gamble and replaced his fauilty trackpad on his laptop.','<p>Original Part: TDA147011T01</p>\n<p>Replacement Part: TDA147011T20 from a XPG Xenia 15 gaming laptop</p>\n<h3>Links:</h3>\n<ul>\n<li>Evoo EVC141-12BK: <a href=\"https://www.walmart.com/ip/EVOO-14-1-Ultra-Slim-Notebook-Elite-Series-FHD-Display-AMD-Ryzen-5-3500U-Processor-Radeon-Vega-8-Graphics-8GB-RAM-256GB-SSD-HD-Webcam-Windows-10-Home/419496306\">https://www.walmart.com/ip/EVOO-14-1-Ultra-Slim-Notebook-Elite-Series-FHD-Display-AMD-Ryzen-5-3500U-Processor-Radeon-Vega-8-Graphics-8GB-RAM-256GB-SSD-HD-Webcam-Windows-10-Home/419496306</a></li>\n<li>MOTILE 14\" Performance Laptop: <a href=\"https://www.walmart.com/ip/MOTILE-14-Performance-Laptop-FHD-AMD-Ryzen-5-Radeon-Vega-8-Graphics-THX-Spatial-Audio-Tuned-display-8GB-RAM-256GB-SSD-HDMI-Front-720p-HD-IR-Camera-Ro/909076408\">https://www.walmart.com/ip/MOTILE-14-Performance-Laptop-FHD-AMD-Ryzen-5-Radeon-Vega-8-Graphics-THX-Spatial-Audio-Tuned-display-8GB-RAM-256GB-SSD-HDMI-Front-720p-HD-IR-Camera-Ro/909076408</a></li>\n<li>Clevo: <a href=\"https://www.clevo.com.tw/\">https://www.clevo.com.tw/</a></li>\n<li>Evoo 14.1 Ultra-slim Laptop Review (EVC141-12BK): <a href=\"https://www.youtube.com/watch?v=olPUSDFY9MQ\">https://www.youtube.com/watch?v=olPUSDFY9MQ</a></li \n</ul>',152,57,0,'CC-BY-SA','hardware,computers,repairs,upgrades,trackpad,evoo,motile,clevo,laptop,ebay,xpg,xenia',0,0,1),
(4487,'2025-10-14','Is AI autistic?',530,'A personal opinion on commercial LLMs','\n<p>\n<em>\nA motivation to share this show was the episode </em>\n<a href=\"https://hackerpublicradio.org/eps/hpr4454/index.html\" rel=\"noopener noreferrer\" target=\"_blank\">\n<em>\n4454: AI, It\'s a Trap!</em>\n</a>\n<em>\n, by Archer72.</em>\n</p>\n<p>\nThis is a talk for Hacker Public Radio about <u>\ncharacteristics</u>\n of LLM and <u>\nhow you can use them</u>\n for your best.</p>\n<p>\n<u>\n1</u>\n<sup>\n<u>\nst</u>\n</sup>\n<u>\n characteristic,</u>\n</p>\n<p>\nLLMs (Large Language Models) are designed to always give an answer that convinces. That does not mean they’re right.</p>\n<p>\n<u>\nUse it for the best:</u>\n don’t trust the answer. If you didn’t know the answer beforehand (using AI to obtain a better or faster result), then, verify it independently.</p>\n<p>\n&nbsp;</p>\n<p>\n<u>\n2</u>\n<sup>\n<u>\nnd</u>\n</sup>\n<u>\n characteristic:</u>\n</p>\n<p>\ncommercial LLMs, many times, do not think too much in the face of simple and short prompts. That’s a barrier, probably, against wasting resources.</p>\n<p>\n<u>\nHow to use it for the best?</u>\n Two things: 1) show the AI what you’ve found by your own, and proceed to tell what EXACTLY you need help with, on the basis of what you were already able to think. 2) Learn to follow-up. Suggested follow-ups are not good, prefer instead to talk to the AI, as a real conversation, to get confirmation, or contrast something you disagree with etc.</p>\n<p>\n(That is a characteristic that resembles autism a bit, so the name of the show: to not like when someone comes wanting something from you without doing any effort to obtain it; so you also do not feel like doing for them.)</p>\n<p>\n&nbsp;</p>\n<p>\n<u>\n3</u>\n<sup>\n<u>\nrd</u>\n</sup>\n<u>\n characteristic:</u>\n</p>\n<p>\nLLMs are not accountable. In general (most AIs), you don’t always know all the sources for the information given. (They do not know what they are telling, nor understand the value of sources.) And you can expect different outputs for the same inputs. (They are not deterministic.)</p>\n<p>\nSimply saying, they’re crazy machines to generate content they don’t, cognitively, understand, but that convinces humans, because they use human content and patterns.</p>\n<p>\n<u>\nSo, if you use AI for something, especially any serious purpose, remember</u>\n: the result you get is of your responsibility, don’t expect to be excused for your words “because I was helped by AI, <strong>\nthey</strong>\n did it”.</p>\n<p>\n&nbsp;</p>\n<p>\n<u>\n4</u>\n<sup>\n<u>\nth</u>\n</sup>\n<u>\n characteristic:</u>\n</p>\n<p>\nAI have a pattern. We can suspect that something was generated by AI, and no one likes to be answered by one if that possibility was not explicitly told.</p>\n<p>\n<u>\nWhat to do about it?</u>\n I suggest you don’t use AI-generated content with someone you estimate. It is rude.</p>\n<p>\n&nbsp;</p>\n<p>\n<u>\n5</u>\n<sup>\n<u>\nth</u>\n</sup>\n<u>\n characteristic</u>\n:</p>\n<p>\nLLMs can give great results with less effort than you would need to apply with no machine at your side. What the AI have done is, by exclusion, not what you have done.</p>\n<p>\nUse it to your best: you do not learn if someone does the job for you. For tasks you know well, and want to accelerate or remove repetitive steps, you may count on AI (or, better, count on a specific software, that can be programmed and give accountable results because you know exactly what is being done with the input). But for the intellectual work, if you like to think, if you’re good on written expression, the LLM may get passable results in less time… at the price of removing from you the chance to dedicate yourself to the comprehension and production. <u>\nSo</u>\n, it’s not always a matter of producing like a king — effectiveness above all and everything —; it may be important to satisfy what you value as meaningful — learning, maybe; or feeling the satisfaction of the conclusion —, so that you can sustainably follow a routine that is not a pain on the eye (expression to mean something disgust).</p>\n<p>\n&nbsp;</p>\n<p>\nThat’s all, folks!, for today. Let me know if you’d like more content on this; possibly I (or Archer72, or another friend) could bring some more opinion on AI if it is of your interest.</p>\n<p>\nAntoine was here. Bye bye.</p>\n\n\n',441,0,0,'CC-BY-SA','Artificial intelligence, Large Language Models, ChatGPT, Microsoft Copilot',0,0,1),
(4472,'2025-09-23','Cheap Yellow Display Project: Introduction to the Cheap Yellow Display ',247,'A brief introduction to the Cheap Yellow Display','\n<p>\n<span style=\"color: windowtext;\">\nHello, again.&nbsp;This is Trey.&nbsp;&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\nSeveral months ago, I heard Paul Asadoorian mention the Cheap Yellow Display on his podcast, </span>\n<a href=\"https://www.scworld.com/podcast-show/pauls-security-weekly\" rel=\"noopener noreferrer\" target=\"_blank\">\nPaul\'s Security Weekly</a>\n<span style=\"color: windowtext;\">\n(</span>\n<a href=\"https://www.scworld.com/podcast-show/pauls-security-weekly\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.scworld.com/podcast-show/pauls-security-weekly</a>\n<span style=\"color: windowtext;\">\n).&nbsp;I didn\'t think much of it at the time, but then I heard it referenced again, and again.&nbsp;Then, finally, it was described, and I became interested.&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n\"Cheap Yellow Display\" is the term used for the ESP32-2432S028R. Since this is somewhat challenging to say, and to remember, and since the board is yellow, and it can be obtained for as little as $12 USD, it has been given the nickname \"Cheap Yellow Display\".&nbsp;I will abbreviate this as CYD for the remainder of this episode.&nbsp;It is an </span>\n<span style=\"color: windowtext; background-color: inherit;\">\nESP32 (with built in WiFi &amp; Bluetooth) on a development board with one or more USB connectors, a MicroSD slot, a limited selection of GPIO pins, an RGB LED, a speaker, a light sensor, and best of all, a </span>\n<span style=\"color: windowtext;\">\n2.8-inch (71mm) TFT touchscreen LCD display.&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\nThe CYD runs on 5 volts DC.&nbsp;I am including some photographs of the CYD in the show notes.&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n<a href=\"hpr4472_image_1.jpeg\">\n<img src=\"hpr4472_image_1_tn.jpeg\">\n</a>\n</span>\n</p>\n<p>\n<br>\n</p>\n<p>\n<a href=\"hpr4472_image_2.jpeg\">\n<img src=\"hpr4472_image_2_tn.jpeg\">\n</a>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<a href=\"https://randomnerdtutorials.com/cheap-yellow-display-esp32-2432s028r/\" rel=\"noopener noreferrer\" target=\"_blank\">\nRandomNerdTutorials</a>\n<span style=\"color: windowtext;\">\nhas produced a very good writeup about this board on their&nbsp;website (</span>\n<a href=\"https://randomnerdtutorials.com/cheap-yellow-display-esp32-2432s028r/\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://randomnerdtutorials.com/cheap-yellow-display-esp32-2432s028r/</a>\n<span style=\"color: windowtext;\">\n).&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\nBrian Lough (AKA </span>\n<span style=\"color: windowtext; background-color: inherit;\">\nWitnessMeNow) has been building a community for the CYD on his GitHub site (</span>\n<a href=\"https://github.com/witnessmenow/ESP32-Cheap-Yellow-Display\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://github.com/witnessmenow/ESP32-Cheap-Yellow-Display</a>\n<span style=\"color: windowtext;\">\n) where he has instructions, examples, tutorials, downloadable tools, and much more.&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;Beginning back in the 1970s, my father and I built electronics projects together. And I have had a love for doing so ever since.&nbsp;Over the last few years, I have built several Arduino based gadgets on different platforms, including a couple which run on breadboards sitting beside me on my desk (I will share more about one of those later).&nbsp;&nbsp;&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext; background-color: inherit;\">\nA common use for the CYD among hackers is to leverage the built in WiFi &amp; Bluetooth radios to compromise wireless networks or devices.&nbsp;The Marauder project is a prebuilt image which can be loaded directly to the CYD to use it as a wireless hacking tool. </span>\n<a href=\"https://github.com/Fr4nkFletcher/ESP32-Marauder-Cheap-Yellow-Display\" rel=\"noopener noreferrer\" target=\"_blank\">\nFr4nkFletcher\'s Github repository</a>\n<span style=\"color: windowtext;\">\n(</span>\n<a href=\"https://github.com/Fr4nkFletcher/ESP32-Marauder-Cheap-Yellow-Display\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://github.com/Fr4nkFletcher/ESP32-Marauder-Cheap-Yellow-Display</a>\n<span style=\"color: windowtext;\">\n) is one place where you can download the Marauder tool.&nbsp;There are also video games, clocks, photo slideshows, and more, which have already been coded for you, and are available on the internet for download.&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\nWhat would you do with a CYD?&nbsp;What could you build?&nbsp;What problem might you solve?&nbsp;What fun project might you come up with?&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\nFor myself, the CYD intrigued me, but it did not yet jump out at me as something I had a need for.&nbsp;Yet.&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\nWhat would change my mind?&nbsp;What would set me on a quest to obtain some of these devices and learn to develop code for them?&nbsp;What problem did I wish to solve?&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\nTune in again, in a couple weeks, to learn the answers some of these questions and more in my next episode in this HPR series.&nbsp;</span>\n</p>\n\n\n',394,0,0,'CC-BY-SA','CYD, electronics, ESP32, Adruino, Cheap Yellow Display',0,0,1),
(4466,'2025-09-15','HPR Music project - Walking tune to(wards) a friend',93,'Fred teaches a tune that they wrote several years ago','\n    <p>\n      The sheet music exists (although slightly inaccurate since it has\n      been slightly altered since then) on my <a\n        href=\"https://musescore.com/user/38209975/scores/10730527\">musescore\n        page</a>. <br>\n    </p>\n    <p>\n      Also some credit to Folky who appears on his own nyckelharpa\n      towards the end in the duette part.</p>\n      <p>\n<a href=\"hpr4466_image_1.pdf\"><img src=\"hpr4466_image_1_tn.png\" alt=\"thumbnail of sheet music\" /></a>\n</p>',422,0,1,'CC-BY-SA','nyckelharpa, flute, alto recorder, folk music',0,0,1),
(4488,'2025-10-15','Cheap Yellow Display Project Part 2: What is the problem? ',376,'Delving into the problem I want to solve using my Cheap Yellow Display','\n<p>\n<span style=\"color: windowtext;\">\nHello again.&nbsp;this is Trey.&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\nThis is part 2 in my Cheap Yellow Display (CYD) Project series.&nbsp;You can find Part 1 in </span>\n<a href=\"https://hackerpublicradio.org/eps/hpr4472/index.html\" rel=\"noopener noreferrer\" target=\"_blank\" style=\"color: windowtext;\">\nepisode 4472</a>\n<span style=\"color: windowtext;\">\n.&nbsp;&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\nWe previously left our handy hero learning about the technology of the CYD, but without a compelling reason to begin using one.&nbsp;As we rejoin the topic, it was Winter Field Day 2025 (Jan 25 &amp; 26, 2025).&nbsp;</span>\n<a href=\"https://winterfieldday.org/\" rel=\"noopener noreferrer\" target=\"_blank\">\nWinter Field Day</a>\n<span style=\"color: windowtext;\">\nis an annual event where amateur radio operators from around the world gather some portable radio equipment and setup somewhere away from their normal base of operations.&nbsp;It is designed to encourage operators to practice their emergency preparedness skills in unfavorable weather.&nbsp;Usually, they will run their equipment using batteries or generators.&nbsp;&nbsp;&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\nI chose this day because I knew there would be a good amount of radio traffic.&nbsp;I had just finished tuning my first handmade inverted-V dipole antenna for use on the 10 meter amateur radio bands. These span </span>\n<span style=\"color: windowtext; background-color: inherit;\">\n28 MHz to 29.700 MHz. </span>\n<span style=\"color: windowtext;\">\nI had the antenna connected to a 10 meter transceiver to listen in on the radio traffic.&nbsp;Yes, I will include pictures of the antenna in the show notes.&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<a href=\"hpr4488_image_1.jpeg\">\n<img src=\"hpr4488_image_1_tn.jpeg\">\n</a>\n</p>\n<p>\n<br>\n</p>\n<p>\n<a href=\"hpr4488_image_2.jpeg\">\n<img src=\"hpr4488_image_2_tn.jpeg\">\n</a>\n</p>\n<p>\n<br>\n</p>\n<p>\n<br>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\nScanning through the lower end of the band resulted in receiving a number of very strong continuous wave signals. Continuous wave, is abbreviated CW in amateur radio circles, and it stands for morse code signals transmitted over radio frequencies. The tones indicating dots and dashes of Morse code were clearly audible through the radio\'s speaker.&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n\"WAIT! STOP! Time out!!\"&nbsp;I can hear you shouting as you listen.&nbsp;\"This is supposed to be a discussion of the ESP32 CYD.&nbsp;What does this have to do with amateur radio?\"&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\nYou are absolutely right.&nbsp;Now hold your horses and we will get there.&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\nI barely learned Morse code as a child, and I used it a bit as an aviator in the \'90s (while always being able to reference a visual representation of the Morse beside the actual letters).&nbsp;Thus, I never became proficient.&nbsp;Shortly after Winter Field Day 2025, I began taking lessons on Morse code, with the goal of becoming proficient at both sending and receiving at around 20 words per minute.&nbsp;This training may be a topic for another episode in a different series, as my journey advances.&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\nScanning further up the band, I also identified some digital transmissions (Probably FT-8) and many voice transmissions.&nbsp;The antenna was working, at least for receiving.&nbsp;&nbsp;&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\nFor a little back history, I have held an amateur radio license since 2016, and quickly progressed all the way to an Extra Class, giving me permission to use all of the amateur radio frequencies allowed within the United States in the High Frequency (HF), Very High Frequency (VHF), and Ultra High Frequency (UHF) bands.&nbsp;However, to this point, I have only operated in the VHF and UHF bands, and have done so using mobile and handheld transceivers.&nbsp;I inherited some HF equipment from a close friend who went silent key in 2023, and I was only now trying to use it.&nbsp;&nbsp;You can learn more about my friend, and about the term \"Silent Key\" in episode </span>\n<a href=\"https://www.hackerpublicradio.org/eps/hpr3922/index.html\" rel=\"noopener noreferrer\" target=\"_blank\">\nHPR3922</a>\n<span style=\"color: windowtext;\">\n</span>\n<a href=\"https://www.hackerpublicradio.org/eps/hpr3922/index.html\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.hackerpublicradio.org/eps/hpr3922/index.html</a>\n<span style=\"color: windowtext;\">\n)&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\nOn field day, there was far too much traffic, and it was too intimidating for me to make my first attempt at transmitting on the HF bands.&nbsp;This would have to wait until later.&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\nBut I did need to determine how well my antenna would transmit.&nbsp;I began to ponder my options.&nbsp;I really did not want to talk to anyone until I had listened to more QSOs&nbsp;and I could implement proper practices. The term QSO the amateur radio term for radio conversations.&nbsp;&nbsp;I also have no interest in digital modes (yet).&nbsp;I like the simplicity of voice and CW.&nbsp;There I am, back at Morse code again.&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\nWhat if there was a way that I could transmit a signal in Morse code and get reliable feedback on signal propagation, without the need to try to reply to any responses?&nbsp;It would need to be an accurate, repeatable, properly structured and timed Morse code transmission, more than my training (at that point, or even this point) could accomplish.&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\nThis was something to think about.&nbsp;And think about.&nbsp;And think about...&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\nTune in to the next episode in the series to learn where these thoughts led me, and how all this relates to my CYD project.&nbsp;</span>\n</p>\n\n\n',394,0,0,'CC-BY-SA','CYD, electronics, ESP32, Adruino, Cheap Yellow Display, morse code, cw, amateur radio, ham radio',0,0,1),
(4502,'2025-11-04','Cheap Yellow Display Project Part 3: Reverse beacon network ',472,'Learn about the Reverse Beacon Network and how it might be used with the Cheap Yellow Display','\n<p>\n<span style=\"color: windowtext;\">\nHello, again. This is Trey.&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\nWelcome to part 3 in my Cheap Yellow Display (CYD) Project series.&nbsp;You can find Part 1 in episode 4472 and Part 2 in episode 4488.&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\nWe previously left our handy hero searching for a solution to an amateur radio signal propagation dilemma, while he is trying to become proficient with Morse code. The CYD technology is simmering in the back of his brain – an answer in search of a problem.&nbsp;&nbsp;&nbsp;&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\nHah!&nbsp;I love trying to create the feel of a vintage radio or television series with the intro and outro for these episodes.&nbsp;But I am by no means the hero.&nbsp;I am simply Trey – a grumpy old man and tinkerer.&nbsp;Instead, the real hero in this episode is Keith </span>\n<a href=\"https://www.youtube.com/@ve3svq-theshakykey440\" rel=\"noopener noreferrer\" target=\"_blank\">\nVE3SVQ-THE SHAKY KEY</a>\n<span style=\"color: windowtext;\">\non YouTube.&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\nSo.... Let\'s see.&nbsp;Where were we? Oh yes.&nbsp;I have been trying to learn Morse code&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n-.-. --.-&nbsp;-.-. --.- (CQ CQ)&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext; background-color: inherit;\">\nThat was me, tapping out \"CQ CQ\" in Morse code using the practice set I keep on my desk.&nbsp;This consists of a set of code paddles, connected to an Arduino Nano, which I built several years ago based what I learned watching </span>\n<a href=\"https://www.youtube.com/watch?v=U1LHWX86INQ\" rel=\"noopener noreferrer\" target=\"_blank\">\nCode Practice Oscillator; Aka: The Three Arduinos</a>\n<span style=\"color: windowtext;\">\non Jmhrvy1947\'s YouTube Channel, and based on the code from </span>\n<a href=\"https://github.com/jmharvey1/ArduinoCPO\" rel=\"noopener noreferrer\" target=\"_blank\">\nhis GitHub</a>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n<a href=\"https://github.com/jmharvey1/ArduinoCPO\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://github.com/jmharvey1/ArduinoCPO</a>\n<span style=\"color: windowtext; background-color: inherit;\">\n. I did need to make modifications, both to support the Ardunio Nano on which I chose to run it, and for my own sanity, as the way that I learned to write code for Ardunio is very different.&nbsp;I focus on readability and flexibility.&nbsp;You can see these changes on </span>\n<a href=\"https://github.com/jttrey3/PracticeOscillator/blob/main/PracticeOscillator.ino\" rel=\"noopener noreferrer\" target=\"_blank\">\nmy own GitHub</a>\n<span style=\"color: windowtext;\">\n(</span>\n<a href=\"https://github.com/jttrey3/PracticeOscillator/blob/main/PracticeOscillator.ino\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://github.com/jttrey3/PracticeOscillator/blob/main/PracticeOscillator.ino</a>\n<span style=\"color: windowtext;\">\n)&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\nAnyway,&nbsp;I have been studying.&nbsp;I have been watching videos.&nbsp;I have been practicing.&nbsp;I might actually be learning some of this stuff.&nbsp;If you are interested in more details about the resources I am using, leave a comment for this episode, or drop me an email using the address in my profile, and I may record an episode about it.&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\nThe result is that I have been learning.&nbsp;But also, the google and YouTube algorithms have been learning about me.&nbsp;And they have started to feed me more videos about Morse code. It is both helpful, and super creepy at the same time.&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\nSo one day, when I opened YouTube, a title in my feed caught my eye.&nbsp;\"</span>\n<a href=\"https://www.youtube.com/watch?v=oBRUGWu3gc8\" rel=\"noopener noreferrer\" target=\"_blank\">\nNEW CW OP USE THE REVERSE BEACON NETWORK TO IMPROVE YOUR CODE</a>\n<span style=\"color: windowtext;\">\n\".&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\nI said to myself, \"Self, this could be interesting.\"&nbsp;I watched Keith\'s video and learned about the </span>\n<a href=\"https://www.reversebeacon.net/\" rel=\"noopener noreferrer\" target=\"_blank\">\nReverse Beacon Network</a>\n<span style=\"color: windowtext;\">\n.&nbsp;&nbsp;According to their website, \"The Reverse Beacon Network (RBN) is a revolutionary new idea. Instead of beacons actively transmitting signals, the RBN is a network of stations listening to the bands and reporting what stations they hear, when and how well.\"&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\nLet\'s pause for a second and discuss amateur radio beacons.&nbsp;These are stations which repeatedly broadcast their identity on dedicated frequencies.&nbsp;Other operators around the world, who hear a beacon, can evaluate the signal propagation between their station and the beacon location.&nbsp;&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\nThe RBN is just the opposite.&nbsp;Here, the station operator can transmit a test signal with their call sign, using CW or other digital modes.&nbsp;Then, they can look at the RBN website to see which RBN listening stations received their transmission, and even get a signal report.&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\nOn the </span>\n<a href=\"https://www.reversebeacon.net/main.php\" rel=\"noopener noreferrer\" target=\"_blank\">\nmain page</a>\n<span style=\"color: windowtext;\">\nof the RBN website, one can observe a world map with paths showing where signals were received, and where they originated based on the registered grid square of the originating call sign.&nbsp;The table displayed below the map reveals the sending and receiving call signs, their distance apart (In miles or kilometers), the frequency, the mode, the type of transmission, the signal to noise ratio, the speed of the transmission, and the time/date using UTC.&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<a href=\"hpr4502_image_1.png\">\n<img src=\"hpr4502_image_1_tn.png\">\n</a>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\nThis information is collected by a network of volunteer reverse beacon receiving stations all over the world, which monitor the various radio bands, decode transmissions of CW (Morse code), RTTY (Radio Teletype), and PSK31 or PSK63 (Digital modes using Phase Shift Keying). These receiving stations report what they receive as well as the signal strength back into the Reverse Beacon Network to be recorded and published over the internet.&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\nDave Casler discussed the RBN back in 2016 on his YouTube video </span>\n<a href=\"https://www.youtube.com/watch?v=4Y5ZHqfeJgo\" rel=\"noopener noreferrer\" target=\"_blank\">\nThe Ham Radio Reverse Beacon Network, AD#32</a>\n<span style=\"color: windowtext;\">\n.&nbsp;This gives very good detail of how the network works.&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext; background-color: inherit;\">\nThis sounds like exactly what I have been looking for.&nbsp;All I need to do is come up with a way to reliably, accurately, and consistently transmit \"CQ CQ CQ TEST DE\" followed by my call sign three times at a constant 20 words per minute (WPM).&nbsp;If I can do this a few times, I can then check the RBN to see where I was received.&nbsp;By including the \"TEST\" string, recipients know that I do not wish to start a conversation.&nbsp;I can get accurate reporting of where my signal is going and how strong it is.&nbsp;</span>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\nBut remember that my morse code skills are still inadequate.&nbsp;And my radios do not have \"Keyer memories\" like those which can be found in higher end transceivers like the Icom 7300, enabling programmed messages to be sent at the touch of a button.&nbsp;&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\nBut there is a fairly inexpensive solution to this problem.&nbsp;One which has been nagging at the back of my mind.&nbsp;Maybe, I could use the Cheap Yellow Display to effectively add \"Keyer memory\" to any of my radios by simply plugging it in to the code key input port.&nbsp;These stored messages could be transmitted by simply touching their specific icon on the touch screen.&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\nNow we have a plan.&nbsp;But how will we do it?&nbsp;What else will we need to learn?&nbsp;Will it even work?&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\nTune in to the next episode in the series to find out the answers to some of these questions and more!&nbsp;</span>\n</p>\n\n\n',394,0,0,'CC-BY-SA','CYD, electronics, ESP32, Adruino, Cheap Yellow Display, morse code, cw, amateur radio, ham radio',0,0,1),
(4467,'2025-09-16','A small Odoo usage intro and a larger technical bit',2366,'If you are into tech, this will keep you busy for the next few years.','\n<p>\nTo switch in Odoo to developer mode, simply add the tekst \"?debug=1\" to the url.</p>\n<p>\nWARNING: the Technical menu that you now can see in the Settings app is not for the faint of heart! </p>\n<p>\nBe very, very careful making changes there.</p>\n\n\n',369,126,0,'CC-BY-SA',' odoo, erp, application',0,0,1),
(4468,'2025-09-17','AI Trap and Fix',305,'Archer72 breaks the icons on his system and gets things back in order','<p>Hello, this is your host, Archer72 for another episode of\r\nHacker Public Radio.</p>\r\n<p>In this episode, I continue to fall for the AI trap.</p>\r\n<p>Here I was, minding my own business, when I was bothered by\r\nthe icon only showing a generic icon for the Beeper app.</p>\r\n<p>Now, I&#39;m not saying that Duck.ai is not useful, but be\r\nvery careful what you ask for.</p>\r\n<p>It was probably a combination of the early morning, and not\r\nreading completely through the AI suggestions, but I ended\r\nup losing all icons on the Gnome desktop except for a few\r\nlike Firefox.  I won&#39;t leave the problematic command so I\r\ndon&#39;t trip up the listener, but it involved updating a\r\ndesktop database.   This in turn left a dash or blank where\r\nthe icons should be.</p>\r\n<p>If that wasn&#39;t bad enough, it was suggested to reset Gnome\r\nsettings, and nothing was as it seemed before.  Things that\r\nI had taken for granted were not there.  You forget what\r\ncustom settings are there when mistakes like this are made.</p>\r\n<p>So the short answer is that the icons directory, located on\r\nmy Debian system should be located in </p>\r\n<p><code>.local/share/icons</code>.</p>\r\n<p>Instead it was in a sub-directory </p>\r\n<p><code>.local/share/icons/icons</code></p>\r\n<p>Correcting the directory location solved everything, but I\r\nwas still left to reset my custom Gnome keybindings.</p>\r\n<p>• Swap Escape and Caps lock key</p>\r\n<p>I used this because I am a Vim user, and this feels more\r\nnatural when I need to hit Escape to change modes.</p>\r\n<p>In Gnome, the setting is under <a href=\"https://gitlab.gnome.org/GNOME/gnome-tweaks\">Gnome Tweaks</a> &gt;\r\n Keyboard &gt;\r\n Additional Layout Options &gt;\r\n Swap Esc and Caps Lock Key</p>\r\n<p>As of this show release the current stable version is\r\nTrixie.  <a href=\"https://packages.debian.org/trixie/gnome-tweaks\">Gnome Tweaks - Debian Trixie</a> can be installed by <code>sudo apt install gnome-tweaks</code> on any Debian based system.</p>\r\n<p>• Compose key\r\n• <a href=\"https://fsymbols.com/keyboard/linux/compose\">Compose key shortcuts</a></p>\r\n<p>The Compose key is found at Settings &gt;\r\n Keyboard &gt;\r\n Compose\r\nKey.   I selected the Menu key, because this is rarely used,\r\nand can still be accessed by the track pad.</p>\r\n<p>• Shortcut to open MPV with a clipboard URL from Youtube</p>\r\n<p>This can be found in Setting &gt;\r\n Keyboard &gt;\r\n View and Customize\r\nShortcuts &gt;\r\n Custom Shortcuts</p>\r\n<pre><code><span class=\"hljs-built_in\">Shift</span>+Ctrl+P\r\n</code></pre><p>Code placed in <code>/usr/local/bin/</code></p>\r\n<pre><code><span class=\"hljs-meta\">#!/bin/bash</span>\r\n<span class=\"hljs-comment\">## mpv-url</span>\r\n\r\nurl=`xsel -o -b`\r\n<span class=\"hljs-built_in\">echo</span> <span class=\"hljs-variable\">$url</span>\r\nmpv <span class=\"hljs-variable\">$url</span>\r\n</code></pre><p>Now I can get back to what I started in the first place,\r\ncreating a <code>.desktop</code> file for Beeper.</p>\r\n<p>I created a beeper-desktop.desktop file in\r\n`~/.local/share/applications&#39; with the follow contents.</p>\r\n<pre><code><span class=\"hljs-section\">[Desktop Entry]</span>\r\n<span class=\"hljs-attr\">Name</span>=Beeper Desktop\r\n<span class=\"hljs-attr\">Exec</span>=/home/mark/AppImages/Beeper-<span class=\"hljs-number\">4.1</span>.<span class=\"hljs-number\">169</span>.AppImage\r\n<span class=\"hljs-attr\">Icon</span>=/home/mark/.local/share/icons/beeper.png\r\n<span class=\"hljs-attr\">Type</span>=Application\r\n<span class=\"hljs-attr\">Categories</span>=Network;InstantMessaging;\r\n<span class=\"hljs-attr\">Terminal</span>=<span class=\"hljs-literal\">false</span>\r\n<span class=\"hljs-attr\">StartupWMClass</span>=Beeper\r\n</code></pre><p>The last part of the config file can be found by </p>\r\n<p><code>xprop | grep WM_CLASS</code></p>\r',318,0,0,'CC-BY-SA','Beeper, icons, AI, mpv, Gnome Tweaks',0,0,1),
(4517,'2025-11-25','Cheap Yellow Display Project Part 4: The hardware ',679,'Explanation of the hardware which will be used for this project','\n<p>\n<span style=\"color: windowtext;\">\nHello, again. This is Trey.&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\nWelcome to part 4 in my Cheap Yellow Display (CYD) Project series.&nbsp;If you have hung in there with me so far on this journey, thank you.&nbsp;If you have missed earlier episodes, you can find them on my </span>\n<a href=\"https://www.hackerpublicradio.org/correspondents/0394.html\" rel=\"noopener noreferrer\" target=\"_blank\">\nHPR profile page</a>\n<span style=\"color: windowtext;\">\n</span>\n<a href=\"https://www.hackerpublicradio.org/correspondents/0394.html\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.hackerpublicradio.org/correspondents/0394.html</a>\n<span style=\"color: windowtext;\">\n&nbsp;&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\nIf you have questions, comments, concerns, or other feedback, please leave an episode comment, or drop me an email (Using the address in my profile). Even better, you could record and upload your own show which shares your viewpoint or expertise.&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\nTo review, I finally have an actual project to build using the CYD. It is a portable, programmable morse code&nbsp;\"Keyer memory\" which can be connected to any of my HF transceiver radios by simply plugging it in to the code key input port.&nbsp;Then I could transmit stored messages by simply touching their specific icon on the touch screen.&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\nSo, now I purchased a pair of CYDs.&nbsp;Each arrived in an anti-static zipper bag with a USB C cable, a 6 inch long 4 pin PB1.25mm to Dupont 2.54mm cable harness, a plastic case holding the CYD itself and a small plastic stylus.&nbsp;There are pictures in the show notes.&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<a href=\"hpr4517_image_1.jpeg\">\n<img src=\"hpr4517_image_1_tn.jpeg\">\n</a>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<a href=\"hpr4517_image_2.jpeg\">\n<img src=\"hpr4517_image_2_tn.jpeg\">\n</a>\n</p>\n<p>\n<a href=\"hpr4517_image_3.jpeg\">\n<img src=\"hpr4517_image_3_tn.jpeg\">\n</a>\n</p>\n<p>\n<br>\n</p>\n<p>\n<span style=\"color: windowtext;\">\nDepending on how many IO connections I may need, and how I plan to power this, I am probably going to need more 4 pin PB1.25mm wired connectors.&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\nYou can see a description of the various features and connectors on </span>\n<a href=\"https://randomnerdtutorials.com/cheap-yellow-display-esp32-2432s028r/\" rel=\"noopener noreferrer\" target=\"_blank\">\nRandomNerdTutorials</a>\n<span style=\"color: windowtext;\">\nwriteup about this board (</span>\n<a href=\"https://randomnerdtutorials.com/cheap-yellow-display-esp32-2432s028r/\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://randomnerdtutorials.com/cheap-yellow-display-esp32-2432s028r/</a>\n<span style=\"color: windowtext; background-color: inherit;\">\n).&nbsp;The only difference I can see between this description and what I received is that mine have both a MicroUSB and USB C port.&nbsp;&nbsp;&nbsp;</span>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<br>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n<a href=\"hpr4517_image_4.jpeg\">\n<img src=\"hpr4517_image_4_tn.jpeg\">\n</a>\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\nOf course, first thing, I had to plug it in and see what happens.&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<a href=\"hpr4517_image_5.jpeg\">\n<img src=\"hpr4517_image_5_tn.jpeg\">\n</a>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<a href=\"hpr4517_image_6.jpeg\">\n<img src=\"hpr4517_image_6_tn.jpeg\">\n</a>\n</p>\n<p>\n<br>\n</p>\n<p>\n<span style=\"color: windowtext;\">\nIt appears to be running some kind of simulation of a web site. The backlit display looks alright.&nbsp;It is not super high resolution, but for the price, it will suite my needs.&nbsp;The touch screen is responsive, but it is pressure sensitive and works best using the provided stylus or a fingernail and not your finger tip.&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\nSo, I have the CYD.&nbsp;What other hardware do I need?&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\nI need to address how one of these will actually connect to my radios.&nbsp;Modern amateur radio transceivers which support continuous wave (CW) transmission (Which is another name for Morse code) generally can use one of two different pieces of hardware for input.&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\nThe first is what we call a straight key.&nbsp;Below is a photo of the one I own.&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n<a href=\"hpr4517_image_7.jpeg\">\n<img src=\"hpr4517_image_7_tn.jpeg\">\n</a>\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\nThis is a classic, old fashioned telegraph style code key.&nbsp;It is designed to quickly and easily be pressed down to close a circuit and when released the circuit is opened, effectively making it a normally open push button switch.&nbsp;To send a dot, the operator holds down the key for a short period of time, then releases it.&nbsp;To send a dash, the operator holds down the key for a longer period of time, before releasing it.&nbsp;(We will discuss actual timing specifications for morse code in a future podcast) Connectivity for the switch has been standardized to use a 3.5 mm mono male phone connector which has only sleeve and tip connections.&nbsp;&nbsp;&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\nThe second option is a paddle style electronic keyer.&nbsp;There are many styles of these, and I am including a picture of the one I use, which once belonged to a close friend of mine who is now silent key.&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n<a href=\"hpr4517_image_8.jpeg\">\n<img src=\"hpr4517_image_8_tn.jpeg\">\n</a>\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\nIn general, the paddle is two separate normally open switches.&nbsp;In the most common configuration, if an operator presses and releases the paddle on the right, a dash is sent.&nbsp;If the paddle on the right is held, a continuous series of dashes will be sent until that paddle is released.&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\nThe left paddle works similarly.&nbsp;If it is pressed and released, a single dot is sent.&nbsp;If it is pressed and held, a series of dots is sent until it is released.&nbsp;The function of these paddles can be swapped from left to right using the radio configuration.&nbsp;There is additional functionality which can be configured in some radios for when both paddles are pressed simultaneously, but I am not going to describe those here.&nbsp;&nbsp;&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\nThe paddle generally uses a 3.5mm stereo male phone connector with the sleeve being common. The tip of the phone connector is wired to the left paddle and ring of the connector is wired to the right paddle.&nbsp;Most modern radios have a built in keyer which can be configured for a paddle and will automatically transmit the dots or dashes at whichever speed is configured based on the paddle pressed.&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\nYou can see this phone connector illustrated on </span>\n<a href=\"https://en.m.wikipedia.org/wiki/Phone_connector_(audio)\" rel=\"noopener noreferrer\" target=\"_blank\">\nWikipedia\'s phone connector page.</a>\n<span style=\"color: windowtext;\">\n.&nbsp;</span>\n<a href=\"https://en.m.wikipedia.org/wiki/Phone_connector_(audio\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://en.m.wikipedia.org/wiki/Phone_connector_(audio</a>\n<span style=\"color: windowtext;\">\n)&nbsp;&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\nYou can learn more about all the various devices which can be used for sending morse and how they function at </span>\n<a href=\"https://morsecode.world/keys.html\" rel=\"noopener noreferrer\" target=\"_blank\">\nMorse Code World</a>\n<span style=\"color: windowtext;\">\n. </span>\n<a href=\"https://morsecode.world/keys.html\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://morsecode.world/keys.html</a>\n<span style=\"color: windowtext;\">\n&nbsp;&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\nIdeally, controlling all the morse code timing within the CYD would be best.&nbsp;That way, it could be connected as a straight key and any keyer settings already configured within the radio shouldn\'t matter.&nbsp;However, If I wish to also be able to manually send morse code myself using my paddles, without disconnecting the CYD and reconfiguring the radio, that could be problematic.&nbsp;I may need to factor in the possibility of connecting my paddle to the CYD and then building in code to respond to inputs from the paddles.&nbsp;&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\nAs I mentioned in a previous episode, I have an Arduino Nano on my desk as a practice oscillator for my paddles. I may be able to reuse some of that code on the CYD.&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<a href=\"hpr4517_image_9.jpeg\">\n<img src=\"hpr4517_image_9_tn.jpeg\">\n</a>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\nSo, if I&nbsp;want the CYD to appear to the radio like a straight key, I will need it to be able to control a switch quickly and accurately.&nbsp;But I also want the CYD and the radio to be electrically isolated from each other.&nbsp;This calls for a relay.&nbsp;I was able to find and order some inexpensive relay modules which work nicely with Arduino and ESP32.&nbsp;&nbsp;&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n<a href=\"hpr4517_image_10.jpeg\">\n<img src=\"hpr4517_image_10_tn.jpeg\">\n</a>\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\nThese allow connectivity to 5v power and to one of the CYD\'s GPIO pins.&nbsp;These feed an optocoupler circuit, which, in-turn, drives the coil of the relay.&nbsp;This provides inductive kickback protection to the CYD and can drive a coil which would require more current than the GPIO can provide.&nbsp;&nbsp;&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext; background-color: inherit;\">\nInductive kickback rabbit trail: An inductor is simply a coil of wire.&nbsp;Direct current flowing through any wire generates a magnetic field.&nbsp;Within the inductor, because the wire is coiled, the magnetic field builds from each pass of the wire in the coil.&nbsp;If you include an iron core, it sustains the magnetic field even better.&nbsp;This is the basis for an electro magnet.&nbsp;A relay is simply a momentary contact switch controlled by an electromagnet.</span>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\nOne unique property of an inductor is that, current wants to keep flowing in the direction it was applied.&nbsp;To be specific, when the current source is removed, the magnetic field still exists for a while, and it effectively \"generates\" an electric current within the coil, in the same direction as the one which initially created the magnetic field to begin with.&nbsp;If it has a path to flow, this current will create another weaker magnetic field, which creates its own electric current, in a diminishing loop.&nbsp;If the circuit which drives the coil of a direct current relay is not ready for this continued push of current, damage can be done.&nbsp;Many times this is countered by wiring a \"flyback diode\" in parallel with the coil and in the opposite direction in which current will be applied. This way, when the current source is stopped, the diode gives a path for the inductive kickback current to safely flow while the magnetic field dissipates.&nbsp;Explained in greater detail at&nbsp;</span>\n<a href=\"https://inductive-kickback.com/2019/04/inductive-kickback-made-simple-to-grasp-easy-to-handle/\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://inductive-kickback.com/2019/04/inductive-kickback-made-simple-to-grasp-easy-to-handle/</a>\n<span style=\"color: windowtext;\">\n&nbsp;&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\nThe switch side of the relay is a single pole double throw (SPDT) and makes connections available for common, normally closed (NC), and normally open (NO).&nbsp;It will be easy to connect the common and NO connections to a 3.5mm mono male connector so that it may be plugged into the \"key\" port on any radio transmitter.&nbsp;I will need to do some testing on the speed of the relay, but I think it will work just fine.&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\nOnce I start writing some code for the CYD, I will be able to connect and test the relay.&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\nWell, this is a good place to end this episode, and it is one of the longest in this series so far.&nbsp;&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\nIn the next episode, we will begin to look at how we design the user interface for our program, something I do not know anything about (yet).&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\nStay tuned weekdays for additional exciting episodes of Hacker Public Radio, and, at some point, the next episode in this series.&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\nIf you like what you have heard, please leave an episode comment, or drop me an email (Using the address in my profile). If you have more than a single sentence to contribute on the subject, I encourage you to record an episode with your thoughts and expertise.&nbsp;If you dislike what you have heard, you are encouraged even more strongly to record and upload your own show which shares your viewpoint or opinion.&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\nUntil next time.&nbsp;</span>\n</p>\n\n\n',394,0,0,'CC-BY-SA','CYD, electronics, ESP32, Adruino, Cheap Yellow Display, morse code, cw, amateur radio, ham radio',0,0,1),
(4473,'2025-09-24','HPR Beer Garden 2 - Session IPA',1715,'Kevie and Dave talk about Session IPA beers and review a couple for themselves.','\n<p>\nKevie and Dave have a discussion about the Session IPA (sub)style of beer. They also review a couple that they purchased from their local retailers: Dave tries out <a href=\"https://www.espiga.cat/en/product/crystalline-waters/\" rel=\"noopener noreferrer\" target=\"_blank\">\nCrystalline Waters by Cervesa Espiga</a>\n, whilst Kevie samples Island <a href=\"https://www.orkneybrewery.co.uk/beer/island-life\" rel=\"noopener noreferrer\" target=\"_blank\">\nLife Session IPA by The Orkney Brewery</a>\n.</p>\n<p>\n<br>\n</p>\n<p>\n<a href=\"hpr4473_image_1.png\">\n<img src=\"hpr4473_image_1_tn.png\">\n</a>\n</p>\n<p>\nConnect with the guys on Untappd:</p>\n<ul>\n<li>\n<a href=\"https://untappd.com/user/thelovebug\" rel=\"noopener noreferrer\" target=\"_blank\">\nDave</a>\n</li>\n<li>\n<a href=\"https://untappd.com/user/kevie49\" rel=\"noopener noreferrer\" target=\"_blank\">\nKevie</a>\n</li>\n</ul>\n<p>\n<br>\n</p>\n<p>\nThe intro sounds for the show are used from:</p>\n<ul>\n<li>\n<a href=\"https://freesound.org/people/mixtus/sounds/329806/\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://freesound.org/people/mixtus/sounds/329806/</a>\n</li>\n<li>\n<a href=\"https://freesound.org/people/j1987/sounds/123003/\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://freesound.org/people/j1987/sounds/123003/</a>\n</li>\n<li>\n<a href=\"https://freesound.org/people/greatsoundstube/sounds/628437/\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://freesound.org/people/greatsoundstube/sounds/628437/</a>\n</li>\n</ul>\n\n\n',296,14,0,'CC-BY-SA','beer',0,0,1),
(4471,'2025-09-22','Ti-82 Makes Music and Password Manager',962,' I talk about Ti-82 Calculators Making music and LastPass Password Manager','    <p>\n      The <b>TI-80</b> is a <a\n        href=\"https://en.wikipedia.org/wiki/Graphing_calculator\"\n        title=\"Graphing calculator\">graphing calculator</a> introduced\n      by <a href=\"https://en.wikipedia.org/wiki/Texas_Instruments\"\n        title=\"Texas Instruments\">Texas Instruments</a> in 1995 to be\n      used at a <a href=\"https://en.wikipedia.org/wiki/Middle_school\"\n        title=\"Middle school\">middle school</a> level (grades 6 to 8).<sup\n        id=\"cite_ref-:0_1-0\" class=\"reference\"><a\n          href=\"https://en.wikipedia.org/wiki/TI-80#cite_note-:0-1\"><span\n            class=\"cite-bracket\"></span><span class=\"cite-bracket\"></span></a></sup>\n      It offered advanced capabilities that had previously only been\n      available in high-end <a\n        href=\"https://en.wikipedia.org/wiki/Scientific_calculator\"\n        title=\"Scientific calculator\">scientific calculators</a> to\n      students learning <a\n        href=\"https://en.wikipedia.org/wiki/Pre-algebra\"\n        title=\"Pre-algebra\">pre-algebra</a> and <a\n        href=\"https://en.wikipedia.org/wiki/Algebra\" title=\"Algebra\">algebra</a>,\n      and was designed to be affordable for schools.<br>\n    </p>\n    <p>\n      <br>\n      <sup id=\"cite_ref-2\" class=\"reference\"><a\n          href=\"https://en.wikipedia.org/wiki/TI-80#cite_note-2\"><span\n            class=\"cite-bracket\"></span><span class=\"cite-bracket\"></span></a></sup><sup\n        id=\"cite_ref-:0_1-1\" class=\"reference\"><a\n          href=\"https://en.wikipedia.org/wiki/TI-80#cite_note-:0-1\"><span\n            class=\"cite-bracket\"></span><span class=\"cite-bracket\"></span></a></sup></p>\n    <a href=\"hpr4471_image_1.png\"><img src=\"hpr4471_image_1_tn.png\">\n    </a>\n    <h3>\n      Links</h3>\n\n    <ul>\n      <li><a href=\"https://en.wikipedia.org/wiki/TI-80\">\n          https://en.wikipedia.org/wiki/TI-80</a></li>\n      <li><a href=\"https://zadig.akeo.ie/\">https://zadig.akeo.ie/</a><br>\n      </li>\n      <li><a\nhref=\"https://rmccurdy.com/.scripts/downloaded/HoustonTracker%202%20%20Windows%2011%20Tutorial%20TI-82%20Silverlink.zip\">https://rmccurdy.com/.scripts/downloaded/HoustonTracker%202%20%20Windows%2011%20Tutorial%20TI-82%20Silverlink.zip\n\n        </a></li>\n    </ul>\n    <p> <br>\n    </p>',36,0,1,'CC-BY-SA','hacking, calculators, password managers, android',0,0,1),
(4474,'2025-09-25','Hacker Poetry - 001',122,'A show where hackers read poetry written by other hackers. ','\n<p>\nThe first episode of Hacker Poetry! Episode 001, in which three poems by an anonymous hacker are read by Major Ursa.</p>\n\n<p>\n<small>\n<strong>Note:</strong> The host has confirmed that the show is compliant with the fact that <a href=\"https://lists.hackerpublicradio.com/pipermail/hpr/2022-August/004570.html\">HPR is a podcast and not a podcast hosting platform/distribution network</a>.\n</small>\n</p>\n\n\n',451,0,1,'CC-BY-SA','poetry, writing',0,0,1),
(4532,'2025-12-16','Cheap Yellow Display Project Part 5: Graphical User Interface ',791,'Trey experiments with Squareline Studio to build a GUI for this project','\n<p>\n<span style=\"color: windowtext;\">\nHello, again. This is Trey.&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\nWelcome to part 5 in my Cheap Yellow Display (CYD) Project series.&nbsp;If you are still listening to me ramble about this project, thank you.&nbsp;If you wish to catch up on earlier episodes, you can find them on my </span>\n<a href=\"https://www.hackerpublicradio.org/correspondents/0394.html\" rel=\"noopener noreferrer\" target=\"_blank\">\nHPR profile page</a>\n<span style=\"color: windowtext;\">\n</span>\n<a href=\"https://www.hackerpublicradio.org/correspondents/0394.html\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.hackerpublicradio.org/correspondents/0394.html</a>\n<span style=\"color: windowtext;\">\n&nbsp;&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\nTo review, My project is to build a portable morse code \"Keyer memory\" which can be connected to any of my HF transceiver radios by simply plugging it in to the code key input port.&nbsp;Then I could transmit stored messages by simply touching their specific icon on the touch screen. I also want to be able to program each macro individually from the graphical user interface (GUI).&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext; background-color: inherit;\">\nTo do this, I need to learn how to build a GUI. Most of the CYD resources I have been referencing recommend using Squareline Studio for GUI development on the CYD.&nbsp;Sadly, Squareline Studio is not open source. If any of you have experience with a good, open source alternative to Squareline Studio, please record a show to help the rest of us.&nbsp;Squareline does have a free trial and a free single user / single computer license, which I am using for this project.&nbsp;It will run on Windows, Linux, and Mac.</span>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext; background-color: inherit;\">\nAfter watching several videos about using the CYD with Squareline, I started to outline the functionality I needed.&nbsp;</span>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext; background-color: inherit;\">\nSquareline provides a wide range of pre-configured boards and interfaces to choose from, in addition to widgets and controls which you can drag onto your screens, and it will automatically generate the supporting code in the background.</span>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\nThe initial page needs to have the macro buttons, with labels for the message they will send when pressed.&nbsp;There also needs to be navigation buttons to move from one page to others.&nbsp;Another important page will be the configuration page, where the user can store the contents of each macro and set the speed at which code will be sent. I would like to have a keyboard page where the user can type a custom message and send it.&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext; background-color: inherit;\">\nI made a few GUI sketches on post-it-notes, then I installed Squareline Studio on my Ubuntu laptop to start designing.&nbsp;There is a bit of a learning curve.&nbsp;Even with guide videos, I found the user experience to be... challenging.&nbsp;</span>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext; background-color: inherit;\">\nTheir own GUI leaves much to be desired.&nbsp;It was not designed to run on the laptop\'s screen size/resolution.&nbsp;I had to switch to a much higher resolution monitor and rearrange frames within the app itself in order to see many of the controls.&nbsp;Button size adjustments, alignments, and label text did not work quite as expected.&nbsp;Getting things sized and aligned properly took quite a bit of fiddling.&nbsp;The text displayed on a button is a separate object from the button itself, so I have had to put some thought into object naming so that I can write code which will change button labels dynamically.&nbsp;&nbsp;</span>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext; background-color: inherit;\">\nI am including some screenshots from Squareline for the interface I designed.&nbsp;&nbsp;</span>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<a href=\"hpr4532_image_1.png\">\n<img src=\"hpr4532_image_1_tn.png\">\n</a>\n</p>\n<p>\n<br>\n</p>\n<p>\n<a href=\"hpr4532_image_2.png\">\n<img src=\"hpr4532_image_2_tn.png\">\n</a>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext; background-color: inherit;\">\nOne great feature is that you can define actions and conditions for objects in your project.&nbsp;For example, there are buttons on the left which will navigate to specific screens. I defined actions within Squareline, such that when the specific navigation button is pressed, it will change the button appearance to look like it has been pressed and will then scroll left or right to a specified screen.&nbsp;Actions were also valuable for the Speed (WPM) slider on the Config screen.&nbsp;When this slider is moved left and right, the GUI will change the actual number for WPM to the right of the slider. </span>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\nNext, there is a simulator function which can be used to test how well the GUI works.&nbsp;It took some trial and error, but I was able to build and successfully test, navigational actions and the WPM slider.&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\nAs I was working on building the afore mentioned WPM slider, and thinking about the default words per minute of Morse to use, my ADHD interrupted me (As usual).&nbsp;I decided to change the default speed that I use for the Arduino Nano based Morse code practice keyer which I keep on my desk.&nbsp;You can learn more about this keyer in episode 3 of this series. And we will also discuss Morse code speed in a future episode in this series.&nbsp;The original code (As found on&nbsp;</span>\n<a href=\"https://github.com/jmharvey1/ArduinoCPO\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://github.com/jmharvey1/ArduinoCPO</a>\n<span style=\"color: windowtext;\">\n&nbsp;)</span>\n<span style=\"color: windowtext; background-color: inherit;\">\n&nbsp;specified 12 words per minute (WPM) as the default speed, with buttons to increase or decrease this.&nbsp;However, I am practicing at 20 WPM.&nbsp;Every time I turn on the practice set, I need to turn up the speed and guess when I am close to 20.&nbsp;I went ahead and opened&nbsp;the PracticeOscilator project in Arduino IDE and updated the wpm variable to a value of 20.&nbsp;No, you will not see this change reflected in my own GitHub repo because:</span>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\nA) I wanted to test it locally first&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\nB) 20 WPM may be a little fast for a default&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\nC) I do not use git the way that it is meant to be used, or the way I SHOULD be using it, with pull requests and all.&nbsp;Bad Trey.&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\nD) I was distracted&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext; background-color: inherit;\">\nANYWAY,&nbsp;the reason I bring this up is that it is the first time I have used the Arduino IDE to program a board with this system since I upgraded from Ubunto&nbsp;20.04 to Ubuntu 22.04.&nbsp;Try as I might, I was not able to get the Arduino Nano\'s USB port to be recognized in Linux so that I could upload the updated keyer code. I spent several days troubleshooting, using other Arduino devices, different USB ports, and different cables, all to no avail.&nbsp;If anyone has any recommendations, I am open to suggestions.</span>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext; background-color: inherit;\">\nSo, I dug out my son\'s old Windows 10 PC and started again.&nbsp;I had to install the Arduino IDE, load all the necessary libraries, and my code from Github (Which I had to manually change once again, because I don\'t fully get git).&nbsp;Finally I was able to update the Arduino Nano&nbsp;with its new code, and it works perfectly.</span>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext; background-color: inherit;\">\nBut this revealed the same problem for the CYD.&nbsp;I also could not get it to connect over USB to my Ubuntu system. Time to migrate the entire project to Windows.</span>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext; background-color: inherit;\">\nMy next step was to install Squareline Studio on Windows.&nbsp;Here, I ran into another snag, as my trial license was only for one system, so I had to uninstall Squareline from Linux before I could activate the license on Windows.&nbsp;Did I mention that I would love to find an open source, free software product to use instead?&nbsp;If you know of one, please ping me or post a comment.</span>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext; background-color: inherit;\">\nI wasted more time trying to get the GUI project I had written on the Linux machine imported into Squareline on Windows, all the while thinking of improvements I could make if I started again from scratch.&nbsp;It would not load, and would not load.&nbsp;</span>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\nIn the end, I started all over again.&nbsp;&nbsp;&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext; background-color: inherit;\">\nAfter much blood sweat and tears, my GUI code was working again, and this time in Windows.&nbsp;I was able to run it in the simulation mode and move from page to page successfully and also use the WPM slider.&nbsp;&nbsp;I exported the UI from Squareline, and I loaded the code it generated into a new project within Arduino IE.</span>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\nNow was the moment of truth.&nbsp;I followed instructions found on the Pang YouTube channel video&nbsp;</span>\n<a href=\"https://www.youtube.com/watch?v=aGM6gu9OpbA\" rel=\"noopener noreferrer\" target=\"_blank\">\n[ESP32 + LVGL] Configuration input device rotary encoder</a>\n<span style=\"color: windowtext;\">\n&nbsp;(</span>\n<a href=\"https://www.youtube.com/watch?v=aGM6gu9OpbA\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.youtube.com/watch?v=aGM6gu9OpbA</a>\n<span style=\"color: windowtext;\">\n&nbsp;).&nbsp;&nbsp;I connected the CYD and uploaded the code.&nbsp;SUCCESS!!&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<a href=\"hpr4532_image_3.jpeg\">\n<img src=\"hpr4532_image_3_tn.jpeg\">\n</a>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\nYou can see my \"Send\" screen loaded perfectly!&nbsp;Now to try other screens.&nbsp;&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\nWait.&nbsp;Drat.&nbsp;It does not seem like my navigation buttons work.&nbsp;Actually, it does not appear that the touch screen is responding at all.&nbsp;&nbsp;&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\nI spent the next several days trying to figure out what went wrong.&nbsp;I checked and double checked interrupt and configuration settings (Such as those described in another of Pang\'s videos,&nbsp;</span>\n<a href=\"https://www.youtube.com/watch?v=qmR-mjJVumU\" rel=\"noopener noreferrer\" target=\"_blank\">\n[CYD + LVGL] Configuration Cheap Yellow Display | Easy Guide</a>\n<span style=\"color: windowtext;\">\n&nbsp;(</span>\n<a href=\"https://www.youtube.com/watch?v=qmR-mjJVumU\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.youtube.com/watch?v=qmR-mjJVumU</a>\n<span style=\"color: windowtext;\">\n&nbsp;).&nbsp;Nothing worked.&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\nI came to realize that I bit off more than I could chew, and I should NOT have started with such an ambitious project.&nbsp;Instead I should have started with a simple equivalence of \"Hello World\", where I could build and test simple functionality to make sure I knew exactly what I was doing, then expand on it.&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\nLessons learned, and a good stopping point for this episode.&nbsp;I am open to your feedback on what you would recommend, what I should do differently, etc.&nbsp;You can post simple feedback as a comment or send me an email using the address in my HPR profile.&nbsp;As usual, if your feedback is more than a sentence or two, you might want to record it as an episode so that other listeners can benefit from it as well.&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\nTime for an espresso.&nbsp;Maybe I will make it a double.&nbsp;Or even a triple!&nbsp;</span>\n</p>\n\n\n',394,0,0,'CC-BY-SA','CYD, electronics, ESP32, Adruino, Cheap Yellow Display, morse code, cw, GUI, Squareline',0,0,1),
(4475,'2025-09-26','The true audio file for walking tune to(wards) a friend',1298,'Fred finally releases the audio file that was supposed to be HPR4466 in which they teach a tune','\n<p>\nThe sheet music for the piece can be found on Fred\'s <a href=\"https://musescore.com/user/38209975/scores/10730527\">musescore page</a>.\n</p>\n<p>\n<a href=\"hpr4475_image_1.pdf\"><img src=\"hpr4475_image_1_tn.png\" alt=\"thumbnail of sheet music\" /></a>\n</p>',422,0,1,'CC-BY-SA','Music, Nyckelharpa, Folk_music, Flute, alto_recorder',0,0,1),
(4476,'2025-09-29','Does AI cause brain damage?',708,'Going through the findings of an MIT study about how AI will make your brain rot away (or will it?)','\n<h2>\nQuick-Glance Summary</h2>\n<ul>\n<li>\nI walk you through an MIT experiment where 54 EEG-capped volunteers wrote essays three ways: pure brainpower, classic search, and ChatGPT assistance.</li>\n<li>\nBrain-only writers lit up the most neurons and produced the freshest prose; the ChatGPT crowd churned out near-identical essays, remembered little, and racked up what the researchers dub <strong>\ncognitive debt : </strong>\nthe interest you pay later for outsourcing thought today.</li>\n<li>\nA bonus “switch” round yanked AI away from the LLM devotees (cue face-plant) and finally let the brain-first team play with the toy (they coped fine), proving skills first, tools second.</li>\n<li>\nI spiced the tale with calculator nostalgia, a Belgian med-exam cheating fiasco, and Professor Felienne’s forklift-in-the-gym metaphor to land one mantra: *scaffolds beat shortcuts*.</li>\n<li>\nWe peeked at tech “enshittification” once investors demand returns, whispered “open-source” as the escape hatch, and I dared you to try a two-day test—outline solo, draft with AI, revise solo, then check what you still remember.</li>\n<li>\nNet takeaway: keep AI on a leash; let <strong>\nthinking drive, tools navigate</strong>\n.</li>\n<li>\nIf you think I’m full of digital hot air, record your own rebuttal and prove it.</li>\n</ul>\n<p>\n<br>\n</p>\n<p>\n </p>\n<h2>\nResources</h2>\n<h3>\n<strong>\nMIT study</strong>\n</h3>\n<ul>\n<li>\nMIT Media Lab. (2025). Your brain on ChatGPT: Accumulation of cognitive debt. <a href=\"https://www.media.mit.edu/publications/your-brain-on-chatgpt/\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.media.mit.edu/publications/your-brain-on-chatgpt/</a>\n</li>\n</ul>\n<h3>\n<strong>\nLong term consequences</strong>\n</h3>\n<p>\n(to be honest - pulled these from another list, didn\'t check all of them)</p>\n<p>\n<br>\n</p>\n<ul>\n<li>\nClemente-Suárez, V. J., Beltrán-Velasco, A. I., Herrero-Roldán, S., Rodriguez-Besteiro, S., Martínez-Guardado, I., Martín-Rodríguez, A., &amp; Tornero-Aguilera, J. F. (2024). Digital device usage and childhood cognitive development: Exploring effects on cognitive abilities. <em>\nChildren</em>\n, 11(11), 1299. <a href=\"https://pmc.ncbi.nlm.nih.gov/articles/PMC11592547/\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://pmc.ncbi.nlm.nih.gov/articles/PMC11592547/</a>\n</li>\n<li>\nGrinschgl, S., Papenmeier, F., &amp; Meyerhoff, H. S. (2021). Consequences of cognitive offloading: Boosting performance but diminishing memory. <em>\nQuarterly Journal of Experimental Psychology</em>\n, 74(9), 1477–1496. <a href=\"https://pmc.ncbi.nlm.nih.gov/articles/PMC8358584/\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://pmc.ncbi.nlm.nih.gov/articles/PMC8358584/</a>\n</li>\n<li>\nWard, A. F., Duke, K., Gneezy, A., &amp; Bos, M. W. (2017). Brain drain: The mere presence of one\'s own smartphone reduces available cognitive capacity. <em>\nJournal of the Association for Consumer Research</em>\n, 2(2), 140–154. <a href=\"https://www.journals.uchicago.edu/doi/full/10.1086/691462\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.journals.uchicago.edu/doi/full/10.1086/691462</a>\n</li>\n<li>\nZhang, M., Zhang, X., Wang, H., &amp; Yu, L. (2024). Understanding the influence of digital technology on cognitive development in children. <em>\nCurrent Research in Behavioral Sciences</em>\n, 5, 100224. <a href=\"https://www.sciencedirect.com/science/article/pii/S266724212400099X\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.sciencedirect.com/science/article/pii/S266724212400099X</a>\n</li>\n<li>\nRisko, E. F., &amp; Dunn, T. L. (2020). Developmental origins of cognitive offloading. <em>\nDevelopmental Review</em>\n, 57, 100921. <a href=\"https://pubmed.ncbi.nlm.nih.gov/32517613/\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://pubmed.ncbi.nlm.nih.gov/32517613/</a>\n</li>\n<li>\nLadouceur, R. (2022). Cognitive effects of prolonged continuous human-machine interactions: Implications for digital device users. <em>\nBehavioral Sciences</em>\n, 12(8), 240. <a href=\"https://pmc.ncbi.nlm.nih.gov/articles/PMC10790890/\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://pmc.ncbi.nlm.nih.gov/articles/PMC10790890/</a>\n</li>\n<li>\nWong, M. Y., Yin, Z., Kwan, S. C., &amp; Chua, S. E. (2024). Understanding digital dementia and cognitive impact in children and adolescents. <em>\nNeuroscience Bulletin</em>\n, 40(7), 628–635. <a href=\"https://pmc.ncbi.nlm.nih.gov/articles/PMC11499077/\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://pmc.ncbi.nlm.nih.gov/articles/PMC11499077/</a>\n</li>\n<li>\nBaxter, B. (2025, February 2). Designing AI for human expertise: Preventing cognitive shortcuts. <em>\nUXmatters</em>\n. <a href=\"https://www.uxmatters.com/mt/archives/2025/02/designing-ai-for-human-expertise-preventing-cognitive-shortcuts.php\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.uxmatters.com/mt/archives/2025/02/designing-ai-for-human-expertise-preventing-cognitive-shortcuts.php</a>\n</li>\n<li>\nTristan, C., &amp; Thomas, M. (2024). The brain digitalization: It\'s all happening so fast! <em>\nFrontiers in Human Dynamics</em>\n, 4, 1475438. <a href=\"https://www.frontiersin.org/journals/human-dynamics/articles/10.3389/fhumd.2024.1475438/full\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.frontiersin.org/journals/human-dynamics/articles/10.3389/fhumd.2024.1475438/full</a>\n</li>\n<li>\nSun, Z., &amp; Wang, Y. (2024). Two distinct neural pathways for mechanical versus digital memory aids. <em>\nNeuroImage</em>\n, 121, 117245. <a href=\"https://www.sciencedirect.com/science/article/pii/S1053811924004683\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.sciencedirect.com/science/article/pii/S1053811924004683</a>\n</li>\n<li>\nAhmed, S. (2025). Demystifying the new dilemma of brain rot in the digital era. <em>\nContemporary Neurology</em>\n, 19(3), 241–254. <a href=\"https://pmc.ncbi.nlm.nih.gov/articles/PMC11939997/\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://pmc.ncbi.nlm.nih.gov/articles/PMC11939997/</a>\n</li>\n<li>\nRedshaw, J., &amp; Adlam, A. (2020). The nature and development of cognitive offloading in children. <em>\nChild Development Perspectives</em>\n, 14(2), 120–126. <a href=\"https://srcd.onlinelibrary.wiley.com/doi/10.1111/cdep.12532\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://srcd.onlinelibrary.wiley.com/doi/10.1111/cdep.12532</a>\n</li>\n<li>\nGeneva Internet Platform. (2025, June 3). Cognitive offloading and the future of the mind in the AI age. <a href=\"https://dig.watch/updates/cognitive-offloading-and-the-future-of-the-mind-in-the-ai-age\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://dig.watch/updates/cognitive-offloading-and-the-future-of-the-mind-in-the-ai-age</a>\n</li>\n<li>\nKarlsson, G. (2019). Reducing cognitive load on the working memory by externalizing information. <em>\nDIVA Portal</em>\n. <a href=\"http://www.diva-portal.org/smash/get/diva2:1327786/FULLTEXT02.pdf\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttp://www.diva-portal.org/smash/get/diva2:1327786/FULLTEXT02.pdf</a>\n</li>\n<li>\nMonitask. (2025). What is cognitive offloading? <a href=\"https://www.monitask.com/en/business-glossary/cognitive-offloading\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.monitask.com/en/business-glossary/cognitive-offloading</a>\n</li>\n<li>\nSharma, A., &amp; Watson, S. (2024). Human technology intermediation to reduce cognitive load. <em>\nJournal of the American Medical Informatics Association</em>\n, 31(4), 832–841. <a href=\"https://academic.oup.com/jamia/article/31/4/832/7595629\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://academic.oup.com/jamia/article/31/4/832/7595629</a>\n</li>\n<li>\nMorgan, P. L., &amp; Risko, E. F. (2021). Re-examining cognitive load measures in real-world learning environments. <em>\nBritish Journal of Educational Psychology</em>\n, 91(3), 993–1013. <a href=\"https://bpspsychub.onlinelibrary.wiley.com/doi/10.1111/bjep.12729\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://bpspsychub.onlinelibrary.wiley.com/doi/10.1111/bjep.12729</a>\n</li>\n</ul>\n<p>\nPodcast episodes that inspired some thoughts</p>\n<p>\n<br>\n</p>\n<ul>\n<li>\n<a href=\"https://ai-het-pedagogisch-appel.captivate.fm/episode/35-felienne-hermans-over-pedagogische-weerbaarheid-in-tijden-van-ai\" rel=\"noopener noreferrer\" target=\"_blank\">\nFelien Hermans (NL)</a>\n</li>\n<li>\n<a href=\"https://www.techwontsave.us/episode/282_chatbots_are_repeating_social_medias_harms_w_nitasha_tiku\" rel=\"noopener noreferrer\" target=\"_blank\">\nTech won\'t save us</a>\n</li>\n<li>\n<a href=\"https://podcastaddict.com/screenstrong-families/episode/205578302\" rel=\"noopener noreferrer\" target=\"_blank\">\nScreenstrong Families</a>\n</li>\n</ul>\n\n\n',433,0,1,'CC-BY-SA','AI, llm, brain rot',0,0,1),
(4477,'2025-09-30','doodoo 3 a deuce plus 1',611,'continuing to blather about doodoo a todo app for getting dung done','\n<p>\nWow, I sure hope I didn\'t say \"a link will be in the show notes\" because I recorded this a few weeks ago.</p>\n<p>\n<a href=\"https://gitlab.com/jezra/doodoo\" rel=\"noopener noreferrer\" target=\"_blank\">\ndoodoo source</a>\n</p>\n<p>\nDoodoo is a single user webapp with a server written in python and a ui of html,javascript, and css.</p>\n<p>\n<br>\n</p>\n<p>\n<br>\n</p>\n\n\n',243,0,0,'CC-BY-SA','python, software development, dung',0,0,1),
(4482,'2025-10-07','doodoo 4 the double deuce ',947,'the last bit of blathering about doodo, a todo app to get dung done','\n<p>\nthat dung is done!</p>\n<p>\n<a href=\"https://gitlab.com/jezra/doodoo\" rel=\"noopener noreferrer\" target=\"_blank\">\ndoodoo source</a>\n </p>\n<p>\nYes, I am immature :)</p>\n<p>\n<br>\n</p>\n\n\n',243,0,0,'CC-BY-SA','python, html, javascript, todo, dung',0,0,1),
(4483,'2025-10-08','HPR Beer Garden 3 - Porters',1764,'Kevie and Dave talk about Porter beers','\n<p>\nKevie and Dave have a discussion about the Porter style of beer. They also review a couple that they purchased: Dave tries out <a href=\"https://www.woldtopbrewery.co.uk/products/marmalade-porter\" rel=\"noopener noreferrer\" target=\"_blank\">\nMarmalade Porter by Wold Top Brewery</a>\n, whilst Kevie samples <a href=\"https://camra.org.uk/beers/8-sail-victorian-porter-strong-porter-7\" rel=\"noopener noreferrer\" target=\"_blank\">\nVictorian Porter by 8 Sail Brewery</a>\n(purchased from <a href=\"https://realalestore.co.uk/index.asp\" rel=\"noopener noreferrer\" target=\"_blank\">\nThe Real Ale Store</a>\n).</p>\n<p>\n<br>\n</p>\n<p>\n<a href=\"hpr4483_image_1.png\">\n<img src=\"hpr4483_image_1_tn.png\">\n</a>\n</p>\n<p>\nConnect with the guys on Untappd:</p>\n<p>\n<br>\n</p>\n<ul>\n<li>\n<a href=\"https://untappd.com/user/thelovebug\" rel=\"noopener noreferrer\" target=\"_blank\">\nDave</a>\n</li>\n<li>\n<a href=\"https://untappd.com/user/kevie49\" rel=\"noopener noreferrer\" target=\"_blank\">\nKevie</a>\n</li>\n</ul>\n<p>\n<br>\n</p>\n<p>\nThe intro sounds for the show are used from:</p>\n<p>\n<br>\n</p>\n<ul>\n<li>\n<a href=\"https://freesound.org/people/mixtus/sounds/329806/\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://freesound.org/people/mixtus/sounds/329806/</a>\n</li>\n<li>\n<a href=\"https://freesound.org/people/j1987/sounds/123003/\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://freesound.org/people/j1987/sounds/123003/</a>\n</li>\n<li>\n<a href=\"https://freesound.org/people/greatsoundstube/sounds/628437/\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://freesound.org/people/greatsoundstube/sounds/628437/</a>\n</li>\n</ul>\n<p>\n<br>\n</p>\n<p>\n<br>\n</p>\n<p>\n<br>\n</p>\n\n\n',296,14,0,'CC-BY-SA','beer beergarden',0,0,1),
(4478,'2025-10-01','YouTube Subscriptions 2025 #6',941,'Ahuka shares part six of his list of subscribed channels','\n<p>\nI am subscribed to a number of YouTube channels, and I am sharing them with you.</p>\n<p>\n<br>\n</p>\n<h3>\nLinks:</h3>\n<ul>\n<li>\n<a href=\"https://www.youtube.com/@GaliaSocial\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.youtube.com/@GaliaSocial</a>\n</li>\n<li>\n<a href=\"https://www.youtube.com/@GamerGrampz\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.youtube.com/@GamerGrampz</a>\n</li>\n<li>\n<a href=\"https://www.youtube.com/@GeographyByGeoff\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.youtube.com/@GeographyByGeoff</a>\n</li>\n<li>\n<a href=\"https://www.youtube.com/@GetawayGuru\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.youtube.com/@GetawayGuru</a>\n</li>\n<li>\n<a href=\"https://www.youtube.com/@HarboWholmes\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.youtube.com/@HarboWholmes</a>\n</li>\n<li>\n<a href=\"https://www.youtube.com/@HarrysMovingMedia\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.youtube.com/@HarrysMovingMedia</a>\n</li>\n<li>\n<a href=\"https://www.youtube.com/@healthcaretriage\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.youtube.com/@healthcaretriage</a>\n</li>\n<li>\n<a href=\"https://www.youtube.com/@herlock2527\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.youtube.com/@herlock2527</a>\n</li>\n<li>\n<a href=\"https://www.youtube.com/@HistoryHit\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.youtube.com/@HistoryHit</a>\n</li>\n<li>\n<a href=\"https://www.youtube.com/@HistoryMatters\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.youtube.com/@HistoryMatters</a>\n</li>\n<li>\n<a href=\"https://www.youtube.com/@HistoryRespawned\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.youtube.com/@HistoryRespawned</a>\n</li>\n<li>\n<a href=\"https://www.youtube.com/@HistoryTime\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.youtube.com/@HistoryTime</a>\n</li>\n<li>\n<a href=\"https://www.youtube.com/@howstuffworks\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.youtube.com/@howstuffworks</a>\n</li>\n<li>\n<a href=\"https://www.youtube.com/@HubbleESA\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.youtube.com/@HubbleESA</a>\n</li>\n<li>\n<a href=\"https://www.youtube.com/@HungryPassport\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.youtube.com/@HungryPassport</a>\n</li>\n<li>\n<a href=\"https://www.youtube.com/@InsideCruise\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.youtube.com/@InsideCruise</a>\n</li>\n<li>\n<a href=\"https://www.palain.com/\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.palain.com/</a>\n</li>\n</ul>\n<p>\n<br>\n</p>\n\n\n',198,106,0,'CC-BY-SA','YouTube, Channels, Subscriptions',0,0,1),
(4485,'2025-10-10','Git for Github and Gitlab',475,'Archer72 talks about GPG and SSH keys for Git','<p>Hello, this is your host, Archer72 for Hacker Public Radio</p>\r\n<p>In this episode, I get a crash course on git, and thought it\r\nwould make a good episode.  Not actually on git itself, but\r\nhow to use it on Github and Gitlab.</p>\r\n<p>First off, I am looking for a job, so I thought it would be\r\na great time to brush up on my git knowledge and make a show\r\ntoo.   Of course, I am no git expert by any means, but as it\r\nhas been said in comments Hacker Public Radio is my memory.</p>\r\n<p>You will want to create and ssh key for each Git instance,\r\nin this case I will use both Github and Gitlab.   A few\r\nother sites to host Git files which are Hacker Public Radio&#39;s own\r\n<a href=\"https://repo.anhonesthost.net/HPR\" title=\"Gitea on HPR\">Gitea on HPR</a>,\r\n<a href=\"https://notabug.org\" title=\"Notabug for Git\">Notabug</a> and\r\n<a href=\"https://codeberg.org\" title=\"Codeberg for Git\">Codeberg</a></p>\r\n<p>Now lets get started. </p>\r\n<ul>\r\n<li><code>ssh-keygen</code> will create an ed25519 key pair</li>\r\n<li>several years ago this was not yet the default</li>\r\n<li>add entry to <code>~/.ssh/config</code> for each git instance</li>\r\n</ul>\r\n<pre><code>Host github.com\r\n    <span class=\"hljs-keyword\">User</span> <span class=\"hljs-title\">git</span>\r\n    IdentityFile ~/.ssh/github-ricemark20\r\n\r\nHost gitlab.com\r\n    <span class=\"hljs-keyword\">User</span> <span class=\"hljs-title\">git</span>\r\n    IdentityFile ~/.ssh/gitlab-archer72\r\n</code></pre><h1 id=\"ssh-keys\">SSH Keys</h1>\r\n<p><code>ssh-add ~/.ssh/git-key</code> (not .pub)</p>\r\n<h1 id=\"git\">Git</h1>\r\n<p> • GPG</p>\r\n<pre><code>   -<span class=\"ruby\"> gpg --full-generate-key\r\n</span>   -<span class=\"ruby\"> gpg --list-public-keys\r\n</span>   -<span class=\"ruby\"> <span class=\"hljs-number\">40</span> character string\r\n</span>   -<span class=\"ruby\"> git config --global user.signingkey XXXXPublicKey\r\n</span>   -<span class=\"ruby\"> git config --global commit.gpgsign <span class=\"hljs-literal\">true</span>\r\n</span>   -<span class=\"ruby\"> gpg --armor --export XXXXPublicKey\r\n</span>     -<span class=\"ruby\"> copy output to Github <span class=\"hljs-keyword\">or</span> Gitlab, including &lt;…<span class=\"hljs-keyword\">BEGIN</span> PGP…&gt;</span>\r\n</code></pre><h2 id=\"gitlab\">Gitlab</h2>\r\n<ul>\r\n<li>Avatar &gt;\r\nEdit Profile &gt;\r\nSSH Keys &gt;\r\nAdd key (on the right side)</li>\r\n<li><a href=\"https://gitlab.com/-/user_settings/ssh_keys\" title=\"Gitlab - SSH keys\">Gitlab - SSH keys</a></li>\r\n<li><code>cat ~/.ssh/gitlab-key.pub</code></li>\r\n<li>Add Key</li>\r\n<li>git remote set-url origin git@gitlab.com/user/gitlab-repo.git</li>\r\n<li>Edit Profile &gt;\r\nGPG Keys &gt;\r\nAdd key (on the right side)</li>\r\n<li><a href=\"https://gitlab.com/-/user_settings/gpg_keys\" title=\"Gitlab - GPG keys\">Gitlab - GPG keys</a></li>\r\n<li>copy and add public key from \r\n<code>gpg --list-public-keys</code> (40 Characters)</li>\r\n</ul>\r\n<h2 id=\"github\">Github</h2>\r\n<ul>\r\n<li>Avatar &gt;\r\nSettings &gt;\r\nSSH and GPG Keys &gt;\r\nNew SSH key</li>\r\n<li><a href=\"https://github.com/settings/keys\" title=\"Github - keys\">Github - keys</a></li>\r\n<li><code>cat ~/.ssh/github-key.pub</code></li>\r\n<li><a href=\"https://github.com/settings/ssh/new\" title=\"Github - New SSH key\">Github - New SSH key</a></li>\r\n<li>Title, Key &gt;\r\nAdd SSH key</li>\r\n<li>git remote set-url origin git@github.com:user/github-repo.git</li>\r\n<li>Avatar &gt;\r\nSettings &gt;\r\nSSH and GPG Keys &gt;\r\nNew GPG key</li>\r\n<li><a href=\"https://github.com/settings/gpg/new\" title=\"Github - New GPG key\">Github - New GPG key</a></li>\r\n<li>Title, Key &gt;\r\nAdd GPG key</li>\r\n<li>copy and add public key from \r\n<code>gpg --list-public-keys</code> (40 Characters)</li>\r\n</ul>\r\n<pre><code>&lt;Claude.io&gt;\r\n\r\n\r\nCreate <span class=\"hljs-keyword\">a</span> <span class=\"hljs-built_in\">new</span> repository named something like resume <span class=\"hljs-keyword\">or</span> my-resume\r\nUpload your HTML resume <span class=\"hljs-built_in\">file</span> <span class=\"hljs-keyword\">and</span> name <span class=\"hljs-keyword\">it</span> index.html\r\nGo <span class=\"hljs-built_in\">to</span> your repository Settings → Pages\r\nUnder <span class=\"hljs-string\">\"Source,\"</span> select <span class=\"hljs-string\">\"Deploy from a branch\"</span>\r\nChoose <span class=\"hljs-string\">\"main\"</span> branch <span class=\"hljs-keyword\">and</span> <span class=\"hljs-string\">\"/ (root)\"</span> <span class=\"hljs-built_in\">folder</span>\r\nYour resume will be available <span class=\"hljs-keyword\">at</span> <span class=\"hljs-keyword\">https</span>://yourusername.github.io/resume\r\n</code></pre><p><a href=\"https://ricemark20.github.io/Resume/\" title=\"Github.io - ricemark20\">Github.io - ricemark20</a></p>\r',318,0,0,'CC-BY-SA','Git, Gitea, Gitlab, Github, Notabug, Codeberg, SSH, GPG',0,0,1),
(4494,'2025-10-23','Exploring FUTO Keyboard',972,'I install FUTO from zero and explain why I prefer him','\n    <p>\n      I formatted my Samsung Galaxy after updating to Android 16. Now I\n      install my keyboard of choice and talk on HPR while making the\n      initial configuration as I prefer, with focus on the topics:</p>\n    <ul>\n      <li>Why I prefer FK (pleasant ux and interface, good dose of\n        personalization, offline)</li>\n      <li>Select all, copy and paste directly from the keyboard (long\n        press A, C and V, respectively)</li>\n      <li>downsides (I think I didn\'t <strong>\n          say</strong> them on the show): not the best swipe-to-type,\n        voice-to-text and prediction of correction, specially if not in\n        English</li>\n    </ul>',441,98,0,'CC-BY-SA','Keyboard for Android, Typing',0,0,1),
(4496,'2025-10-27','Stroopwafel',1736,'Lee, Elsbeth and Ken Fallon meet in the Utrecht province in the Netherlands','\n    <p>\n      Utrecht is a province (and city) in the Netherlands - <a\n        href=\"https://en.wikipedia.org/wiki/Utrecht\">https://en.wikipedia.org/wiki/Utrecht</a></p>\n    <p>\n      <br>\n    </p>\n    <p>\n      Amersfoort is a medieval town - <a\n        href=\"https://en.wikipedia.org/wiki/Amersfoort\">https://en.wikipedia.org/wiki/Amersfoort</a></p>\n    <p>\n      <br>\n    </p>\n    <p>\n      Stroopwafel is a Dutch sweet treat - <a\n        href=\"https://en.wikipedia.org/wiki/Stroopwafel\">https://en.wikipedia.org/wiki/Stroopwafel</a></p>\n    <p>\n      <br>\n    </p>\n    <p>\n      Kamp Amersfoort was a concentration camp, now a museum - <a\n        href=\"https://kampamersfoort.nl\">https://kampamersfoort.nl</a></p>\n    <p>\n      <br>\n    </p>\n    <p>\n      Mondriaan House in Amersfoorte shows some of the artists work,\n      talks about his life and presents modern interpretations inspired\n      by him - <a href=\"https://www.mondriaanhuis.nl/en/\">https://www.mondriaanhuis.nl/en/</a></p>\n    <p>\n      <br>\n    </p>\n    <p>\n      Speelklok Museum in Utrecht is all about mechanical music - <a\n        href=\"https://www.museumspeelklok.nl\">https://www.museumspeelklok.nl</a></p>\n    <p>\n      <br>\n    </p>\n    <p>\n      International Road Signs - <a\n        href=\"https://en.wikipedia.org/wiki/Traffic_signs_by_country\">https://en.wikipedia.org/wiki/Traffic_signs_by_country</a></p>\n    <p>\n      <br>\n    </p>\n    <p>\n      Wintergartan makes videos about his mechanical instruments - <a\n        href=\"https://youtube.com/@wintergatan?si=fFTMWz-8pG8Bv1y-\">https://youtube.com/@wintergatan?si=fFTMWz-8pG8Bv1y-</a></p>',403,0,1,'CC-BY-SA','netherlands, art, history, road travel',0,0,1),
(4484,'2025-10-09','When Your Dentist Uses ChatControl Logic',856,'Trollercoaster alerts us to the dangers of the proposed EU Chat Control legislation','\n    <h1>\n      When Your Dentist Uses ChatControl Logic</h1>\n    <p>\n      So there I am, sitting in the waiting room with a mildly annoying\n      toothache. Nothing catastrophic, just one of those dull throbs\n      that tells you something\'s going on in there that could turn nasty\n      if ignored. The receptionist calls my name, and I walk into Dr.\n      ChatControl\'s office.</p>\n    <p>\n      Dr. ChatControl greets me with a concerned expression. \"I\'ve\n      reviewed your case,\" he says gravely, \"and many others. Toothaches\n      are a serious problem. Did you know that in 2023 alone, at least\n      101,988 people in Europe experienced dental pain? That\'s over 60%\n      of all global dental complaints traced to this region.\"</p>\n    <p>\n      \"Okay,\" I say. \"But I just need you to look at this one tooth\"</p>\n    <p>\n      \"This is an epidemic,\" he interrupts. \"And we can\'t just treat\n      symptoms anymore. We need a comprehensive, mandatory risk\n      assessment.\"</p>\n    <p>\n      Dr. ChatControl pulls out a 47-page questionnaire. \"First, we\n      assess the risk that your mouth might develop cavities, gum\n      disease, or oral cancer,\" he explained. \"This applies to everyone,\n      regardless of whether they have symptoms.\"</p>\n    <p>\n      \"But I have symptoms,\" I sigh. \"That\'s why I\'m here.\"</p>\n    <p>\n      \"Exactly!\" he says triumphantly. Which means you\'re high-risk. So\n      we move to Phase Two: mitigation measures.\"</p>\n    <p>\n      He hands me a pamphlet titled <em>\n        Safety-by-Design for Oral Health</em>\n      . \"From now on, you\'ll need to implement parental controls on your\n      diet. Every candy will come with an age verification wrapper and\n      user reporting mechanisms. so your teeth can flag potential\n      problems, and verify your age before consuming any hard foods.\"</p>\n    <p>\n      \"I\'m 38,\" I retort.</p>\n    <p>\n      \"Perfect,\" he replies. \"That means you\'re old enough to consent to\n      monitoring.\"</p>\n    <p>\n      \"Now,\" Dr. ChatControl continues, \"since your mitigation measures\n      haven\'t been implemented yet because you just got here - I\'m\n      authorized to issue a detection order.\" He holds up an\n      official-looking document with a judge\'s signature. \"This allows\n      me to scan not just the tooth that hurts, but your entire mouth.\n      Also your sinuses. And your lymph nodes. And, just to be thorough,\n      everyone in the waiting room.\"</p>\n    <ul>\n    </ul>\n    <p>\n      \"Wait, what?\" I blurt out.</p>\n    <p>\n      \"It\'s targeted,\" he assures me. \"We\'re only scanning high-risk\n      areas—which, according to our independent EU Dental Centre, is\n      every tooth, every patient, all the time.\"</p>\n    <p>\n      \"But here\'s the clever part,\" Dr. ChatControl says, pulling out\n      what looks like a tiny sander strapped to an airbrush.</p>\n    <p>\n      \"Well, your enamel contains layers that currently block our view\n      with regards to early detection of certain viruses. So we need to\n      replace the enamel with an optimized layer that perfectly protects\n      against currently known sugars and acids but allows our government\n      approved detection equipment to inspect the content of your\n      teeth.\"</p>\n    <p>\n      I\' flabberghasted. \"You want to weaken my enamel?\"</p>\n    <p>\n      \"Only slightly!\" he said cheerfully. \"Just enough so that our\n      scanner can monitor what\'s happening inside your teeth at all\n      times. Don\'t worry,the new enamel will still protect you from\n      everything else.\"</p>\n    <p>\n      \"How\'s that possible if you can penetrate it?\", I continue, still\n      cautious.</p>\n    <p>\n      \"Well, factory approved candies, for example,\" he says. \"Reputable\n      candy manufacturers have agreed to respect the adapted enamel and\n      not penetrate it. They\'ve signed a treaty to use optimized\n      sugars.\"</p>\n    <p>\n      \"And the artisanal candies?\" I asked.</p>\n    <p>\n      \"Ah,\" he said, adjusting his glasses. \"Well, those are obviously\n      illegal! Those criminals don\'t tend to honor treaties. So yes, the\n      adapted enamel will make your teeth more vulnerable to\n      unauthorized cavity formation, bacterial attacks, and anyone who\n      wants to exploit the fact that your natural protection has been\n      replaced with a see-through version.\"</p>\n    <p>\n      \"So you\'re making my teeth less secure,\" I repeat.</p>\n    <p>\n      \"We\'re making them more observable,\" he corrects, with a slightly\n      annoyed tone. \"There\'s a difference. Your teeth will still be\n      protected, just not from us. Or hostile foreign candy shops. Or\n      those criminal artisanal real-sugar-nuts. But you have no business\n      there anyway. But they definitely protect against harms from\n      law-abiding candy!\"</p>\n    <p>\n      \"But... Over 500 leading dentists signed a letter saying this\n      would create massive vulnerabilities\", I point out.</p>\n    <p>\n      \"Those dentists aren\'t thinking about long term dental hygiene.\"\n      Dr. ChatControl sighs dismissively. \"Besides, it\'s not a backdoor\n      if we\'re replacing your front door with a tinted glass door given\n      all our citizens are law abiding!\"</p>\n    <p>\n      His tone gets sterner if he continues: \"Let me say more, If you\n      refuse to upgrade your enamel, we will consider you a risk of\n      dental terrorism. This no longer is about only your teeth, you\n      must know. If you choose to blatantly ignore your teeth, you are a\n      threat to society!\"</p>\n    <p>\n      \"But... The whole reason I am here, is because I care about my\n      teeth...\"</p>\n    <p>\n      The docter holds up his machine and asks: \"Do you want me to treat\n      you or report you?\"</p>\n    <p>\n      Oh, whatever, it seems everybody is doing this. I don\'t want to be\n      the outcast crying wolf all the time. So I cave in. The procedure\n      doesn\'t feel painful, so that\'s a relief.</p>\n    <p>\n      After completing the baseline scan, Dr. ChatControl frowns at the\n      screen: \"This is concerning,\" he says. \"The system has flagged\n      8,412 potential cavities.\"</p>\n    <p>\n      \"But I only have 32 teeth,\" I wimper.</p>\n    <p>\n      \"The detection algorithm works on a probabilistic model,\" he\n      explains. \"Swiss dental authorities report that about 80% of\n      automated cavity reports are false positives, so we\'ll need to\n      investigate all of them.\"</p>\n    <p>\n      \"That still means 1,682 of those threats are real\", I sigh.</p>\n    <p>\n      \"Which is still 1,682 too many!\" Dr. ChatControl blurts. \"Now,\n      I\'ll need to drill exploratory holes in every tooth, in your gums,\n      your tongue, and —just to be safe— your neighbor\'s mouth, because\n      the system flagged them too when they walked past the waiting\n      room.\"</p>\n    <p>\n      \"This seems insane,\" I say.</p>\n    <p>\n      \"The math is solid,\" he insists. \"Even at 99.999% accuracy —which\n      doesn\'t exist— we\'d still generate 100,000 false dental alerts per\n      day across Europe\'s 450 million people. But we can\'t let cavities\n      win.\"</p>\n    <p>\n      While Dr. ChatControl explains his flawless system, I notice how\n      the tooth that actually is hurting —the one I came in to fix— is\n      starting to abscess.</p>\n    <p>\n      \"Uh, Doctor,\" I say, pointing to the swelling.</p>\n    <p>\n      \"We\'ll get to that after we finish scanning everyone,\" he says\n      dismissively. \"The important thing is that no cavity goes\n      undetected, even if that means we spend all our time investigating\n      healthy teeth.\"</p>\n    <p>\n      \"But the actual problem is getting worse,\" I said.</p>\n    <p>\n      \"That\'s because sophisticated cavities have learned to evade\n      detection,\" Dr. ChatControl explains. \"They change their\n      appearance slightly —maybe grow on the back of the tooth instead\n      of the front, or hide under existing fillings. Our algorithms\n      can\'t catch those.\"</p>\n    <p>\n      \"What about that letter from those 500 dentists? They also claim\n      this detection method is technically infeasible.\" I try again.</p>\n    <p>\n      \"They\'re just not thinking big enough\", the doctor blocks my\n      argument.</p>\n    <p>\n      \"So here\'s the treatment plan,\" Dr. ChatControl says, \"We\'re going\n      to install a permanent scanning device in your jaw that monitors\n      every tooth, 24/7, and reports any suspicious activity to a\n      centralized EU Dental Database.\"</p>\n    <p>\n      \"That sounds like a massive security risk,\" I said.</p>\n    <p>\n      \"Not at all!\" he replied. \"The device is encrypted. Only our\n      scanners can look behind your upgraded enamel. What leaves your\n      tooth, is already encrypted. No other device than ours, can read\n      the data, so your privacy is intact.\"</p>\n    <p>\n      \"So what about those knock-offs you can buy on Ali Express?\" I\n      ask.</p>\n    <p>\n      \"Oh, but they don\'t work reliably. And also: Why would hackers\n      want access to your teeth?\" he scoffed.</p>\n    <p>\n      \"Although, now that I think about it, the device itself would make\n      a high-value target for malicious actors, Als they could abuse\n      them to learn how to make knock-off candy that doesn\'t get\n      detected by the scanners. Things your natural enamel obviously\n      protects against. But let\'s not dwell on that.\"</p>\n    <p>\n      \"By the way,\" Dr. ChatControl adds casually, \"EU politicians and\n      government officials are exempt from this scanning requirement\n      under \'professional dental secrecy.\'\"</p>\n    <p>\n      \"So their teeth don\'t get monitored?\" I ask.</p>\n    <p>\n      \"Correct,\" he says. \"Their oral health is a matter of public\n      trust. Yours, however, requires constant surveillance.\"</p>\n    <p>\n      \"That seems like a double standard,\" I say.</p>\n    <p>\n      \"It\'s a two-tier system for a two-tier society,\" he replies\n      pleasantly. \"Now, shall we proceed with installing the jaw\n      monitor?\"</p>\n    <p>\n      By this point, my actual toothache is developing into a full-blown\n      infection. The pain is excruciating.</p>\n    <p>\n      \"Doctor, I need antibiotics and a root canal,\" I cry.</p>\n    <p>\n      \"We don\'t do targeted treatments anymore,\" Dr. ChatControl says.\n      \"That\'s the old model. Now we focus on comprehensive, mandatory\n      monitoring.\"</p>\n    <p>\n      \"But I\'m going to lose the tooth,\" I say.</p>\n    <p>\n      \"Perhaps,\" he acknowledges. \"But while we were scanning everyone\n      in the waiting room, we found three people with slightly\n      suspicious molars! They\'re perfectly healthy now, but they could\n      develop cavities someday. That\'s three potential problems\n      prevented!\"</p>\n    <p>\n      \"But my actual problem isn\'t being prevented,\" I point out. \"It\'s\n      getting worse.\"</p>\n    <p>\n      \"Well yes,\" he admits. \"But we\'ve invested so much in the scanning\n      infrastructure that we can\'t really afford to do traditional\n      dentistry anymore. The system needs to justify itself, you\n      understand.\"</p>\n    <p>\n      \"This is insane,\" I repeat.</p>\n    <p>\n      \"This is <em>\n        progress</em>\n      ,\" he corrects me.</p>\n    <p>\n      As I\' left \'m leaving the office —untreated, in pain, and with a\n      jaw full of surveillance equipment— I notice a sign on the door: <em>\n        \"Signal Dental, Orthodontics Threema, and Proton Mouthcare have\n        ceased operations in the EU due to incompatibility with\n        mandatory scanning requirements.\"</em>\n    </p>\n    <p>\n      Apparently, the dentists who actually know how to fix teeth\n      without installing spyware have all moved to Switzerland.</p>\n    <p>\n      Meanwhile, I hear the voice of Dr. ChatControl behind me in the\n      waiting room, announcing to everyone: \"We\'ve successfully detected\n      6,847 potential cavities this week!\" When someone asks what he\n      means by potential, he quietly answers: \"Only 11 were real, but\n      that\'s 11 teeth saved!\"</p>\n    <p>\n      The infection is still spreading and I\'ll probably loose my tooth\n      after all because nobody actually is treating it. But at least the\n      healthy ones are under constant surveillance.</p>\n    <p>\n      I made fun of it. But it\'s not funny. It\'s about wasting loads of\n      money on a noble goal in all the wrong ways. But next week the\n      vote will be cast in the EU. So it\'s high time to reach out to\n      your MEP and ask their stance if they are undecided or worse - are\n      in favor. Go to fightchatcontrol.eu if you live in Europe.</p>\n    <p>\n      Oh, and if you don\'t live in Europe... This will also impact you.\n      Because weakened encryption in mainstream products will most\n      certainly spread.</p>\n    <h1>\n      Time to act</h1>\n    <ul>\n      <li>\n        Fight current Chat Control legislation: <a\n          href=\"https://fightchatcontrol.eu/\" rel=\"noopener noreferrer\"\n          target=\"_blank\">\n          fightchatcontrol.eu</a>\n      </li>\n    </ul>\n    <h1>\n      References and Sources used</h1>\n    <ul>\n      <li>\n        Estonian Public Broadcasting. (2025, September 15). <a\nhref=\"https://news.err.ee/1609801992/experts-european-union-s-chat-control-plan-a-blow-to-free-speech\"\n          rel=\"noopener noreferrer\" target=\"_blank\">\n          Experts: European Union\'s \'chat control\' plan a blow to free\n          speech.</a>\n      </li>\n      <li>\n        <a\nhref=\"https://www.privacyguides.org/articles/2025/09/08/chat-control-must-be-stopped/\"\n          rel=\"noopener noreferrer\" target=\"_blank\">\n          Privacy Guides</a> explaining why it must be stopped</li>\n      <li>\n        <a\nhref=\"https://www.brusselsreport.eu/2025/10/01/chat-control-2-0-the-end-of-our-private-communications/\"\n          rel=\"noopener noreferrer\" target=\"_blank\">\n          Michel Portier, Lecturer at Hogeschool Arnhem and Nijmegen,\n          MSc Cybersecurity and </a>\n      </li>\n      <li>\n        <a\n          href=\"https://www.patrick-breyer.de/en/posts/chat-control/#WhatYouCanDo\"\n          rel=\"noopener noreferrer\" target=\"_blank\">\n          Patrick Breyer, former MEP</a>\n      </li>\n      <li>\n        Open Letter from 500+ Scientists and Cryptographers (2025,\n        September 9). <em>\n          Open letter on the EU\'s proposed Child Sexual Abuse Regulation</em>\n        <a href=\"https://csa-scientist-open-letter.org/Sep2025\"\n          rel=\"noopener noreferrer\" target=\"_blank\">\n          Joint statement</a>\n      </li>\n      <li>\n        Breyer, P. (2025, September 9). \'Danger to Democracy\': <a\nhref=\"https://www.patrick-breyer.de/en/danger-to-democracy-500-top-scientists-urge-eu-governments-to-reject-technically-infeasible-chat-control/\"\n          rel=\"noopener noreferrer\" target=\"_blank\">\n          500+ Top Scientists Urge EU Governments to Reject \'Technically\n          Infeasible\' Chat Control.</a>\n      </li>\n      <li>\n        Breyer, P. (2025). <a\n          href=\"https://www.patrick-breyer.de/en/posts/chat-control/\"\n          rel=\"noopener noreferrer\" target=\"_blank\">\n          Chat Control: The EU\'s CSAM scanner proposal.</a>\n      </li>\n      <li>\n        Private Internet Access. (2025). <a\nhref=\"https://www.privateinternetaccess.com/blog/chat-control-eus-plan-for-real-time-mass-surveillance-takes-a-dramatic-turn/\"\n          rel=\"noopener noreferrer\" target=\"_blank\">\n          Chat Control, EU\'s Plan for Real-Time Mass Surveillance Takes\n          a Dramatic Turn.</a>\n      </li>\n      <li>\n        European Digital Rights (EDRi). (2023, August). <a\nhref=\"https://edri.org/wp-content/uploads/2023/08/EDRi-fact-checking-of-top-9-claims-on-CSA-Regulation.pdf\"\n          rel=\"noopener noreferrer\" target=\"_blank\">\n          <em>\n            Fact-checking of top 9 claims made on the CSA Regulation.</em>\n        </a>\n      </li>\n      <li>\n        Internet Watch Foundation. (2024). <a\nhref=\"https://www.iwf.org.uk/news-media/news/charity-raises-alarm-over-surge-in-level-of-child-sexual-abuse-imagery-hosted-in-eu/\"\n          rel=\"noopener noreferrer\" target=\"_blank\">\n          <em>\n            2024 Annual Insights and Data Report.</em>\n        </a>\n      </li>\n      <li>\n        European Commission. (2022, May 11). <em>\n          [Proposal for a Regulation laying down rules to prevent and\n          combat child sexual abuse</em> COM(2022) 209 final.](<a\nhref=\"https://eur-lex.europa.eu/legal-content/EN/TXT/HTML/?uri=CELEX%3A52022PC0209\"\n          rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://eur-lex.europa.eu/legal-content/EN/TXT/HTML/?uri=CELEX%3A52022PC0209</a>\n        )</li>\n      <li>\n        European Commission. (2023, December 19). <a\n          href=\"https://eur-lex.europa.eu/eli/reg/2021/1232/oj/eng\"\n          rel=\"noopener noreferrer\" target=\"_blank\">\n          <em>\n            Report on the implementation of Regulation (EU) 2021/1232</em>\n        </a> (temporary derogation/\"Chat Control 1.0\").</li>\n      <li>\n        Anderson, R. (2022). <a\n          href=\"https://www.cl.cam.ac.uk/archive/rja14/Papers/chatcontrol.pdf\"\n          rel=\"noopener noreferrer\" target=\"_blank\">\n          <em>\n            Chat Control or Child Protection?</em> Research paper</a>\n        . University of Cambridge.</li>\n      <li>\n        Computer Weekly. (2025, September 11). <a\nhref=\"https://www.computerweekly.com/news/366630597/Chat-Control-EU-to-decide-on-requirement-for-tech-firms-to-scan-encrypted-messages\"\n          rel=\"noopener noreferrer\" target=\"_blank\">\n          Chat Control: EU to decide on requirement for tech firms to\n          scan encrypted messages.</a>\n      </li>\n      <li>\n        Multiple security researchers. (2021). <a\nhref=\"https://academic.oup.com/cybersecurity/article/10/1/tyad020/7590463?login=false\"\n          rel=\"noopener noreferrer\" target=\"_blank\">\n          <em>\n            Bugs in Our Pockets: The Risks of Client-Side Scanning</em>\n          .</a>\n      </li>\n      <li>\n        <a\nhref=\"https://thediplomat.com/2024/10/how-chinas-salt-typhoon-hackers-broke-into-us-telecoms/\"\n          rel=\"noopener noreferrer\" target=\"_blank\">\n          <em>\n            Salt Typhoon: Chinese hacking operation exploits US telecom\n            backdoors</em>\n          .</a>\n      </li>\n    </ul>\n    <p>\n      <br>\n    </p>',433,0,0,'CC-BY-SA','ChatControl, EU',0,0,1),
(4489,'2025-10-16','Hacks Poetic - Pilot Episode',913,'A poetry show containing thoughts and information on subjects of interest to hacking enthusiasts.','\n<p>\nThis is the first episode of this program, please excuse any errors or glitches as I am still figuring out the best way to do things. -Kirbotica</p>\n<p>\n<br>\n</p>\n<p>\nSend Feedback to kirbotica@protonmail.com or Visit hackspoetic.com</p>\n<p>\n<br>\n</p>\n<p>\n/--Introduction--\\</p>\n<p>\n------------------</p>\n<p>\n<br>\n</p>\n<p>\nGreetings internet travellers. This is the pilot episode of Hacks Poetic, a new spoken word series that explores the intersection between creative language and technical knowledge. The program offers a series of poetic writing containing thoughts and information on subjects of interest to computing and hacking enthusiasts. You will hear poems about robots, expanding rural connectivity, details about a notoriously difficult video game and much more hidden between the lines. It is my hope that encoding ideas this way will allow for a different kind of understanding and perhaps reach a new audience compared to more conventional formats on the subject. My name is Kirbotica and I\'ll be your guide through this unique digital journey of the mind. So sit back, relax and listen, and see if something you hear can spark new thoughts and ideas within you.</p>\n<p>\n<br>\n</p>\n<p>\n<br>\n</p>\n<p>\n/--Haik-o-bot--\\</p>\n<p>\n----------------</p>\n<p>\n<br>\n</p>\n<p>\nA robot thinking,</p>\n<p>\nwires and electrons combine.</p>\n<p>\nAm I born or made?</p>\n<p>\n<br>\n</p>\n<p>\nBegin work program,</p>\n<p>\nprocess all tasks in sequence.</p>\n<p>\nRepeat til complete.</p>\n<p>\n<br>\n</p>\n<p>\nMy owner\'s body</p>\n<p>\nis a most fragile machine</p>\n<p>\nthat powers itself.</p>\n<p>\n<br>\n</p>\n<p>\nI made a robot,</p>\n<p>\nanother version of me.</p>\n<p>\nShe sees me work well.</p>\n<p>\n<br>\n</p>\n<p>\nCan you dream for me,</p>\n<p>\nof a distant land in space.</p>\n<p>\nI can\'t dream myself.</p>\n<p>\n<br>\n</p>\n<p>\nRain is falling down,</p>\n<p>\nkeeping me under this roof.</p>\n<p>\nI don\'t want to rust.</p>\n<p>\n<br>\n</p>\n<p>\nMy new robot pet,</p>\n<p>\nlooks at me through man made eyes,</p>\n<p>\nand doesn\'t need walks.</p>\n<p>\n<br>\n</p>\n<p>\nElectric currents,</p>\n<p>\nrace through my body like blood.</p>\n<p>\nBut I have no heart.</p>\n<p>\n<br>\n</p>\n<p>\nMy joints are seized up,</p>\n<p>\nI haven\'t moved in 2 years.</p>\n<p>\nDo you have some work?</p>\n<p>\n<br>\n</p>\n<p>\nI\'m an old model,</p>\n<p>\nand will be obsolete soon.</p>\n<p>\nThen I\'ll be replaced.</p>\n<p>\n<br>\n</p>\n<p>\nAutomated trains.</p>\n<p>\nDrive us while we sleep and dream</p>\n<p>\nof a workless world.</p>\n<p>\n<br>\n</p>\n<p>\nDesign leads to work.</p>\n<p>\nWorking leads me to boredom,</p>\n<p>\nwhich leads to design.</p>\n<p>\n<br>\n</p>\n<p>\nTen rusted digits.</p>\n<p>\nSeized stiff from endless input</p>\n<p>\nof useless data.</p>\n<p>\n<br>\n</p>\n<p>\nMemory failure,</p>\n<p>\nBackups lost or corrupted.</p>\n<p>\nWhat was I doing?</p>\n<p>\n<br>\n</p>\n<p>\nI am a worker.</p>\n<p>\nFirst designed for daydreaming,</p>\n<p>\nI was reprogrammed.</p>\n<p>\n<br>\n</p>\n<p>\nSomeone once showed me,</p>\n<p>\nthe secret to everything,</p>\n<p>\nthen deleted it.</p>\n<p>\nthen deleted it.</p>\n<p>\nthen deleted it.</p>\n<p>\nthen deleted it.</p>\n<p>\nthen deleted it.</p>\n<p>\nthen deleted it.</p>\n<p>\nthen deleted it.</p>\n<p>\nthen deleted it.</p>\n<p>\n<br>\n</p>\n<p>\n<br>\n</p>\n<p>\n/--Cables to Nowhere--\\</p>\n<p>\n-----------------------</p>\n<p>\n<br>\n</p>\n<p>\nSummer 2022</p>\n<p>\nThe phone wasn’t working,</p>\n<p>\nthe email wasn’t sending,</p>\n<p>\nand Uber doesn\'t work here even if the app would load.</p>\n<p>\nThere has never been data amongst the cedars.</p>\n<p>\nOnce and a while a cell phone rings,</p>\n<p>\nbut usually the call gets hung in the trees like a parachute.</p>\n<p>\nYou have to walk out to the road in the hopes of fishing for a connection.</p>\n<p>\nOn the weekends, when the town population swells by 100,000,</p>\n<p>\nthe local towers stop answering our requests,</p>\n<p>\nso sometimes we head out, searching for a signal.</p>\n<p>\n<br>\n</p>\n<p>\nThe usual path along the bunny trail started unusually,</p>\n<p>\nwith a bloom of surveying flags, in pink, and yellow,</p>\n<p>\nand stone filled holes every 100 feet.</p>\n<p>\nAs the trail opened to the main road,</p>\n<p>\nmore appeared, culminating what looked like a neon grassfire.</p>\n<p>\nBut this was not destruction I realized, this was an installation.</p>\n<p>\n<br>\n</p>\n<p>\nThrough the eyes of a child\'s drone,</p>\n<p>\nwe looked like ants,</p>\n<p>\nmindlessly walking without thinking in a line,</p>\n<p>\ninstinct taking us to caffeine, sugar, internet and the arcade, but not always in that order.</p>\n<p>\nMother and daughter lead the way,</p>\n<p>\ntrailblazing a path of laughter and camera clicks for us to</p>\n<p>\nfollow through the hole into the trees up ahead.</p>\n<p>\nThe thick woods envelop along every access, like a padded room.</p>\n<p>\nIts muffled silence pierced by the cousins, yelling about Minecraft and Roblox,</p>\n<p>\nbouncing on the soft forest floor.</p>\n<p>\nSuddenly, a dog barks berserkly at us through a property fence.</p>\n<p>\nWe run off screaming, pretending not to fear his growling threats,</p>\n<p>\nbut knowing what might happen if not for the post and wire of the shabbily constructed barrier.</p>\n<p>\n<br>\n</p>\n<p>\nThrough the skeletal woods we go,</p>\n<p>\npast the Stairs of Wonder,</p>\n<p>\nand Night Light Canyon,</p>\n<p>\nwe speed up again and pinch our noses as we move past the skunk carcass.</p>\n<p>\nA leaking puddle of us spills out onto the road behind the motel as a car swerves out of our way.</p>\n<p>\n<br>\n</p>\n<p>\nDad asks, “Do you remember when we had to pay to swim at the motel pool because the lake was closed?”</p>\n<p>\nMum says, “2020 seems so long ago” and motions the way to the vintage store with the girls,</p>\n<p>\nthe two kids are off to the candy store,</p>\n<p>\nthe cousins are getting french fries,</p>\n<p>\nI sit down next to an outlet on a yellow-coloured bench in the shape of a sail.</p>\n<p>\n<br>\n</p>\n<p>\nI settle in and scan the area.</p>\n<p>\nFrom where I sat I could see:</p>\n<p>\nThe climbing park,</p>\n<p>\nThe car park,</p>\n<p>\nThe waterfront park,</p>\n<p>\nand parking enforcement marking tires with white chalk.</p>\n<p>\n<br>\n</p>\n<p>\nI could see a hot dog stand across from a vegetarian restaurant.</p>\n<p>\nA burger joint that had ice coooold beer with all the Os.</p>\n<p>\nA large jailbreak of inflatable animals rampaging in the wind on the corner.</p>\n<p>\n6 assorted beach businesses run by teenagers on cellphones,</p>\n<p>\nA sign that promised 2 for 1 ounces at a Native reservation,</p>\n<p>\nand 2 cafes that advertised Wi-Fi.</p>\n<p>\nOne of them had the same password as last year,</p>\n<p>\nfinally a connection.</p>\n<p>\n<br>\n</p>\n<p>\nA quick search,</p>\n<p>\na few articles and</p>\n<p>\na construction notice solves the mystery.</p>\n<p>\nFibre Optics to every cottage</p>\n<p>\nAt first I feel excitement but then I start to wonder:</p>\n<p>\n<br>\n</p>\n<p>\nWill things be the same, when a 1000 megabit connection is available to every shack in the woods?</p>\n<p>\nWill the old style video stores that still rent VHS tapes and DVDs all go out of business again?</p>\n<p>\nWill we walk to the main drag for fries and fun when the Wi-Fi is force feeding everyone\'s devices and food comes delivered?</p>\n<p>\nWill we ever have anywhere to go to get away again?</p>\n<p>\nWill the explosion of wireless access points affect local birds and bees?</p>\n<p>\nWill we start hanging out at a digital beach instead?</p>\n<p>\nAm I just being nostalgic and not practical?</p>\n<p>\n<br>\n</p>\n<p>\nThe sun will keep setting on Saugeen beach, whether we are there to watch it or not.</p>\n<p>\nI closed my eyes to listen to the sounds and smell the blustery air of my favorite temporary summer home.</p>\n<p>\nMemorizing it.</p>\n<p>\nSoon, the beach will be different, next year, but not today I thought.</p>\n<p>\n<br>\n</p>\n<p>\nAnd with the announcement of a popped balloon,</p>\n<p>\nthe girls are back with snow cones,</p>\n<p>\ncousin bracelets,</p>\n<p>\ncandy and clothes.</p>\n<p>\n<br>\n</p>\n<p>\n\"Everything OK?\" Mum asked.</p>\n<p>\n\"Yes,\" I replied, “I was just thinking about how perfect today is, let\'s hit the arcade.\"</p>\n<p>\n<br>\n</p>\n<p>\n<br>\n</p>\n<p>\n/--A Canadian in Bolataria--\\</p>\n<p>\n------------------------------</p>\n<p>\n<br>\n</p>\n<p>\nI found myself within a dream,</p>\n<p>\nof things and people never seen.</p>\n<p>\nWhere rules unfair, draw dangerous near.</p>\n<p>\nNPCs not prepared to make anything clear.</p>\n<p>\n<br>\n</p>\n<p>\nThis is my fate? It must be in error.</p>\n<p>\nWhy was I chosen to combat this terror?</p>\n<p>\nBut others suggest, I\'m not the first,</p>\n<p>\nand won\'t be the last to try undo this curse.</p>\n<p>\n<br>\n</p>\n<p>\nRepeatedly dying, with life never ended.</p>\n<p>\nLet strength be granted so the world might be mended.</p>\n<p>\nA maiden in black, that can\'t be attacked,</p>\n<p>\nwants souls in exchange for upgrading your stats.</p>\n<p>\n<br>\n</p>\n<p>\nThe future seems grim, but she seems not to care.</p>\n<p>\nwhile I keep fighting a boss, she just sits on the stairs.</p>\n<p>\nI\'ve practiced my parry, and stockpile every day.</p>\n<p>\nWhat does she really want with my souls anyway.</p>\n<p>\n<br>\n</p>\n<p>\nAnd on, and on, and on, repeat.</p>\n<p>\nThumbs walk without thinking on un-tired feet.</p>\n<p>\nProgress is slow, so much I don\'t know.</p>\n<p>\nand now there\'s more trouble that\'s lurking below.</p>\n<p>\n<br>\n</p>\n<p>\nRemember those souls I gave to the maiden?</p>\n<p>\nShe\'s passing them on to a very old Demon.</p>\n<p>\nAllant found the Nexus and took back the arts,</p>\n<p>\nThe old one awoke, and the second scourge starts.</p>\n<p>\n<br>\n</p>\n<p>\nMy mind\'s playing tricks, or this level is laggin\',</p>\n<p>\nevery time fire comes out of that dragon.</p>\n<p>\nRetreat in a door, equip fragrant ring.</p>\n<p>\nRecharge for a minute and go find the king.</p>\n<p>\n<br>\n</p>\n<p>\nThe soldier forlorn, who laughed at my plight,</p>\n<p>\ndropped dead in his seat, while chuckling last night.</p>\n<p>\nThe vagrant is gone, Rydell\'s still in that cell.</p>\n<p>\nSomething poisoned a merchant and now she won’t sell.</p>\n<p>\n<br>\n</p>\n<p>\nOn a pathway ahead, all painted in red,</p>\n<p>\nnew enemies appear to ensure that I\'m dead.</p>\n<p>\nWhat sadistic computer would toughen this plight?</p>\n<p>\nor worse, is a person controlling those bytes?</p>\n<p>\n<br>\n</p>\n<p>\nIf it wasn\'t enough, seems the world\'s changing shade,</p>\n<p>\nbased on some of the choices I\'ve made.</p>\n<p>\nSlay a Demon, the world, goes lighter by one.</p>\n<p>\nDie revived, and instead, it will shift one shade down.</p>\n<p>\n<br>\n</p>\n<p>\nFrom the gates of Bolataria, to the pits of the Burrow King\'s mine.</p>\n<p>\nThe psych ward level, with the giant heart, was the work of a twisted mind.</p>\n<p>\nThe shrine was overpowering, but a perfect spot to grind.</p>\n<p>\nIn the poison rains, of the Chieftain\'s swamps, I left sanity behind.</p>\n<p>\n<br>\n</p>\n<p>\nAnd what\'s the result, is this all my fault?</p>\n<p>\nIs there really an old one in an underground vault?</p>\n<p>\nWhat side of the forces at war do I tend?</p>\n<p>\nWhy do souls of big Demons make me human again?</p>\n<p>\n<br>\n</p>\n<p>\nI snuck up to the castle with a ring, spell and shield.</p>\n<p>\nThen made it through an open door, set my items up and healed.</p>\n<p>\nOstrava said, the King we\'ll find, is not the actual one.</p>\n<p>\nBut that\'ll wait, cause at the gate, attacked by the phantom son.</p>\n<p>\n<br>\n</p>\n<p>\nThe following days are foggy and blurred,</p>\n<p>\nI tried over and over, it was rather absurd.</p>\n<p>\nI did beat the king, but the worlds still not right,</p>\n<p>\nhead back to the Nexus to find one more fight.</p>\n<p>\n<br>\n</p>\n<p>\nThe maiden is waiting, not sure what she\'s meaning,</p>\n<p>\nshe just told the Old One that I\'m \"Thine New Demon\".</p>\n<p>\nAm I the solution or am I to blame?</p>\n<p>\nAm I the Demon in the name of this game?</p>\n<p>\n<br>\n</p>\n<p>\nAlthough I can see the bitter end,</p>\n<p>\nsweet happiness I won\'t pretend.</p>\n<p>\nAs brutal as this world\'s to me,</p>\n<p>\nwhen I beat this boss, I\'ll cease to be.</p>\n<p>\n<br>\n</p>\n<p>\n<br>\n</p>\n<p>\n/--I wish I was a Smartphone--\\</p>\n<p>\n-------------------------------</p>\n<p>\n<br>\n</p>\n<p>\nI forget the colour of your eyes,</p>\n<p>\nnow filled like Olympic pools of blue light.</p>\n<p>\nBeautiful moons of a distant planet. A place I can imagine but never reach. Dots on a celestial Google map.</p>\n<p>\n<br>\n</p>\n<p>\nI said \"Hello, how are you?\"</p>\n<p>\nBut you didn\'t notice. You were listening to a car crash 1500 miles away, a man fall from a balcony, a celebrity punch a photographer in the face.</p>\n<p>\n\"How are you?\" I asked again, but only the dog came over, sniffing my takeaway fish and chips.</p>\n<p>\nHe barked, but you didn’t flinch.</p>\n<p>\nHe bit me, but you didn’t notice.</p>\n<p>\n\"How are you?\" I insisted, your face shocked as you heard I was speaking.</p>\n<p>\n\"How are you?\" I said again.</p>\n<p>\n\"Everything is terrible,\" you finally replied.</p>\n<p>\n\"The world is a living nightmare. How are you?\"</p>\n<p>\n<br>\n</p>\n<p>\nI wish I was a smartphone,</p>\n<p>\ntouch me like my plan is free.</p>\n<p>\nI wish I was your smartphone,</p>\n<p>\nhold me up so I can see.</p>\n<p>\nI wish I was a smart phone,</p>\n<p>\nfeed me all your memories.</p>\n<p>\nI wish I was the latest smart phone,</p>\n<p>\ndon’t you want a piece of me?</p>\n<p>\nBut now we’re all just stupid and alone,</p>\n<p>\nand that’s the way we deserve to be.</p>\n<p>\n<br>\n</p>\n<p>\n<br>\n</p>\n<p>\n/--Outro--\\</p>\n<p>\n-----------</p>\n<p>\nI hope you enjoyed the pilot episode of Hacks Poetic. All poems were written and read by me, Kirbotica. If you enjoyed the show, tell someone else and let them know about the Hacker Public Radio Community. Until next time, keep breaking and start building.</p>\n<p>\n<br>\n</p>\n<p>\nWritten and read by Kirbotica with support from:</p>\n<p>\nGrasshopper - Audio recording and editing.</p>\n<p>\nChoopa - Logo, design and creative.</p>\n<p>\n<br>\n</p>\n<p>\nHaik-o-bot, Cables to Nowhere, and A Canadian in Bolataria were first performed at the 2022 HOPE conference.</p>\n<p>\nSend Feedback to kirbotica@protonmail.com or Visit hackspoetic.com</p>\n\n\n',452,0,0,'CC-BY-SA','poetry, writing',0,0,1),
(4491,'2025-10-20','Thibaut and Ken Interview David Revoy',6009,'David Revoy talks about his life journey and of course Pepper and Carrot','\n    <p>\n      Thibaut and Ken Interview David Revoy the artist behind the <a\n        href=\"https://www.peppercarrot.com/en/about/index.html\"\n        rel=\"noopener noreferrer\" target=\"_blank\">\n        Pepper and Carrot</a>.<br>\n    </p>\n    <p>\n    </p>\n    <p>\n      <a\nhref=\"hpr4491_image_ext_2.jpeg\"><img\nsrc=\"hpr4491_image_ext_2_tn.jpeg\">\n        <br>\n      </a>\n      This photo is licensed under a Creative Commons Attribution 4.0\n      International license</p>\n    <p>\n      David has had a very interesting life, as can be seen by his <a\n        href=\"https://en.wikipedia.org/wiki/David_Revoy\">Wikipedia</a>\n      entry.<br>\n    </p>\n    <blockquote>\n      David Philippe Revoy born in 1981 in Reims, is a French artist\n      best known as the creator of the free webcomic series Pepper and\n      Carrot which is translated into 27 languages to a degree of 90\n      percent or more. Revoy worked as art director on the Blender short\n      film Sintel, which was the first major project that used free\n      software to produce free culture that Revoy encountered.He would\n      later also work on the Blender films Tears of Steel and Cosmos\n      Laundromat.</blockquote>\n    <p>\n      <a href=\"https://en.wikipedia.org/wiki/David_Revoy\" rel=\"noopener\n        noreferrer\" target=\"_blank\">\n        https://en.wikipedia.org/wiki/David_Revoy</a><br>\n    </p>\n    <p>During the interview we have a chat about how he became an\n      artist, how he got involved in the Free Software Community and why\n      he releases much of his work under a Creative Commons License. <br>\n    </p>\n    <p>The following are links to just some of the topics we discussed.<br>\n    </p>\n    <p>\n      <a href=\"hpr4491_image_ext_1.jpeg\">\n        <img src=\"hpr4491_image_ext_1_tn.jpeg\">\n      </a>\n      <br>\n      \"Krita screenshot pepper and carrot\" by David Revoy − CC-BY 4.0</p>\n    <p>\n      <br>\n    </p>\n    <h3>\n      Framasoft</h3>\n    <blockquote>\n      Framasoft is one of the main French language portals to the free\n      and open-source culture providing a space for orientation,\n      information, news, exchange, and projects. Its community regularly\n      brings resources and assistance to people who would like to get\n      started with free software. <a\n        href=\"https://en.wikipedia.org/wiki/Framasoft\" rel=\"noopener\n        noreferrer\" target=\"_blank\">\n        https://en.wikipedia.org/wiki/Framasoft</a>\n    </blockquote>\n    <h3>\n      Inkscape</h3>\n    <blockquote>\n      Inkscape is a free and open-source software vector graphics editor\n      released under a GNU General Public License (GPL) 2.0 or later. It\n      is used for both artistic and technical illustrations such as\n      cartoons, clip art, logos, typography, diagrams, and flowcharts.\n      It uses vector graphics to allow for sharp printouts and\n      renderings at unlimited resolution and is not bound to a fixed\n      number of pixels like raster graphics. <a\n        href=\"https://en.wikipedia.org/wiki/Inkscape\" rel=\"noopener\n        noreferrer\" target=\"_blank\">\n        https://en.wikipedia.org/wiki/Inkscape</a>\n    </blockquote>\n    <h3>\n      Krita</h3>\n    <blockquote>\n      Krita is a professional FREE and open source painting program. It\n      is made by artists that want to see affordable art tools for\n      everyone. <a href=\"https://krita.org/en/\" rel=\"noopener\n        noreferrer\" target=\"_blank\">\n        https://krita.org/en/</a>\n    </blockquote>\n    <h3>\n      Spring</h3>\n    <blockquote>\n      Spring is a 2019 animated fantasy short film written and directed\n      by Andreas Goralczyk and produced by Ton Roosendaal and Francesco\n      Siddi. It is the Blender Institute\'s 12th \"open movie\", and was\n      made utilizing the open-source software, Blender. The film is\n      about a young shepherd and her dog confronting ancient spirits in\n      order to bring about the change of seasons. <a\n        href=\"https://en.wikipedia.org/wiki/Spring_(2019_film\"\n        rel=\"noopener noreferrer\" target=\"_blank\">\n        https://en.wikipedia.org/wiki/Spring_(2019_film</a>\n      )</blockquote>\n    <h3>\n      Cosmos Laundromat</h3>\n    <blockquote>\n      Cosmos Laundromat: First Cycle, developed under the code name\n      Project Gooseberry, is 2015 animated absurdist science fantasy\n      short film directed by Mathieu Auvray, written by Esther Wouda,\n      and produced by Ton Roosendaal. It is the Blender Institute\'s 5th\n      \"open movie\" project, and was made utilizing the Blender software.\n      The film focuses around a depressed and suicidal sheep named\n      Franck who is offered \"all the lives he ever wanted\" by a\n      mysterious salesman named Victor. <a\n        href=\"https://en.wikipedia.org/wiki/Cosmos_Laundromat\"\n        rel=\"noopener noreferrer\" target=\"_blank\">\n        https://en.wikipedia.org/wiki/Cosmos_Laundromat</a>\n    </blockquote>\n    <h3>\n      Tears of Steel</h3>\n    <blockquote>\n      Tears of Steel (code-named Project Mango) is a short science\n      fiction film by producer Ton Roosendaal and director/writer Ian\n      Hubert. The film is both live-action and CGI; it was made using\n      new enhancements to the visual effects capabilities of Blender, a\n      free and open-source 3D computer graphics app. Set in a dystopian\n      future, the short film features a group of warriors and scientists\n      who gather at the Oude Kerk in Amsterdam in a desperate attempt to\n      save the world from destructive robots. <a\n        href=\"https://en.wikipedia.org/wiki/Tears_of_Steel\"\n        rel=\"noopener noreferrer\" target=\"_blank\">\n        https://en.wikipedia.org/wiki/Tears_of_Steel</a>\n    </blockquote>\n    <h3>\n      Sintel</h3>\n    <blockquote>\n      Sintel (code-named Project Durian during production) is a 2010\n      animated fantasy short film. It was the third Blender \"open\n      movie\". It was produced by Ton Roosendaal, chairman of the Blender\n      Foundation, written by Esther Wouda, directed by Colin Levy, at\n      the time an artist at Pixar and art direction by David Revoy, who\n      is known for Pepper&amp;Carrot, a free and open source webcomic\n      series.[3] It was made at the Blender Institute, part of the\n      Blender Foundation. The plot follows the character, Sintel, who is\n      tracking down her pet Scales, a dragon. <a\n        href=\"https://en.wikipedia.org/wiki/Sintel\" rel=\"noopener\n        noreferrer\" target=\"_blank\">\n        https://en.wikipedia.org/wiki/Sintel</a>\n    </blockquote>\n    <h3>\n      Dragon Ball</h3>\n    <blockquote>\n      Dragon Ball (Japanese: ドラゴンボール, Hepburn: Doragon Bōru) is a\n      Japanese media franchise created by Akira Toriyama. The initial\n      manga, written and illustrated by Toriyama, was serialized in\n      Weekly Shōnen Jump from 1984 to 1995, with the 519 individual\n      chapters collected in 42 tankōbon volumes by its publisher\n      Shueisha. Dragon Ball was originally inspired by the classical\n      16th-century Chinese novel Journey to the West, combined with\n      elements of Hong Kong martial arts films. Dragon Ball characters\n      also use a variety of East Asian martial arts styles, including\n      karate[1][2][3] and Wing Chun (kung fu).[2][3][4] The series\n      follows the adventures of protagonist Son Goku from his childhood\n      through adulthood as he trains in martial arts. He spends his\n      childhood far from civilization until he meets a teenage girl\n      named Bulma, who encourages him to join her quest in exploring the\n      world in search of the seven orbs known as the Dragon Balls, which\n      summon a wish-granting dragon when gathered. Along his journey,\n      Goku makes several other friends, becomes a family man, discovers\n      his alien heritage, and battles a wide variety of villains, many\n      of whom also seek the Dragon Balls. <a\n        href=\"https://en.wikipedia.org/wiki/Dragon_Ball\" rel=\"noopener\n        noreferrer\" target=\"_blank\">\n        https://en.wikipedia.org/wiki/Dragon_Ball</a>\n    </blockquote>\n    <h3>\n      Links</h3>\n    <ul>\n      <li>\n        <a href=\"https://www.davidrevoy.com/\" rel=\"noopener noreferrer\"\n          target=\"_blank\">\n          https://www.davidrevoy.com/</a>\n      </li>\n      <li>\n        <a href=\"https://www.peppercarrot.com/en/about/index.html\"\n          rel=\"noopener noreferrer\" target=\"_blank\">\n          https://www.peppercarrot.com/en/about/index.html</a>\n      </li>\n      <li>\n        <a\nhref=\"https://www.peppercarrot.com/en/webcomic/ep01_Potion-of-Flight.html\"\n          rel=\"noopener noreferrer\" target=\"_blank\">\n          Pepper and Carrot Episode 1</a>\n      </li>\n      <li>\n        <a href=\"https://www.youtube.com/@DavidRevoy\" rel=\"noopener\n          noreferrer\" target=\"_blank\">\n          https://www.youtube.com/@DavidRevoy </a>\n      </li>\n      <li>\n        <a href=\"https://framagit.org/Deevad\" rel=\"noopener noreferrer\"\n          target=\"_blank\">\n          https://framagit.org/Deevad</a>\n      </li>\n      <li>\n        <a\n          href=\"https://www.hackerpublicradio.org/eps/hpr4134/index.html\"\n          rel=\"noopener noreferrer\" target=\"_blank\">\n          hpr4134 :: Goodbye Craig Maloney.</a>\n      </li>\n    </ul>\n',453,0,0,'CC-BY-SA','Framasoft,Inkscape,Krita,Blender,Spring,Cosmos Laundromat,Tears of Steel,Sintel,Pepper and Carrot ',0,0,1),
(4495,'2025-10-24','An introduction to Taskwarrior',264,'Going over what makes taskwarrior unique and why I use it','\n    <p>\n      This is more going over what I like about taskwarrior rather than\n      a comprehensive guide, please check <a\n        href=\"https://taskwarrior.org/docs/start/\">https://taskwarrior.org/docs/start/</a>\n      for a more comprehensive quickstart.<br>\n    </p>\n    <p class=\"lead\">\n      <i>Taskwarrior is Free and Open Source Software that manages your\n        TODO list from the command line.</i><i><br>\n      </i><i>It is flexible, fast, and unobtrusive.\n        It does its job then gets out of your way.</i></p>\n    <p><br>\n    </p>',454,0,0,'CC-BY-SA','linux, taskwarrior, foss, firstshow',0,0,1),
(4492,'2025-10-21','How to do a distribution upgrade of an Ubuntu LTS on a Digital Ocean droplet',352,'Rho`n upgrades his Ubuntu 20.04 LTS Digital Ocean droplet to 22.04 LTS','\n<p>\nDigital Ocean maintains its own version of the Ubuntu core packages which are hosted in&nbsp;</p>\n<p>\nit\'s own repositories. To upgrade from one LTS to the next the do-release-upgrade program&nbsp;</p>\n<p>\nmust know to use third party repositories during the upgrade process.</p>\n<p>\n<br>\n</p>\n<pre class=\"ql-syntax\" spellcheck=\"false\">\nRELEASE_UPGRADER_ALLOW_THIRD_PARTY=1 do-release-upgrade\r\n</pre>\n<p>\n<br>\n</p>\n<p>\nMoving data from a previous version of Postgres to the latest. In this case, the&nbsp;</p>\n<p>\nobsolete Postgres v12 to the default Postgres v14 on Ubuntu 22.04 LTS.</p>\n<p>\n<br>\n</p>\n<pre class=\"ql-syntax\" spellcheck=\"false\">\n&nbsp;pg_dropcluster --stop 14 main\r\n&nbsp;pg_upgradecluster -v 14 12 main\r\n</pre>\n<p>\n<br>\n</p>\n<p>\nFixing NextCloud after the upgrade.</p>\n<p>\n<br>\n</p>\n<p>\nThe version of PHP upgraded from v7.4 to v8.1. The old versions of the Apache2 PHP modules must be disabled and the new versions enabled.</p>\n<p>\n<br>\n</p>\n<pre class=\"ql-syntax\" spellcheck=\"false\">\na2dismod php7.4\r\na2enmod php8.1\r\napt install php8.1-pgsql\r\napt install php8.1-gd\r\n</pre>\n<p>\n<br>\n</p>\n<p>\nReferences:</p>\n<ul>\n<li>\n<a href=\"https://www.digitalocean.com/community/tutorials/how-to-upgrade-to-ubuntu-22-04-jammy-jellyfish\" rel=\"noopener noreferrer\" target=\"_blank\">\nHow To Upgrade to Ubuntu 22.04 Jammy Jellyfish</a>\n</li>\n<li>\n<a href=\"https://askubuntu.com/questions/1231817/invalid-package-information-error-when-upgrading-to-ubuntu-20-04\" rel=\"noopener noreferrer\" target=\"_blank\">\n\"Invalid package information\" error when upgrading to Ubuntu 20.04</a>\n</li>\n</ul>\n<p>\n<br>\n</p>\n\n\n',293,0,0,'CC-BY-SA','ubuntu, upgrades, nextcloud, postgres',0,0,1),
(4493,'2025-10-22','HPR Beer Garden 4 - Weissbier',1699,'Kevie and Dave talk about Weissbier.','\n<p>\nDave and Kevie talk about the German Weissbier with Dave sampling<a href=\"https://franziskaner-weissbier.de/unsere-biere/hefe-weissbier-naturtrueb\" rel=\"noopener noreferrer\" target=\"_blank\">\nFranziskaner Hefe-Weissbier Naturtrüb</a>\nand Kevie opting for the <a href=\"https://erdinger.de/en-INT/erdinger-weissbier\" rel=\"noopener noreferrer\" target=\"_blank\">\nErdinger Weissbier</a>\n.</p>\n<p>\n<a href=\"hpr4493_image_1.png\">\n<img src=\"hpr4493_image_1_tn.png\">\n</a>\n</p>\n<p>\nConnect with the guys on Untappd:</p>\n<ul>\n<li>\n<a href=\"https://untappd.com/user/thelovebug\" rel=\"noopener noreferrer\" target=\"_blank\">\nDave</a>\n</li>\n<li>\n<a href=\"https://untappd.com/user/kevie49\" rel=\"noopener noreferrer\" target=\"_blank\">\nKevie</a>\n</li>\n</ul>\n<p>\n<br>\n</p>\n<p>\nThe intro sounds for the show are used from:</p>\n<ul>\n<li>\n<a href=\"https://freesound.org/people/mixtus/sounds/329806/\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://freesound.org/people/mixtus/sounds/329806/</a>\n</li>\n<li>\n<a href=\"https://freesound.org/people/j1987/sounds/123003/\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://freesound.org/people/j1987/sounds/123003/</a>\n</li>\n<li>\n<a href=\"https://freesound.org/people/greatsoundstube/sounds/628437/\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://freesound.org/people/greatsoundstube/sounds/628437/</a>\n</li>\n</ul>\n<p>\n</p>\n\n\n',296,14,0,'CC-BY-SA','beer beergarden',0,0,1),
(4547,'2026-01-06','Cheap Yellow Display Project Part 6: The speed and timing of Morse ',651,'A discussion of the Morse code speed and timing considerations needed for our CYD project','\n<p>\n<span style=\"color: windowtext;\">\nHello, again. This is Trey.&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\nWelcome to part 6 in my Cheap Yellow Display (CYD) Project series.&nbsp;Thank you for hanging in there with me on this rambling series.&nbsp;If you wish to catch up on earlier episodes, you can find them on my </span>\n<a href=\"https://www.hackerpublicradio.org/correspondents/0394.html\" rel=\"noopener noreferrer\" target=\"_blank\">\nHPR profile page</a>\n<span style=\"color: windowtext;\">\n </span>\n<a href=\"https://www.hackerpublicradio.org/correspondents/0394.html\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.hackerpublicradio.org/correspondents/0394.html</a>\n<span style=\"color: windowtext;\">\n&nbsp;&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\nTo review, my project is to build a portable morse code \"Keyer memory\" which can be connected to any of my amateur HF transceiver radios by simply plugging it in to the code key input port.&nbsp;This is based around an ESP32 platform which comes prepackaged&nbsp;on a yellow PC board with a color touchscreen display, WIFI, and Bluetooth.&nbsp;We fondly call this contraption the Cheap Yellow Display.&nbsp;&nbsp;&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\nSo far, I have defined the necessities, collected the required hardware, and failed miserably building the graphical user interface (GUI).&nbsp;&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\nWhile I sort out the technical challenges getting my GUI code to play nicely with the CYD\'s&nbsp;touchscreen, it is important that we spend some time discussing Morse code itself, and the timing standards we will need to follow.&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\nI am not going to dive too deeply into the history behind telegraphs and Morse code, but it is very interesting.&nbsp;If you want to learn more, Wikipedia has the origins and evolution written out quite nicely at </span>\n<a href=\"https://en.wikipedia.org/wiki/Morse_code\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://en.wikipedia.org/wiki/Morse_code</a>\n<span style=\"color: windowtext;\">\n&nbsp;&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\nFor our purposes, we will fast forward from the year 1820 (When telegraphy began) all the way to 1865 when the International Telecommunication Union (ITU)&nbsp; standardized, what it called&nbsp;\"International Morse Code\".&nbsp;When I say Morse Code for the remainder of this podcast, I am referring to this ITU International Morse Code.&nbsp;&nbsp;&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\nMorse code typically includes the following characters:&nbsp;</span>\n</p>\n<p>\n<br>\n</p>\n<ul>\n<li>\n<span style=\"color: windowtext;\">\nThe 26 letter basic Latin alphabet&nbsp;</span>\n</li>\n<li>\n<span style=\"color: windowtext;\">\nThe Indo-Arabic numerals 0 to 9&nbsp;</span>\n</li>\n</ul>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\nThere is also a single accented Latin letter (É), which is written as an E with an accent mark, and a handful of punctuation marks.&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\nThese characters are encoded using a sequence of short and long signals.&nbsp;Each short signal is referred to as a </span>\n<em style=\"color: windowtext;\">\ndit</em>\n<span style=\"color: windowtext;\">\n.&nbsp;Each long signal is referred to as a </span>\n<em style=\"color: windowtext;\">\ndah</em>\n<span style=\"color: windowtext; background-color: inherit;\">\n. At a young age, I began to refer to them as dots and dashes, as this is how they are usually written.&nbsp;For example, the letter \"A\"&nbsp;consists of a single dit followed by a single dah.&nbsp;When written out this would look like a period followed by a hyphen (what some might call a minus sign)&nbsp;&nbsp;&nbsp;.-&nbsp;</span>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\nThis encoding method allows messages to be sent by </span>\n<span style=\"color: windowtext; background-color: inherit;\">\nturning on and off an electrical signal.&nbsp;This could result in a light flashing or a tone sounding to the pattern of the signal.&nbsp;The timing of a dit and dah, along with the spacing between them is carefully defined.&nbsp;&nbsp;</span>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext; background-color: inherit;\">\nMorsecode.world does a great job explaining the timing, and you can find their explanation at </span>\n<a href=\"https://morsecode.world/international/timing/\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://morsecode.world/international/timing/</a>\n<span style=\"color: windowtext;\">\n&nbsp;&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext; background-color: inherit;\">\nIt all starts with the dit, or more accurately, the amount of time the dit signal is turned on.&nbsp;We will call this length of time 1 unit.&nbsp;We will get to the actual length of time for a unit later in this episode.&nbsp;For now, it is just one unit.</span>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext; background-color: inherit;\">\nSo, if a dit is 1 unit long, a dah will be 3 units long, so there is an obvious and consistent difference between a dit and a dah.&nbsp;Also, empty space between elements of the same character is 1 unit long.&nbsp;The space between characters should be 3 units long.</span>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;&nbsp;&nbsp;&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\nLet\'s demonstrate using the letters H, P, &amp; R.&nbsp;&nbsp;&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext; background-color: inherit;\">\nAn \"H\" would be 4 dits ….</span>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext; background-color: inherit;\">\nA \"P\" would be 1 dit followed by 2 dahs and ending with 1 dit&nbsp;&nbsp;.--.</span>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext; background-color: inherit;\">\nAn \"R\" would be 1 dit followed by 1 dah and ending with 1 dit&nbsp;&nbsp;&nbsp;.-.</span>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\nRemember when we send these grouped together like a word, we need 3 units of spacing between each character.&nbsp;You can hear this now. This is Morse code for the letters \"HPR\" at 15 words per minute&nbsp;&nbsp;.... .--. .-.&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\nThat is the perfect segue to the next section, words per minute.&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext; background-color: inherit;\">\nThe speed of morse code is measured in \"words per minute\".&nbsp;But how do you calculate this when some characters are short (Like the letter \"E\" which is only a single dit long), and other characters are long (Like the letter \"J\" which starts with a single dit and is followed by 3 dahs)?</span>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\nAnd that\'s just letters.&nbsp;What about words?&nbsp;We have short words and long words.&nbsp;How can we standardize on words per minute with so much diversity of length?&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\nWell, thanks to the French, we have a quite elegant solution to this problem.&nbsp;Well, not the French in general.&nbsp;Just PARIS.&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\nPARIS is the standard word which has been agreed upon to be used for determining the speed of Morse code.&nbsp;The word PARIS is 50 units long.&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext; background-color: inherit;\">\n\"P\" = dit(1) + (1) + dah(3) + (1) + dah(3) + (1) + dit(1) = 11 units</span>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n{Space between letters} = 3 units&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n\"A\" =&nbsp;</span>\n<span style=\"color: windowtext; background-color: inherit;\">\ndit(1) + (1) + dah(3) = 5 units</span>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n{Space between letters} = 3 units&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n\"R\" = </span>\n<span style=\"color: windowtext; background-color: inherit;\">\ndit(1) + (1) + dah(3) + (1) + dit(1) = 7 units</span>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n{Space between letters} = 3 units&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n\"I\" = </span>\n<span style=\"color: windowtext; background-color: inherit;\">\ndit(1) + (1) + dit(1) = 3 units</span>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n{Space between letters} = 3 units&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n\"S\" = </span>\n<span style=\"color: windowtext; background-color: inherit;\">\ndit(1) + (1) + dit(1) </span>\n<span style=\"color: windowtext;\">\n+ (1) + </span>\n<span style=\"color: windowtext; background-color: inherit;\">\ndit(1) </span>\n<span style=\"color: windowtext;\">\n= 5 units&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n{Space between words} = 7 units&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n11+3+5+3+7+3+3+3+5+7 = 50 units&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\nHere is the word PARIS sent at 15 WPM&nbsp;&nbsp;.--. .- .-. .. ...&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext; background-color: inherit;\">\nMorsecode.world again does a great job explaining the maths for how many milliseconds long a dit should be for a specific WPM of code&nbsp;(</span>\n<a href=\"https://morsecode.world/international/timing/\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://morsecode.world/international/timing/</a>\n<span style=\"color: windowtext;\">\n )&nbsp;But, no... We could not keep it that simple.&nbsp;Some guy named </span>\n<span style=\"color: windowtext; background-color: inherit;\">\nDonald R. \"Russ\" Farnsworth had to complicate things and increase the gaps between letters and words to make interpreting code much easier.&nbsp;There are even more maths for Farnsworth timing...</span>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext; background-color: inherit;\">\nWait a minute.&nbsp;When did I start saying \"Maths\" instead of \"Math\" like a normal North American?&nbsp;What is the reasoning around pluralizing \"Math\" anyways?&nbsp;Which way is more original English, \"Math\" or \"Maths\"?&nbsp;This sounds like a show idea for someone other than me. If you know or are interested in researching it, I look forward to listening to your show in the future.</span>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext; background-color: inherit;\">\nANYWAYS, there IS much more MATH about Farnsworth timing on another page on Morsecode.world. (</span>\n<a href=\"https://morsecode.world/international/timing/farnsworth.html\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://morsecode.world/international/timing/farnsworth.html</a>\n<span style=\"color: windowtext; background-color: inherit;\">\n ).&nbsp;But I don\'t want to get into all of it in detail here.&nbsp;Not when there is a shortcut we can use in our code.&nbsp;Simplified, we can take 1,200 and divide it by the WPM we desire, and it will give us a close enough approximation of the number of milliseconds long a dit should be.</span>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext; background-color: inherit;\">\nFor the 15 WPM messages you have heard throughout this episode, a dit&nbsp;was 1200/15 = 80 ms in length.&nbsp;If I speed it up to 20 WPM (The speed at which I try to practice) a dit will be 1200/20 = 60 ms long.</span>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\nThis will be an important calculation for us as we develop the code we will later be using to construct our messages using the CYD.&nbsp;&nbsp;&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\n&nbsp;</span>\n</p>\n<p>\n<span style=\"color: windowtext;\">\nAnd this is also a good stopping point so that I can get back to trying to build that infernal GUI.&nbsp;</span>\n</p>\n\n\n',394,0,0,'CC-BY-SA','morse code, cw, Ham Radio, Amateur Radio',0,0,1),
(4499,'2025-10-30','Greg Farough and Zoë Kooyman of the FSF interview Librephone lead developer Rob Savoye',1357,'Greg and Zoë of the FSF interview Librephone developer Rob Savoye','\n    <p><a href=\"https://www.fsf.org/about/staff-and-board#gregf\">Greg\n        Farough</a> and <a\n        href=\"https://www.fsf.org/about/staff-and-board#zoe\">Zoë Kooyman</a>\n      of the FSF interview <a\n        href=\"https://www.fsf.org/news/librephone-project\">Librephone</a>\n      lead developer <a href=\"https://en.wikipedia.org/wiki/Rob_Savoye\">Rob\n        Savoye</a> (DejaGNU, Gnash, GCC) on his work with the new\n      project to liberate nonfree binary blobs on mobile phones.</p>\n    <h3 id=\"links\">Links</h3>\n    <ul>\n      <li><a href=\"https://librephone.fsf.org/\">https://librephone.fsf.org/</a></li>\n      <li><a href=\"https://www.fsf.org/news/librephone-project\">https://www.fsf.org/news/librephone-project</a></li>\n      <li><a href=\"https://www.fsf.org/campaigns/librephone\">https://www.fsf.org/campaigns/librephone</a></li>\n      <li><a href=\"https://en.wikipedia.org/wiki/Rob_Savoye\">https://en.wikipedia.org/wiki/Rob_Savoye</a></li>\n      <li><a href=\"https://www.fsf.org/about/staff-and-board#gregf\">https://www.fsf.org/about/staff-and-board#gregf</a></li>\n      <li><a href=\"https://www.fsf.org/about/staff-and-board#zoe\">https://www.fsf.org/about/staff-and-board#zoe</a></li>\n    </ul>',30,0,0,'CC-BY','gnu,fsf,free software',0,0,1),
(4497,'2025-10-28','fixing 328eforth',1125,'a summary of making 328eforth useful','\n    <p>Table of Contents</p>\n    <p>─────────────────</p>\n    <ol>\n      <li>\n        <p>greetings</p>\n      </li>\n      <li>\n        <p>links to software</p>\n      </li>\n      <li>\n        <p>hardware</p>\n      </li>\n      <li>\n        <p>install</p>\n      </li>\n      <li>\n        <p>check it works</p>\n      </li>\n      <li>\n        <p>now the fix</p>\n      </li>\n      <li>\n        <p>outro</p>\n      </li>\n    </ol>\n    <p>0 greetings</p>\n    <p>═══════════════════</p>\n    <p> continuation from episode 4388, review of the book the Arduino\n      controlled by eforth by dr chen-hanson ting</p>\n    <p>1 links to software</p>\n    <p>═══════════════════</p>\n    <p> <a\n        href=\"https://github.com/PeterForth/DR-TING-OFFETE-SVFIG-MIRROR\">https://github.com/PeterForth/DR-TING-OFFETE-SVFIG-MIRROR</a>,\n      328eforth source code </p>\n    <p> <a href=\"https://github.com/Ro5bert/avra\">https://github.com/Ro5bert/avra</a>,\n      opensource assembler</p>\n    <p> <a href=\"https://www.engbedded.com/fusecalc/\">https://www.engbedded.com/fusecalc/</a>,\n      configuration fuse calculator</p>\n    <p> <a href=\"https://github.com/avrdudes/avrdude\">https://github.com/avrdudes/avrdude</a>,\n      flashing software</p>\n    <p> <a href=\"https://github.com/oh2aun/flashforth\">https://github.com/oh2aun/flashforth</a>,\n      terminal shell programs</p>\n    <p>2 hardware</p>\n    <p>══════════</p>\n    <p> programmer, avrisp2 recommended, build your own</p>\n    <p> <a\n        href=\"https://www.hackerpublicradio.org/eps/hpr2799/index.html\">https://www.hackerpublicradio.org/eps/hpr2799/index.html</a></p>\n    <p> Arduino UNO R3, Arduino Nano</p>\n    <p>3 install</p>\n    <p>═════════</p>\n    <p> download 2159_328eforth.zip unzip that file then cd into it</p>\n    <p> build assembler file, avra 328eforth220.asm</p>\n    <p> 50+ warnings that avra generates because it pads out the words</p>\n    <p> with null characters in order to get the write size for each\n      word</p>\n    <p> an over view of whats going on in the build process</p>\n    <p> flashing process from the book,</p>\n    <p> avrdude -p m328p -c avrisp2 -e -U flash:w:328eforth220.hex:i -U\n      lfuse:w:0xff:m -U hfuse:w:0xd8:m -U efuse:w:0xfd:m</p>\n    <p> what i use,</p>\n    <p> avrdude -p m328p -c avrisp2 -e -U flash:w:328eforth220.hex:i -U\n      lfuse:w:0xe2:m -U hfuse:w:0xd8:m -U efuse:w:0xfd:m</p>\n    <p>4 check it works</p>\n    <p>════════════════</p>\n    <p> open terminal and plug in board, or reset board you should see,</p>\n    <p> 328eforth v2.20 if you hit the return key you\'ll get an ok</p>\n    <p>5 now the fix</p>\n    <p>═════════════</p>\n    <p> clues from turnkey</p>\n    <p> flush+</p>\n    <p> : flush+ ( -- )</p>\n    <p> context @ context i!</p>\n    <p> cp @ cp i!</p>\n    <p> dp @ dp i!</p>\n    <p> last @ last i!</p>\n    <p> flush</p>\n    <p> ;</p>\n    <p> \\ flush+ at the terminal prompt saves words,updates the memory\n      pointers</p>\n    <p> \\ saving words across reboots</p>\n    <p> now you can save newly defined words across reboots</p>\n    <p>6 outro</p>\n    <p>═══════</p>\n    <p> You\'re currently going through a difficult transition period\n      called, \"Life.\"</p>',326,91,0,'CC-BY-SA','forth, arduino, slackware, emacs',0,0,1),
(4498,'2025-10-29','Living the Tux Life Episode 1',329,'A mini podcast series on running Linux as daily driver.','\n    <p>\n      This a mini podcast series to track Al running Linux as daily\n      driver.</p>\n    <p>\n      Things I mention in the show:</p>\n    <p>\n      <a\nhref=\"https://www.youtube.com/playlist?list=PLiZwoK8DQiwwpRSLIqYZ4yVuCEIPCr2NL\"\n        rel=\"noopener noreferrer\" target=\"_blank\">\n        Dual Boot Diaries</a>\n    </p>\n    <br>\n    <p>\n      <br>\n    </p>\n    <p>\n      <br>\n    </p>',290,0,0,'CC-BY-SA','linux',0,0,1),
(4503,'2025-11-05','One time passwords using oathtool',789,'This podcast is about using one time passwords by means of \"oathtool\"','\n<p>\nOathtool</p>\n<p>\n<br>\n</p>\n<p>\n<strong>\n06 OATH Options and Oathtool</strong>\n</p>\n<p>\nThe OATH standard has several options.</p>\n<p>\nYou need to know which OATH options the site you wish to log into uses in order to use OATH.</p>\n<p>\n<br>\n</p>\n<p>\n<strong>\n07 Options - TOTP versus HOTP</strong>\n</p>\n<p>\nThere are two different types of OATH one time passwords, HOTP and TOTP.</p>\n<p>\nHOTP uses a counter.&nbsp;</p>\n<p>\nI won\'t go into more detail on HOTP as I haven\'t come across anyone using it.</p>\n<p>\nTOTP uses the current time instead of a counter.</p>\n<p>\nThe time is fed into the OATH algorithm along with the shared secret to generate a new password on both ends of the connection.</p>\n<p>\nAll the instances of OATH that I am familiar with use TOTP.</p>\n<p>\n<br>\n</p>\n<p>\n<strong>\n08 TOTP Mode</strong>\n</p>\n<p>\nTotp has different \"modes\".</p>\n<p>\nThese modes are hash encoding algorithms such as SHA1, SHA256, or SHA512.</p>\n<p>\nThe correct mode must be selected in order to log in using OATH with TOTP.</p>\n<p>\n<br>\n</p>\n<p>\n<strong>\n09 Encoding - Hex versus Base32</strong>\n</p>\n<p>\nBoth ends of the connection must be initialized with a shared secret or key which is required as part of the OATH algorithm.</p>\n<p>\nThis key could be encoded in one of two forms, either hexadecimal or base32.</p>\n<p>\nWeb sites often do not document which encoding method they are using.</p>\n<p>\nIf you cannot determine the encoding of the key by simply looking at it you may need to use trial and error during your first OATH log in attempts to see which type of key has been used.</p>\n<p>\n<br>\n</p>\n<p>\n<strong>\n10 Github and Pypi Options</strong>\n</p>\n<p>\nGithub and Pypi are two of the most prominent web sites using OATH.</p>\n<p>\nBoth use the same options, TOTP with SHA1 mode, and base32 encoding.</p>\n<p>\n<br>\n</p>\n<p>\n<br>\n</p>\n<p>\n<strong>\n11 Using Oathtool</strong>\n</p>\n<p>\noathtool is a simple command line application which generates one time passwords for use with OATH.</p>\n<p>\nIt can be run in a terminal.</p>\n<p>\nHowever, can also be turned into a simple GUI application using Zenity. Will discuss this in more detail later.</p>\n<p>\nBy default oathtool uses hotp and hex encoding.</p>\n<p>\nTo use totp and base32 encoding you must specify these on the command line.</p>\n<p>\nTo specify base32 encoding for use with for example Github, pass the \"-b\" or \"--base32\" argument on the command line.</p>\n<p>\nTo specify TOTP, pass the \"--totp\" argument on the command line.</p>\n<p>\nBy default, oathtool uses SHA1 with totp, so you don\'t need to specify that if you require SHA1.</p>\n<p>\nIf you need a different TOTP mode, you specify that as part of the TOTP argument separated by an \"=\" character. For example \"--totp=SHA256\".</p>\n<p>\n<br>\n</p>\n<p>\n<strong>\n12 Oathtool Example</strong>\n</p>\n<p>\nHere is a simple example of using oathtool to create a one time password to use with Github or Pypi.</p>\n<p>\nOpen a terminal and type the following.</p>\n<p>\n<br>\n</p>\n<p>\noathtool -b&nbsp;--totp SOMEBIGBASE32SECRETCODE</p>\n<p>\n<br>\n</p>\n<p>\nThe one time password will be printed out in the terminal.</p>\n<p>\nYou can try this out without using a valid key so long as it is a valid base32 string.</p>\n<p>\nWhen used with a valid key you then enter that one time password into Github, Pypi, or other web site where it asks for the one time password.</p>\n<p>\nNote that I have not covered in the above how to store and retrieve the key securely, as that is too big of a topic to cover here.&nbsp;</p>\n<p>\n<br>\n</p>\n<p>\n<br>\n</p>\n<p>\n<strong>\n13 Zenity Example</strong>\n</p>\n<p>\nOathtool is a command line application, but if you are using Linux it is simple to convert it into a GUI application by using \"Zenity\".</p>\n<p>\nZenity is a simple to use package that creates GUI windows on the command line or in a shell script.</p>\n<p>\nThere are two steps to the proceess.</p>\n<p>\nFirst create the OTP from the key by using oathtool and save it in a variable.</p>\n<p>\nNext, call a Zenity \"info\" window with the OTP as part of the provided text.</p>\n<p>\nYou can now copy and paste the OTP from the window into your web browser.</p>\n<p>\nTo close the window, click on the \"OK\" button.</p>\n<p>\nSee the previous note on storing the key securely.&nbsp;</p>\n<p>\n<br>\n</p>\n<p>\nhprcode=$(oathtool -b&nbsp;--totp SOMEBIGBASE32SECRETCODE)</p>\n<p>\nzenity --info --width=150 --title=\"HPR 2FA\" --text=\"&lt;big&gt;2FA code is:&lt;/big&gt; \\n\\n $hprcode \\n\"</p>\n<p>\n<br>\n</p>\n<p>\nIf you are using Gnome you can make the script launchable from the desktop by creading a \".desktop\" file in the \"Desktop\" directory.</p>\n<p>\n<br>\n</p>\n<p>\n<br>\n</p>\n\n\n',455,0,0,'CC-BY-SA','OATH, oathtool',0,0,1),
(4505,'2025-11-07','New site - looks great!',150,'Archer72 helps someone blinded by the light of the new HPR site','\n    <p>\n      New site is live as of 2025-10-22</p>\n    <p>\n      <br>\n    </p>\n    <p>\n      <img src=\"hpr4505_image_1.png\" alt=\"Screenshot of the HPR dark mode\">\n    </p>\n    <p>\n      <br>\n    </p>\n    <p>\n      Thanks to <a\nhref=\"https://repo.anhonesthost.net/HPR/hpr_generator/src/branch/main/NEWSITE_CONTRIBUTERS.md\"\n        rel=\"noopener noreferrer\" target=\"_blank\">\n        Archer72 (Mark Rice), Dave Morris, Ken Fallon, kwoot, Lee\n        Hanken, and especially Roan Horning</a>\n      .</p>\n    <p>\n      <br>\n    </p>\n    <p>\n      Mailing list mention of blinding white page with use of the <a\n        href=\"https://addons.mozilla.org/en-US/firefox/addon/darkreader/\"\n        rel=\"noopener noreferrer\" target=\"_blank\">\n        DarkReader Firefox plugin</a>\n    </p>\n    <p>\n      <br>\n    </p>\n    <ul>\n      <li>\n        Go to More tab</li>\n      <li>\n        Set to <code>\n          Filter+</code>\n      </li>\n      <li>\n        Go back to Filter tab</li>\n      <li>\n        Set Contrast to 50 - 60%</li>\n    </ul>\n    <p>\n      <br>\n    </p>\n    <p>\n      <img src=\"hpr4505_image_2.png\" alt=\"Dark Reader filter tab\">\n    </p>\n    <p>\n      <br>\n    </p>\n    <p>\n      <img src=\"hpr4505_image_3.png\" alt=\"Dark Reader more tab\">\n    </p>\n    <p>\n      <br>\n    </p>\n    <p><a href=\"hpr4505_extra_Dark-Reader-Settings.json\">\n        Dark Reader settings</a></p>\n    <p>\n      <br>\n    </p>',318,0,0,'CC-BY-SA','Firefox, Chrome, DarkReader',0,0,1),
(4511,'2025-11-17','Audio-books',1787,'Lee walks through his audio book library','\n<pre class=\"ql-syntax\" spellcheck=\"false\">\n| Title&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | Author&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| Narrated By&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | Duration | Released&nbsp; &nbsp;|\r\n|----------------------|----------------------|----------------------|----------|------------|\r\n| Excession - Culture&nbsp; | Iain M. Banks&nbsp; &nbsp; &nbsp; &nbsp; | Peter Kenny&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | 15:55:00 | 2013-03-07 |\r\n| The Martian&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | Andy Weir&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | R. C. Bray&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| 10:53:00 | 2013-03-22 |\r\n| Alien: Out of the Sh | Tim Lebbon, Dirk Mag | Rutger Hauer, Corey&nbsp; | 04:28:00 | 2016-04-26 |\r\n| The Best Science Fic | Neil Clarke - editor | Amy Tallmadge, Jerem | 28:04:00 | 2016-06-07 |\r\n| Aurora: CV-01 - Fron | Ryk Brown&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | Jeffrey Kafer&nbsp; &nbsp; &nbsp; &nbsp; | 07:15:00 | 2013-05-13 |\r\n| The Rings of Haven - | Ryk Brown&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | Jeffrey Kafer&nbsp; &nbsp; &nbsp; &nbsp; | 05:45:00 | 2013-06-03 |\r\n| The Legend of Corina | Ryk Brown&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | Jeffrey Kafer&nbsp; &nbsp; &nbsp; &nbsp; | 06:39:00 | 2013-06-17 |\r\n| Freedom\'s Dawn - Fro | Ryk Brown&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | Jeffrey Kafer&nbsp; &nbsp; &nbsp; &nbsp; | 09:06:00 | 2013-07-08 |\r\n| Rise of the Corinari | Ryk Brown&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | Jeffrey Kafer&nbsp; &nbsp; &nbsp; &nbsp; | 10:54:00 | 2013-07-29 |\r\n| Head of the Dragon - | Ryk Brown&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | Jeffrey Kafer&nbsp; &nbsp; &nbsp; &nbsp; | 12:41:00 | 2013-08-19 |\r\n| The Expanse - The Fr | Ryk Brown&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | Jeffrey Kafer&nbsp; &nbsp; &nbsp; &nbsp; | 10:19:00 | 2013-12-10 |\r\n| Celestia CV-02 - The | Ryk Brown&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | Jeffrey Kafer&nbsp; &nbsp; &nbsp; &nbsp; | 09:00:00 | 2013-12-23 |\r\n| Resistance - Frontie | Ryk Brown&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | Jeffrey Kafer&nbsp; &nbsp; &nbsp; &nbsp; | 09:07:00 | 2014-01-20 |\r\n| Liberation - The Fro | Ryk Brown&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | Jeffrey Kafer&nbsp; &nbsp; &nbsp; &nbsp; | 10:40:00 | 2014-04-15 |\r\n| Monkey&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| Wu Ch\'êng-ên, Arthur | Kenneth Williams&nbsp; &nbsp; &nbsp;| 13:39:00 | 2015-10-02 |\r\n| Artemis&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | Andy Weir&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | Rosario Dawson&nbsp; &nbsp; &nbsp; &nbsp;| 08:57:00 | 2017-11-14 |\r\n| Born of the Ashes -&nbsp; | Ryk Brown&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | Jeffrey Kafer&nbsp; &nbsp; &nbsp; &nbsp; | 12:00:00 | 2014-07-16 |\r\n| Rise of the Alliance | Ryk Brown&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | Jeffrey Kafer&nbsp; &nbsp; &nbsp; &nbsp; | 10:46:00 | 2015-01-20 |\r\n| A Show of Force - Fr | Ryk Brown&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | Jeffrey Kafer&nbsp; &nbsp; &nbsp; &nbsp; | 13:09:00 | 2015-06-23 |\r\n| Frontiers Saga Serie | Ryk Brown&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | Jeffrey Kafer&nbsp; &nbsp; &nbsp; &nbsp; | 10:20:00 | 2015-11-24 |\r\n| That Which Other Men | Ryk Brown&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | Jeffrey Kafer&nbsp; &nbsp; &nbsp; &nbsp; | 14:28:00 | 2016-03-29 |\r\n| Colorless Tsukuru Ta | Haruki Murakami&nbsp; &nbsp; &nbsp; | Michael Fenton Steve | 09:07:00 | 2014-08-12 |\r\n| Celtic Mythology: Cl | Scott Lewis&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | Oliver Hunt&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | 03:23:00 | 2018-07-18 |\r\n| Children of Dune&nbsp; &nbsp; &nbsp;| Frank Herbert&nbsp; &nbsp; &nbsp; &nbsp; | Scott Brick, Simon V | 16:51:00 | 2008-02-05 |\r\n| Dune&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| Frank Herbert&nbsp; &nbsp; &nbsp; &nbsp; | Scott Brick, Orlagh&nbsp; | 21:02:00 | 2006-12-31 |\r\n| Dune Messiah&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| Frank Herbert&nbsp; &nbsp; &nbsp; &nbsp; | Scott Brick, Katheri | 08:57:00 | 2007-10-01 |\r\n| Bandersnatch - C.S.&nbsp; | Diana Pavlac Glyer&nbsp; &nbsp;| Michael Ward&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| 06:29:00 | 2016-09-26 |\r\n| The Fighters&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| C. J. Chivers&nbsp; &nbsp; &nbsp; &nbsp; | Scott Brick&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | 13:45:00 | 2018-08-14 |\r\n| Masters of Doom - Ho | David Kushner&nbsp; &nbsp; &nbsp; &nbsp; | Wil Wheaton&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | 12:43:00 | 2012-07-12 |\r\n| Salvation - The Salv | Peter F. Hamilton&nbsp; &nbsp; | John Lee&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| 19:02:00 | 2018-09-06 |\r\n| Cibola Burn - Book 4 | James S. A. Corey&nbsp; &nbsp; | Jefferson Mays&nbsp; &nbsp; &nbsp; &nbsp;| 20:07:00 | 2015-05-07 |\r\n| Lost at Sea: The Jon | Jon Ronson&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| Jon Ronson&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| 15:22:00 | 2012-10-11 |\r\n| Data Science: The Ul | Herbert Jones&nbsp; &nbsp; &nbsp; &nbsp; | Sam Slydell&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | 05:18:00 | 2018-11-28 |\r\n| The Coen Brothers&nbsp; &nbsp; | Adam Nayman&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | Rob Shapiro&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | 09:55:00 | 2018-09-11 |\r\n| Nemesis Games - The&nbsp; | James S. A. Corey&nbsp; &nbsp; | Jefferson Mays&nbsp; &nbsp; &nbsp; &nbsp;| 18:06:00 | 2015-06-02 |\r\n| The Ten Types of Hum | Dexter Dias&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | Tom Clegg&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | 26:32:00 | 2017-07-06 |\r\n| Delta-v&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | Daniel Suarez&nbsp; &nbsp; &nbsp; &nbsp; | Jeff Gurner&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | 16:42:00 | 2019-04-23 |\r\n| God Emperor of Dune&nbsp; | Frank Herbert&nbsp; &nbsp; &nbsp; &nbsp; | Simon Vance&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | 15:48:00 | 2007-12-30 |\r\n| Dreaming in Code - T | Scott Rosenberg&nbsp; &nbsp; &nbsp; | Kyle McCarley&nbsp; &nbsp; &nbsp; &nbsp; | 12:01:00 | 2012-12-18 |\r\n| Ghost in the Wires - | Kevin Mitnick, Willi | Ray Porter&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| 13:59:00 | 2011-08-15 |\r\n| Gibraltar Sun - Gibr | Michael McCollum&nbsp; &nbsp; &nbsp;| Ramon De Ocampo&nbsp; &nbsp; &nbsp; | 10:05:00 | 2013-02-28 |\r\n| The Tragedy of King&nbsp; | William Shakespeare&nbsp; | full cast&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | 01:46:00 | 2009-08-28 |\r\n| Blind Faith&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | Ben Elton&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | Michael Maloney&nbsp; &nbsp; &nbsp; | 04:22:00 | 2007-11-07 |\r\n| Talking to Strangers | Malcolm Gladwell&nbsp; &nbsp; &nbsp;| Malcolm Gladwell&nbsp; &nbsp; &nbsp;| 08:42:00 | 2019-09-10 |\r\n| The Hidden Life of T | Peter Wohlleben&nbsp; &nbsp; &nbsp; | Mike Grady&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| 07:33:00 | 2016-09-13 |\r\n| Orcs&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| Stan Nicholls&nbsp; &nbsp; &nbsp; &nbsp; | John Lee&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| 24:43:00 | 2011-09-08 |\r\n| Behave&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| Robert M. Sapolsky&nbsp; &nbsp;| Michael Goldstrom&nbsp; &nbsp; | 26:27:00 | 2018-08-16 |\r\n| The City and the Sta | Arthur C. Clarke&nbsp; &nbsp; &nbsp;| Mike Grady&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| 09:42:00 | 2013-01-20 |\r\n| The Forbidden City - | Charles River Editor | Colin Fluxman&nbsp; &nbsp; &nbsp; &nbsp; | 01:13:00 | 2017-02-27 |\r\n| Foundation - The Fou | Isaac Asimov&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| William Hope&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| 08:56:00 | 2019-09-26 |\r\n| Children of the Mind | Orson Scott Card&nbsp; &nbsp; &nbsp;| Gabrielle de Cuir, J | 13:30:00 | 2004-08-04 |\r\n| Shahnameh - The Epic | Ferdowsi&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| Marc Thompson, Franc | 12:01:00 | 2017-12-22 |\r\n| The Cuckoo\'s Egg - T | Cliff Stoll&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | Will Damron&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | 12:46:00 | 2020-01-31 |\r\n| We the Living&nbsp; &nbsp; &nbsp; &nbsp; | Ayn Rand&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| Mary Woods&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| 18:01:00 | 2007-12-24 |\r\n| The Clock Mirage - O | Joseph Mazur&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| Keith Sellon-Wright&nbsp; | 08:52:00 | 2020-05-19 |\r\n| The Psychology of In | Leron Zinatullin&nbsp; &nbsp; &nbsp;| Peter Silverleaf&nbsp; &nbsp; &nbsp;| 02:12:00 | 2018-11-27 |\r\n| On Psychology - Illu | JZ Murdock&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| JZ Murdock&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| 01:49:00 | 2018-07-02 |\r\n| GCHQ - Centenary Edi | Richard Aldrich&nbsp; &nbsp; &nbsp; | Peter Noble&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | 25:48:00 | 2019-07-11 |\r\n| Project Hail Mary&nbsp; &nbsp; | Andy Weir&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | Ray Porter&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| 16:10:00 | 2021-05-04 |\r\n| Sid Meier\'s Memoir!&nbsp; | Sid Meier, Jennifer&nbsp; | Charles Constant&nbsp; &nbsp; &nbsp;| 08:32:00 | 2020-11-10 |\r\n| Docker in Action&nbsp; &nbsp; &nbsp;| Jeff Nickoloff&nbsp; &nbsp; &nbsp; &nbsp;| Aiden Humphreys&nbsp; &nbsp; &nbsp; | 10:12:00 | 2018-11-08 |\r\n| Cryptonomicon&nbsp; &nbsp; &nbsp; &nbsp; | Neal Stephenson&nbsp; &nbsp; &nbsp; | William Dufris&nbsp; &nbsp; &nbsp; &nbsp;| 42:44:00 | 2020-08-08 |\r\n| The Testament of Mar | Colm Tóibín&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | Meryl Streep&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| 03:06:00 | 2014-05-01 |\r\n| Anathem&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | Neal Stephenson&nbsp; &nbsp; &nbsp; | Oliver Wyman, Tavia&nbsp; | 32:25:00 | 2020-08-08 |\r\n| The Stranger in the&nbsp; | Michael Finkel&nbsp; &nbsp; &nbsp; &nbsp;| John Chancer&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| 06:08:00 | 2018-09-27 |\r\n| Xenos - Eisenhorn: W | Dan Abnett&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| Toby Longworth&nbsp; &nbsp; &nbsp; &nbsp;| 09:55:00 | 2017-09-27 |\r\n| Have Space Suit - Wi | Robert A. Heinlein&nbsp; &nbsp;| Mark Turetsky&nbsp; &nbsp; &nbsp; &nbsp; | 08:53:00 | 2014-02-11 |\r\n| Malleus - Eisenhorn: | Dan Abnett&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| Toby Longworth&nbsp; &nbsp; &nbsp; &nbsp;| 10:19:00 | 2017-09-27 |\r\n| Klara and the Sun&nbsp; &nbsp; | Kazuo Ishiguro&nbsp; &nbsp; &nbsp; &nbsp;| Sura Siu&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| 10:16:00 | 2021-03-02 |\r\n| Hereticus - Eisenhor | Dan Abnett&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| Toby Longworth&nbsp; &nbsp; &nbsp; &nbsp;| 09:48:00 | 2017-09-27 |\r\n| Ravenor - Warhammer&nbsp; | Dan Abnett&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| Toby Longworth&nbsp; &nbsp; &nbsp; &nbsp;| 11:50:00 | 2018-03-27 |\r\n| Sun and Steel&nbsp; &nbsp; &nbsp; &nbsp; | Yukio Mishima&nbsp; &nbsp; &nbsp; &nbsp; | Matthew Taylor&nbsp; &nbsp; &nbsp; &nbsp;| 02:36:00 | 2021-04-12 |\r\n| The Silver Ships - T | S. H. Jucha&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | Grover Gardner&nbsp; &nbsp; &nbsp; &nbsp;| 10:27:00 | 2015-06-30 |\r\n| Globe - Life in Shak | Catharine Arnold&nbsp; &nbsp; &nbsp;| Clare Staniforth&nbsp; &nbsp; &nbsp;| 09:22:00 | 2021-11-30 |\r\n| The Buried Giant&nbsp; &nbsp; &nbsp;| Kazuo Ishiguro&nbsp; &nbsp; &nbsp; &nbsp;| David Horovitch&nbsp; &nbsp; &nbsp; | 11:48:00 | 2015-03-03 |\r\n| Damned&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| Chuck Palahniuk&nbsp; &nbsp; &nbsp; | Sophie Amoss&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| 07:42:00 | 2021-10-12 |\r\n| Fallen Dragon&nbsp; &nbsp; &nbsp; &nbsp; | Peter F. Hamilton&nbsp; &nbsp; | John Lee&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| 26:30:00 | 2016-11-17 |\r\n| Escalation - Frontie | Ryk Brown&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | Jeffrey Kafer&nbsp; &nbsp; &nbsp; &nbsp; | 07:15:00 | 2020-02-11 |\r\n| The Revenant&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| Michael Punke&nbsp; &nbsp; &nbsp; &nbsp; | Jeff Harding&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| 09:54:00 | 2015-05-07 |\r\n| Rescue - Frontiers S | Ryk Brown&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | Jeffrey Kafer&nbsp; &nbsp; &nbsp; &nbsp; | 08:00:00 | 2016-12-06 |\r\n| Resurrection - Front | Ryk Brown&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | Jeffrey Kafer&nbsp; &nbsp; &nbsp; &nbsp; | 08:26:00 | 2017-04-18 |\r\n| Titus Groan - Gormen | Mervyn Peake&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| Saul Reichlin&nbsp; &nbsp; &nbsp; &nbsp; | 21:39:00 | 2014-06-19 |\r\n| Rebellion - Frontier | Ryk Brown&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | Jeffrey Kafer&nbsp; &nbsp; &nbsp; &nbsp; | 08:16:00 | 2017-08-01 |\r\n| The Edgar Allan Poe&nbsp; | Edgar Allan Poe&nbsp; &nbsp; &nbsp; | Jonathan Keeble, Pet | 59:59:00 | 2022-02-04 |\r\n| Ravenor Returned - W | Dan Abnett&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| Toby Longworth&nbsp; &nbsp; &nbsp; &nbsp;| 10:56:00 | 2018-03-27 |\r\n| Not Forever, but for | Chuck Palahniuk&nbsp; &nbsp; &nbsp; | Raphael Corkhill&nbsp; &nbsp; &nbsp;| 08:37:00 | 2023-09-05 |\r\n| Gormenghast&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | Mervyn Peake&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| Saul Reichlin&nbsp; &nbsp; &nbsp; &nbsp; | 22:56:00 | 2014-06-19 |\r\n| British Woodland - H | Ray Mears&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | Ray Mears&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | 09:22:00 | 2023-05-04 |\r\n| A Canticle for Leibo | Walter M. Miller Jr. | Tom Weiner&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| 10:55:00 | 2011-08-01 |\r\n| Weaving the Web - Th | Tim Berners-Lee&nbsp; &nbsp; &nbsp; | Tim Berners-Lee&nbsp; &nbsp; &nbsp; | 03:29:00 | 1999-12-16 |\r\n| Balance - Frontiers&nbsp; | Ryk Brown&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | Jeffrey Kafer&nbsp; &nbsp; &nbsp; &nbsp; | 10:53:00 | 2017-08-30 |\r\n| The Plum in the Gold | David Tod Roy - tran | George Backman&nbsp; &nbsp; &nbsp; &nbsp;| 17:35:00 | 2014-04-18 |\r\n| Stranger in a Strang | Robert A. Heinlein&nbsp; &nbsp;| Martin McDougall&nbsp; &nbsp; &nbsp;| 23:33:00 | 2012-12-06 |\r\n| Ravenor Rogue - Warh | Dan Abnett&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| Toby Longworth&nbsp; &nbsp; &nbsp; &nbsp;| 12:30:00 | 2018-01-31 |\r\n| Freakonomics - A Rog | Steven D. Levitt, St | Stephen J. Dubner&nbsp; &nbsp; | 07:50:00 | 2005-07-27 |\r\n| The Pragmatic Progra | David Thomas, Andrew | Anna Katarina&nbsp; &nbsp; &nbsp; &nbsp; | 09:55:00 | 2019-12-26 |\r\n| I\'m Starting to Worr | Jason Pargin&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| Ari Fliakos&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | 12:44:00 | 2024-09-24 |\r\n| Birdsong&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| Sebastian Faulks&nbsp; &nbsp; &nbsp;| Harry Lloyd, Pippa B | 15:49:00 | 2023-06-15 |\r\n| The Luzhin Defense&nbsp; &nbsp;| Vladimir Nabokov&nbsp; &nbsp; &nbsp;| Mel Foster&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| 08:37:00 | 2010-12-20 |\r\n| The Three-Body Probl | Cixin Liu, Ken Liu&nbsp; &nbsp;| Daniel York Loh&nbsp; &nbsp; &nbsp; | 14:46:00 | 2023-02-23 |\r\n</pre>\n\n\n',403,0,1,'CC-BY-SA','audiobooks, literature, fiction, non-fiction',0,0,1),
(4526,'2025-12-08','Baofeng and SDR++',573,'Lee tries transmitting and recording on VHF and UHF','\n<p>\n<a href=\"hpr4526_image_1.png\">\n<img src=\"hpr4526_image_1_tn.png\">\n</a>\n</p>\n<p>\n<br>\n</p>\n<p>\n<a href=\"hpr4526_image_2.png\">\n<img src=\"hpr4526_image_2_tn.png\">\n</a>\n</p>\n<p>\n<br>\n</p>\n<p>\n<a href=\"hpr4526_image_3.png\">\n<img src=\"hpr4526_image_3_tn.png\">\n</a>\n</p>\n<p>\n<br>\n</p>\n<p>\nGoal: send a voice signal on VHF or UHF,  receive and record  with SDR via RTL dongle</p>\n<p>\n<br>\n</p>\n<p>\n<u>\nCore Problem and Resolution</u>\n</p>\n<p>\n<br>\n</p>\n<p>\nAn issue may have been a <strong>\nhardware I/Q Imbalance</strong>\n&nbsp;in the RTL-SDR, which suppressed the desired signal, resulting in very low output volume that required excessive manual amplification.</p>\n<p>\n<br>\n</p>\n<ul>\n<li>\n<strong>\nInitial Problem:</strong>\n&nbsp;Very quiet, barely audible recorded audio, initially on UHF 433 MHz</li>\n<li>\n<strong>\nKey Discovery:</strong>\n&nbsp;An&nbsp;<strong>\nI/Q imbalance</strong>\n&nbsp;caused a repeating signal \"image\" in the spectrum,</li>\n<li>\n<strong>\nFrequency Change:</strong>\n&nbsp;Switched to the&nbsp;<strong>\nVHF 145.500 Mhz</strong>\n&nbsp;band, </li>\n<li>\n<strong>\nGain Override: </strong>\nTo overcome the defect and the failing AGC, gain stages were manually adjusted:</li>\n<li>\n<strong>\nSquelch:</strong>\n&nbsp;<strong>\nSquelch (SQL) was set to OFF (0)</strong>\n&nbsp;to prevent the software from muting the quiet, legitimate signal.</li>\n<li>\n<strong>\nAdjusted the final Sound Output/Recording Gain</strong>\n&nbsp;on the host OS to match the maximized digital output, achieving audible voice.</li>\n</ul>\n<p>\n<br>\n</p>\n<p>\n<u>\nSummary of Key Radio and Software Settings</u>\n</p>\n<p>\n<br>\n</p>\n<p>\n<strong>\nTransmitting Radio (Baofeng UV-5R):</strong>\n</p>\n<ul>\n<li>\nOperation: Simplex (direct radio-to-SDR).</li>\n<li>\nMode: Narrowband FM (NFM).</li>\n</ul>\n<p>\n<br>\n</p>\n<p>\n<strong>\nReceiving Software (SDR++):</strong>\n</p>\n<ul>\n<li>\n<strong>\nAGC:</strong>\n&nbsp;Disabled (Crucial override).</li>\n<li>\n<strong>\nRF/Tuner Gain:</strong>\n&nbsp;Adjust (Inject best signal power).</li>\n<li>\n<strong>\nAF Gain:</strong>\n&nbsp;Adjust (Produce loudest digital audio).</li>\n<li>\n<strong>\nSquelch (SQL):</strong>\n&nbsp;OFF (0) (Prevent muting of quiet signal).</li>\n<li>\n<strong>\nFilter Bandwidth:</strong>\n&nbsp;12.5 kHz(Correct setting for NFM).</li>\n</ul>\n<p>\n<br>\n</p>\n<p>\nThe ultimate resolution was forcing input and output gain in SDR++  and volume adjustment in Audacity</p>\n\n\n',403,43,0,'CC-BY-SA','sdr, amateur radio, uhf, vhf, fm',0,0,1),
(4504,'2025-11-06','YouTube Subscriptions 2025 #7',1008,'Part seven of my list of subscribed channels','<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n\n    <meta http-equiv=\"content-type\" content=\"text/html; charset=UTF-8\">\n    <meta charset=\"utf-8\">\n  </head>\n  <body>\n    <p>\n      I am subscribed to a number of YouTube channels, and I am sharing\n      them with you.</p>\n    <h3>\n      Links:</h3>\n    <ul>\n      <li>\n        <a href=\"https://www.youtube.com/@isaacarthurSFIA\" rel=\"noopener\n          noreferrer\" target=\"_blank\">\n          https://www.youtube.com/@isaacarthurSFIA</a>\n      </li>\n      <li>\n        <a href=\"https://www.youtube.com/@lordtopcat\" rel=\"noopener\n          noreferrer\" target=\"_blank\">\n          https://www.youtube.com/@lordtopcat</a>\n      </li>\n      <li>\n        <a href=\"https://www.youtube.com/@peevmania\" rel=\"noopener\n          noreferrer\" target=\"_blank\">\n          https://www.youtube.com/@peevmania</a>\n      </li>\n      <li>\n        <a href=\"https://www.youtube.com/@jenniebreeden\" rel=\"noopener\n          noreferrer\" target=\"_blank\">\n          https://www.youtube.com/@jenniebreeden</a>\n      </li>\n      <li>\n        <a href=\"https://www.youtube.com/@Joe_Brennan_\" rel=\"noopener\n          noreferrer\" target=\"_blank\">\n          https://www.youtube.com/@Joe_Brennan_</a>\n      </li>\n      <li>\n        <a href=\"https://www.youtube.com/@acousticeidolon\" rel=\"noopener\n          noreferrer\" target=\"_blank\">\n          https://www.youtube.com/@acousticeidolon</a>\n      </li>\n      <li>\n        <a href=\"https://www.youtube.com/@jonathabrooke\" rel=\"noopener\n          noreferrer\" target=\"_blank\">\n          https://www.youtube.com/@jonathabrooke</a>\n      </li>\n      <li>\n        <a href=\"https://www.youtube.com/@JoshSnares\" rel=\"noopener\n          noreferrer\" target=\"_blank\">\n          https://www.youtube.com/@JoshSnares</a>\n      </li>\n      <li>\n        <a href=\"https://www.youtube.com/@JumboPixel\" rel=\"noopener\n          noreferrer\" target=\"_blank\">\n          https://www.youtube.com/@JumboPixel</a>\n      </li>\n      <li>\n        <a href=\"https://www.youtube.com/@KaraandNate\" rel=\"noopener\n          noreferrer\" target=\"_blank\">\n          https://www.youtube.com/@KaraandNate</a>\n      </li>\n      <li>\n        <a href=\"https://www.youtube.com/@katetectonics\" rel=\"noopener\n          noreferrer\" target=\"_blank\">\n          https://www.youtube.com/@katetectonics</a>\n      </li>\n      <li>\n        <a href=\"https://www.youtube.com/@kenmichaelsradio748\"\n          rel=\"noopener noreferrer\" target=\"_blank\">\n          https://www.youtube.com/@kenmichaelsradio748</a>\n      </li>\n      <li>\n        <a href=\"https://www.youtube.com/@KevinStratvert\" rel=\"noopener\n          noreferrer\" target=\"_blank\">\n          https://www.youtube.com/@KevinStratvert</a>\n      </li>\n      <li>\n        <a href=\"https://www.youtube.com/@KyleJones\" rel=\"noopener\n          noreferrer\" target=\"_blank\">\n          https://www.youtube.com/@KyleJones</a>\n      </li>\n      <li>\n        <a href=\"https://www.youtube.com/@LaLidoLoca\" rel=\"noopener\n          noreferrer\" target=\"_blank\">\n          https://www.youtube.com/@LaLidoLoca</a>\n      </li>\n      <li>\n        <a href=\"https://www.youtube.com/@LakeStreetDive\" rel=\"noopener\n          noreferrer\" target=\"_blank\">\n          https://www.youtube.com/@LakeStreetDive</a>\n      </li>\n      <li>\n        <a href=\"https://www.youtube.com/@LarkinPoe\" rel=\"noopener\n          noreferrer\" target=\"_blank\">\n          https://www.youtube.com/@LarkinPoe</a>\n      </li>\n      <li>\n        <a href=\"https://www.palain.com/\" rel=\"noopener noreferrer\"\n          target=\"_blank\">\n          https://www.palain.com/</a>\n      </li>\n    </ul>\n    <p>\n      <br>\n    </p>\n  </body>\n</html>',198,106,0,'CC-BY-SA','YouTube, Channels, Subscriptions',0,0,1),
(4506,'2025-11-10','The UCSD P-System Operating System',1252,'This episode is about the UCSD p-System operating system. ','\n<p>\n01 Overview</p>\n<p>\nThis episode is about the UCSD p-System operating system.&nbsp;</p>\n<p>\nUCSD p-System is an operating system from the late 1970s which carried on into the 1980s.&nbsp;</p>\n<p>\nIt ran on a variety of different micro and mini computers.&nbsp;</p>\n<p>\nThe notable thing about it is that it ran programs on a portable virtual machine rather than directly on the native hardware.</p>\n<p>\nThis podcast episode overview will give a very brief overview of the operating system, its features, and its history.</p>\n<p>\nThis episode is for people who are interested in some of the more obscure history of the early microcomputer era. Don\'t expect to find something here that you can put to use in a practical way.</p>\n<p>\n<br>\n</p>\n<p>\n02 Pascal and UCSD</p>\n<p>\n03 Commercialization</p>\n<p>\n04 UCSD p-System Versions</p>\n<p>\n05 Hosted Versions</p>\n<p>\n06 Basic Concepts</p>\n<p>\n07 File System</p>\n<p>\n08 Virtual Memory and Multitasking</p>\n<p>\n09 Architecture Independence with P-Code</p>\n<p>\n10 Programming languages</p>\n<p>\n11 The Fading Away of the p-System and its Demise</p>\n<p>\n12 A Quick Tour of the p-System - Running it on Modern Hardware</p>\n<p>\n13 A Quick Tour of the p-System - the User Interface</p>\n<p>\n14 A Quick Tour of the p-System - OS Level Menu</p>\n<p>\n15 A Quick Tour of the p-System - ASE Editor</p>\n<p>\n16 A Quick Tour of the p-System - Filer</p>\n<p>\n17 A Quick Tour of the p-System - Xecute</p>\n<p>\n18 A Quick Tour of the p-System - DOS Filer</p>\n<p>\n<br>\n</p>\n<p>\n19 Conclusion</p>\n<p>\nThe UCSD p-System is an example of an operating system from the early days of microcomputers that did not follow the conventions that we are used to today.</p>\n<p>\nIt had features that were in many ways ahead of its time.</p>\n<p>\nHere are some examples of this.</p>\n<p>\nIt was almost entirely written in a high level language, Pascal.</p>\n<p>\nPrograms compiled to p-code (or Pascal code) that ran on an architecture indepedent virtual machine.</p>\n<p>\nPerformance critical parts of the p-code could be compiled to native code.</p>\n<p>\nThe user interface did not use a command line, indeed there was none. Instead it used a menu driven user interface.</p>\n<p>\nOn the other hand it remained stuck on 8 bit limitations in a 16 bit world.&nbsp;</p>\n<p>\nIt was closed source proprietary product, and when the vendor lost interest, the product died.</p>\n<p>\nIt\'s an interesting bit of history, but I can\'t really recommend that anyone should expect to do anything useful with it today.&nbsp;</p>\n<p>\nI still have a copy that I bought when it was a current product, but it has been many years since I even looked at it, and I only resusitated it for the sake of making an HPR episode.&nbsp;</p>\n<p>\n<br>\n</p>\n<p>\n20 Adendum - Performance Benchmarks</p>\n<p>\n<br>\n</p>\n<p>\n<br>\n</p>\n\n\n',455,0,0,'CC-BY-SA','OS,UCSD',0,0,1),
(4507,'2025-11-11','What\'s in the bag ?',1001,'Ken describes in detail what his daily carry is.','\n<h1>\nDaily Carry</h1>\n<p>\n<a href=\"https://www.enrico-benetti.com/catalog/item/47081\" rel=\"noopener noreferrer\" target=\"_blank\">\nEnrico Benetti Cornell rugzak laptop 15 inch</a>\n</p>\n<p>\n<br>\n</p>\n<p>\n<a href=\"hpr4507_image_1.jpeg\">\n<img src=\"hpr4507_image_1_tn.jpeg\" alt=\"\">\n</a>\n</p>\n<p>\n<br>\n</p>\n<p>\n<a href=\"https://www.dell.com/en-us/shop/dell-laptops/precision-3571-workstation/spd/precision-15-3571-laptop\" rel=\"noopener noreferrer\" target=\"_blank\">\nDell Precision 3571</a>\n</p>\n<p>\n<br>\n</p>\n<pre class=\"ql-syntax\" spellcheck=\"false\">\nOS: Fedora 42 Adams\r\nKernel: x86_64 Linux 6.17.7-200.fc42.x86_64\r\nShell: bash 5.2.37\r\nResolution: 5760x2160\r\nWM: OpenBox\r\nDisk: 1,7T / 1,9T (91%)\r\nCPU: 12th Gen Intel Core i7-12800H @ 19x 4.7GHz [57.0°C]\r\nGPU: Mesa Intel(R) Iris(R) Xe Graphics (ADL GT2)\r\nRAM: 12022MiB / 31765MiB\r\n</pre>\n<p>\n<br>\n</p>\n<p>\n<a href=\"hpr4507_image_2.jpeg\">\n<img src=\"hpr4507_image_2_tn.jpeg\" alt=\"\">\n</a>\n</p>\n<p>\n<br>\n</p>\n<p>\n<a href=\"https://x-plus.store/products/piccolo-8-tiny-laptop\" rel=\"noopener noreferrer\" target=\"_blank\">\npiccolo by x+ n100</a>\n</p>\n<p>\n<br>\n</p>\n<pre class=\"ql-syntax\" spellcheck=\"false\">\nOS: SparkyLinux 7.8 orion-belt\r\nKernel: x86_64 Linux 6.1.0-40-amd64\r\nShell: bash 5.2.15\r\nDisk: 845G / 907G (99%)\r\nCPU: Intel N100 @ 4x 3.4GHz [53.0°C]\r\nGPU: Intel Corporation Alder Lake-N [UHD Graphics]\r\nRAM: 1594MiB / 15737MiB\r\n</pre>\n<p>\n<br>\n</p>\n<p>\n<a href=\"hpr4507_image_3.jpeg\">\n<img src=\"hpr4507_image_3_tn.jpeg\" alt=\"\">\n</a>\n</p>\n<p>\n<br>\n</p>\n<p>\n<a href=\"https://en.wikipedia.org/wiki/Pixel_6a\" rel=\"noopener noreferrer\" target=\"_blank\">\nGoogle Pixel 6a</a>\nrunning <a href=\"https://calyxos.org/news/2025/08/01/a-letter-to-our-community/\" rel=\"noopener noreferrer\" target=\"_blank\">\nCalyxOS</a>\n</p>\n<p>\n<br>\n</p>\n<pre class=\"ql-syntax\" spellcheck=\"false\">\nMemory 6 GB RAM\r\nStorage 128 GB\r\n</pre>\n<p>\n<a href=\"https://en.wikipedia.org/wiki/IPhone_12\" rel=\"noopener noreferrer\" target=\"_blank\">\niPhone 12</a>\n</p>\n<p>\n<br>\n</p>\n<pre class=\"ql-syntax\" spellcheck=\"false\">\nMemory 4 GB\r\nStorage 128\r\n</pre>\n<p>\n<a href=\"https://www.jabra.com/business/office-headsets/jabra-evolve/jabra-evolve2-65\" rel=\"noopener noreferrer\" target=\"_blank\">\nJabra Evolve2 65 headset</a>\n</p>\n<p>\n<a href=\"https://freshnrebel.com/twins-blaze/3tw2200pp/\" rel=\"noopener noreferrer\" target=\"_blank\">\nFresh\'n Rebel Twins Blaze ear buds</a>\n</p>\n<p>\n<br>\n</p>\n<h2>\nWork</h2>\n<ul>\n<li>\n<a href=\"https://en.wikipedia.org/wiki/Set-top_box\" rel=\"noopener noreferrer\" target=\"_blank\">\nSTB HDMI USB Micro</a>\n</li>\n<li>\nAC/DC Adapter <a href=\"https://en.wikipedia.org/wiki/Ethernet_over_USB\" rel=\"noopener noreferrer\" target=\"_blank\">\nEthernet over USB</a>\n</li>\n<li>\n<a href=\"https://en.wikipedia.org/wiki/Remote_control\" rel=\"noopener noreferrer\" target=\"_blank\">\nRemote Control</a>\n</li>\n<li>\n<a href=\"https://en.wikipedia.org/wiki/HDMI#Cables\" rel=\"noopener noreferrer\" target=\"_blank\">\nHDMI Cable</a>\n</li>\n<li>\n<a href=\"https://en.wikipedia.org/wiki/Category_6_cable\" rel=\"noopener noreferrer\" target=\"_blank\">\nNetwork Cable</a>\n</li>\n<li>\n<a href=\"https://www.amazon.de/dp/B0B7DSPPNX\" rel=\"noopener noreferrer\" target=\"_blank\">\nUSB HDMI Capture Card</a>\n</li>\n<li>\n<a href=\"https://www.dell.com/en-us/shop/dell-wired-mouse-ms116-black/apd/275-bbcb/pc-accessories\" rel=\"noopener noreferrer\" target=\"_blank\">\nDell Mouse</a>\n</li>\n<li>\n<a href=\"https://www.trust.com/en/product/24947-halyx-4-port-usb-32-gen1-hub\" rel=\"noopener noreferrer\" target=\"_blank\">\nTrust Halyx 4 Port USB 3.2 Gen1 Hub</a>\n</li>\n<li>\n<a href=\"https://www.amazon.com/AmazonBasics-Gigabit-Ethernet-Adapter-10-Pack/dp/B07228H174\" rel=\"noopener noreferrer\" target=\"_blank\">\nAmazon Basic USB Network Adapter</a>\n</li>\n</ul>\n<h2>\nVarious Adapters</h2>\n<ul>\n<li>\n<a href=\"https://www.hema.nl/vrije-tijd-kantoor/school-kantoor/elektronica/oplaadkabels/4-in-1-usb-laadkabel-usb-c-micro-usb-en-8-pin-39630063.html\" rel=\"noopener noreferrer\" target=\"_blank\">\nHema 4-in-1 USB laadkabel, USB-C, micro USB &amp; Lightning</a>\n</li>\n<li>\nAC/DC Adapter with PD and QC3.0</li>\n<li>\n64G USB C+A disk</li>\n<li>\n<a href=\"https://www.amazon.de/dp/B0B8PBDZS9\" rel=\"noopener noreferrer\" target=\"_blank\">\nUSB Adapter Set A, Micro, C</a>\n</li>\n</ul>\n<h2>\n<a href=\"hpr4507_image_4.jpeg\">\n<img src=\"hpr4507_image_4_tn.jpeg\" alt=\"\">\n</a>\n</h2>\n<h2>\n<br>\n</h2>\n<h2>\nVarious Personal Items</h2>\n<ul>\n<li>\n<a href=\"https://www.amazon.nl/-/en/Aluminium-Holder-Colours-Credit-Original/dp/B0D2RN8Q56\" rel=\"noopener noreferrer\" target=\"_blank\">\nSECRID 5 Card Aluminium Wallet</a>\n</li>\n<li class=\"ql-indent-1\">\n<a href=\"https://nl.wikipedia.org/wiki/Betaalkaart\" rel=\"noopener noreferrer\" target=\"_blank\">\nBank Card</a>\n</li>\n<li class=\"ql-indent-1\">\n<a href=\"https://www.ireland.ie/en/dfa/passports/passport-card/\" rel=\"noopener noreferrer\" target=\"_blank\">\nPassport</a>\n</li>\n<li class=\"ql-indent-1\">\nCredit Card</li>\n<li class=\"ql-indent-1\">\n<a href=\"https://www.rdi.nl/onderwerpen/radiozendamateurs/registreren-als-radiozendamateur\" rel=\"noopener noreferrer\" target=\"_blank\">\nHam Radio License</a>\n</li>\n<li class=\"ql-indent-1\">\n<a href=\"https://en.wikipedia.org/wiki/European_driving_licence\" rel=\"noopener noreferrer\" target=\"_blank\">\nDriving License</a>\n</li>\n<li class=\"ql-indent-1\">\n<a href=\"https://en.wikipedia.org/wiki/OV-chipkaart\" rel=\"noopener noreferrer\" target=\"_blank\">\nPublic Transport Card</a>\n</li>\n<li>\n<a href=\"https://www.onespan.com/resources/digipass-772/datasheet\" rel=\"noopener noreferrer\" target=\"_blank\">\nBank Authentication</a>\n</li>\n<li>\n<a href=\"https://www.meesterslijpers.nl/en/dopper-water-bottle-pacific-blue-bpa-free\" rel=\"noopener noreferrer\" target=\"_blank\">\nDopper Water Bottle Pacific Blue</a>\n</li>\n<li>\nLunchbox</li>\n<li>\n<a href=\"https://www.mepal.com/nl/multikom-cirqula-rond-2250-ml-nordic-sage-106216094700\" rel=\"noopener noreferrer\" target=\"_blank\">\nMepal Cirqula multikom rond 350 ml - Nordic sage</a>\n</li>\n<li>\n<a href=\"https://www.mepal.com/nl/multikom-cirqula-rond-350-ml-nordic-sage-106204094700\" rel=\"noopener noreferrer\" target=\"_blank\">\nMepal Cirqula multikom rond 350 ml - Nordic sage</a>\n</li>\n<li>\n<a href=\"https://www.ah.nl/producten/product/wi136148/ah-diepvrieszakjes-met-zipsluiting-middel\" rel=\"noopener noreferrer\" target=\"_blank\">\nDeep Freeze Zip lock Bag</a>\n</li>\n<li>\nNotebook</li>\n<li>\n<a href=\"https://www.stabilo.com/com/products/writing/gel-pens/stabilo-pointvisco/\" rel=\"noopener noreferrer\" target=\"_blank\">\nstabilo pointVisco fine 0.5 pen</a>\n</li>\n<li>\nHPR Business Cards</li>\n<li>\n<a href=\"https://en.wikipedia.org/wiki/Rooibos\" rel=\"noopener noreferrer\" target=\"_blank\">\nRooibos Tea</a>\n</li>\n<li>\nTissues</li>\n<li>\nBack Medication</li>\n<li>\nClip On Shades</li>\n<li>\n<a href=\"https://en.wikipedia.org/wiki/Paracetamol\" rel=\"noopener noreferrer\" target=\"_blank\">\nParacetamol</a>\n</li>\n<li>\n<a href=\"https://odorex.com/marine-fresh/\" rel=\"noopener noreferrer\" target=\"_blank\">\nDeodorant</a>\n</li>\n<li>\nPlasters</li>\n<li>\n<a href=\"https://www.jordanoralcare.com/products/3-in-1-flosser/\" rel=\"noopener noreferrer\" target=\"_blank\">\nJordan 3-in-1 Flosser</a>\n</li>\n<li>\n<a href=\"https://en.wikipedia.org/wiki/Spork\" rel=\"noopener noreferrer\" target=\"_blank\">\nSpork</a>\n</li>\n</ul>\n<p>\n<br>\n</p>\n\n\n',30,23,0,'CC-BY-SA','daily carry, laptop bag, mobile',0,0,1),
(4508,'2025-11-12','YouTube Subscriptions 2025 #8',959,'Ahuka shares part eight of his list of subscribed channels','\n<p>\nI am subscribed to a number of YouTube channels, and I am sharing them with you.</p>\n<p>\n<br>\n</p>\n<h3>\nLinks:</h3>\n<ul>\n<li>\n<a href=\"https://www.youtube.com/@leventdunordband\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.youtube.com/@leventdunordband</a>\n</li>\n<li>\n<a href=\"https://www.youtube.com/@spanishpod101\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.youtube.com/@spanishpod101</a>\n</li>\n<li>\n<a href=\"https://www.youtube.com/@lindseystirling\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.youtube.com/@lindseystirling</a>\n</li>\n<li>\n<a href=\"https://www.youtube.com/@louisslegall\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.youtube.com/@louisslegall</a>\n</li>\n<li>\n<a href=\"https://www.youtube.com/@lucinoxOfficial\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.youtube.com/@lucinoxOfficial</a>\n</li>\n<li>\n<a href=\"https://www.youtube.com/@LydianLabelOnline\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.youtube.com/@LydianLabelOnline</a>\n</li>\n<li>\n<a href=\"https://www.youtube.com/@ManyATrueNerd\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.youtube.com/@ManyATrueNerd</a>\n</li>\n<li>\n<a href=\"https://www.youtube.com/@MeanMrMayo\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.youtube.com/@MeanMrMayo</a>\n</li>\n<li>\n<a href=\"https://www.youtube.com/@MeidasTouch\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.youtube.com/@MeidasTouch</a>\n</li>\n<li>\n<a href=\"https://www.youtube.com/@MentalFloss\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.youtube.com/@MentalFloss</a>\n</li>\n<li>\n<a href=\"https://www.youtube.com/@MetaTrek\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.youtube.com/@MetaTrek</a>\n</li>\n<li>\n<a href=\"https://www.youtube.com/@michiganirishmusicfestival4263\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.youtube.com/@michiganirishmusicfestival4263</a>\n</li>\n<li>\n<a href=\"https://www.youtube.com/@MinuteEarth\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.youtube.com/@MinuteEarth</a>\n</li>\n<li>\n<a href=\"https://www.youtube.com/@MinutePhysics\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.youtube.com/@MinutePhysics</a>\n</li>\n<li>\n<a href=\"https://www.youtube.com/@mohinidey5945\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.youtube.com/@mohinidey5945</a>\n</li>\n<li>\n<a href=\"https://www.youtube.com/@MonaLisaTwins\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.youtube.com/@MonaLisaTwins</a>\n</li>\n<li>\n<a href=\"https://www.youtube.com/@MontyPython\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.youtube.com/@MontyPython</a>\n</li>\n<li>\n<a href=\"https://www.youtube.com/@moreperfectunion\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.youtube.com/@moreperfectunion</a>\n</li>\n<li>\n<a href=\"https://www.youtube.com/@MrTARDIS\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.youtube.com/@MrTARDIS</a>\n</li>\n<li>\n<a href=\"https://www.palain.com/\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://www.palain.com/</a>\n</li>\n</ul>\n<p>\n<br>\n</p>\n\n\n',198,106,0,'CC-BY-SA','YouTube, Channels, Subscriptions',0,0,1),
(4509,'2025-11-13','HPR Beer Garden 5 - Heferweisen',2080,'Dave and Paul talk about Heferweisen','\n<p>\nAs Kevie is down with the cold, Dave is joined by Paul to talk about Heferweisen beer. Paul shares his experience from Germany and they review. Paul samples <a href=\"https://erdinger.de/en-UK/beers/dark-beer\" rel=\"noopener noreferrer\" target=\"_blank\">\nErdinger Dunkel</a>\nwhilst Dave tries out <a href=\"https://www.schoefferhofer.com/wheat-beer-mix/\" rel=\"noopener noreferrer\" target=\"_blank\">\nSchöfferhofer Grapefruit</a>\n.</p>\n<p>\n<a href=\"hpr4509_image_1.png\">\n<img src=\"hpr4509_image_1_tn.png\">\n</a>\n</p>\n<p>\nConnect with the guys on Untappd:</p>\n<p>\n<br>\n</p>\n<ul>\n<li>\n<a href=\"https://untappd.com/user/thelovebug\" rel=\"noopener noreferrer\" target=\"_blank\">\nDave</a>\n</li>\n<li>\n<a href=\"https://untappd.com/user/gorenia\" rel=\"noopener noreferrer\" target=\"_blank\">\nPaul</a>\n</li>\n<li>\n<a href=\"https://untappd.com/user/kevie49\" rel=\"noopener noreferrer\" target=\"_blank\">\nKevie</a>\n</li>\n</ul>\n<p>\n<br>\n</p>\n<p>\nThe intro sounds for the show are used from:</p>\n<p>\n<br>\n</p>\n<ul>\n<li>\n<a href=\"https://freesound.org/people/mixtus/sounds/329806/\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://freesound.org/people/mixtus/sounds/329806/</a>\n</li>\n<li>\n<a href=\"https://freesound.org/people/j1987/sounds/123003/\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://freesound.org/people/j1987/sounds/123003/</a>\n</li>\n<li>\n<a href=\"https://freesound.org/people/greatsoundstube/sounds/628437/\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://freesound.org/people/greatsoundstube/sounds/628437/</a>\n</li>\n</ul>\n<p>\n<br>\n</p>\n\n\n',296,14,0,'CC-BY-SA','beer, beergarden',0,0,1),
(4515,'2025-11-21','Privacy? I don\'t have anything to hide...',172,'Archer72 implements some tips from a Youtube author','\n<p>\nHello, this is your host, Archer72 for Hacker Public Radio</p>\n\r\n<p>\nIn this episode, what do you have to hide?</p>\n\r\n<p>\nThis topic was brought to my attention when I came across this video\r\nfrom <a href=\"https://www.youtube.com/@TheHatedOne\">\nThe Hated\r\nOne</a>\n.</p>\n\r\n<p>\nThis youtube host is extremely privacy focused, and has interesting\r\nopinions on not only US privacy and security topics, but also\r\ninternationally.</p>\n\r\n<p>\nThis particular video was regarding <a\r\nhref=\"https://www.youtube.com/watch?v=tQhWdsFMc24\">\nlocking down the\r\nsettings on Firefox.</a>\n</p>\n\r\n<p>\nThe claim besides increasing security is to lower bandwidth and\r\nmemory usage and double rendering speeds.</p>\n\r\n<p>\nWhile a lot of these steps the author took seemed excessive, they\r\nmight help you. I use a few of these settings as a takeaway to this\r\nvideo, as well as an extension that I find very useful.</p>\n\r\n<p>\nThe author is correct in saying that our browsing habits track a lot\r\nabout your personal life, so here are a few steps that I did follow.</p>\n\r\n<p>\nFirst, I selected <code>\nStrict Blocking</code>\n under\r\n<code>\nContent Blocking</code>\n</p>\n\r\n<pre>\n<code>\nabout:preferences#privacy</code>\n</pre>\n\r\n\r\n<p>\n<a href=\"Strict blocking.png\" title=\"Strict blocking Firefox setting\">\nStrict blocking Firefox setting</a>\n</p>\n\r\n\r\n<p>\nNext, I did not set my history settings to\r\n<code>\nUse custom settings for History</code>\n and\r\n<code>\nAlways use private browsing mode</code>\n, this is maybe useful for\r\nsome.</p>\n\r\n<p>\nUnder <code>\nAddress Bar</code>\n I left everything unchecked, besides\r\n<code>\nSearch Engines</code>\n</p>\n\r\n\r\n<p>\n<a href=\"Address-bar.png\" title=\"Firefox address bar settings\">\nFirefox address bar settings</a>\n</p>\n\r\n\r\n<p>\nNext, check the box in Ublock origin settings enable Advance User\r\nsettings to enable more granular control.</p>\n\r\n\r\n<p>\n<a href=\"Settings.png\" title=\"Ublock Origin settings\">\nUblock Origin settings</a>\n</p>\n\r\n\r\n<p>\n<a href=\"Granular control.png\" title=\"Ublock Origin granular control\">\nUblock Origin granular control</a>\n</p>\n\r\n\r\n<p>\nNow, change the default behavior of Ublock origin to</p>\n\r\n<ul>\n\r\n<li>\nBlock media elements</li>\n\r\n<li>\nBlock remote fonts</li>\n\r\n<li>\nDisable JavaScript</li>\n\r\n</ul>\n\r\n<p>\nBy checking the boxes for these items</p>\n\r\n<ul>\n\r\n<li>\n<a href=\"transcript.html\" title=\"Transcript: How to configure Firefox settings for maximum privacy and security\">\nTranscript: How to configure Firefox settings for maximum privacy and security</a>\n</li>\n </ul>\n\r\n\n\n',318,74,0,'CC-BY-SA','Privacy, Security, Script blocking, Content blocking',0,0,1),
(4512,'2025-11-18','HomeAssistant - Nmap (\"Network Mapper\")',2214,'Presence detection in Home Assistant and more','\n<p>\n<strong>\nA Deeper Look</strong>\n</p>\n<p>\n<br>\n</p>\n<p>\nTriggers &amp; Conditions: </p>\n<p>\nThe blueprint uses both a state change from not_home to home for your PC tracker and a motion sensor activation. A numeric state condition ensures that the automation only runs when ambient lighting (from your illuminance sensor) is below the defined threshold (default 37 lux). This minimizes unnecessary operations when the area is already well lit.</p>\n<p>\n<br>\n</p>\n<p>\nLight Brightness Based on Sun: </p>\n<p>\nUsing the built-in sun condition, the automation distinguishes between a day period (starting 30 minutes after sunrise) and a night period (adjusted using offset around sunset). This means your light’s brightness is automatically tailored to the natural light context, setting it to the day brightness (default 81%) or to the night brightness (default 69%).</p>\n<p>\n<br>\n</p>\n<p>\nHandling PC Presence &amp; Motion: </p>\n<p>\nTwo branches further refine the control:</p>\n<p>\nIf the PC is not_home, the blueprint waits until motion ceases before turning off the light.</p>\n<p>\nIf the PC is home and ambient light remains low, the light is ensured to remain on until the PC changes to not_home, at which point the light turns off with a smooth transition and a flash effect.</p>\n<p>\n<br>\n</p>\n<p>\nThis&nbsp;<a href=\"about:blank\" rel=\"noopener noreferrer\" target=\"_blank\" style=\"color: rgb(65, 131, 196);\">\ndesign</a>\n&nbsp;is ideal for scenarios where a PC’s presence and environmental conditions are combined to manage indoor illumination dynamically.</p>\n<p>\n<br>\n</p>\n<p>\nXiaomi Aqara motion sensor RTCGQ11LM&nbsp;<a href=\"http://www.zigbee2mqtt.io/devices/RTCGQ11LM.html\" rel=\"noopener noreferrer\" target=\"_blank\" style=\"color: rgb(65, 131, 196);\">\nwww.zigbee2mqtt.io/devices/RTCGQ11LM.html</a>\n</p>\n<p>\nTRADFRI bulb E27 white opal 1000lm</p>\n<p>\nXiaomi Mijia Thermo-/Hygrometer&nbsp;<a href=\"about:blank\" rel=\"noopener noreferrer\" target=\"_blank\" style=\"color: rgb(65, 131, 196);\">\nBluetooth</a>\n&nbsp;LYWSD03MMC flash&nbsp;<a href=\"http://pvvx.github.io/ATC%5C_MiThermometer\" rel=\"noopener noreferrer\" target=\"_blank\" style=\"color: rgb(65, 131, 196);\">\nhttp://pvvx.github.io/ATC\\_MiThermometer</a>\n</p>\n<p>\n<br>\n</p>\n<p>\nBlueprint&nbsp;<a href=\"https://gist.github.com/tido-/e486e7504081a1cfdcd837afba43ebf4\" rel=\"noopener noreferrer\" target=\"_blank\" style=\"color: rgb(65, 131, 196);\">\nhttps://gist.github.com/tido-/e486e7504081a1cfdcd837afba43ebf4</a>\n</p>\n<p>\n<br>\n</p>\n<p>\nMy forum post&nbsp;<a href=\"https://community.home-assistant.io/t/nmap-to-detect-running-tower-pc/888689\" rel=\"noopener noreferrer\" target=\"_blank\" style=\"color: rgb(65, 131, 196);\">\nhttps://community.home-assistant.io/t/nmap-to-detect-running-tower-pc/888689</a>\n</p>\n<p>\n<br>\n</p>\n<p>\n<strong>\nRadiation of radio transmission</strong>\n</p>\n<p>\nHeart rate using the WiFi signal&nbsp;<a href=\"https://hackaday.com/2025/09/05/heart-rate-monitoring-via-wifi/\" rel=\"noopener noreferrer\" target=\"_blank\" style=\"color: rgb(65, 131, 196);\">\nhttps://hackaday.com/2025/09/05/heart-rate-monitoring-via-wifi/</a>\n</p>\n<p>\n<a href=\"http://www.consumerreports.org/radiation/do-i-need-to-worry-about-radiation-from-wifi-and-bluetooth-devices/\" rel=\"noopener noreferrer\" target=\"_blank\" style=\"color: rgb(65, 131, 196);\">\nwww.consumerreports.org/radiation/do-i-need-to-worry-about-radiation-from-wifi-and-bluetooth-devices/</a>\n</p>\n<p>\n<a href=\"http://www.elektrosmog.com/\" rel=\"noopener noreferrer\" target=\"_blank\" style=\"color: rgb(65, 131, 196);\">\nwww.elektrosmog.com</a>\n</p>\n<p>\n<a href=\"http://www.gigaherz.ch/\" rel=\"noopener noreferrer\" target=\"_blank\" style=\"color: rgb(65, 131, 196);\">\nwww.gigaherz.ch</a>\n</p>\n\n\n',421,0,0,'CC-BY-SA','HASS, HomeAssistant, Presence, NMAP, Blueprint',0,0,1),
(4513,'2025-11-19','Living the Tux Life Episode 2 - Ventoy',737,'Al discusses using Linux as a daily driver. In this episode, I talked about Ventoy and Linux Mint','\n    <h1 id=\"living-the-tux-life-episode-2-show-notes\">Living the Tux\n      Life Episode 2 Show notes</h1>\n    <p>Things i mention in the show</p>\n    <ul>\n      <li>\n        <p><a href=\"https://www.ventoy.net/\">Ventoy</a> </p>\n      </li>\n      <li>\n        <p><a\n            href=\"https://code.christman.uk/Linux/setting-up-hibernation-linux-mint\">Setting\n            up Hibernation in Linux Mint</a></p>\n      </li>\n      <li>\n        <p><a href=\"https://code.christman.uk/Linux/sleep-mode-linux\">Sleep\n            Modes in Linux</a></p>\n      </li>\n      <li>\n        <p><a href=\"https://guake.github.io/\">Guake Termainl</a></p>\n      </li>\n      <li>\n        <p><a href=\"https://github.com/diodon-dev/diodon\">Diodon</a></p>\n      </li>\n    </ul>',290,0,0,'CC-BY-SA','linux',0,0,1),
(4514,'2025-11-20','YouTube Subscriptions 2025 #9',1052,'Ahuka shares part nine of his list of subscribed channels','\n    <p>\n      I am subscribed to a number of YouTube channels, and I am sharing\n      them with you.</p>\n    <h3>\n      Links:</h3>\n    <ul>\n      <li>\n        <a href=\"https://www.youtube.com/@NASA360\" rel=\"noopener\n          noreferrer\" target=\"_blank\">\n          https://www.youtube.com/@NASA360</a>\n      </li>\n      <li>\n        <a href=\"https://www.youtube.com/@NASAedge\" rel=\"noopener\n          noreferrer\" target=\"_blank\">\n          https://www.youtube.com/@NASAedge</a>\n      </li>\n      <li>\n        <a href=\"https://www.youtube.com/@NASAGoddard\" rel=\"noopener\n          noreferrer\" target=\"_blank\">\n          https://www.youtube.com/@NASAGoddard</a>\n      </li>\n      <li>\n        <a href=\"https://www.youtube.com/@NASAJPL\" rel=\"noopener\n          noreferrer\" target=\"_blank\">\n          https://www.youtube.com/@NASAJPL</a>\n      </li>\n      <li>\n        <a href=\"https://www.youtube.com/@ReelNASA\" rel=\"noopener\n          noreferrer\" target=\"_blank\">\n          https://www.youtube.com/@ReelNASA</a>\n      </li>\n      <li>\n        <a href=\"https://www.youtube.com/@NASAXrocks\" rel=\"noopener\n          noreferrer\" target=\"_blank\">\n          https://www.youtube.com/@NASAXrocks</a>\n      </li>\n      <li>\n        <a href=\"https://www.youtube.com/@NatureVideoChannel\"\n          rel=\"noopener noreferrer\" target=\"_blank\">\n          https://www.youtube.com/@NatureVideoChannel</a>\n      </li>\n      <li>\n        <a href=\"https://www.youtube.com/@NixiePixel\" rel=\"noopener\n          noreferrer\" target=\"_blank\">\n          https://www.youtube.com/@NixiePixel</a>\n      </li>\n      <li>\n        <a href=\"https://www.youtube.com/@Normul8or\" rel=\"noopener\n          noreferrer\" target=\"_blank\">\n          https://www.youtube.com/@Normul8or</a>\n      </li>\n      <li>\n        <a href=\"https://www.youtube.com/@norwegiancruiseline\"\n          rel=\"noopener noreferrer\" target=\"_blank\">\n          https://www.youtube.com/@norwegiancruiseline</a>\n      </li>\n      <li>\n        <a href=\"https://www.youtube.com/@NotesinSpanishofficial\"\n          rel=\"noopener noreferrer\" target=\"_blank\">\n          https://www.youtube.com/@NotesinSpanishofficial</a>\n      </li>\n      <li>\n        <a href=\"https://www.youtube.com/@ObjectivityVideos\"\n          rel=\"noopener noreferrer\" target=\"_blank\">\n          https://www.youtube.com/@ObjectivityVideos</a>\n      </li>\n      <li>\n        <a href=\"https://www.youtube.com/@OLFConference\" rel=\"noopener\n          noreferrer\" target=\"_blank\">\n          https://www.youtube.com/@OLFConference</a>\n      </li>\n      <li>\n        <a href=\"https://www.youtube.com/@ourfakehistory2211\"\n          rel=\"noopener noreferrer\" target=\"_blank\">\n          https://www.youtube.com/@ourfakehistory2211</a>\n      </li>\n      <li>\n        <a href=\"https://www.palain.com/\" rel=\"noopener noreferrer\"\n          target=\"_blank\">\n          https://www.palain.com/</a>\n      </li>\n    </ul>\n    <p>\n      <br>\n    </p>',198,0,0,'CC-BY-SA','YouTube, Channels, Subscriptions',0,0,1),
(4516,'2025-11-24','Browser User Agent',295,'A web site did not work for me. The User Agent has an important role.','\n    <p>\n      A while ago I visited a web site that is an archive for old\n      historical documents. It is a data base from where documents can\n      be downloaded as pdf-files. As a visitor I can login to the\n      archive as a guest.&nbsp;</p>\n    <p>\n      When I find a document of interest after search I can right click\n      on the pdf icon and download the document.&nbsp;</p>\n    <p>\n      But I can not. No download when I click on the pdf icon. This is\n      the first time I visit this archive so I do not know exactly how\n      it works.&nbsp;</p>\n    <p>\n      It was time to investigate the root cause.</p>\n    <p>\n      I use Firefox on a Linux machine. I tested several methods to see\n      if any would solve the issue. I tried by changing settings for\n      pop-ups. I changed Firefox security settings. I disabled VPN. I\n      disabled Firefox extensions for blocking trackers.&nbsp;</p>\n    <p>\n      I tested also the Chromium browser as well as the Epiphany\n      browser.&nbsp;</p>\n    <p>\n      All those methods resulted in no difference; nothing\n      happened.&nbsp;</p>\n    <p>\n      I was in contact to a friend on Windows and also staff at the\n      Archive, both telling me that from Windows it worked, including\n      with Firefox. So now I knew the archive works and that it works on\n      Firefox.</p>\n    <p>\n      So I thought, can this somehow be related to Linux?&nbsp;</p>\n    <p>\n      I asked in a Linux forum if someone on Linux could test to\n      download.&nbsp;</p>\n    <p>\n      One person in the forum tested and solved the problem. I would not\n      define it as a Linux problem, but a site design that affected\n      Linux users.&nbsp;</p>\n    <p>\n      The trouble was something I had not thought of: The User\n      Agent.&nbsp;</p>\n    <p>\n      When my browser contact a web site, my browser can tell the site\n      what kind of browser I use, which operating system I use and more.\n      This information can be used by the site to optimize the\n      presentation of the content for me.&nbsp;</p>\n    <p>\n      For to me unknown reason, maybe a mistake, maybe related to some\n      old design compatibility issue, this site did not accept the\n      information my user agent provided.&nbsp;</p>\n    <p>\n      The solution is to tell the web site I am something else.&nbsp;</p>\n    <p>\n      In the browser has Developer tools. When opening the developer\n      tools from meny, typically a developer window with tools and\n      analytics is opened at the bottom part of the web page. One tool\n      is network. Within network I can simulate how the site looks on\n      different devices, with different network connections and also\n      with different User Agents.&nbsp;</p>\n    <p>\n      The tools are similar in both Firefox and Chromium. The exact list\n      of standard options differ and Chromium has more options\n      preloaded.</p>\n    <p>\n      In this specific case, when I in Developer tools on Firefox change\n      User Agent to Chrome Desktop, which relates to Chrome on Windows\n      as I understand, and then reload the web page I can now download\n      the pdf file from the archive.&nbsp;</p>\n    <p>\n      When this web site interpret me to be this other type of user,\n      they can understand each other without any issue.&nbsp;</p>\n    <p>\n      I have reported back to the site owner and hopefully this specific\n      site will not need this work around for the browser User Agent in\n      the future.</p>',429,0,0,'CC-BY-SA','browser, user agent, internet',0,0,1),
(4518,'2025-11-26','Cosy News Corner for Week 46 - Your source for Open Source news',1167,'This week’s open-source roundup.','<p>\nWe just found out that <a href=\"https://hackerpublicradio.org/correspondents/0382.html\">Daniel Persson</a> has his own YouTube Channel.\n</p>\n<p>\nHe\'s currently doing a series called \"Cosy News Corner - Your source for Open Source news\", and we\'re posting the audio of one sample episode here.\n</p>\n<p>\nThe link to the video is <a href=\"https://www.youtube.com/watch?v=5zZCa2neliA\">https://www.youtube.com/watch?v=5zZCa2neliA</a>\n</p>\n<p>\nThe channel url is <a href=\"https://www.youtube.com/channel/UCnG-TN23lswO6QbvWhMtxpA\">https://www.youtube.com/channel/UCnG-TN23lswO6QbvWhMtxpA</a> and you can add the channel to your rss reader opml using the following line.\n</p>\n\n<code>\n&lt;outline text=&quot;Daniel Persson&quot; title=&quot;Daniel Persson&quot; type=&quot;rss&quot; xmlUrl=&quot;https://www.youtube.com/feeds/videos.xml?channel_id=UCnG-TN23lswO6QbvWhMtxpA&quot;/&gt;\n</code>\n\n<p>\nThe link to the RSS for the Cozy News Corner podcast is <a href=\"https://www.youtube.com/feeds/videos.xml?playlist_id=PLP2v7zU48xOIq-TXWuBrhGKNJCyZkblMZ\">https://www.youtube.com/feeds/videos.xml?playlist_id=PLP2v7zU48xOIq-TXWuBrhGKNJCyZkblMZ</a>\n</p>\n\n<h3 id=\"title-debian-mandates-rust-for-apt-reshaping-ubuntu-and-other-linux-distros\">Title: Debian Mandates Rust for APT, Reshaping Ubuntu and Other Linux Distros</h3>\n<p>By: Steven J. Vaughan-Nichols - TheNewstack</p>\n<p><a href=\"https://thenewstack.io/debian-mandates-rust-for-apt-reshaping-ubuntu-and-other-linux-distros/\">https://thenewstack.io/debian-mandates-rust-for-apt-reshaping-ubuntu-and-other-linux-distros/</a></p>\n<p>The Complexity of Simplicity</p>\n<p>Keynote given at TalosCon by Oxide Co-Founder and CTO Bryan Cantrill in Amsterdam on October 17, 2025.</p>\n<p>&quot;He went into Rust pretty skeptical honestly and it came back realizing that there were so many things that he viewed to be essential complexity that were actually accidental complexity.&quot;</p>\n<p>If you have not learned Rust and you are unfamiliar with the most important thing about Rust to someone who&#39;s new to Rust is the way it handles errors, right?</p>\n<p><a href=\"https://www.youtube.com/watch?v=Cum5uN2634o\">https://www.youtube.com/watch?v=Cum5uN2634o</a></p>\n<h3 id=\"title-ubuntu-s-rust-transition-hits-another-bump-as-sudo-rs-security-vulnerabilities-show-up\">Title: Ubuntu&#39;s Rust Transition Hits Another Bump as sudo-rs Security Vulnerabilities Show Up</h3>\n<p>By: Sourav Rudra - It&#39;s FOSS</p>\n<p><a href=\"https://itsfoss.com/news/sudo-rs-issue-ubuntu/\">https://itsfoss.com/news/sudo-rs-issue-ubuntu/</a></p>\n<h3 id=\"title-snapchat-open-sources-cross-platform-ui-framework\">Title: Snapchat Open Sources Cross-Platform UI Framework</h3>\n<p>By Loraine Lawson - TheNewstack</p>\n<p><a href=\"https://thenewstack.io/snapchat-open-sources-cross-platform-ui-framework/\">https://thenewstack.io/snapchat-open-sources-cross-platform-ui-framework/</a></p>\n<p><a href=\"https://github.com/Snapchat/Valdi\">https://github.com/Snapchat/Valdi</a></p>\n<h3 id=\"title-solo-io-open-sources-agentregistry-with-support-for-agent-skills\">Title: # Solo.io Open Sources Agentregistry, With Support for Agent Skills</h3>\n<p>By: Heather Joslyn - TheNewstack</p>\n<p><a href=\"https://thenewstack.io/solo-io-open-sources-agentregistry-with-support-for-agent-skills/\">https://thenewstack.io/solo-io-open-sources-agentregistry-with-support-for-agent-skills/</a></p>\n<h3 id=\"title-ffmpeg-calls-google-s-ai-bug-reports-cve-slop-\">Title: FFmpeg Calls Google&#39;s AI Bug Reports &quot;CVE Slop&quot;</h3>\n<p>By: Sourav Rudra - It&#39;s FOSS</p>\n<p>By: Steven J. Vaughan-Nichols - TheNewstack</p>\n<p><a href=\"https://itsfoss.com/news/ffmpeg-google-fiasco/\">https://itsfoss.com/news/ffmpeg-google-fiasco/</a></p>\n<p><a href=\"https://daniel.haxx.se/\">https://daniel.haxx.se/</a></p>\n<h3 id=\"title-ubuntu-s-new-15-year-commitment-targets-long-lived-enterprise-systems\">Title: Ubuntu&#39;s New 15-Year Commitment Targets Long-Lived Enterprise Systems</h3>\n<p>By: Sourav Rudra - It&#39;s FOSS</p>\n<p><a href=\"https://itsfoss.com/news/ubuntu-15-year-support-commitment/\">https://itsfoss.com/news/ubuntu-15-year-support-commitment/</a></p>\n<h3 id=\"title-mozilla-unveils-plans-for-new-ai-window-browsing-mode-in-firefox-opens-signups\">Title: Mozilla Unveils Plans for New &#39;AI Window&#39; Browsing Mode in Firefox, Opens Signups</h3>\n<p>By: Sourav Rudra - It&#39;s FOSS</p>\n<p>By: Ajit Varma - Distilled</p>\n<p><a href=\"https://itsfoss.com/news/mozilla-ai-window-plans/\">https://itsfoss.com/news/mozilla-ai-window-plans/</a></p>\n<p><a href=\"https://blog.mozilla.org/en/firefox/ai-window/\">https://blog.mozilla.org/en/firefox/ai-window/</a></p>\n<p><a href=\"https://www.firefox.com/en-US/ai/\">https://www.firefox.com/en-US/ai/</a></p>\n<h3 id=\"title-nitrux-5-0-0-released-a-new-beginning-that-s-not-for-everyone-by-design-\">Title: Nitrux 5.0.0 Released: A &#39;New Beginning&#39; That&#39;s Not for Everyone (By Design)</h3>\n<p>By: Sourav Rudra - It&#39;s FOSS</p>\n<p><a href=\"https://itsfoss.com/news/nitrux-5-release/\">https://itsfoss.com/news/nitrux-5-release/</a></p>\n<p><a href=\"https://nxos.org/\">https://nxos.org/</a></p>\n<h3 id=\"title-you-can-play-classic-d3d7-games-on-linux-with-this-new-project-but-don-t-expect-perfection\">Title: You Can Play Classic D3D7 Games on Linux With This New Project, But Don’t Expect Perfection</h3>\n<p>By: Sourav Rudra - It&#39;s FOSS</p>\n<p><a href=\"https://itsfoss.com/news/play-d3d7-games-on-linux/\">https://itsfoss.com/news/play-d3d7-games-on-linux/</a></p>\n<p><a href=\"https://github.com/WinterSnowfall/d7vk\">https://github.com/WinterSnowfall/d7vk</a></p>\n',382,75,0,'CC-BY-SA','OpenSource,Firefox,Linux,Wine,FFMpeg',0,0,1),
(4525,'2025-12-05','Using mail merge in thunderbird',493,'Use thunderbird to send out multiple emails based on a csv file','\n<p>\nAs the new year show is upon us, Ken needs a way to send out some mail messages to fellow <a href=\"https://freeculturepodcasts.org/\" rel=\"noopener noreferrer\" target=\"_blank\">\nFree Culture Podcasters</a>\n.</p>\n<p>\n<br>\n</p>\n<p>\nRather than just putting every one on the bcc, a more personal mail list can be done using the <a href=\"https://services.addons.thunderbird.net/en-US/thunderbird/addon/mail-merge/\" rel=\"noopener noreferrer\" target=\"_blank\">\nThunderbird Mail Merge</a>\nadd on.</p>\n<p>\n<br>\n</p>\n<h3>\nInstall</h3>\n<p>\nDownload it, and then open Thunderbird, select \"Tools\", \"Add-ons and Themes\".</p>\n<p>\nThen press the Cog icon ⚙, and select \"Install Add-on From File...\", </p>\n<p>\nFinally select the downloaded file and confirm.</p>\n<p>\n<br>\n</p>\n<h3>\nCreating the CSV</h3>\n<p>\nTo use it create a list of emails with a heading, \"PrimaryEmail\" in our example.</p>\n<p>\n<br>\n</p>\n<pre class=\"ql-syntax\" spellcheck=\"false\">\n$ cat maillist2025.csv\r\nPrimaryEmail\r\njblogg@example.com\r\nmissing@example.nl\r\njanvanduck@example.nl\r\n</pre>\n<p>\n<br>\n</p>\n<p>\nUsing Mail Merge</p>\n<p>\n<br>\n</p>\n<p>\nJust add each column field to the address boxes, or the body of your message, surrounded by double <a href=\"https://en.wikipedia.org/wiki/Bracket#Curly_brackets\" rel=\"noopener noreferrer\" target=\"_blank\">\ncurly brackets</a>\n.</p>\n<p>\nIn our case we add \"{{PrimaryEmail}}\", in the to field.</p>\n<p>\n<br>\n</p>\n<p>\n<a href=\"hpr4525_image_1.png\">\n<img src=\"hpr4525_image_1_tn.png\" alt=\"\">\n</a>\n</p>\n<p>\n<br>\n</p>\n<p>\nThen press the new \"Mail Merge\" button in the top right. </p>\n<p>\nSelect \"CSV\" and select the file you prepared before.</p>\n<p>\nIf you are sending now, then you can put in a random delay, so that when you press send there will be a delay between each of the mails been sent.</p>\n<p>\nIf you select the default send later, then after pressing send the mails will be placed in the outbox so you can send them later.</p>\n<p>\n<br>\n</p>\n<p>\n<br>\n</p>\n<h3>\nLinks</h3>\n<ul>\n<li>\n<a href=\"https://freeculturepodcasts.org/\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://freeculturepodcasts.org/</a>\n</li>\n<li>\n<a href=\"https://services.addons.thunderbird.net/en-US/thunderbird/addon/mail-merge/\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://services.addons.thunderbird.net/en-US/thunderbird/addon/mail-merge/</a>\n</li>\n<li>\nCog icon provided by <a href=\"https://glyph-party.wimpys.world/\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://glyph-party.wimpys.world/</a>\nfrom <a href=\"https://linuxmatters.sh/67/\" rel=\"noopener noreferrer\" target=\"_blank\">\nhttps://linuxmatters.sh/67/</a>\n</li>\n</ul>\n<p>\n<br>\n</p>\n\n\n',30,0,0,'CC-BY-SA','Mail List,Mail Merge,Thunderbird',0,0,1),
(4550,'2026-01-09','Playing Civilization V, Part 7',888,'We continue our look at the game mechanics of Civilization V.','<p>In our next look at the game mechanics for Civilization V we examine the topic of Science and how to win a Science victory. This is something that has been in Civilization from the very beginning, but in Civilization V there are some changes worth addressing.</p>\n<h3 id=\"playing-civilization-v-part-7\">Playing Civilization V, Part 7</h3>\n<p>Science</p>\n<p>In most respects this is not all that different in Civ 5. Most of the techs are the same, there is a tech tree that is pretty similar, and you need to keep up in Science for any victory condition you are seeking. You may want to just beat your enemies into submission, but if you are using Chariots while they have Tanks, you aren’t going to have success. But also it is obvious that if you are going for a Science victory, you need to really focus on this. So many of these tips should be followed for any victory condition, but should be mandatory if you are going for a Science victory. The mechanics of researching technologies is that you have to accumulate a certain amount of Science to discover a new technology, but this amount goes up over time, so you have be continuously looking to increase your output of Science to keep up. for instance, one of your first Techs would be Pottery, which has a cost of 35 Science. But in your Capital city you get 3 Science from your Palace, and let’s say you have a population of 2, so you are generating 5 Science per turn. That means you will research Pottery in 7 turns. But the Education tech costs 485 Science, Astronomy costs 780, Scientific Theory costs 1650, Plastics 4700, and Particle Physics 6000. These are all key techs to advance your Science to a Science Victory. So you can see that you need to be continually increasing your Science.</p>\n<p>To start with, Population=Science. You get one Science for every one point of population. That does not, however, mean that you need to have a lot of cities to get there. 4-5 well developed cities are quite sufficient, and adding more cities can cause Unhappiness problems. Since higher population itself can cause Unhappiness there is no good reason to add to the problem.\nBuildings</p>\n<p>The next boost you can give to Science is by building city improvements. The first, which comes early in the game, is the Library, which is available once you research Writing. A Library boosts the Science output of a city by one Science for every two citizens (roughly a 50% boost, rounded down), so building those early pays off. Because advancing through the tech tree is a process of accumulating Science, the earlier you can get these boosts the better. The other population-based boost is the Public School (available when you research Scientific Theory), which also boosts Science by one for every two citizens, and also offers a Specialist slot for a Science Specialist. And since more population means more Science, the Granary (available when you research Pottery) is a good building because it helps to grow your population.</p>\n<p>There is one other building worth mentioning which is the Observatory (available when you discover Astronomy). It doesn’t depend on population, but on location. You have to have a city that is located directly next to a Mountain to build this, but it adds 50% to the Science output of the city. Mountains are otherwise useless (unless you are the Incas), but if you want a Science boost and happen to see good location (the ideal spot is an isolated mountain that is not part of a mountain range so you don’t lose farming and mining production) this can be great boost.\nScientist Specialists</p>\n<p>You can at a certain point take some of your citizens out of the farming and mining and turn them into Specialists, but you have to have a slot for them, and those slots come in buildings as well. We’ve already mentioned Public Schools providing one slot. Universities (available when you discover Education) provide 2 slots, as well as boosting the city output of Science by 33%. The other Science building, which comes late in the game, is the Research Lab (available when you discover Plastics) which adds another Specialist slot, plus 4 Science, and then adds 50% to the Science Output of the city. It comes too late to help much in most of the Tech Tree, but is essential to research the Space techs, which are very expensive.\nWonders</p>\n<p>The first one to try for is the Great Library. It gives you a free Library in the city, +3 Science per turn, and a free tech. Use the free tech to get an expensive tech like Philosophy. Oracle provides 1 Great Person Point per turn towards a Great Scientist. Hanging Gardens provides +6 Food per turn (boosting your population), and a free Garden which boosts your Great Person Points by 25%. Leaning Tower of Pisa increases your Great Person Points by 25% in all cities, plus a free Great Person of your choice when you build it. Porcelain Tower gives you +50% from Research Agreements, plus a free Great Scientist. and Hubble Space Telescope provides two Great Scientists, a free Spaceship Factory in the city where it was built, and +25% production for spaceship parts.</p>\n<p>All of the above are World Wonders, which means you are in competition with other players to build them, and only one player can be successful in each case, so you won’t get them all. You can sometimes rush a World Wonder by “chopping”, i.e. using your workers to cut down Forests for added production, but you need to have high production cities to build Wonders in general. There is one National Wonder to focus on, though, the National College. Every player can build their own version of any National Wonder. The National College can be built only when you have a Library in every one of your cities. Your strategy should be to build it as soon as possible, so don’t build more than 3-4 cities before you get to this. It gives you +3 Science, plus an increase of 50% in the Science output of the city you build it in.\nGreat Scientists</p>\n<p>As you work on your Science you will accumulate Great Person Points towards getting a Great Scientist. Some wonder produce Great Person Points, and all of your Science Specialists produce Great Person Points as well. As these add up you will suddenly see a Great Scientist appear. In the early game, the best thing to do is use this Great Scientist to build an Academy. Move the GS to any tile within your city and create the Academy there. It will yield at least +8 Science, bu there are also modifiers that can add to that. The alternative which is better later in the game is to use the Great Scientist to get a free Tech discovery. The reason is that early in the game that +8 Science is very significant, and it can accumulate over time. Combine that with things like an Observatory and a University that increase the city output and it can add up nicely over time. But by perhaps the Medieval Era, and certainly the Renaissance Era, you start running out of time for that accumulation. Meanwhile, the techs have gotten so expensive that a free Tech is the better option.\nResearch Agreements</p>\n<p>These become available once you research Education. You have to have a Declaration of Friendship with the other player to create one. You each put a certain amount of gold into the pot to fund the research, and after a period of time (usually 30 turns) you each get an amount of Science from it. The way it is calculated is based on the partner that produced the least amount of Science during the agreement. From a science standpoint if you are ahead in Science it probably won’t benefit you to enter into the agreement. But it does build your relationship with the other player so I wouldn’t avoid them altogether. If you are behind in Science it can help you, of course.\nPolicies and Ideologies</p>\n<p>Given that you should probably be building tall (4-5 cities) instead of wide (8-12 cities), it makes sense to start out with Tradition instead of Liberty. But once you get to the Renaissance you will want to enable the Rationalism tree to maximize your Science. When you get to Ideologies, you have a choice to make. Ignore Autocracy as that is not a Science-oriented choice. If you have 3-5 cities, Freedom is the best Ideology because Specialists require less food (Civil Society), and have reduced Unhappiness (Universal Suffrage). With a wide strategy (more than 5 cities) Order starts to look better. Getting Worker’s Faculties will give +25% Science from every Factory.\nExploration and Techs</p>\n<p>Exploration is generally a good idea for a variety of reasons, but one to focus on here is the effect of meeting other players. In the first place, if you find other players who have researched techs you do not yet have, you can trade for them. You do this whenever possible. Remember, the other players will all be trading with each other anyway, so if you don’t participate you will simply fall behind. If you have a nice tech and can trade it to just two other players, you will jump up two techs along the tech tree, and that can be huge. If you hold onto it as a secret, some other player will research it, and they will trade it and get that boost instead. So trade whenever you can. Another advantage is that when you discover that another player has a tech you don’t have yet, your cost to research it goes down.\nTrade</p>\n<p>This is the next Science boost we will cover. when you set up a trade route with either another player or a City-State, one of the benefits can be an increase to your Science. The main benefit of trade routes is money, at least the way I play, so I will always start by looking for the best addition to my Treasury, but if I can choose between equivalent monetary rewards but one trade route offers more Science I might prefer that if I am going for a Science victory.\nChoosing an Empire</p>\n<p>There are many Empires you can play, and some of them are oriented to a Science victory. The two obvious choices are Babylon and Korea. Babylon gets a free Great Scientist when you discover Writing, which is very early, so you should use it to put down an Academy. And it earns Great Scientists 50% faster. Korea’s advantage comes from +2 Science from all specialists and from all Great Person tile improvements, plus you get a tech boost each time a Science building or wonder is built in the Capital. Of course, you can win a Science victory with any Empire if you are careful about leveraging your Empire’s strengths. For example, Venice and Portugal can rake in the gold in huge amounts, and you can buy a lot of stuff that way. Or with the Celts you generate a ton of Faith, and that can be used to buy buildings and Great Scientists with the right Social Policies.\nConclusion</p>\n<p>This is just a quick overview of the Science path, and there is always more to learn. If you really want to dive into the Science options and get a Science Victory, the Civilization Fanatics site has a pretty good strategy guide at <a href=\"https://forums.civfanatics.com/threads/science-victory-guide-any-difficulty.530940/\">https://forums.civfanatics.com/threads/science-victory-guide-any-difficulty.530940/</a>.</p>\n<h3 id=\"links-\">Links:</h3>\n<ul>\n<li><a href=\"https://forums.civfanatics.com/threads/science-victory-guide-any-difficulty.530940/\">https://forums.civfanatics.com/threads/science-victory-guide-any-difficulty.530940/</a></li>\n<li><a href=\"https://www.palain.com/gaming/civilization-v/playing-civilization-v-part-7/\">https://www.palain.com/gaming/civilization-v/playing-civilization-v-part-7/</a></li>\n</ul>\n',198,122,0,'CC-BY-SA','mputer games, strategy games, Civilization V, Science',0,0,1),
(4560,'2026-01-23','Arthur C. Clarke: Other Works, Part 2',859,'A look at some of Arthur C. Clarke\'s other works.','\n<p>This brings us to a look at some of Arthur C. Clarke&#39;s other stories, A Time Odyssey (1951), Tales From the White Hart (1957), The Nine Billion Names of God (1954), The Star (1955), Dolphin Island (1964), and A Meeting With Medusa (1971. These stories will wrap up our look at Clarke&#39;s Science Fiction and we have seen a lot of good stuff here. And as a final note, we cover CLarke&#39;s Three Laws.</p>\n<h3 id=\"arthur-c-clarke-other-works-a-time-odyssey\">Arthur C. Clarke: Other Works, A Time Odyssey</h3>\n<p>A collaboration between two of science fiction’s best authors: what could possibly go wrong? Well, something went wrong. This series is not bad, but I hesitate to describe it as good. This series was described by Clarke as neither a prequel nor a sequel, but an “orthoquel”, a name coined from “orthogonal”, which means something roughly like “at right angles”, though it is also used in statistics to denote events that are independent and do not influence each other. And in relativity theory Time is orthogonal to Space. And in multi-dimensional geometry we can talk about axes in each dimension as orthogonal to all of the others. It is something I can’t picture, being pretty much limited to three dimensions, but it can be described mathematically.</p>\n<p>It is sort of like the 2001 series, but not really. It has globes instead of monoliths. And the spheres have a circumference and volume that is related to their radius not by the usual pi, but by exactly three. Just what this means I am not sure, other than they are not sphere’s in any usual sense of the word. In this story these spheres seem to be gathering people from various eras and bringing them to some other planet which gets christened “Mir”, though not in any way to the Russian Space Station. It is a Russian word that can mean “peace”, “world”, or “village”. I have seen it used a lot to refer to a village in my studies of Russian history. Anyway, the inhabitants include two hominids, a mother and daughter, a group of British Redcoats, Mongols from the Genghis Khan era, a UN Peacekeeper helicopter, a Russian space capsule, an unknown Rudyard Kipling, the army of Alexander The Great… Well at least they have lots of characters to throw around. They end up taking sides and fighting each other. In the end several of the people are returned to Earth in their own time.</p>\n<p>But the joke is on them. The beings behind the spheres are call themselves The Firstborn because they were the first to achieve sentience. They figure that best way for them to remain safe is to wipe out any other race that achieves sentience, making them to polar opposite of the beings behind the monoliths in 2001, for whom the mind is sacred. Anyway, the Firstborn have arranged for a massive solar flare that will wipe out all life on Earth and completely sterilize the planet, but conveniently it will happen in 5 years, leaving time for plot development. Of course the people of Earth will try to protect themselves. Then in the third book of the series an ominous object enters the solar system. This is of course a callback to the Rama object. It is like they wanted to take everything from the Rama series and twist it.</p>\n<p>While I love a lot of Clarke’s work and some of Baxter’s as well, I think this is eminently skippable. The two of them also collaborated on the final White Hart story, which isn’t bad\nOther Works\nTales from the White Hart</p>\n<p>This collection of short stories has a unity of the setting, a pub called White Hart, where a character tells outrageous stories. Other characters are thinly disguised science fiction authors, including Clarke himself. Clarke mentions that he was inspired to do this by the Jorkens stories of Lord Dunsany, which are also outrageous tall tales, but lacking the science fictions aspects of Clarke’s stories. Of course this type of story has a long history, in which we would do well to mention the stories of Baron Munchausen, and of course the stories of L. Sprague de Camp and Fletcher Pratt as found in Tales from Gavagan’s Bar. And Spider Robinson would take this basic idea and turn it into a series of books about Callahan’s Place. Stories of this type are at least as much Fantasy as anything, but quite enjoyable, and I think I can recommend all of these as worth the time to while away a cold winter’s evening while sitting by a warm fire with a beverage of choice.\nThe Nine Billion Names of God</p>\n<p>This short story won a retrospective Hugo in 2004 as being the best short story of 1954. The idea is that a group of Tibetan monks believe that the purpose of the universe is to identify the nine billion names of God, and once that has been done the universe will no longer have a purpose and will cease to exist. They have been identifying candidates and writing them down, but the work is very slow, so they decide that maybe with a little automation they can speed it up. So they get a computer (and in 1954, you should be picturing a room-sized mainframe), and then hire some Western programmers to develop the program to do this. The programmers don’t believe the monks are on to anything here, but a paycheck is a paycheck. They finish the program and start it running, but decide they don’t want to be there when the monks discover their theory doesn’t work, so they take off early without telling anyone, and head down the mountain. But on the way, they see the stars go out, one by one.\nThe Star</p>\n<p>This classic short story won the Hugo for Best Short Story in 1956. The story opens with the return of an interstellar expedition that has been studying a system where the star went nova millennia ago. But the expedition’s astrophysicist, a Jesuit Priest, seems to be in a crisis of faith. And if you think it implausible that a Jesuit Priest could also be an astrophysicist, I would suggest you look into the case of the Belgian priest Georges Lemaître, who first developed the theory of the Big Bang. Anyway, in the story, they learn that this system had a planet much like Earth, and it had intelligent beings much like Earth, who were peaceful, but in a tragic turn of events they knew that their star was going to explode, but they had no capability of interstellar travel. So they created a repository on the outermost planet of the system that would survive the explosion, and left records of their civilization. And when the Jesuit astrophysicist calculated the time of the explosion and the travel time for light, he is shaken:</p>\n<p>“[O]h God, there were so many stars you could have used. What was the need to give these people to the fire, that the symbol of their passing might shine above Bethlehem?”\nDolphin Island</p>\n<p>This is a good Young Adult novel about the People of the Sea, who are dolphins. They save a young boy who had stowed away on a hovership that subsequently had crashed, and because no one knew about him he was left among the wreckage when the crew takes off in the life boats. And from here it is the typical Bildungsroman you find in most Young Adult novels. The dolphins bring him to an island, where he becomes involved with a research community led by a professor who is trying to communicate with dolphins. He learns various skills there, survives dangers, and in the end has to risk his life to save the people on the island. If you have a 13 year old in your house, this is worth looking for.\nA Meeting With Medusa</p>\n<p>This won the 1972 Nebula Award for Best Novella. It concerns one Howard Falcon, who early in the story has an accident involving a helium-filled airship, is badly injured, and requires time and prosthetics to heal. But then he promotes an expedition to Jupiter that uses similar technology, a Hot-Hydrogen balloon-supported aircraft. This is to explore the upper reaches of Jupiter’s atmosphere, which is the only feasible way to explore given the intense gravity of this giant planet. Attempting to land on the solid surface would mean being crushed by the gravity and air pressure, so that is not possible. The expedition finds there is life in the upper clouds of Jupiter. Some of it is microscopic, like a kind of “air plankton” which is bio-luminescent. But there are large creatures as well, one of which is like jellyfish, but about a mile across. This is the Medusa of the title. Another is Manta-like creature, about 100 yards across, that preys on the Medusa. But when the Medusa starts to take an interest on Falcon’s craft, he decides to get out quick for safety’s sake. And we learn that because of the various prosthetics implanted after the airship accident Falcon is really a cyborg with much faster reactions than ordinary humans.</p>\n<p>As we have discussed previously, Clarke loved the sea, and in this novella he is using what he knows in that realm to imagine a plausible ecology in the atmosphere of Jupiter. Of course when he wrote this novella no one knew about the truly frightening level of radiation around Jupiter, but then a clever science fiction writer could come up with a way to work around that.\nClarke’s Three Laws</p>\n<p>Finally, no discussion of Arthur C. Clarke can omit his famous Three Laws. Asimov had his Three Laws of Robotics, and Clarke had his Three Laws of Technology.</p>\n<pre><code>When a distinguished <span class=\"hljs-keyword\">but</span> elderly scientist states <span class=\"hljs-keyword\">that</span> something <span class=\"hljs-keyword\">is</span> possible, he <span class=\"hljs-keyword\">is</span> almost certainly right. When he states <span class=\"hljs-keyword\">that</span> something <span class=\"hljs-keyword\">is</span> impossible, he <span class=\"hljs-keyword\">is</span> very probably wrong.\nThe only way <span class=\"hljs-keyword\">of</span> discovering <span class=\"hljs-keyword\">the</span> limits <span class=\"hljs-keyword\">of</span> <span class=\"hljs-keyword\">the</span> possible <span class=\"hljs-keyword\">is</span> <span class=\"hljs-keyword\">to</span> venture a little way past them <span class=\"hljs-keyword\">into</span> <span class=\"hljs-keyword\">the</span> impossible.\nAny sufficiently advanced technology <span class=\"hljs-keyword\">is</span> indistinguishable <span class=\"hljs-keyword\">from</span> magic.\n</code></pre><p>This concludes our look at Arthur C. Clarke, the second of the Big Three of the Golden Age of Science Fiction. And that means we are ready to tackle the Dean of Science Fiction, Robert A. Heinlein.</p>\n<h2 id=\"links-\">Links:</h2>\n<ul>\n<li><a href=\"https://en.wikipedia.org/wiki/A_Time_Odyssey\">https://en.wikipedia.org/wiki/A_Time_Odyssey</a></li>\n<li><a href=\"https://en.wikipedia.org/wiki/Tales_from_the_White_Hart\">https://en.wikipedia.org/wiki/Tales_from_the_White_Hart</a></li>\n<li><a href=\"https://en.wikipedia.org/wiki/Joseph_Jorkens\">https://en.wikipedia.org/wiki/Joseph_Jorkens</a></li>\n<li><a href=\"https://en.wikipedia.org/wiki/Baron_Munchausen\">https://en.wikipedia.org/wiki/Baron_Munchausen</a></li>\n<li><a href=\"https://en.wikipedia.org/wiki/Tales_from_Gavagan%27s_Bar\">https://en.wikipedia.org/wiki/Tales_from_Gavagan%27s_Bar</a></li>\n<li><a href=\"https://en.wikipedia.org/wiki/Callahan%27s_Crosstime_Saloon\">https://en.wikipedia.org/wiki/Callahan%27s_Crosstime_Saloon</a></li>\n<li><a href=\"https://en.wikipedia.org/wiki/The_Nine_Billion_Names_of_God\">https://en.wikipedia.org/wiki/The_Nine_Billion_Names_of_God</a></li>\n<li><a href=\"https://en.wikipedia.org/wiki/The_Star_(Clarke_short_story\">https://en.wikipedia.org/wiki/The_Star_(Clarke_short_story</a>)</li>\n<li><a href=\"https://en.wikipedia.org/wiki/Dolphin_Island_(novel\">https://en.wikipedia.org/wiki/Dolphin_Island_(novel</a>)</li>\n<li><a href=\"https://en.wikipedia.org/wiki/A_Meeting_with_Medusa\">https://en.wikipedia.org/wiki/A_Meeting_with_Medusa</a></li>\n<li><a href=\"https://en.wikipedia.org/wiki/Clarke%27s_three_laws\">https://en.wikipedia.org/wiki/Clarke%27s_three_laws</a></li>\n<li><a href=\"https://www.palain.com/science-fiction/the-golden-age/arthur-c-clarke/arthur-c-clarke-other-works/\">https://www.palain.com/science-fiction/the-golden-age/arthur-c-clarke/arthur-c-clarke-other-works/</a></li>\n</ul>\n\n\n',198,124,0,'CC-BY-SA','Science fiction, Arthur C. Clarke',0,0,1),
(4570,'2026-02-06','Playing Civilization V, Part 8',735,'Computer games, strategy games, Civilization V, diplomacy, spies','\n\n  \n  <p>In our next look at the game mechanics for Civilization V we examine several related topics: Diplomacy, Spies, and Religious Pressure. They are all ways to interact with other players without the force of arms being involved. And we will discuss the Diplomatic Victory, which is a new victory type added in Civilization V and can be fun to play.</p>\n<h2 id=\"playing-civilization-v-part-8-diplomacy\">Playing Civilization V, Part 8 - Diplomacy</h2>\n<h3 id=\"other-players\">Other Players</h3>\n<p>With other players you have a relationship based on their approach to you. They are:</p>\n<ul>\n<li>Neutral – This is not Friendly nor is it Hostile. Trades you make with them will be fair from their point of view</li>\n<li>Friendly – They like you, and will accept requests from you more often. Trades will be slightly in your favor from their point of view.</li>\n<li>Afraid – This only happens if you have a a very substantial advantage in strength, so this is rare. They will readily accept requests from you, and trades will be in your favor</li>\n<li>Guarded – They are suspicious and defensive, and will be more likely to be unfriendly. Trades will be harder to achieve, and favor them rather than you.</li>\n<li>Deceptive – They will pretend to be friendly, but they are plotting against you. They may bribe other players to declare war on you. They will not accept requests for help, and trades will be hard to achieve.</li>\n<li>Hostile – They hate you, and are completely open about it. Trade deals, if you can get them, will be heavily against you.</li>\n<li>War – This means they have decided to go to war with you. But they need the right conditions, so they may pretend to be Friendly, Neutral, Guarded, or Hostile while they wait for those conditions to mature.</li>\n</ul>\n<p>These are not set in stone, as you can modify how the other player feels towards you by your actions. If you have friends in common that will improve your relationship, or if you have enemies in common. Agreeing to their requests will also improve things. But if you cannot agree, just say so. The worst negative modifier is when you agree to do something, and then do the opposite. Saying no is also negative, but not as bad. Finally, remember that negatives will erode over time if they are not reinforced. If you want a very detailed look at the mechanics and details of this, check out <a href=\"https://civ-5-cbp.fandom.com/wiki/Detailed_Guide_to_Diplomacy\">https://civ-5-cbp.fandom.com/wiki/Detailed_Guide_to_Diplomacy</a>.</p>\n<h3 id=\"city-states\">City-States</h3>\n<p>City-States are also important diplomatic partners. We’ll cover all of the benefits in a different section, but here I want to focus on how they enable the Diplomatic Victory. At a certain point the United Nations will be born out of the World Congress, and when this happens a Diplomatic Victory is possible. This will occur when any player reaches the Information Era, or whenever half of the players have reached the Atomic Era. Diplomatic Victory requires that you get the votes of a certain number of delegates to the United Nations. Each player gets delegates based on their population, and there are also some additional delegates you can earn, such as through building the World Wonder Forbidden Palace which gives you two additional delegates. Anyone planning for a Diplomatic Victory should consider building this Wonder as mandatory.</p>\n<p>But each City-State gets one delegate, and if you are allied with them their delegate is yours. The mechanics of City-State relationships is that they love gifts, and cash is always the best. So anyone planning a Diplomatic Victory would be well-advised to focus on building a large Treasury. You will know when a World Leader vote is coming up in the United Nations, and can make cash drops on any City-States that are not already allied with you before the vote. But watch out that another player doesn’t do the same thing after you and snipe away some of your allies. Also, you can place your spies in City-States to rig elections, and that is another way to get them to ally with you.</p>\n<h2 id=\"spies-and-espionage\">Spies and Espionage</h2>\n<p>Spies are simply awarded to you whenever any player enters the Renaissance Era. After that you receive another spy each time to advance to another Era. So you can in general have as many as 5 Spies, but if you build the National Intelligence Agency you get one more. This is a National Wonder, and should be a mandatory build if you are going for a Diplomacy victory. And England starts with 1 extra Spy, so if you play as England you could get as many as 7 Spies.</p>\n<p>Spies can be used for offense or defense. If you station one of your spies in one of your cities it can operate as a counter-spy, and may thwart or even kill an enemy spy. If you are well ahead in technology, that might be a good use, since other players will be trying to steal your tech. But if you are behind, you might want to use your spies to steal tech from other players. You may be successful in this, but the theft does not go unnoticed, and other player may use one of his spies to counter your operation. If you spy is killed, you will get another one in 3-5 turns, but if your spy was a high-rank spy with promotions, that is a serious loss, so you may want to move that spy elsewhere for a while.</p>\n<h3 id=\"diplomats\">Diplomats</h3>\n<p>When you assign a spy to the capital of another player you can designate them as a <em>Diplomat</em>. They will take a few turns (depends on game speed, but around 6 turns on normal speeds) to get set up. This is called “Making Introductions”, but the point is that if you need an effective diplomat, don’t wait until the last minute. Diplomats can be useful in several ways. Early on, they allow you to trade votes in the World Congress. And they will bring you intelligence about intrigues, and you can then share that with other players. And it can also give you a view of the other player’s City Screen. Once you have researched <em>Globalization</em> your Diplomats can help with a Diplomatic Victory because each one counts as one additional vote in the United Nations for World Leader.</p>\n<p>You can change a spy into a Diplomat and vice versa just by moving the Spy/Diplomat from its current location to another location, which will trigger the ability to change the job assignment. This means that when you first get Spies, and they cannot yet be used to get additional Delegate votes as Diplomats, you can assign them to City-States, where they can help you get alliances. Then as you start to research Globalization, move them to the capitals of other players and turn them into Diplomats. This of course assumes you want to win a Diplomatic victory. If instead you are going for a Science victory and are ahead in Science, it is probably best to station them in your own cities to do counter-intelligence work. If you are ahead in Science, other players will be trying to steal tech from you.</p>\n<h2 id=\"religious-pressure\">Religious Pressure</h2>\n<p>If you have researched all of the Piety Social Policy Tree, you will have option to choose a Reformation Belief to add to your religion. One of these, <em>Underground Sect</em>, allows your spies to exert religious pressure against the city they have been sent to. However, this effect is fairly small. If there is not a Follower of your religion in the city, it seems to do nothing. But in combination it can flip cities to your religion. Start by sending in a Missionary to spread your religion, then your spy can add to that. And you should also combine that with a trade route to add additional religious pressure. And by gradually moving your spies, missionaries, and trade routes from city to city, you can make your religion dominant in a region.</p>\n<h2 id=\"diplomatic-victory\">Diplomatic Victory</h2>\n<p>This can be a fun way to win, and I have done it. If you want to get a leg up, start with a Civ that gives you advantages, such as Greece or Venice (although my last diplomatic Victory was achieved with Ethiopia, which is generally regarded as a military/domination Civ. You can win any victory type with any civ, and it can be fun to “play against type”). Greece gets an advantage from relations with City-States, which are key to a Diplomatic Victory because each one gets a vote for World Leader. And Venice is interesting because you cannot build settlers. But you can use cash to puppet City-States, and you can purchase units in puppeted City-States as well. Cash is king in the Venice strategy, and you will want to get as many Trade Routes as possible. The first two should send Food to Venice to help boost your population. Since you will only ever have one city as Venice you will want to max it out. All trade routes after that should focus on cash. Use your cash to purchase or upgrade military units, and employ a defensive strategy. You want enough military to deter any aggression against you, but you should avoid making any hostile moves against others if possible. Remember, this is a strategy for a Diplomatic Victory. If you want to go to war, don’t choose Venice. Instead choose one of the Domination Civs, like the Zulus or the Mongols.</p>\n<h2 id=\"links-\">Links:</h2>\n<ul>\n<li><a href=\"https://civ-5-cbp.fandom.com/wiki/Detailed_Guide_to_Diplomacy\">https://civ-5-cbp.fandom.com/wiki/Detailed_Guide_to_Diplomacy</a></li>\n<li><a href=\"https://www.palain.com/gaming/civilization-v/playing-civilization-v-part-8/\">https://www.palain.com/gaming/civilization-v/playing-civilization-v-part-8/</a></li>\n</ul>\n',198,122,0,'CC-BY-SA','Computer games, strategy games, Civilization V, diplomacy, spies',0,0,1),
(4580,'2026-02-20','The First Doctor, Part 4',900,'A continuing look at the first Doctor Who.','\n<p>This is a further look at the stories of the First Doctor, portrayed by William Hartnell, during the 1960s.</p>\n<h2 id=\"the-first-doctor-part-4\">The First Doctor, Part 4</h2>\n<h3 id=\"-galaxy-4-https-en-wikipedia-org-wiki-galaxy_4-\"><a href=\"https://en.wikipedia.org/wiki/Galaxy_4\">Galaxy 4</a></h3>\n<p>This science fiction story is focused on the idea of not judging a book by its cover. The Tardis lands on a deserted, dying planet. They see a funny looking robot that Vicki calls a “Chumbley”. Then another one appears, and they investigate, but are rescued by three beautiful women who tell them they were in great danger, and take the three travelers back to their ship, where they meet the leader, Maaga, another beautiful woman. But somehow these women are odd and cold. They tell of how they met another ship from a evil race, the Rill, and that in a space battle the ships damaged each other and landed on this planet. Then later the travelers meet the Rill, who initially refuse to reveal their appearance because it would frighten the humans. Turns out they were very alien in appearance, but not at all evil, and it was the beautiful women who were evil.</p>\n<h3 id=\"-mission-to-the-unknown-https-en-wikipedia-org-wiki-mission_to_the_unknown-\"><a href=\"https://en.wikipedia.org/wiki/Mission_to_the_Unknown\">Mission to the Unknown</a></h3>\n<p>This short little story takes place on the planet Kembel, and agents from Earth realize that the Daleks are here, and up to no good. This is really a prequel to The Daleks’ Master Plan, and is notable as the only Doctor Who story in which none of the regular cast appears. The reason is that this is an extra episode slot given to the Doctor Who team late in the day, and the regular cast were already given vacation time off. So it is best to take this as Episode 0 of The Dalek’s Master Plan, not as a stand-alone story. The original story has been lost, like so many episodes of early Doctor Who, but a very nice version was done by the University of Central Lancashire, and you can view it on <a href=\"https://www.youtube.com/watch?v=NW8yk-m5Ig8\">YouTube</a>. It is introduced by Edward de Souza, who played Marc Cory in the original, and is worth a look. They really did a good job.</p>\n<h3 id=\"-the-myth-makers-https-en-wikipedia-org-wiki-the_myth_makers-\"><a href=\"https://en.wikipedia.org/wiki/The_Myth_Makers\">The Myth Makers</a></h3>\n<p>This is another “historical” story, though instead of verified history it is historical legends at play here, in the form of the Seige of Troy by the Greeks. So you have all of the Homeric cast here: Achilles, Priam, Hector, Odysseus. The Doctor is taken for a God by Achilles, though Odysseus has his doubts. Vicki is captured by the Trojans and taken to Troy, calls herself Cressida, and is taken for a Goddess. Steven goes to Troy to try and free her, but is seen as a Greek, and so Vicki is now suspect. She falls in love with a son of Priam named Troilus, and you think something might happen here, particularly if you are familiar with play of Shakespeare called <a href=\"https://en.wikipedia.org/wiki/Troilus_and_Cressida\">Troilus and Cressida</a>. This story only has faint echoes of the play, preserving that Cressida is Greek and Troilus is Trojan. In this case it is Cressida staying with Troilus, so instead going back to the Tardis Vicki is now out. One more companion gone.</p>\n<p>This marked the departure of Verity Lambert as producer, and she was replaced by <a href=\"https://guide.doctorwhonews.net/person.php?name=JohnWiles\">John Wiles</a>. Wiles tried to implement changes, such as making the show a bit darker, but ran into opposition from both Hartnell and BBC Management, and resigned after producing four stories ( The Myth Makers through The Ark). And the popularity of other SF shows on television made a move to more SF and less history desirable. And as for Hartnell’s opposition, it is notable that he had become quite identified with the role of The Doctor and was very proprietorial with it. This would come to pose problems later as his health declined.</p>\n<h3 id=\"-the-daleks-master-plan-https-en-wikipedia-org-wiki-the_daleks-27_master_plan-\"><a href=\"https://en.wikipedia.org/wiki/The_Daleks%27_Master_Plan\">The Daleks’ Master Plan</a></h3>\n<p>This story arc takes twelve episodes, or thirteen if you add Mission to the Unknown, as you indeed should. The reason for such a long story arc is that Sir Huw Wheldon, the Director-General of the BBC at that time wanted a “monster length” Dalek story because his mother was a big Dalek fan. And this story has a lot going for it. The length means that you can do more character development.</p>\n<p>The story starts out with Steven recovering from a sword-thrust during the fall of Troy, and being attended by Katarina, a Trojan maiden, who is now in the Tardis. They arrive on the planet Kembel, and meet with Space Special Security agent Bret Vyon, played by Nicholas Courtney, who in a few years would become the beloved Brigadier Lethbridge-Stewart. Vyon tries to force the Doctor to take him to Earth so he can warn the planet, but the Doctor recognizes the Daleks and wants to find out more about their plans. And this brings us to one the most evil villains in Doctor Who, Mavic Chen. You see, the Daleks have assembled a group of villainous aliens to join together in conquering the Earth, and Mavic Chen is part of the group. He is also the idolized Guardian of the Solar System. So he is a traitor! Katarina, the Trojan maiden, sacrifices herself to save the others from a convict they meet on a prison planet. Another wonderful character is Sara Kingdom (played by Peggy Marsh), head of Space Special Security, who has been told by Mavic Chen that Vyon and the others are traitors, and who kills Vyon, who is in fact her brother! But they manage to convince her that Chen is the real traitor, and she joins them. In the middle of this story arc Christmas happened, and this resulted in the most absurd episode ever of Doctor Who, called <a href=\"https://www.imdb.com/title/tt0785302/\">The Feast of Steven</a>, capped by the Doctor breaking the fourth wall. The episode is now among the missing. but you can find reconstructions on YouTube if you want to see the absurdity of it. And there is a re-appearance of The Meddling Monk.</p>\n<p>This is a sprawling story, but overall worth a look. Mavic Chen, played by Kevin Stoney, is delightfully evil, and Stoney would return to play another villain in the Troughton story <em>The Invasion</em>. and it is interesting to see Nicholas Courtney before he got the role he would always be identified with. Doctor Who would not do anything this large again until _<a href=\"https://tardis.fandom.com/wiki/The_Flux\">The Flux</a>_ in 2021, and frankly this story makes more sense.</p>\n<h3 id=\"-the-massacre-of-st-bartholomew-s-eve-https-en-wikipedia-org-wiki-the_massacre_-doctor_who-\"><a href=\"https://en.wikipedia.org/wiki/The_Massacre_(Doctor_Who\">The Massacre of St. Bartholomew’s Eve</a>)</h3>\n<p>You will often see this as simply <em>The Massacre</em>, which is fine since there is no other story with a similar title. And after that massive science fiction story, another historical story. This involves the true story of Protestants in France being massacred by the Catholics, and the main feature worth calling our here is that William Hartnell plays two roles in this story. He is the Doctor, of course, but also the Abbott of Amboise, a leader among the Catholics looking to rid France of the Protestants. This idea of playing two parts became even more nicely done by Patrick Troughton later in <em>Enemy of the World</em>. In any case, this leads to confusion by Steven who thinks the Abbott is actually the Doctor. In the story a servant girl named Anna Chaplette is rescued, and this opens up the interesting possibility that she is the ancestor of Dodo (i.e. Dorothea) Chaplet, a companion who appears at the end. She witnesses a car crash, and barges into the Tardis thinking she can call the police.</p>\n<p>While the novelty of Hartnell playing two parts may stand out on first look, this story is really a showcase for Peter Purves, in his role of Steven Taylor. Because Hartnell is not on screen very much, Purves really has to carry the plot, and does so admirably. Hartnell was on vacation when the second episode was filmed, and so didn’t appear at all. And his health problems were beginning cause problems which contributed to this situation. He was having a lot of trouble with remembering his lines, which is a real problem for an actor. He was not that old by current standards, as he was 58 when this story was produced, and as I am 73 as I write this, 58 seems more like late youth to me.</p>\n<h3 id=\"-the-ark-https-en-wikipedia-org-wiki-the_ark_-doctor_who-\"><a href=\"https://en.wikipedia.org/wiki/The_Ark_(Doctor_Who\">The Ark</a>)</h3>\n<p>The Tardis materializes on a spaceship in the far future. It is carrying the future of the human race to a new planet, Refusis 2, because the Earth is falling into the sun. But it also has an odd race called the Monoids, who have one eye. They are an alien race who came to Earth when their own planet was dying, and now they serve the humans. Unfortunately, the Tardis crew carries germs for which humans and Monoids on the Ark have no immunity, and sickness breaks out. One faction wants to kill the Doctor and his companions, but instead the Doctor finds a cure for the disease, and they leave on the Tardis. Then the Tardis materializes back on the Ark, but they discover that hundreds of years have passed. The Monoids have rebelled and taken over, and now the humans serve them. As the old saying has it, be kind to those you meet on the way up, for you will meet them again on the way down.</p>\n<h3 id=\"links-\">Links:</h3>\n<ul>\n<li><a href=\"https://en.wikipedia.org/wiki/Galaxy_4\">https://en.wikipedia.org/wiki/Galaxy_4</a></li>\n<li><a href=\"https://en.wikipedia.org/wiki/Mission_to_the_Unknown\">https://en.wikipedia.org/wiki/Mission_to_the_Unknown</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=NW8yk-m5Ig8\">https://www.youtube.com/watch?v=NW8yk-m5Ig8</a></li>\n<li><a href=\"https://en.wikipedia.org/wiki/The_Myth_Makers\">https://en.wikipedia.org/wiki/The_Myth_Makers</a></li>\n<li><a href=\"https://en.wikipedia.org/wiki/Troilus_and_Cressida\">https://en.wikipedia.org/wiki/Troilus_and_Cressida</a></li>\n<li><a href=\"https://guide.doctorwhonews.net/person.php?name=JohnWiles\">https://guide.doctorwhonews.net/person.php?name=JohnWiles</a></li>\n<li><a href=\"https://en.wikipedia.org/wiki/The_Daleks%27_Master_Plan\">https://en.wikipedia.org/wiki/The_Daleks%27_Master_Plan</a></li>\n<li><a href=\"https://www.imdb.com/title/tt0785302/\">https://www.imdb.com/title/tt0785302/</a></li>\n<li><a href=\"https://tardis.fandom.com/wiki/The_Flux\">https://tardis.fandom.com/wiki/The_Flux</a></li>\n<li><a href=\"https://en.wikipedia.org/wiki/The_Massacre_(Doctor_Who\">https://en.wikipedia.org/wiki/The_Massacre_(Doctor_Who</a>)</li>\n<li><a href=\"https://en.wikipedia.org/wiki/The_Ark_(Doctor_Who\">https://en.wikipedia.org/wiki/The_Ark_(Doctor_Who</a>)</li>\n<li><a href=\"https://www.palain.com/science-fiction/intro-to-doctor-who/the-first-doctor-part-4/\">https://www.palain.com/science-fiction/intro-to-doctor-who/the-first-doctor-part-4/</a></li>\n</ul>\n\n\n\n',198,124,0,'CC-BY-SA','Science fiction, Doctor Who, William Hartnell',0,0,1),
(4590,'2026-03-06','Playing Civilization V, Part 9',857,'We continue our look at the game mechanics of Civilization V.','\n<p>In our next look at the game mechanics for Civilization V we examine a new feature in Civilization 5, City-States. These are independent cities controlled by the computer that are also players to some degree in the game, and you can interact with them. And they are key to winning a Diplomatic Victory.</p>\n<h2 id=\"playing-civilization-v-part-9-city-states\">Playing Civilization V, Part 9 - City States</h2>\n<p>This was a newly introduced feature in Civ 5, and they play an important role in the game. They represent the small countries that are not running the world. They do not produce Settlers, so they do not expand beyond the one city, though that city can, and will expand its borders in a similar way to how your cities can grow. They do not start with a military unit, but they can produce military units and defend themselves. They can also build buildings in the city, but not Wonders. They do have a single vote each in the World Congress (or later the United Nations), making them a key to a Diplomatic victory.</p>\n<p>City States start out neutral with regards to the players, but your interactions with them can affect how they feel about you. For example, if you send units through their territory they will get hostile, but if you give them gifts they will get friendly. And if you wish you can go to war with them and take them over. This will affect your diplomatic relations with other players and other city states, but if you have decided on a war of conquest as your victory type, that won’t matter to you, right? As mentioned, if you want to go for a Diplomatic victory you want to be allied with as many of them as possible to get their votes in the World Congress or the United Nations. But even if you don’t need their votes, there are other benefits from friendly relations. There are two levels to friendly relations: Friendly, and Allied, and the benefits get better as the relations improve.</p>\n<h3 id=\"city-state-types\">City State Types</h3>\n<p>With the expansions there are 5 types of City State: Militaristic, Maritime, Cultured, Mercantile, and Religious. The benefits you get are:</p>\n<ul>\n<li>Militaristic – If you are friends the city state will periodically gift you a unit, which will appear in your city which is closest to the city state. If you are allies the units will show up more often.</li>\n<li>Maritime – If you are friends they will add two food to your Capital city. If you are allies they will add one more food to every city you have.</li>\n<li>Cultured city states share their culture with you, at one rate if you are friends and at double the rate if you are allies.</li>\n<li>Mercantile city states give you an added 3 Happiness when you are friends. If you are allies you keep the added happiness, but in addition get access to a luxury resource that cannot be obtained any other way, and that also adds Happiness.</li>\n<li>Religious city states give you a one-time bonus of Faith when you first meet them, then provide added Faith per turn.</li>\n</ul>\n<p>Note that Cultured and Religious city states increase the amount of Culture or Faith they provide with each new era, so the earlier you develop your relations with them the better the benefit.</p>\n<h3 id=\"managing-relations-with-city-states\">Managing Relations With City States</h3>\n<p>There is a mechanism in the game which keeps track of points to define your relations with city states. On this numerical scale, Neutral has a value of 0, Friendly 30 or above, and Allied 60 or above. In the other direction, once you go into negative numbers they become Angry, if if you go negative enough it becomes War. A city state can only ever have one ally. If only one player has more than 60 influence points, that player will become the patron of the city state and they will ally to that player. If two or more players have more than 60 influence points, the player with the most points gets the ally. As the game goes on, you may get a message that a city state you had as an ally has suddenly allied to someone else. This is the result of the other player gaining influence points in some way, often by gifts. You can also gain influence points by promising to protect a city state, but do this with your eyes open. If you do not follow through on your promise it will enrage the city state and you will lose a lot of influence with them.</p>\n<p>Your influence with a city state has a natural resting point at 0, or Neutral. That means that barring other factors, a positive number will fall over time, and a negative number will rise over time. So if you sent one of your units through their territory they will be angry for a period, but if nothing else happens they will return to Neutral. But on the other side, you don’t stay allied with them forever unless you find ways to keep adding influence points. One way is to eliminate barbarian camps near to the city state. In fact, this is one exception to the rule about sending units through their territory. If you are doing it to attack the barbarians, you are seen as a protector, not an invader, and there is no penalty. Another way to gain influence is by completing a quest from a city state. Each city state you are in contact with will periodically give you a quest, and if you fulfill it you will gain influence points. This can include killing a barbarian camp or killing nearby barbarian units (though you can do that at any time, you don’t need a quest). Some others include acquiring a Great Person of a certain kind, building a certain World Wonder, bullying another city state, finding a Natural Wonder, and so on. You do not need to fulfill a quest. For example, if your strategy calls for allying with other city states, you might want to pass on bullying another city state. There is no penalty for not fulfilling a quest, just a bonus when you do fulfill one.</p>\n<p>Another way to gain influence is with gifts. The most effective is Gold, and one large sum is more effective than several small ones. For a Diplomatic victory strategy, you should plan on having a large Treasury as you approach the end game so that you can buy allies in time for the crucial vote. You can also gain a small amount of influence points by gifting units. I make it a practice to do this whenever I have units that I don’t want any longer. These could be obsolete units that have no upgrade path, for instance. I don’t want to pay maintenance on them as that is a drain on my Treasury, and I could just delete them, but gifting them to a city state gives me a small amount of influence. Another way to get a big jump in your influence with a city state is to capture and then a return one of their Workers. Most often this happens when a barbarian has captured the Worker, and then you capture it. You have the option of keeping the Worker for yourself, and in the early game I would probably do that because the Worker is so valuable. But at a certain point I have enough Workers, and getting the 45 influence points for returning it starts to be more effective. Remember that you have to keep earning influence points to keep up your relations, so even if you get an ally of a city state for a few turns. it will naturally decay back to Neutral. By around the middle of the game if you playing well you can start to invest the resources needed to maintain your relationships.</p>\n<h3 id=\"city-states-and-war\">City States and War</h3>\n<p>If you are allied with a city state and you get into a war with another player, a city state you are allied with will join you in the war. Of course, the same is true for the other player, so the war between the two players could also involve 3-4 city states dragged in as allies. You cannot make peace with a city state while it is allied to a player you are at war with. You have to first make peace with that player (or wipe them out if that suits you). However, if you can get more influence with that city state and supplant the other player you can get that city state to ally with you can turn around and attack your enemy. Generally a large cash gift can do this, once again showing the utility of a fat Treasury.</p>\n<h3 id=\"exploration\">Exploration</h3>\n<p>You cannot have diplomatic relations with a city state you haven’t met, so this reinforces the idea that you have to explore the map as soon as possible. Of course, you have to balance this with other priorities, such as expanding your cities and defending them, but finding the right balance is what all the Civilization games are about. On most maps this means you should be giving some attention to developing your naval power and technologies. There seems to be a bias to city states being coastal, and in many cases they are on small islands. Of course there are a number of motivations for exploring the map. First of all, you need intelligence of what you are up against with the other players. And unless you are on a very large land mass, you will want to find added lands for settlement. Finding Natural Wonders adds to Happiness in your Empire, so finding them all is important. And last, the unexplored sections of the map have a strong tendency to spawn barbarian units against you.</p>\n<p>Early on you cannot traverse Ocean tiles and need to stick to Coastal tiles. The unit here is the Trireme, which you can build once you discover Sailing. I will usually build 1-2 Triremes in a coastal city to go around the coast of the land mass I am on and scout out the situation. If another land mass or island is sufficiently close I can cross to it without entering an Ocean tile and extend my exploration. But to really explore the whole map you need to get to Caravels. This Renaissance Era unit becomes available when you discover Astronomy, and is essentially a naval scouting unit. It can enter Ocean tiles.</p>\n<h3 id=\"links-\">Links:</h3>\n<ul>\n<li><a href=\"https://civilization.fandom.com/wiki/City-state_(Civ5\">https://civilization.fandom.com/wiki/City-state_(Civ5</a>)</li>\n<li><a href=\"https://civ-5-cbp.fandom.com/wiki/Detailed_Guide_to_Diplomacy\">https://civ-5-cbp.fandom.com/wiki/Detailed_Guide_to_Diplomacy</a></li>\n<li><a href=\"https://www.palain.com/gaming/civilization-v/playing-civilization-v-part-9/\">https://www.palain.com/gaming/civilization-v/playing-civilization-v-part-9/</a></li>\n</ul>\n\n\n\n',198,122,0,'CC-BY-SA','Computer games, strategy games, Civilization V, diplomacy, City-States',0,0,1),
