<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="/rss-style.xsl"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:media="http://search.yahoo.com/mrss/" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
<title><![CDATA[Team IT Security - 🎥 Podcasts]]></title>
<link><![CDATA[https://tsecurity.de/export/rss/podcasts.xml]]></link>
<description><![CDATA[Willkommen bei Informationsportal für Podcasts, dem Online-Portal für alle, die sich für IT-Sicherheit, Hackerkultur und Technologie interessieren. Hier finden Sie eine Auswahl an Podcasts zu verschiedenen Themen, die von Experten und Enthusiasten produziert werden. Sie können die Podcasts direkt auf der Webseite anhören oder als RSS-Feeds abonnieren, um sie auf Ihrem bevorzugten Gerät zu hören. Egal, ob Sie mehr über Linux, Programmierung, Kryptographie, Datenschutz oder andere Themen lernen wollen, hier finden Sie sicher etwas, das Ihnen gefällt.]]></description>
<language>de-DE</language>
<lastBuildDate>Sun, 26 Jul 2026 12:59:47 +0200</lastBuildDate>
<pubDate>Sun, 26 Jul 2026 12:59:47 +0200</pubDate>
<ttl>15</ttl>
<copyright>2026 Team IT Security</copyright>
<managingEditor>lakandor@tsecurity.de (Horus Sirius)</managingEditor>
<webMaster>lakandor@tsecurity.de (Horus Sirius)</webMaster>
<category>🎥 Podcasts</category>
<generator>Team IT Security RSS Generator v2.0</generator>
<image>
<url>https://tsecurity.de/favicon.ico</url>
<title><![CDATA[Team IT Security - 🎥 Podcasts]]></title>
<link><![CDATA[https://tsecurity.de/export/rss/podcasts.xml]]></link>
</image>
<atom:link href="https://tsecurity.de/export/rss/podcasts.xml" rel="self" type="application/rss+xml" />
<item>
<title><![CDATA[HPR4690: Playing Civilization V, Part 14]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.

In our sample game we look at playing as Austria and aiming for a Diplomatic Victory. And our focus is on puppeting City-States, but I misunderstood and instead of making a Diplomatic Victory easier, it makes it harder. I still managed to get my D...]]></description>
<link>https://tsecurity.de/de/3690466/it+sicherheit/it+podcasts/hpr4690+playing+civilization+v+part+14/</link>
<pubDate>Fri, 24 Jul 2026 02:04:41 +0200</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>

<p>In our sample game we look at playing as Austria and aiming for a Diplomatic Victory. And our focus is on puppeting City-States, but I misunderstood and instead of making a Diplomatic Victory easier, it makes it harder. I still managed to get my Diplomatic Victory, but a Science or Domination Victory would definitely have been easier in this scenario.</p>

<h1>Playing Civilization V, Part 14</h1>

<p>Now I am at turn 340, I just puppeted another City-State, and I have one more on the way. I have sent a large number of military units, both land and sea, to the City-States that are on Japan’s border. If he tries anything now he will likely regret it. Now I am starting to build things I had not bothered with before, like Granaries and Amphitheaters. I got a couple of Great Engineers, and used them to rush build Wonders. I am nearly finished puppeting all of the City-States, and my Happiness and Income are both quite healthy. I am in such good shape I started to build the World’s Fair, which I initally proposed then ignored.</p>

<p>At this point I only have one more City-State to puppet, then I will have puppeted every City-State in the game. So it is time to put my large income to use in other ways by giving gifts to the other players. I may want to get a few more votes on my side to get over the top in the World Leader vote when it happens. On turn 357 I completed the puppeting of all of the City-States in the game. Meanwhile, I am building up my Science and building Wonders as they become available. I didn’t build any in the early game because I had other priorities, but now I have a strong military, high income, and no other pressing needs. My score on the Leader Board is now double that of my nearest competitor which is still Japan. And their denunciation me of just expired with them taking no action.</p>

<p>I used a Great Engineer to rush build the Porcelain Tower, earning me another Great Scientist, which I then used to build another Academy. At this point it is mostly a slog to the finish. Since I was so dominant and so wealthy I could afford to pursue a couple of other options just in case. One was a Science victory, which looked like a possibility, though it would be close. I had to be very focused in my Science Research. The other option was a Culture victory, and I had dominated two other empires culturally without half trying, and I was generating Great Artists, Great Musicians, and Great Writers pretty rapidly. So I built Museums, then Archeologists, and grabbed every artifact I find to stuff into the Museums. But the final Victory came when I researched Globalization. This tech allows you to get an extra vote in a World Council for every Spy you send to another empire’s capital and designate as an Ambassador. I immediately sent my spies out (they had previously been in my cities doing counter-espionage since I had a tech lead). And a few turns later a vote for World Leader came up and I won.</p>

<p>This was my first time using Maria Theresa of Austria as my leader, and it was fun, but in the end puppeting all of the City-Staters actually made it harder to win a Diplomatic victory. In other games I have played, every City-State that was an ally was an extra vote in the World Council, and I assumed that making them puppets would mean I would get that many votes. But that didn’t happen. Of course, if I had read more carefully in the Civilization Wiki I would have realized this, because it says there very clearly that Austria is one of the worst Empires to pick if you are going for a Diplomatic victory. So the fact that I managed it anyway is nice. I think I actually could have done a Science victory as I had my Spaceship half-built when I won the Diplomatic Victory. But I hope this analysis of how I actually played this game will be helpful to someone else.</p>

<h3>Links</h3>
<ul>
<li><a href="https://www.palain.com/gaming/civilization-v/playing-civilization-v-part-14/">https://www.palain.com/gaming/civilization-v/playing-civilization-v-part-14/</a></li>
</ul>


<p><a href="https://hackerpublicradio.org/eps/hpr4690/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4689: Cheap Yellow Display Project Part 8: Writing the code]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.



Hello, again. This is Trey.










Welcome to part 8 in my Cheap Yellow Display (CYD) Project series.  










If you wish to catch up on earlier episodes, you can find them on my 

HPR profile page



https://www.hackerp...]]></description>
<link>https://tsecurity.de/de/3687798/it+sicherheit/it+podcasts/hpr4689+cheap+yellow+display+project+part+8+writing+the+code/</link>
<pubDate>Thu, 23 Jul 2026 02:06:01 +0200</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>

<p>

Hello, again. This is Trey.

</p>

<p>


</p>

<p>

Welcome to part 8 in my Cheap Yellow Display (CYD) Project series.  

</p>

<p>


</p>

<p>

If you wish to catch up on earlier episodes, you can find them on my 
<a href="https://www.hackerpublicradio.org/correspondents/0394.html" rel="noopener noreferrer" target="_blank">
HPR profile page</a>


<a href="https://www.hackerpublicradio.org/correspondents/0394.html" rel="noopener noreferrer" target="_blank">
https://www.hackerpublicradio.org/correspondents/0394.html</a>



</p>

<p>


</p>

<p>

It is hard to believe that I started this project and the HPR series to document it more than a year ago.  Time flies.  Life happens. I spent the last 8 months so focused on work related activities that I had to set the project aside.  And once I set it aside, it was difficult to get back to again.  The one time I tried, I found that my son's old Windows laptop, which I had commandeered to use for the project, was once and truly dead.  

</p>

<p>


</p>

<p>

We live in a different world now than we did when I began this project.  Today, everything is about AI – how it is changing our world, increasing efficiencies, and even displacing certain types of jobs.  "Vibe coding" is transforming the way we make software, and now everyone is a developer.

</p>

<p>


</p>

<p>

Within my organization, we are all being strongly encouraged to learn more about AI and apply it in our daily work.  We are blessed to have access to a wide range of training and to powerful tools which support the process.  Several colleagues within my organization and outside my organization have recommended Claude Code -- for development, for organization, for brainstorming, and for much more.  My role is not that of a developer, and I have had no need for Claude Code at work.  There are plenty of other tools for me to use.

</p>

<p>


</p>

<p>

But at home, I thought... I could install Claude Code at home to experiment with and to learn.  And then it hit me.  I wonder if I could use Claude Code to help me with my stalled CYD project.  

</p>

<p>


</p>

<p>

"Hello, my name is Trey, and I am a fraud."

</p>

<p>


</p>

<p>

OK.  I don't think I am a fraud, but having never used such a powerful tool to help me code, I feel a little bit like a fraud, with Claude doing the work for me. Let's talk through what we did.

</p>

<p>


</p>

<p>

As I mentioned, I was unable to use the laptop on which I created the original GUI code.  But no worries, because It was all on GitHub, right?

</p>

<p>


</p>

<p>

So, I began by trying to install Claude Code on one of my Ubuntu machines.  That failed miserably, and all the instructions I found online recommended running it on Windows.  So I transitioned to installing Claude Code on a freshly built Windows 10 system using some old hardware which will not support Windows 11.  Surprisingly, It seems that Claude wants to run within Ubuntu on Windows Subsystem for Linux (WSL).

</p>

<p>


</p>

<p>

Once I went through all the hoops for installing and setting up my basic subscription, I got to work.  I created a new directory to use for all my project files, and another one for Claude to write all its output files to.

</p>

<p>


</p>

<p>

Everything I have read and heard about using Claude Code for a project like this recommended beginning by using Claude to create the project plan.  So my first prompt was as follows:

</p>

<p>


</p>

<p>

"I am building a project using an ESP32 cheap yellow display. The final goal is to have a device with a graphical user interface which will allow me store several text messages, each assigned to their own specific button. Then, when one of the buttons is pressed, the message will be converted into morse code, and the message will be sent by blinking an onboard LED. I already have the initial design for the GUI coded in my github repository. Please construct a detailed step by step plan for building this application"

</p>

<p>


</p>

<p>

I wanted to keep it simple at the beginning, so even though I plan to use an opto-isolated relay for the output, I am starting out using the built in LED.

</p>

<p>


</p>

<p>

Claude asked me for the URL for my Github repository, and I provided it.  After thinking for a bit, it produced a project plan.

</p>

<p>


</p>

<p>

CYD Morse Sender — Step-by-Step Build Plan

</p>

<p>


</p>

<p>

What You Already Have

</p>

<p>

- 3 fully designed LVGL screens (Send, Config, Keyboard)

</p>

<p>

- 7 send buttons with green styling on the Send Screen

</p>

<p>

- Speed slider (5–30 WPM) and program slot dropdown on Config Screen

</p>

<p>

- Text area + LVGL keyboard widget on Keyboard Screen

</p>

<p>

- Display driver and touchscreen hardware initialized (but touch read was stubbed out)

</p>

<p>

---

</p>

<p>

Phase 1: Fix Touchscreen Input

</p>

<p>

Initialize the XPT2046 on VSPI, replace the hardcoded touched = false with real touch data, calibrate raw ADC coordinates to screen pixels, and verify all three nav buttons transition screens correctly.                         

</p>

<p>


</p>

<p>

Phase 2: Persistent Message Storage

</p>

<p>

Use Preferences.h / NVS to store 7 messages ("msg0" – "msg6") that survive power cycles. Load on boot and populate send button labels.

</p>

<p>


</p>

<p>

Phase 3: Config Screen — Slot Selection &amp; Speed

</p>

<p>

Wire the Program dropdown to g_selectedSlot, wire the Speed slider to g_wpm with a live WPM label, and wire the Set button to clear the text area and navigate to the Keyboard Screen.

</p>

<p>


</p>

<p>

Phase 4: Keyboard Screen — Capture and Save Text

</p>

<p>

On keyboard OK (LV_EVENT_READY): read the text area, save to NVS, update the send button label, navigate back. On Cancel: navigate back without saving.

</p>

<p>


</p>

<p>

Phase 5: Morse Code Engine

</p>

<p>

Build morse.h with the full A–Z / 0–9 lookup table, a textToMorse() converter, and Paris-standard timing (unit_ms = 1200 / wpm).

</p>

<p>


</p>

<p>

Phase 6: Non-Blocking LED Transmission

</p>

<p>

State machine (IDLE / LED_ON / LED_OFF) driven by millis() in a morseUpdate() function called every loop — no delay().   LED on GPIO 17 (blue).

</p>

<p>


</p>

<p>

Phase 7: Wire the Send Buttons

</p>

<p>

Each button calls startMorse(getMessage(slot)) if not already transmitting. Disable all send buttons during TX; re-enable when the state machine reaches the end.

</p>

<p>


</p>

<p>

Phase 8: Integration &amp; Polish

</p>

<p>

Stop button, WPM persistence, empty-slot guard, serial debug output, final touch calibration, end-to-end test checklist.

</p>

<p>

---

</p>

<p>

Recommended order: Phase 1 → 2 → 7 (partial) → 5 → 6 → 7 (full) → 3 → 4 → 8

</p>

<p>


</p>

<p>


</p>

<p>

This was wild!  Claude determined exactly how far along I was in the project, and also alerted me to the fact that the "touch read was stubbed out".  Ugh.  This means that the files I had uploaded to GitHub were my original GUI files (Episode 05 – HPR4532 - 
<a href="https://hackerpublicradio.org/eps/hpr4532/index.html" rel="noopener noreferrer" target="_blank">
https://hackerpublicradio.org/eps/hpr4532/index.html</a>

) and not the ones that I finally got working properly (Episode 07 – HPR4624 - 
<a href="https://hackerpublicradio.org/eps/hpr4624/index.html" rel="noopener noreferrer" target="_blank">
https://hackerpublicradio.org/eps/hpr4624/index.html</a>

).  That was my own fault.  Did I mention that I don't get Git?  I REALLY need to learn to properly use Git!

</p>

<p>


</p>

<p>

But, we have a plan, broken down by eight numbered phases.  And they seem to address all the functionality I wanted with a few additional things I had not thought about.  Interestingly, even though these phases are sequentially numbered, Claud recommended that we approach them in a bizarre order: Phase 1 → 2 → 7 (partial) → 5 → 6 → 7 (full) → 3 → 4 → 8 .

</p>

<p>


</p>

<p>

Alright.  Let's see what we can do.  The first phase is to fix the touchscreen input.  

</p>

<p>


</p>

<p>

Claude took me through it step-by-step, asking as it needed to read specific project files.

</p>

<p>


</p>

<p>

Finally, it wrote a new ui.ino code file to my speficied output directory for me to test.  I copied it into the correct file location, said a quick prayer, compiled in Arduino IDE, and downloaded to the CYD.

</p>

<p>


</p>

<p>

Well, that is... interesting.  The display looked nothing like it was supposed to.  There were vertical green bars with smaller dashed green vertical stripes in them. I will include a picture in the show notes so that you can see what it looked like and why it was so difficult to describe.  

</p>

<p>


</p>

<p>

<a href="https://hackerpublicradio.org/eps/hpr4689/hpr4689_image_1.jpeg">
<img src="https://hackerpublicradio.org/eps/hpr4689/hpr4689_image_1_tn.jpeg">
</a>

</p>

<p>


</p>

<p>

I spent the next hour or so trying to explain what I was seeing to a chat bot.  Claude recommended potential fixes which either did nothing or made the situation worse.  I began questioning whether this was a good idea, how people actually gained efficiencies talking to a bot, and even several life choices.  

</p>

<p>


</p>

<p>

Then I had a thought.  I prompted Claude:

</p>

<p>


</p>

<p>

If I were to take a picture of the screen on the cheap yellow display and copy it into the output folder, would you be able to analyze it to better determine what is wrong and how to fix it?

</p>

<p>


</p>

<p>

Shockingly, Claude answered in the affirmative, and told me to copy the picture to the output folder and let it know when to proceed.  It analyzed the picture and more of the supporting files it had copied from my GitHub, asking each time if it could access that file.  It determined that my original code was written for a flavor of LVGL version 8 and I was now using LVGL 9.5.  

</p>

<p>


</p>

<p>

It recommended changes, and then asked permission to make those changes, file by file.  .h files &amp; .c files,  Finally, I just gave it permission to edit the files in the project folder without asking for permission for each file each time.  Claude was still explaining each change, showing me exactly what would be changed, and asking for permission, so that I could review all of the changes.  But now it was not asking additional permission to write to each of the impacted files.

</p>

<p>


</p>

<p>

Next, Code compiled and downloaded.  Different screen, but not right. Again, I took a picture and gave it to Claude to analyze.  So, Claude paused and altered the code to generate a specific test pattern overtop of the GUI.

</p>

<p>


</p>

<p>

</p>

<p>

<a href="https://hackerpublicradio.org/eps/hpr4689/hpr4689_image_2.jpeg">
<img src="https://hackerpublicradio.org/eps/hpr4689/hpr4689_image_2_tn.jpeg">
</a>

</p>

<p>


</p>

<p>

The test pattern was supposed to cover the entire rectangular screen.  But parts of the pattern were in a square on the screen and parts were not.  Another photograph and analysis, told Claude that there were some rotation/screensize issues.

</p>

<p>


</p>

<p>

We repeated this several times.  Some resulted in improvement, and others did not.

</p>

<p>


</p>

<p>

This is the point where I noticed something interesting. Not about Claude, specifically, or about the app.  But I noticed something interesting about myself and about the process.

</p>

<p>


</p>

<p>

Previously, when I was working through some of these challenges without Claud, I found myself becoming more and more stressed, frustrated, and angry, until I found a solution.  Then another problem would repeat the cycle.  Success in the end was great, but the emotional extremes during the process were not always pleasant.  

</p>

<p>


</p>

<p>

Now, I was effectively managing the project, and relaying information to the resource responsible for fixing the problems -- a very different experience.

</p>

<p>


</p>

<p>

But I also ran into another issue.  Claude became absolutely certain that the problem revolved around the device not accurately knowing where the 4 corners of the screen were.  But in reality, the output of the test pattern was rotated 90 degrees from the actual screen.  It took several iterations of me insisting that the problem had to do with screen orientation and not corner coordinates.  It was interesting to experience the tool doubling down on an obvious mistake, but we finally resolved that.

</p>

<p>


</p>

<p>

Again, while it was frustrating, it was much less stressful.

</p>

<p>


</p>

<p>


</p>

<p>

We proceeded to 
<strong>

<em>
Phase 2: Persistent Message Storage</em>

</strong>

where we ensured that the button labels on the send screen were stored in the devices persistent storage, so that, when they are edited to contain the message they should send, that information would survive a reboot.

</p>

<p>


</p>

<p>

Next, we combined elements of 
<strong>

<em>
Phase 5: Morse Code Engine</em>

</strong>

, 
<strong>

<em>
Phase 6: Non-Blocking LED Transmission</em>

</strong>

, and 
<strong>

<em>
Phase 7: Wire the Send Buttons</em>

</strong>

together. Building the morse code engine was an area I had been thinking about for a while.  I already had working parts of something similar in the Arduino practice oscillator I have referenced a few times in this series.  The code for the practice oscillator may be found on my GitHub, but it was all based on original code from jmharvey1, with my only contribution being making pin assignments variables so that the code could easily be ported to different devices.  

</p>

<p>


</p>

<p>

So, I was happy that we were building the morse code engine directly.  The code for it may be found in morse.h, which uses a constant character lookup table to define each character.  Without any specific direction from me, Claude used the PARIS timing methods I have already described within Episode 6 of this series.  It defines timing for DOT, DASH, LETTER_GAP, and WORD_GAP, and all are based on a simple calculation of 1200 ms / the number of words per minute (WPM) we wish to transmit.

</p>

<p>


</p>

<p>

Along the way, we discovered that, if we tried to use the delay() function, it would crash the program due to a conflict with the LVGL timer used for touchscreen inputs. Claude altered all the delays accordingly.

</p>

<p>


</p>

<p>

Then, 
<strong>

<em>
Phase 3: Config Screen — Slot Selection &amp; Speed</em>

</strong>

allowed us to configure the WPM we wished to use in addition to selecting a specific Send button to reconfigure.  This forced us to work on 
<strong>

<em>
Phase 4: Keyboard Screen — Capture and Save Text</em>

</strong>

which is used to type the entries for each Send button.  At this point, I also decided that we would want to also use the Keyboard Screen to send ad hoc morse as we typed it.

</p>

<p>


</p>

<p>

During this phase we discovered several bugs which seemed to cause random freezes.  Careful troubleshooting with messages output to the Arduino IDE's serial console helped us narrow down the causes and remedy them.

</p>

<p>


</p>

<p>

Finally all the tests worked and I am able to merrily pre-configure macro buttons with custom messages and use the CYD to send the morse code for those messages to the on-board LED at whichever rate I specify.

</p>

<p>


</p>

<p>

I have noticed in my presentation of this narrative that I repeatedly slip into the first person plural terms "we" and "us" instead of the first person singular terms "I" and "me".  I have unconsciously personified Claud and recognized it as an integral part of my (formerly one person) development team.

</p>

<p>


</p>

<p>

I finally configured Claude to connect to my GitHub repo and upload all the files and documentation. We additionally created a CYD-Narrative.md file which describes in more detail all the work which was done on the project.  I still do not 100% get git, but we are successfully using it.

</p>

<p>


</p>

<p>

You can find all these files in my GitHub repo (
<a href="https://github.com/jttrey3/CYD_MorseSender" rel="noopener noreferrer" target="_blank">
https://github.com/jttrey3/CYD_MorseSender</a>

) where they are shared under a GPL 3.0 license.

</p>

<p>


</p>

<p>

There are still several additional steps I plan to complete in the next few months.  

</p>

<p>


</p>

<p>

1. I will be integrating an opto-isolated relay which will allow me to plug the device into the straight key input on any amateur radio.  This will require a battery power source, charge controller, and more hardware.

</p>

<ol>

<li>

I... make that "We" (Claude &amp; I)  will be modifying the code to support an audio side tone through an attached speaker when sending code

</li>

<li>

We will add an output selection switch to the config page to choose any combination of speaker, relay, or LED as output.

</li>

<li>

We will develop a downloadable firmware which I hope to share with the Cheap Yellow Display community.

</li>

</ol>

<p>


</p>

<p>

If you can think of any additional features you would like to see integrated, please drop me an email using the address in my HPR profile.

</p>

<p>


</p>

<p>

I may also work with a friend to attempt to 3d print a case for the entire contraption, and I will be sure to record additional episodes sharing the process.

</p>

<p>


</p>

<p>

I have learned so much throughout this project, about the CYD, ESP32, GUIs, Claude Code, GitHub, and most of all, about myself.  

</p>

<p>


</p>

<p>

Does using AI to develop this code make me a fraud? It still feels like it in some ways.  

</p>

<p>


</p>

<p>

Does it make me more productive?  ABSOLUTELY!  I made consistent forward progress when I only had 30-60 minutes each day to work on it, and everything discussed in this episode was completed in less than a week.  If I had been able to work on it for a few hours uninterrupted, it may have only taken me 3-5 hours.

</p>

<p>


</p>

<p>

Does it empower and inspire me to do more projects like this?  100%  I feel like I had support working with me the whole way.  I was less stressed overall, and it had less of an impact on the amount of and quality of time I spent with my family.

</p>

<p>


</p>

<p>

I will be wrapping up this series soon, without any more 6 month gaps, I hope.

</p>

<p>


</p>

<p>

Until next time...

</p>

<p>

</p>


<p><a href="https://hackerpublicradio.org/eps/hpr4689/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4688: Downloading Podcasts with a Shell Script]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.






01 Introduction






In this episode I will describe techniques for downloading podcasts using basic shell commands such as wget. 


I will illustrate this using a bash script that can be used to download HPR podcasts.


Even if you d...]]></description>
<link>https://tsecurity.de/de/3685037/it+sicherheit/it+podcasts/hpr4688+downloading+podcasts+with+a+shell+script/</link>
<pubDate>Wed, 22 Jul 2026 02:06:46 +0200</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>

<p>

</p>

<p>
01 Introduction</p>

<p>

</p>

<p>
In this episode I will describe techniques for downloading podcasts using basic shell commands such as wget. </p>

<p>
I will illustrate this using a bash script that can be used to download HPR podcasts.</p>

<p>
Even if you do not have any interest in downloading your podcasts using this method, you may find some of the methods useful or interesting.</p>

<p>
It is the principles that are discussed here that are important, rather than the implementation. </p>

<p>

</p>

<p>
02</p>

<p>
I realize that there are already a number of different podcast download programs available,  including at least one written in bash. </p>

<p>
However, you may feel that none of these suit how you wish to do things and want to create your own system tailored to your specific needs.</p>

<p>
If so, then I hope the following is of some use to you.</p>

<p>
If not, then you may still find some of the things discussed here to still be of interest.</p>

<p>

</p>

<p>
Some of the subjects I cover include</p>

<p>
wget to a user defined file name.</p>

<p>
parsing xml with xmllint.</p>

<p>
using inotifywait to trigger an action when a file is created or modified.</p>

<p>
using notify-send to send a message to the notification area.</p>

<p>
and</p>

<p>
a way of allowing a cron job to send a message to the user interface.</p>

<p>

</p>

<p>

</p>

<p>

</p>

<p>
03 Background</p>

<p>

</p>

<p>
There has been an ongoing discussion in comments to some HPR episodes about problems downloading HPR podcast episodes. </p>

<p>
Apparently some people have been experiencing problems with the way the episode URLs are structured. </p>

<p>

</p>

<p>
04</p>

<p>
I am afraid that I don't fully understand the nature of these problems, so I won't  be addressing that problem directly.</p>

<p>
Instead, I will present a bash script that I have written which can be used to download HPR podcasts.</p>

<p>
This bash script can be run using cron to automatically fetch new HPR podcasts and save them to a designated directory.</p>

<p>
This is a simplified version of a script that I have used for years to download HPR and other podcasts.</p>

<p>

</p>

<p>
05</p>

<p>
I won't try to read the full bash script out in this podcast, as that would be a bit dull to listen to.</p>

<p>
I will instead describe what each section does and why I chose to do things that way.</p>

<p>
Perhaps other people can offer suggestions of better ways to do things.</p>

<p>
I will post the full bash script in the show notes.</p>

<p>

</p>

<p>

</p>

<p>

</p>

<p>
06 Fetching Podcasts</p>

<p>

</p>

<p>
The standard way of distributing podcasts is to publish an RSS feed containing URL links to the audio files.</p>

<p>
RSS is a very long established and widely supported mechanism for this and other purposes.</p>

<p>
An RSS feed is basically an XML document which can be accessed over HTTP.</p>

<p>
These URLs contained in the RSS XML document can then be used to download the actual audio files, such as MP3 or OGG files.</p>

<p>

</p>

<p>
07</p>

<p>
Basically what we need to do is the following</p>

<p>

</p>

<p>
• Download the RSS XML document.</p>

<p>
• Extract the URL links to the audio files.</p>

<p>
• Compare the list of these links to a previously saved list to see which ones are new and which ones are ones that we previously downloaded.</p>

<p>

</p>

<p>
08</p>

<p>
• Make a list of the new URLs.</p>

<p>
• Go through this list of new URLs and download each of the new audio files.</p>

<p>
• Check to see that we actually received the new audio file.</p>

<p>
• Add the URLs of the files we successfully downloaded to our saved list of podcast URLs</p>

<p>

</p>

<p>
09</p>

<p>
In addition to this, we would like to have the above happen automatically in the background without our having to take any action on our own.</p>

<p>
We may wish to receive a notification of when a new podcast has arrived however.</p>

<p>
We would probably also wish to receive notification of any errors or failures.</p>

<p>

</p>

<p>

</p>

<p>

</p>

<p>
10 Fetching Podcasts - The Preliminaries</p>

<p>

</p>

<p>
Our desire to be able to run the script automatically imposes some requirements on our solution.</p>

<p>
To schedule the script we will use cron.</p>

<p>
Cron is a Linux facility to run scripts on a schedule.</p>

<p>

</p>

<p>
11</p>

<p>
One of the side effects of using cron however is  that we need to specify the full path to the locations where we intend to keep any data files, plus also the full path to where we intend to put the downloaded podcasts.</p>

<p>

</p>

<p>
12</p>

<p>
So the first thing we need to do in our script is to specify a number of different values for things like file location, the URL for the HPR RSS feed, and several other things as well.</p>

<p>

</p>

<p>
I will skip over the details of these, although I may make reference to them later.</p>

<p>

</p>

<p>

</p>

<p>

</p>

<p>
13 Get the RSS Data</p>

<p>

</p>

<p>
The first thing of real substance to do is to fetch the current RSS feed data.</p>

<p>
I have put this in a bash function called getrssurldata</p>

<p>

</p>

<p>
The contents of this function are a one liner, but with a number of elements chained together through pipes.</p>

<p>

</p>

<p>
14 Downloading the RSS XML Document</p>

<p>
• First we use wget, which is a standard command on most Linux distros.</p>

<p>
• We specify four things.</p>

<p>
• First we set a timeout. I have chosen 20 seconds.</p>

<p>
• Next we set the retry limit. I have chosen 3.</p>

<p>

</p>

<p>
15</p>

<p>
• Then we specify that the output of wget is sent to stdout rather than saved as a file.</p>

<p>
• This is done by using the -O option followed by a space and then a dash.</p>

<p>
• The O option is usually used to specify a file to save the output to, but when used with a dash causes output to go to stdout.</p>

<p>
• Then we specify the URL of the HPR RSS feed.</p>

<p>

</p>

<p>
16 Contents of the XML Document</p>

<p>
This gives us the HPR RSS XML document. </p>

<p>
There are about 5,000 lines in this RSS document.</p>

<p>
Most of those lines are the show notes which are also included in the feed.</p>

<p>

</p>

<p>
17 Extracting the Podcast Episode URLs</p>

<p>
There are only 10 lines of the document that contain information that we are interested in however.</p>

<p>
These lines are enclosed in "enclosure" XML tags. </p>

<p>
We just need to find those lines and separate out the URLs</p>

<p>

</p>

<p>
18 Standard Command Line Tools</p>

<p>
There are two ways that we can do this.</p>

<p>
One is to use a combination of grep, sed, and cut.</p>

<p>
Grep can find the lines containing the enclosure tags.</p>

<p>
Sed and cut can extract the URL from the surrounding extraneous data. </p>

<p>

</p>

<p>
19</p>

<p>
However, this method does not discriminate between real enclosure tags in the data portion of the RSS feed and enclosure tags in the show notes which are included in the feed from episodes such as this one.</p>

<p>
This may be an acceptable problem in practical terms, but we can do better.</p>

<p>

</p>

<p>
20 Using an XML Parser</p>

<p>
The other method is to actually parse the XML document.</p>

<p>
there are at least two command line XML parsers that I am aware of.</p>

<p>
These are "xmllint", and "xlmstarlet".</p>

<p>
I have used xmllint in this example.</p>

<p>
I have not used xmlstarlet, so I can't offer any comment on how easy or difficult to use it is.</p>

<p>

</p>

<p>
21</p>

<p>
I won't give a detailed explanation of all the things that xmllint can do.</p>

<p>
It has many features, most of which, as the name suggests, have to do with finding formatting problems with the XML itself.</p>

<p>
Describing everything it can do would be at least one episode in itself. </p>

<p>
I will instead just give the particular command used and explain each element of it.</p>

<p>

</p>

<p>
22</p>

<p>
In this example assume that we are piping the output of wget directly into xmllint.</p>

<p>
The complete command is</p>

<p>

</p>

<p>
xmllint --xpath "//channel/item/enclosure/@url" - | cut -d'"' -f2</p>

<p>

</p>

<p>
23</p>

<p>
In this example,</p>

<p>
xmllint is the name of the command.</p>

<p>
--xpath tells it to parse the document according to the string which follows.</p>

<p>
"//channel/item/enclosure/@url" tells it to find a series of tags in the hierarchy of channel, followed by item, followed by enclosure, and then extract the url attribute from the enclosure tag.</p>

<p>
The "-" which follows tells it to look for input from stdin rather than from a file.</p>

<p>

</p>

<p>
24</p>

<p>
The result is a string which has the url attribute name, an equal sign, and the URL that we want enclosed in quotes.</p>

<p>
To get just the URL itself, we pipe the output from xmllint into cut, using the doublequote characters as delimiters.</p>

<p>
We then save the result in a temporary file.</p>

<p>

</p>

<p>

</p>

<p>

</p>

<p>

</p>

<p>

</p>

<p>
25 Finding the New Episodes</p>

<p>

</p>

<p>
Next we wish to find the new podcast episodes.</p>

<p>
Each HPR episode is identified by a unique URL.</p>

<p>
This means that if we save the URLs of episodes that we have already downloaded, we just have to look for the URLs that do not appear in this saved list.</p>

<p>

</p>

<p>
https://hub.hackerpublicradio.org/ccdn.php?filename=/eps/hpr4659/hpr4659.mp3</p>

<p>

</p>

<p>
26</p>

<p>
The easiest way to do this is to take our two lists of URLs, sort each into temporary files, and then compare the sorted URLs using the "comm" command.</p>

<p>

</p>

<p>
27</p>

<p>
This is simple, but has a drawback.</p>

<p>
Some podcasts occasionally change distributors.</p>

<p>
When they do this, the old podcasts are re-published with new URLs and you end up downloading a lot of old episodes over again.</p>

<p>

</p>

<p>
28</p>

<p>
With HPR we could get around this by extracting just the file name and looking for that instead of the full URL.</p>

<p>

</p>

<p>
I will however leave that problem as an exercise for the student and just accept that if the URL format changes we may end up downloading old episodes over again.</p>

<p>
Since the feed has a maximum of only 10 episodes in it however, that isn't really that big of a problem.</p>

<p>
It would be more of a problem with podcasts which have very large numbers of episodes in their feed, but the solutions to those will be feed specific. </p>

<p>

</p>

<p>

</p>

<p>

</p>

<p>
29 Downloading the New Podcasts</p>

<p>

</p>

<p>
We should now have a list of URLs for the new podcasts we do not already have. </p>

<p>
Typically this should be only one file, but there could be several, or even as many as 10, if we have not turned on our computer in a while.</p>

<p>

</p>

<p>
Therefore, we need to iterate through the file of new podcast URLs and download each one.</p>

<p>

</p>

<p>
30</p>

<p>
Before we do that however, we should check to see if there is in fact anything new to download.</p>

<p>
To do this, simply use "wc -l" to count the number of lines in the list of new URLs and save the resulting number.</p>

<p>

</p>

<p>
31</p>

<p>
If this number is zero, there is nothing to download, we can skip the download step. </p>

<p>
As an additional check, we should see if the number of downloads exceeds some threshold value that we wish to set.</p>

<p>
This is not a major problem with HPR, but some podcasts have hundreds of files in their RSS feed rather than just the most recent ones.</p>

<p>
If we do exceed our download limit, then we need to log an error and skip downloading. </p>

<p>

</p>

<p>
32</p>

<p>
Assuming there are no problems so far however, the first thing we need to do is to extract the name of the audio file from the URL.</p>

<p>
We can do that using the "basename" command.</p>

<p>
We will use this to specify the name that we use when we save the audio file. </p>

<p>

</p>

<p>
33</p>

<p>
HPR has a very well formed file name. </p>

<p>
Some podcasts do not however, and for those you would need to construct some sort of suitable name either using information found in the URL or simply creating a name using a time stamp. </p>

<p>

</p>

<p>
34</p>

<p>
Next we download the audio file using wget.</p>

<p>

</p>

<p>
This is similar to how we downloaded the RSS feed, but with a few changes.</p>

<p>
One is that I have increased the timeout to 90 seconds. </p>

<p>
This may not have been necessary, but seemed like a good idea.</p>

<p>

</p>

<p>
35</p>

<p>
The next is that when specifying the output file name using -O, we use the file name we extracted from the URL.</p>

<p>

</p>

<p>
The third is that we specify a destination directory using the -P option. </p>

<p>

</p>

<p>
36</p>

<p>
After wget has finished, including any retries that it had to do, we next check that the expected new file is both present and not empty.</p>

<p>
We did this using an "if" statement with the "-s" option.</p>

<p>

</p>

<p>
If the file was found and not zero, then we add that URL to a temporary list of downloaded URLs.</p>

<p>

</p>

<p>
37</p>

<p>
If the file was not present, or was zero length, we output an error message to an error log. </p>

<p>
I will come back to this point later.</p>

<p>

</p>

<p>
38</p>

<p>
Next, if there is more that one podcast to download we sleep for 3 seconds. </p>

<p>
While not strictly necessary, it is considered to be "polite" to not hammer a server repeatedly, but rather to put a small delay between file downloads..</p>

<p>

</p>

<p>
39</p>

<p>
After we have downloaded all the audio files in our list, we can add the list of URLs for the files downloaded to the permanent list.</p>

<p>
While we are at it, we should use "tail" to trim the permanent log to keep it from growing indefinitely.</p>

<p>
This limit should be several times bigger than the number of files in the RSS feed. </p>

<p>
In this case I selected 50. </p>

<p>

</p>

<p>
40</p>

<p>
Finally we write any errors to the permanent error log, and also write these same errors to another file used to signal errors for display to the user.</p>

<p>

</p>

<p>
We have now successfully downloaded at least one HPR podcast.</p>

<p>

</p>

<p>

</p>

<p>

</p>

<p>
41 Notify the User of Events</p>

<p>

</p>

<p>
It would be convenient to be informed of new podcast downloads when they occur, and also be notified of any errors.</p>

<p>

</p>

<p>
One of the limitations of cron jobs is that they cannot access the user interface.</p>

<p>
This means that we cannot readily send a message directly to the notification system to inform the user of the presence of new podcasts or of errors.</p>

<p>

</p>

<p>
42 inotifywait</p>

<p>
The solution to this is to use "inotifywait" to monitor particular files and directories for changes.</p>

<p>

</p>

<p>
The man page for inotifywait states the following - </p>

<p>

</p>

<p>
43</p>

<p>
inotifywait  efficiently  waits for changes to files using Linux's inotify(7) interface.  It is suitable for waiting  for  changes  to  files from  shell  scripts.  It can either exit once an event occurs, or continually execute and output events as they occur.</p>

<p>

</p>

<p>
End of quote.</p>

<p>

</p>

<p>
44</p>

<p>
In many Linux distros, inotifywait is provided by the "inotify-tools" package.</p>

<p>

</p>

<p>
I won't go over all the features of inotifywait. </p>

<p>
Instead, I will just describe how to use it for our purposes here.</p>

<p>

</p>

<p>
45 inotifywait Modes</p>

<p>

</p>

<p>
I should point out first though that inotifywait operates in two different modes.</p>

<p>
In the normal default mode, it exits after being triggered by an event and must be re-established again in order to resume monitoring.</p>

<p>
In monitor mode, which is enabled by using the "-m" option, it runs indefinitely, responding to events.</p>

<p>
I will use the default mode here.</p>

<p>

</p>

<p>
46</p>

<p>
The man page for inotifywait provides a simple example that we could copy and modify for our purposes.</p>

<p>
A great many examples that you  will find are based on this example.</p>

<p>
However, it doesn't quite do what we want, so we need to change a few things.</p>

<p>

</p>

<p>
47 podfetchnotify</p>

<p>
The first shell script is one which monitors for the arrival of new podcasts and sends a notification to the user.</p>

<p>
I will call this "podfetchnotify".</p>

<p>
The complete scripts are in the show notes, I will just provide a brief description here.</p>

<p>

</p>

<p>
48 Setting Up Event Watches Using  inotifywait</p>

<p>
The script is enclosed in a while loop which run indefinitely.</p>

<p>
In the first line inside the while loop, we call inotifywait.</p>

<p>
inotifywait will then block until the event it is told to look for occurs.</p>

<p>
In short, execution of the script will wait there until an event occurs.</p>

<p>

</p>

<p>
49</p>

<p>
The names of the events are listed in the man file.</p>

<p>
In this case we are looking for "modify", "create", and "moved_to".</p>

<p>
Each of these does pretty much as you would expect, reacting to modifying an existing file, creating a new file, or moving a file to that directory.</p>

<p>

</p>

<p>
50 Problems When Testing Using Text Editors</p>

<p>
I should point out that if you are testing a script which uses inotifywait, then modifying a file with a text editor may not produce the results that you may think it would. </p>

<p>
Instead it treats this as a new file with the same name, with the original file being erased.</p>

<p>
Since inotifywait attaches itself to the inode rather than the filename, it sees the file that the text editor changed as being a new file.</p>

<p>
If you wish to test this realistically, then use "echo" to overwrite the file by using I/O redirection.</p>

<p>

</p>

<p>
51 Capturing Output</p>

<p>
In my example I capture the output from standard out into a variable, but I don't do anything with it.</p>

<p>
If you wish to for example display the name of the newly downloaded podcast file, then use the --format option along with an appropriate formatting code. </p>

<p>
There are details about this in the man page.</p>

<p>

</p>

<p>
On the next line we capture the exit code using "$?"</p>

<p>

</p>

<p>
52 Responding to Exit Codes</p>

<p>
If the exit code was zero, then a monitored event was triggered and there should a new podcast in the directory.</p>

<p>
In this case we display a message indicating that a new podcast has arrived.</p>

<p>
I will describe how to send notifications shortly. </p>

<p>

</p>

<p>
If the exit code was not zero, then an error occurred.</p>

<p>
An example of such an error would be if the directory were not present when monitoring was started.</p>

<p>
In this case we display a message indicating that a fatal error has occurred and then exit.</p>

<p>

</p>

<p>
53 Delay for More Podcasts</p>

<p>
Finally, we use "sleep" to wait for some arbitrary period of time to prevent notifications from being triggered multiple times if several podcasts were being downloaded in succession.</p>

<p>
In this case I chose to wait for 60 seconds.</p>

<p>

</p>

<p>
54</p>

<p>
We have now completed the process and can return to the top of the loop and resume waiting using inotifywait.</p>

<p>

</p>

<p>
55 Sending Notifications to the User</p>

<p>
I mentioned above about sending notification messages to the user.</p>

<p>
In the Gnome desktop, notification messages appear from the centre of the top bar in a list.</p>

<p>
Other desktops or operating systems may have something similar.</p>

<p>

</p>

<p>
56</p>

<p>
To send a notification message to the notification area, you use the "notify-send" command.</p>

<p>
Simply follow notify-send with a quoted string and it will be displayed in the notification area. </p>

<p>

</p>

<p>

</p>

<p>
57 podfetcherrornotify</p>

<p>
The second shell script is one which notifies the user of errors.</p>

<p>
I will call this "podfetcherrornotify".</p>

<p>
With this shell script we set up a watch on a file which contains any error messages from podfetch.</p>

<p>
This script is very similar to podfetchnotify.</p>

<p>

</p>

<p>
58</p>

<p>
The exceptions are</p>

<p>
With inotifywait we only monitor for "modify".</p>

<p>
There is no sleep command at the end of the loop.</p>

<p>
Instead we sleep for a few seconds just after getting the exit code from inotifywait.</p>

<p>
This helps prevent problems caused by race conditions.</p>

<p>

</p>

<p>
59</p>

<p>
Next we check the inotifywait exit code.</p>

<p>
If it was zero, then we read the error report file and send a notification message to the user containing that error message.</p>

<p>

</p>

<p>
60</p>

<p>
If it was not zero, then we check to make sure that the directory that should contain the error log exists.</p>

<p>
If it does not exist, then we send a notification message to that effect to the user and terminate the script.</p>

<p>

</p>

<p>
61</p>

<p>
If the directory exists, then we check to see if the error message file used for signalling exists.</p>

<p>
If the file does not exist, then we create it.</p>

<p>

</p>

<p>
62</p>

<p>
One of the reasons for an inotifywait error is that if the file that it is told to monitor does not exist, it cannot set up a watch condition.</p>

<p>
By creating the file we correct the cause of the error and allow  inotifywait to operate normally.</p>

<p>

</p>

<p>
63</p>

<p>
Finally we increment an error counter and check to see if the limit is exceeded.</p>

<p>
If there are excessive errors, then send a notification message to the user and exit.</p>

<p>
The reason for this is to give the user an indication that the error notifications are not working for some reason and there may be a problem that needs looking into.</p>

<p>

</p>

<p>
64</p>

<p>
The error counter is reset every time the inotifywait exit status is ok, so occasional unexpected glitches should be something that is ignored.</p>

<p>
Of course podcast fetching errors are something that will probably happen only rarely if at all, so this final step may be seen as an unnecessary embellishment. </p>

<p>

</p>

<p>

</p>

<p>

</p>

<p>

</p>

<p>
65 Installing the Scripts</p>

<p>

</p>

<p>
Next I will describe how to install and prepare the scripts to run.</p>

<p>
We need to perform the following steps.</p>

<p>

</p>

<p>
66</p>

<p>
• First, we need to create a directory to hold the scripts and their associated data files.</p>

<p>
• Next we need to create a directory to hold the downloaded podcasts.</p>

<p>
• Then we must copy the scripts to these directories and make them executable. </p>

<p>
• Then, we must edit the scripts to have the file path in the script match the locations of the new directories that we created.</p>

<p>

</p>

<p>
67</p>

<p>
• Then we need to install xmllint, or alternatively modify the download script to comment out the use of xmllint and enable the alternative method using grep and sed instead.</p>

<p>
• Then we need to run each script manually from the command line to check for errors.</p>

<p>
• If podfetch ran correctly, it should download the most recent 10 podcasts during this test.</p>

<p>

</p>

<p>
68 Adding podfetch to the Crontab</p>

<p>
The above describes how to run the scripts manually.</p>

<p>
In order to fetch podcasts automatically, we need to add the podfetch script to the cron schedule.</p>

<p>
To do this, open a terminal.</p>

<p>

</p>

<p>
69</p>

<p>
Type "crontab -e", and then press return.</p>

<p>
A text editor should open up containing the crontab file.</p>

<p>
On Ubuntu, this editor is GNU nano.</p>

<p>
Enter the appropriate cron parameters.</p>

<p>
I will provide an example here for running it 12 minutes past the hour every three hours.</p>

<p>

</p>

<p>
70</p>

<p>
12 */3 * * *  /home/username/pathtofiles/podfetch.sh</p>

<p>

</p>

<p>
71</p>

<p>
I won't explain cron in detail here.</p>

<p>
The example that I have just given should be good enough for most people.</p>

<p>
The "*/3" parameter will cause it to run every three hours.</p>

<p>
The "12" parameter will cause it to run 12 minutes past the hour when it does run.</p>

<p>

</p>

<p>
72</p>

<p>
Checking every three hours should be good enough for most people, but you can adjust that as you see fit.</p>

<p>
I would recommend however that you don't check more frequently than once per hour.</p>

<p>
Checking more frequently than necessary puts extra load on the distribution servers. </p>

<p>
It is very unlikely that you really do need each new episode the moment it is available. </p>

<p>

</p>

<p>
73</p>

<p>
I would also recommend changing the "12" parameter to some other random minute value.</p>

<p>
I would suggest avoiding on the hour or on the half hour, as a lot of other people are probably checking at those times, and it would be better to spread the load out more evenly over time.</p>

<p>

</p>

<p>
74</p>

<p>
The file path parameter should of course match the actual path to wherever you have located the script, including the correct user name.</p>

<p>

</p>

<p>
75 Making the Notification Scripts Start Automatically</p>

<p>
The two notification scripts can be made to start automatically.</p>

<p>
The exact method to do this may vary according to distribution or desktop.</p>

<p>

</p>

<p>
76</p>

<p>
On Ubuntu this is done using the Startup Applications Preferences GUI program, which should come already installed.</p>

<p>

</p>

<p>
77</p>

<p>
I won't go into details on this here, it should be fairly self evident how to use it once you see it.</p>

<p>
What this program does is to create ".desktop" files in the ".config/autostart" directory in your home directory.</p>

<p>

</p>

<p>
78</p>

<p>
These ".desktop" files are all run automatically on start up.</p>

<p>
Once you have added the notification scripts, you will need to log out and then log back in to make them active.</p>

<p>

</p>

<p>

</p>

<p>

</p>

<p>

</p>

<p>
79 Conclusion</p>

<p>

</p>

<p>
I this episode I explained how to write a set of simple shell scripts to automatically download each new episode of HPR as it comes out and to notify you of its arrival. </p>

<p>

</p>

<p>
80</p>

<p>
The download script described here is tailored specifically for use with HPR only.</p>

<p>
However, it was derived from a larger script that downloaded other podcasts as well, based on information read in from a text file.</p>

<p>
If you are feeling ambitious, you can add those features back into this to handle all of the podcasts that you listen to.</p>

<p>

</p>

<p>
81</p>

<p>
In a comment to another episode of HPR I had said that I would cover ID3 tags in MP3 files, but this episode is long enough now, so I will leave that subject for later.</p>

<p>

</p>

<p>
I look forward to seeing you again later on another episode of Hack Public Radio.</p>

<p>

</p>

<p>

</p>

<p>
# ======================================================================</p>

<p>

</p>

<p>
podfetchdownloader</p>

<p>

</p>

<p>
#!/bin/bash</p>

<p>

</p>

<p>
# Fetch pending HPR podcasts listed in the HPR RSS feed.</p>

<p>
# 8-Jun-2026</p>

<p>
# Licensed under GPLv3 or later.</p>

<p>

</p>

<p>
# ======================================================================</p>

<p>

</p>

<p>

</p>

<p>
# Today's date and time as YYYYMMDDHHMMSS. </p>

<p>
podttimestamp=$( date +"%Y%m%d%H%M%S" )</p>

<p>

</p>

<p>
# The absolute path to the script. This is necessary when running it</p>

<p>
# using a cron job.</p>

<p>
podpath="/home/me/Apps/hprfetch"</p>

<p>

</p>

<p>
# This is the absolute path to where to store the podcast files.</p>

<p>
podfilepath="/home/me/Music/Podcasts/HPR"</p>

<p>

</p>

<p>
# Create the full path names here for all the text files used.</p>

<p>
podcastsfetched="$podpath/podcastsfetched.txt"</p>

<p>
poderrorslog="$podpath/poderrorslog.txt"</p>

<p>
poderrorsreport="$podpath/poderrorsreport.txt"</p>

<p>

</p>

<p>
tmpoldurlssorted="$podpath/tmpoldurlssorted.txt"</p>

<p>
tmppodsnew="$podpath/tmppodsnew.txt" </p>

<p>
tmppodstodownload="$podpath/tmppodstodownload.txt" </p>

<p>
tmppodserrors="$podpath/tmppodserrors.txt" </p>

<p>
tmppodcastsfetched="$podpath/tmppodcastsfetched.txt"</p>

<p>
tmplog="$podpath/tmplog.txt"</p>

<p>

</p>

<p>
# The URL for the HPR RSS feed.</p>

<p>
PodURL="http://hackerpublicradio.org/hpr_rss.php"</p>

<p>

</p>

<p>
# Limit on number of podcasts to download.</p>

<p>
DownloadLimit=11</p>

<p>

</p>

<p>
# Name of the podcast.</p>

<p>
PodName="Hacker Public Radio"</p>

<p>

</p>

<p>
# ======================================================================</p>

<p>

</p>

<p>
# Check if the required paths exist.</p>

<p>
# If this path does not exist, cannot log the error.</p>

<p>
if [[ ! -d "$podpath/" ]]; then</p>

<p>
	echo "$podttimestamp Error - Could not find $podfilepath."</p>

<p>
	exit 1</p>

<p>
fi</p>

<p>

</p>

<p>
# Where to store the podcast file fetched.</p>

<p>
if [[ ! -d "$podfilepath/" ]]; then</p>

<p>
	echo "$podttimestamp Error - Could not find $podfilepath." &gt;&gt; $tmppodserrors</p>

<p>
	# Copy the errors log from the temporary errors file to the permanent files.</p>

<p>
	LogErrors</p>

<p>
	exit 1</p>

<p>
fi</p>

<p>

</p>

<p>
# ======================================================================</p>

<p>

</p>

<p>
# Check if the podcast log exists. We read it before we write to it,</p>

<p>
# so it must exist or we will hang on it not being present.</p>

<p>
if [[ ! -e $podcastsfetched ]]; then</p>

<p>
	touch $podcastsfetched</p>

<p>
fi</p>

<p>

</p>

<p>

</p>

<p>
# ======================================================================</p>

<p>

</p>

<p>
# Delete the specified files if they exist.</p>

<p>
# This accepts multiple file names in a variable number of parameters.</p>

<p>
CleanupFiles ()</p>

<p>
{</p>

<p>
	# $@ accepts multiple parameters.</p>

<p>
	for f in "$@"; do</p>

<p>
		# Check if the file exists.</p>

<p>
		if [ -e "$f" ]; then</p>

<p>
			rm "$f"</p>

<p>
		fi</p>

<p>
	done</p>

<p>
}</p>

<p>

</p>

<p>
# ======================================================================</p>

<p>

</p>

<p>
# Copy the errors log from the temporary errors file to the permanent files.</p>

<p>
LogErrors () {</p>

<p>
	if [ -e $tmppodserrors ]; then</p>

<p>
		# The permanent log.</p>

<p>
		cat $tmppodserrors &gt;&gt; $poderrorslog</p>

<p>
		# This file is monitored for display by other scripts.</p>

<p>
		cat $tmppodserrors &gt; $poderrorsreport</p>

<p>
	fi</p>

<p>
}</p>

<p>

</p>

<p>

</p>

<p>
# ======================================================================</p>

<p>

</p>

<p>

</p>

<p>
# Get the URL data from an RSS feed</p>

<p>
GetRSSURLData () {</p>

<p>

</p>

<p>
	wget --timeout=20 --tries=3 -O - "$PodURL" \</p>

<p>
	| xmllint --xpath "//channel/item/enclosure/@url" - | cut -d'"' -f2 \</p>

<p>
	| sort &gt; $tmppodsnew</p>

<p>

</p>

<p>
	# This is an alternate method that does not use xmllint.</p>

<p>
	# However, it is not as robust. If someone were to include the</p>

<p>
	# first grep search pattern in their show notes, then it would</p>

<p>
	# look for that as a valid tag and output the following text</p>

<p>
	# as a URL.</p>

<p>
	#wget --timeout=20 --tries=3 -O - "$PodURL" | grep "&lt;enclosure url=" \</p>

<p>
	#	| sed -n 's/^.*enclosure//p' | sed -n 's/^.*url=//p' \</p>

<p>
	#	| cut -d'"' -f2 | sort &gt; $tmppodsnew</p>

<p>

</p>

<p>

</p>

<p>
}</p>

<p>

</p>

<p>

</p>

<p>
# ======================================================================</p>

<p>

</p>

<p>
# Find which podcasts we do not already have.</p>

<p>
FindNewPodcasts () {</p>

<p>

</p>

<p>

</p>

<p>
	cat $podcastsfetched | sort &gt; $tmpoldurlssorted</p>

<p>
	comm -13 $tmpoldurlssorted $tmppodsnew &gt; $tmppodstodownload</p>

<p>

</p>

<p>
	rm $tmpoldurlssorted</p>

<p>

</p>

<p>
}</p>

<p>

</p>

<p>
# ======================================================================</p>

<p>

</p>

<p>
# Download the podcasts.</p>

<p>
DownloadPodcasts() {</p>

<p>

</p>

<p>
	# Clear out previous temporary list of downloaded podcasts.</p>

<p>
	true &gt; $tmppodcastsfetched</p>

<p>

</p>

<p>

</p>

<p>
	for i in $( cat $tmppodstodownload )</p>

<p>
	do</p>

<p>

</p>

<p>
		# Extract the file name from the URL.</p>

<p>
		fname=$( basename $i )</p>

<p>
		outputpodname="$podfilepath/$fname"</p>

<p>

</p>

<p>
		# Download the file.</p>

<p>
		wget --timeout=90 --tries=3 -P $podfilepath $i -O "$outputpodname"</p>

<p>

</p>

<p>
		# Check if the file exists and is not empty.</p>

<p>
		if [[ -s "$outputpodname" ]]; then</p>

<p>
			echo $i &gt;&gt; $tmppodcastsfetched</p>

<p>
		else</p>

<p>
			echo "$podttimestamp Error - $outputpodname was not found or is empty." &gt;&gt; $tmppodserrors</p>

<p>
		fi</p>

<p>

</p>

<p>

</p>

<p>
		# Delay a reasonable length of time between multiple downloads.</p>

<p>
		if (( $PodCount &gt; 1 )); then </p>

<p>
			sleep 3</p>

<p>
		fi</p>

<p>

</p>

<p>
	done</p>

<p>

</p>

<p>
	# Add the list of files downloaded to the log.</p>

<p>
	# Check if the list exists and is not empty.</p>

<p>
	if [ -s $tmppodcastsfetched ]; then</p>

<p>
		cat $tmppodcastsfetched &gt;&gt; $podcastsfetched</p>

<p>
		# Trim the log file to keep it from growing indefinitely.</p>

<p>
		tail -n50 $podcastsfetched &gt; $tmplog</p>

<p>
		mv $tmplog $podcastsfetched</p>

<p>
	fi</p>

<p>

</p>

<p>
	# Remove the tmp file now that we are done with it.</p>

<p>
	rm $tmppodcastsfetched</p>

<p>

</p>

<p>
}</p>

<p>

</p>

<p>

</p>

<p>
# ======================================================================</p>

<p>

</p>

<p>
# Clean up any left over files.</p>

<p>
CleanupFiles "$tmppodsnew" "$tmppodstodownload" "$tmppodserrors" "$tmppodcastsfetched"</p>

<p>

</p>

<p>

</p>

<p>
# Get the RSS data.</p>

<p>
GetRSSURLData</p>

<p>

</p>

<p>
# Find which podcasts are new.</p>

<p>
FindNewPodcasts</p>

<p>

</p>

<p>
# Count how many new podcasts there are.</p>

<p>
PodCount=$( cat $tmppodstodownload | wc -l )</p>

<p>

</p>

<p>

</p>

<p>
# If no podcasts to download, skip this.</p>

<p>
# If too many podcasts for this feed, then log an error and skip.</p>

<p>
# This error will keep repeating until something is done about it.</p>

<p>
if (( $PodCount &gt; 0 )); then </p>

<p>
	if (( $PodCount &gt; $DownloadLimit )); then </p>

<p>
		echo "$podttimestamp Too many podcasts for $PodName : $PodCount." &gt;&gt; $tmppodserrors		</p>

<p>
	else</p>

<p>
		# Download the podcasts listed in the temp file.</p>

<p>
		DownloadPodcasts</p>

<p>
	fi</p>

<p>
fi</p>

<p>

</p>

<p>
# ======================================================================</p>

<p>

</p>

<p>
# Copy the errors log from the temporary errors file to the permanent files.</p>

<p>
LogErrors</p>

<p>

</p>

<p>
# Clean up temp files.</p>

<p>
CleanupFiles "$tmppodsnew" "$tmppodstodownload" "$tmppodserrors" "$tmppodcastsfetched"</p>

<p>

</p>

<p>
# ======================================================================</p>

<p>

</p>

<p>
END OF FIRST SHELL SCRIPT</p>

<p>

</p>

<p>

</p>

<p>
START OF SECOND SHELL SCRIPT</p>

<p>

</p>

<p>
podfetchnotify</p>

<p>

</p>

<p>

</p>

<p>

</p>

<p>
#!/bin/bash</p>

<p>

</p>

<p>
# Part of Podfetch.</p>

<p>
# This monitors for new files appearing in the new podcasts directory.</p>

<p>
# This should be run as a background task.</p>

<p>
# Install it using the "Startup Applications" utility in Ubuntu.</p>

<p>

</p>

<p>
# ======================================================================</p>

<p>

</p>

<p>
# Path where new podcasts are to be stored.</p>

<p>
podfilepath="/home/me/Music/Podcasts/HPR"</p>

<p>

</p>

<p>
# ======================================================================</p>

<p>

</p>

<p>
# Wait for the podcast directory to be modified.</p>

<p>
while true; do</p>

<p>

</p>

<p>
	# Check for new files.</p>

<p>
	errmsg=$( inotifywait -e modify -e create -e moved_to $podfilepath )</p>

<p>
	result=$?</p>

<p>

</p>

<p>

</p>

<p>
	# Check if exited due to new podcast, or if some error.</p>

<p>
	if (( result == 0 )); then</p>

<p>
		# Success, signal new podcast.</p>

<p>
		notify-send "New HPR podcast available."</p>

<p>
	else</p>

<p>
		# Check to make sure the directory exists.</p>

<p>
		# If it doesn't exist, there isn't much we can do to fix it.</p>

<p>
		if [ ! -e "$poderrorspath" ]; then</p>

<p>
			notify-send "Podfetch error: Podcast directory not found $poderrorspath"</p>

<p>
			exit 1</p>

<p>
		fi</p>

<p>
	fi</p>

<p>

</p>

<p>
	# Wait a bit so that multiple new files don't keep re-triggering the notification.</p>

<p>
	sleep 60</p>

<p>

</p>

<p>
done</p>

<p>

</p>

<p>
# ======================================================================</p>

<p>

</p>

<p>
END OF SECOND SHELL SCRIPT</p>

<p>

</p>

<p>

</p>

<p>
START OF THIRD SHELL SCRIPT</p>

<p>

</p>

<p>
podfetcherror</p>

<p>
Created Tuesday 23 June 2026</p>

<p>

</p>

<p>
#!/bin/bash</p>

<p>

</p>

<p>
# Part of Podfetch.</p>

<p>
# This monitors the Podfetch error reporting file for new errors.</p>

<p>
# This should be run as a background task.</p>

<p>
# Install it using the "Startup Applications" utility in Ubuntu.</p>

<p>

</p>

<p>
# ======================================================================</p>

<p>

</p>

<p>
# Where the Podfetch program error report file is located.</p>

<p>
poderrorspath="/home/me/Apps/hprfetch"</p>

<p>

</p>

<p>
# The full path and file name.</p>

<p>
poderrorsreport="$poderrorspath/poderrorsreport.txt"</p>

<p>

</p>

<p>
# ======================================================================</p>

<p>

</p>

<p>
# Error counter.</p>

<p>
errcount=0</p>

<p>

</p>

<p>
# Wait for the poderrorsreport file to be modified.</p>

<p>
while true; do</p>

<p>

</p>

<p>
	errmsg=$( inotifywait -e modify $poderrorsreport )</p>

<p>
	result=$?</p>

<p>

</p>

<p>
	# Wait a bit to ensure that writing to the file is complete.</p>

<p>
	sleep 3</p>

<p>

</p>

<p>
	if (( result == 0 )); then</p>

<p>
		# Get the latest error message.</p>

<p>
		# Cut out the date stamp at the start of the line and take the rest.</p>

<p>
		poderr=$( tail -n $poderrorsreport | cut -d" " -f2- )</p>

<p>

</p>

<p>
		notify-send "Podfetch error: $poderr"</p>

<p>

</p>

<p>
		# Reset the error counter every time there is a successful result.</p>

<p>
		errcount=0</p>

<p>

</p>

<p>
	else</p>

<p>
		# Check to make sure the directory exists.</p>

<p>
		if [ ! -e "$poderrorspath" ]; then</p>

<p>
			notify-send "Podfetch error: error report path not found $poderrorspath"</p>

<p>
			exit 1</p>

<p>
		fi</p>

<p>

</p>

<p>
		# Check if the file we are trying to monitor exists.</p>

<p>
		# If not, then create an empty file for error signaling.</p>

<p>
		if [ ! -e "$poderrorsreport" ]; then</p>

<p>
			echo &gt; $poderrorsreport</p>

<p>
		fi</p>

<p>

</p>

<p>
		# Increment the error counter.</p>

<p>
		count=$(( count + 1 ))</p>

<p>
		if (( count &gt; 3 )); then</p>

<p>
			notify-send "Podfetch error: Excessive unknown errors, exiting."</p>

<p>
			exit 1</p>

<p>
		fi</p>

<p>

</p>

<p>
	fi</p>

<p>

</p>

<p>
done</p>

<p>

</p>

<p>
# ======================================================================</p>

<p>

</p>

<p>

</p>


<p><a href="https://hackerpublicradio.org/eps/hpr4688/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[177: National Public Data]]></title>
<description><![CDATA[This is the story of the hacker known as "USDoD". When he was young he had a vengeance on the US, and this lead him down a road of continual data breaches, until he hacked into National Public Data, which is when his spree went one step too far.SponsorsSupport for this show comes from ThreatLocke...]]></description>
<link>https://tsecurity.de/de/3682878/it+sicherheit/it+podcasts/177+national+public+data/</link>
<pubDate>Tue, 21 Jul 2026 09:03:54 +0200</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This is the story of the hacker known as "USDoD". When he was young he had a vengeance on the US, and this lead him down a road of continual data breaches, until he hacked into National Public Data, which is when his spree went one step too far.</p><h3>Sponsors</h3><p>Support for this show comes from <a href="https://www.threatlocker.com/"><strong>ThreatLocker®</strong></a>. ThreatLocker® is a Zero Trust Endpoint Protection Platform that strengthens your infrastructure from the ground up. With ThreatLocker® Allowlisting and Ringfencing™, you gain a more secure approach to blocking exploits of known and unknown vulnerabilities. ThreatLocker® provides Zero Trust control at the kernel level that enables you to allow everything you need and block everything else, including ransomware! Learn more at <a href="https://www.threatlocker.com/"><strong>www.threatlocker.com</strong></a>.</p><p>This show is sponsored by <a href="http://mazehq.com/darknet"><strong>Maze</strong></a>. Maze uses AI agents to triage and remediate cloud vulnerabilities by figuring out what’s actually exploitable, not just what’s theoretically risky. They remove the noise, prioritize vulns that matter, and manage remediation, so your team stops wasting time on meaningless vulns. Visit <a href="http://mazehq.com/darknet"><strong>MazeHQ.com/darknet</strong></a> for more information.</p><p>This show is sponsored by <a href="https://sentry.io/"><strong>Sentry.IO</strong></a>. Sentry wants to help you monitor your environment for problems. They do error tracking, stack tracing, debugging, all so that your developers can diagnose, fix, and optimize the performance of their code. This makes it so developers ship more reliable code faster. Learn more at <a href="https://sentry.io/"><strong>sentry.io</strong></a>.</p><p><a href="https://darknetdiaries.com/sponsors/"><strong>View all active sponsors.</strong></a></p><h3>Sources</h3><p>Full list of sources on the show page: <a href="https://darknetdiaries.com/episode/177/"><strong>https://darknetdiaries.com/episode/177/</strong></a></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4687: UNIX Curio #11 - Merging Files]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.


ether


This series is dedicated to exploring little-known—and occasionally useful—trinkets lurking in the dusty corners of UNIX-like operating systems.


I frequently find myself reaching for the 
cut
 utility when writing scripts to extract o...]]></description>
<link>https://tsecurity.de/de/3682413/it+sicherheit/it+podcasts/hpr4687+unix+curio+11+-+merging+files/</link>
<pubDate>Tue, 21 Jul 2026 02:03:23 +0200</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>

<p>
ether</p>

<blockquote>
This series is dedicated to exploring little-known—and occasionally useful—trinkets lurking in the dusty corners of UNIX-like operating systems.</blockquote>

<p>
I frequently find myself reaching for the <code>
cut</code>
 utility when writing scripts to extract one piece of data from a line, or to select specific fields from a log file. While I am familiar with its counterpart, <code>
paste</code>
, I don't employ it very often because I don't typically need its functionality.</p>

<p>
This perhaps has to do with the fact that I rarely work with text files containing lists. For shorter lists, I usually end up using a spreadsheet and for larger ones, a relational database. Both are valuable tools with their own strengths and weaknesses, but it is good to also know about standard utilities for working with lists. After uploading UNIX Curio #8 (<a href="https://hackerpublicradio.org/eps/hpr4657/" rel="noopener noreferrer" target="_blank">
HPR episode 4657</a>
), I felt like maybe I had been too dismissive of the <code>
comm</code>
 utility in that episode and should talk more about tools that are useful when managing lists.</p>

<p>
I don't frequently find myself using <code>

<a href="https://pubs.opengroup.org/onlinepubs/9699919799/utilities/paste.html" rel="noopener noreferrer" target="_blank">
paste</a>

</code>

<sup>
1</sup>
, but can explain how it works. Briefly, it is a rough opposite of <code>
cut</code>
—when given multiple files as arguments, it assembles the first line from each one separated by tabs, then the second line, and so on. Instead of tabs, a different delimiter can be chosen with the <code>
-d</code>
 option. Another option is <code>
-s</code>
, which swaps rows and columns so that the contents of each named file would appear on one line. While <code>
paste</code>
 itself doesn't qualify as a UNIX Curio in my opinion, there is one feature that does: a hyphen can be given as an argument multiple times. In this special case, the output is taken line by line from standard input, but is spread across as many columns as there are hyphens.</p>

<p>

<em>
Example of using </em>

<code>

<em>
paste</em>

</code>

<em>
 to turn the output of </em>

<code>

<em>
ls</em>

</code>

<em>
 into columns. Because these columns are separated by tabs, they don't necessarily line up when a filename is eight or more characters long. The </em>

<code>

<em>
-1</em>

</code>

<em>
 is not required for the second </em>

<code>

<em>
ls</em>

</code>

<em>
 command since that behavior is implied when output isn't going to a terminal. The </em>

<code>

<em>
-C</em>

</code>

<em>
 option to </em>

<code>

<em>
ls</em>

</code>

<em>
 usually gives nicer-looking output on a terminal—also, it lists in ascending order down by column. (Most implementations default to </em>

<code>

<em>
-C</em>

</code>

<em>
 when output goes to a terminal.) If you want items ascending along rows like the </em>

<code>

<em>
paste</em>

</code>

<em>
 example does, try </em>

<code>

<em>
ls -x</em>

</code>

<em>
 instead.</em>

</p>

<pre data-language="plain">
$ ls -1 /proc/net
anycast6
arp
bnep
connector
dev
dev_mcast
dev_snmp6
fib_trie
fib_triestat
hci
icmp
icmp6
if_inet6
igmp
igmp6
ip6_flowlabel
ip6_mr_cache
ip6_mr_vif
ip_mr_cache
ip_mr_vif
ip_tables_matches
ip_tables_names
[...35 more entries not shown...]
$ ls /proc/net | paste - - - -
anycast6        arp     bnep    connector
dev     dev_mcast       dev_snmp6       fib_trie
fib_triestat    hci     icmp    icmp6
if_inet6        igmp    igmp6   ip6_flowlabel
ip6_mr_cache    ip6_mr_vif      ip_mr_cache     ip_mr_vif
ip_tables_matches       ip_tables_names ip_tables_targets       ipv6_route
l2cap   mcfilter        mcfilter6       netfilter
netlink netstat packet  protocols
psched  ptype   raw     raw6
rfcomm  route   rt6_stats       rt_acct
rt_cache        sco     snmp    snmp6
sockstat        sockstat6       softnet_stat    stat
tcp     tcp6    udp     udp6
udplite udplite6        unix    wireless
xfrm_stat
$ ls -C /proc/net
anycast6      if_inet6           l2cap      rfcomm        tcp
arp           igmp               mcfilter   route         tcp6
bnep          igmp6              mcfilter6  rt6_stats     udp
connector     ip6_flowlabel      netfilter  rt_acct       udp6
dev           ip6_mr_cache       netlink    rt_cache      udplite
dev_mcast     ip6_mr_vif         netstat    sco           udplite6
dev_snmp6     ip_mr_cache        packet     snmp          unix
fib_trie      ip_mr_vif          protocols  snmp6         wireless
fib_triestat  ip_tables_matches  psched     sockstat      xfrm_stat
hci           ip_tables_names    ptype      sockstat6
icmp          ip_tables_targets  raw        softnet_stat
icmp6         ipv6_route         raw6       stat
$ ls -x /proc/net
anycast6           arp              bnep               connector     dev
dev_mcast          dev_snmp6        fib_trie           fib_triestat  hci
icmp               icmp6            if_inet6           igmp          igmp6
ip6_flowlabel      ip6_mr_cache     ip6_mr_vif         ip_mr_cache   ip_mr_vif
ip_tables_matches  ip_tables_names  ip_tables_targets  ipv6_route    l2cap
mcfilter           mcfilter6        netfilter          netlink       netstat
packet             protocols        psched             ptype         raw
raw6               rfcomm           route              rt6_stats     rt_acct
rt_cache           sco              snmp               snmp6         sockstat
sockstat6          softnet_stat     stat               tcp           tcp6
udp                udp6             udplite            udplite6      unix
wireless           xfrm_stat
</pre>

<p>
The <code>
paste</code>
 command has limitations—the files you give it must all be already arranged in the same order, and if any file is missing a value, it must have a blank line so that subsequent lines will match up correctly. The files do <em>
not</em>
 necessarily have to be sorted alphabetically, but whatever order they are in has to be the same. Check out HPR episodes <a href="https://hackerpublicradio.org/eps/hpr0962/" rel="noopener noreferrer" target="_blank">
962</a>
 and <a href="https://hackerpublicradio.org/eps/hpr4201/" rel="noopener noreferrer" target="_blank">
4201</a>
 for some more background on the <code>
paste</code>
 utility.</p>

<p>

<em>
Example of using </em>

<code>

<em>
paste</em>

</code>

<em>
 with files where some values are empty. Bob works from home so doesn't have an office assigned, and the laboratory Carol works in doesn't have a phone. This relies on the fact that the same line number in every file relates to the same person/entry.</em>

</p>

<pre data-language="plain">
$ cat names
Alice
Bob
Carol
Dave
$ cat offices
203

Lab6A
117
$ cat phones
+1 212-555-1234
+1 919-555-2345

+1 212-555-1278
$ paste names offices phones
Alice   203     +1 212-555-1234
Bob             +1 919-555-2345
Carol   Lab6A
Dave    117     +1 212-555-1278
</pre>

<p>
Our second UNIX Curio for today is <a href="https://pubs.opengroup.org/onlinepubs/9699919799/utilities/join.html" rel="noopener noreferrer" target="_blank">
a utility called </a>

<code>

<a href="https://pubs.opengroup.org/onlinepubs/9699919799/utilities/join.html" rel="noopener noreferrer" target="_blank">
join</a>

</code>

<sup>
2</sup>
, which has a bit more sophistication. It operates on two files, which can have multiple columns, and combines them using the join field. By default, the first column/field in each file is the join field, and only entries that exist in both files are printed. The <code>
-1</code>
 and <code>
-2</code>
 options can be used to join on a different field, and <code>
-o</code>
 selects specific fields to be output. To make it so lines with missing entries also appear, you need to use the <code>
-a</code>
 option, but an actual empty string with separator won't be printed unless <code>
-o</code>
 is also present and includes the field.</p>

<p>
The default field separator character is one or more "blanks" in the current locale—for the POSIX locale, this means a space or a horizontal tab. The <code>
-t</code>
 option selects a different character and also removes the treatment of multiple occurrences as a single separator, making it possible to have an empty field in one or both of the files. By default, a single space is used to separate fields in the output. If <code>
-t</code>
 is given, the same character is used for separating fields in both input and output. You would need to pipe output through another tool like <code>
tr</code>
 if you wanted to have a different separator in the output.</p>

<p>
The <code>
join</code>
 utility might be an improvement over <code>
paste</code>
 in some cases, since the join field makes it a little easier to identify which entries match up across files. It is limited to operating only on two files (one of which can be standard input), so combining more than that requires either creating temporary intermediate files or chaining together <code>
join</code>
 commands in a pipeline. Another requirement is that all files must already be sorted in the current locale.</p>

<p>

<em>
Example showing how </em>

<code>

<em>
join</em>

</code>

<em>
 can be used with two tab-separated lists. The LC_ALL assignment forces </em>

<code>

<em>
join</em>

</code>

<em>
 to sort using the C (POSIX) locale instead of whatever might be set in your environment. The "@" on the header line has no special meaning; it is just there to make sure it sorts before any letters or numbers (in the C locale; it might not in other locales). Note that if </em>

<code>

<em>
-t</em>

</code>

<em>
 were not specified, </em>
plist<em>
 would be treated as having three fields because of the space separating the country code from the rest of the phone number.</em>

</p>

<pre data-language="plain">
$ export tab="$(printf '\t')" #To more easily use tab characters below
$ cat olist
@Name   Office
Alice   203
Carol   Lab6A
Dave    117
$ cat plist
@Name   Phone
Alice   +1 212-555-1234
Bob     +1 919-555-2345
Dave    +1 212-555-1278
$ LC_ALL=C join -t "$tab" olist plist
@Name   Office  Phone
Alice   203     +1 212-555-1234
Dave    117     +1 212-555-1278
$ LC_ALL=C join -t "$tab" -a 1 -a 2 olist plist
@Name   Office  Phone
Alice   203     +1 212-555-1234
Bob     +1 919-555-2345
Carol   Lab6A
Dave    117     +1 212-555-1278
$ #By default, join acts as if empty fields don't exist; use -o to include
$ LC_ALL=C join -t "$tab" -a 1 -a 2 -o 0,1.2,2.2 olist plist
@Name   Office  Phone
Alice   203     +1 212-555-1234
Bob             +1 919-555-2345
Carol   Lab6A
Dave    117     +1 212-555-1278
$ #The -e option sets a placeholder to use for empty fields
$ LC_ALL=C join -t "$tab" -e "(none)" -a 1 -a 2 -o 0,1.2,2.2 olist plist
@Name   Office  Phone
Alice   203     +1 212-555-1234
Bob     (none)  +1 919-555-2345
Carol   Lab6A   (none)
Dave    117     +1 212-555-1278
</pre>

<p>
The brief description for <code>
join</code>
 is "relational database operator"—I won't dispute that, but in my view it offers far fewer capabilities than people would expect from today's relational databases. I would imagine that when most people think of those they have Structured Query Language (SQL) in mind, which offers a lot more flexibility and functions to operate on data. However, I can see how <code>
join</code>
 could be suitable for simple operations.</p>

<p>
Our last UNIX Curio for today relates to <a href="https://pubs.opengroup.org/onlinepubs/9699919799/utilities/sort.html" rel="noopener noreferrer" target="_blank">
the </a>

<code>

<a href="https://pubs.opengroup.org/onlinepubs/9699919799/utilities/sort.html" rel="noopener noreferrer" target="_blank">
sort</a>

</code>

<a href="https://pubs.opengroup.org/onlinepubs/9699919799/utilities/sort.html" rel="noopener noreferrer" target="_blank">
 utility</a>

<sup>
3</sup>
. While, as you might expect, it is well-known for its ability to sort data, it has another feature that is more obscure. When used with the <code>
-m</code>
 option, instead of sorting the files given as arguments, it merges them together. All of the files are expected to already be sorted—once combined, the list that is output will also be sorted. The order in which the files are named does <em>
not</em>
 matter; it is not required for the contents of the first file to start before the second, just that both are sorted.</p>

<pre data-language="plain">
$ cat women
Alice
Carol
$ cat men
Bob
Dave
$ sort -m men women
Alice
Bob
Carol
Dave
</pre>

<p>
Imagine that you organize an annual event and have a separate pre-sorted list of attendees' e-mail addresses for each of the past three years. You are planning this year's event and want to send out an announcement to all of these people, as they will probably be interested. The command <code>
sort -m -u 2023list 2024list 2025list</code>
 would spit out a combined list that you can use for your e-mail blast. Because it is likely that some people would have attended in more than one year, I included the <code>
-u</code>
 option—it removes any duplicate entries.</p>

<p>
It is probably no surprise that the <code>
sort</code>
 utility appeared early on—it was in 1971's First Edition UNIX, though it didn't <a href="https://archive.org/details/a_research_unix_reader/page/n19/mode/1up" rel="noopener noreferrer" target="_blank">
gain the merging functionality until Fifth Edition</a>

<sup>
4</sup>
 in 1973. What <em>
did</em>
 come as a shock to me is that both <code>
cut</code>
 and <code>

<a href="https://www.tuhs.org/cgi-bin/utree.pl?file=SysIII/usr/src/man/man1/paste.1" rel="noopener noreferrer" target="_blank">
paste</a>

</code>

<a href="https://www.tuhs.org/cgi-bin/utree.pl?file=SysIII/usr/src/man/man1/paste.1" rel="noopener noreferrer" target="_blank">
 didn't show up until 1980 with System III</a>

<sup>
5</sup>
, and were actually preceded by <code>

<a href="https://man.cat-v.org/unix_7th/1/join" rel="noopener noreferrer" target="_blank">
join</a>

</code>

<a href="https://man.cat-v.org/unix_7th/1/join" rel="noopener noreferrer" target="_blank">
, which was in Seventh Edition UNIX</a>

<sup>
6</sup>
 from 1979. I assumed that at least <code>
cut</code>
 would have been around far earlier, given its usefulness and how firmly established it is, but I suppose it just <em>
seems</em>
 to have been with us forever.</p>

<p>
As mentioned, I don't typically manage data as text files containing lists, and I probably won't start using the <code>
join</code>
 utility or these features of <code>
paste</code>
 and <code>
sort</code>
 very much. But it is still useful to know that they exist and how they work. Hopefully this episode has taught you a bit about them.</p>

<p>
References:</p>

<ol>

<li>

<a href="https://pubs.opengroup.org/onlinepubs/9699919799/utilities/paste.html" rel="noopener noreferrer" target="_blank">
Paste specification</a>
 https://pubs.opengroup.org/onlinepubs/9699919799/utilities/paste.html</li>

<li>

<a href="https://pubs.opengroup.org/onlinepubs/9699919799/utilities/join.html" rel="noopener noreferrer" target="_blank">
Join specification</a>
 https://pubs.opengroup.org/onlinepubs/9699919799/utilities/join.html</li>

<li>

<a href="https://pubs.opengroup.org/onlinepubs/9699919799/utilities/sort.html" rel="noopener noreferrer" target="_blank">
Sort specification</a>
 https://pubs.opengroup.org/onlinepubs/9699919799/utilities/sort.html</li>

<li>

<a href="https://archive.org/details/a_research_unix_reader/page/n19/mode/1up" rel="noopener noreferrer" target="_blank">
A Research UNIX Reader: Fifth Edition sort manual page</a>
 https://archive.org/details/a_research_unix_reader/page/n19/mode/1up</li>

<li>

<a href="https://www.tuhs.org/cgi-bin/utree.pl?file=SysIII/usr/src/man/man1/paste.1" rel="noopener noreferrer" target="_blank">
System III paste manual page</a>
 https://www.tuhs.org/cgi-bin/utree.pl?file=SysIII/usr/src/man/man1/paste.1</li>

<li>

<a href="https://man.cat-v.org/unix_7th/1/join" rel="noopener noreferrer" target="_blank">
Seventh Edition UNIX join manual page</a>
 https://man.cat-v.org/unix_7th/1/join</li>

</ol>

<p>

</p>


<p><a href="https://hackerpublicradio.org/eps/hpr4687/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4686: Debugging Security Cameras: Firmware Updates, Python Scripts and Windows Workarounds]]></title>
<description><![CDATA[This show has been flagged as Explicit by the host.


 Show Notes


 Episode Overview




Operator kicks off the episode feeling under the weather but shares a quick tip for making perfect egg drop soup before diving into his main project: diagnosing why his front-door security camera stopped sen...]]></description>
<link>https://tsecurity.de/de/3680142/it+sicherheit/it+podcasts/hpr4686+debugging+security+cameras+firmware+updates+python+scripts+and+windows+workarounds/</link>
<pubDate>Mon, 20 Jul 2026 02:06:59 +0200</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Explicit by the host.</p>

<h1>
 Show Notes</h1>

<h3>
 Episode Overview</h3>

<ul>

<li>
Operator kicks off the episode feeling under the weather but shares a quick tip for making perfect egg drop soup before diving into his main project: diagnosing why his front-door security camera stopped sending alerts and recording events. What follows is a live-debugging session covering network config, script logging, Windows permission hacks, NTP time drift, and firmware flashing.</li>

</ul>

<h3>
 Key Topics &amp; Breakdown</h3>

<ul>

<li>

<ul>

<li>

<strong>
Egg Drop Soup Hack:</strong>
 How to get that perfect ribbony texture by creating a boiling swirl before pouring in the eggs, plus broth-to-egg ratio tips.</li>

<li>

<strong>
Camera Setup &amp; Network Config:</strong>
 Using static DHCP via MAC address binding on a UniFi Dream Machine (UDM) for local domain resolution instead of hardcoding IPs.</li>

<li>

<strong>
Python &amp; Cron Automation:</strong>
 Running a custom Python script every 2 minutes to check for new recordings, parsing logs with <code>
grep -v</code>
, and navigating massive log files in <code>
vi</code>
.</li>

<li>

<strong>
Windows Troubleshooting Tangent:</strong>
 Deleting the stubborn <code>
Windows.old</code>
 folder using the TrustedInstaller service hack (<code>
ExecTI.exe</code>
) instead of taking ownership manually.</li>

<li>

<strong>
Time Sync &amp; Firmware Quirks:</strong>
 Discovering the camera's system clock was stuck in 2011/2026, causing missed events. Downloading firmware via a slow third-party link, renaming <code>
.bin</code>
 to <code>
.zip</code>
, and extracting with 7-Zip.</li>

<li>

<strong>
Pre-Flash Backup Routine:</strong>
 Exporting camera configuration before upgrading, storing it in Google Drive for searchable documentation, and clearing old log/trigger files to reset the event pipeline.</li>

</ul>

</li>

</ul>

<h3>
️ Tools &amp; Techniques Mentioned</h3>

<ul>

<li>

<ul>

<li>

<code>
crontab</code>
 + Python scripts for automated monitoring</li>

<li>

<code>
grep -v</code>
, <code>
cat</code>
, <code>
tail</code>
, and <code>
vi</code>
 (line navigation with <code>
:1000</code>
)</li>

<li>
Obsidian for note-taking &amp; AI assistant integration</li>

<li>
Firefox/Playwright for headless browser testing</li>

<li>
Turbo Download Manager &amp; Bolt Media Downloader for multi-threaded/sniffing downloads</li>

<li>
7-Zip for archive extraction</li>

<li>
Google Drive for searchable config backups</li>

</ul>

</li>

</ul>

<h3>
 Resources &amp; Links</h3>

<ul>

<li>

<ul>

<li>

<strong>
Python API Script:</strong>
 <a href="https://github.com/freeload101/Python/blob/master/Uniview_API_IPC3628SR-ADF28KM-WP_get_Last.py" rel="noopener noreferrer" target="_blank">
Uniview IPC3628SR Recording Checker</a>

</li>

<li>

<strong>
Camera Model:</strong>
 <code>
IPC3628SR</code>
 (Uniview Wyze ISP Warm Light Deterrent Network Camera)</li>

<li>

<strong>
TrustedInstaller Run-as Tool:</strong>
 <a href="https://rmccurdy.com/.scripts/downloaded/ExecTI_TrustedInstaller_Runas.zip" rel="noopener noreferrer" target="_blank">
ExecTI TrustedInstaller Runner</a>

</li>

</ul>

</li>

</ul>

<h3>
 Quick Takeaways</h3>

<ol>

<li>

<ol>

<li>
 Always verify NTP/time sync on IoT cameras before troubleshooting missed events or alerts.</li>

<li>
 Use <code>
grep -v "noise"</code>
 to quickly filter out repetitive log entries when debugging automation scripts.</li>

<li>
 Windows system folders can be stubborn; running commands as <code>
TrustedInstaller</code>
 bypasses hidden file locks without manual ownership changes.</li>

<li>
 Always export and back up device configs before flashing firmware, even if the upgrade seems straightforward.</li>

<li>
 Third-party download links often use temporary tokens or <code>
.bin</code>
 wrappers; renaming to <code>
.zip</code>
 and verifying with 7-Zip can save headaches.</li>

</ol>

</li>

</ol>

<ul>

<li>

<em>
Thanks for listening! Stay curious, keep your logs clean, and remember: defense in depth starts at home.</em>
  </li>

</ul>

<p>

</p>

<p>

</p>

<p>
Example trusted installer hack</p>

<p>

</p>

<p>

</p>

<p>
# Shhhh I can't IR ... Defender, ForcePoint, SMS Agent Host ...I just can't anymore ...</p>

<p>
sc config TrustedInstaller binPath= "Reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Sense" /v Start /t reg_dword /d 4 /f"  </p>

<p>
sc start "TrustedInstaller" </p>

<p>
sc config TrustedInstaller binPath= "Reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Fppsvc" /v Start /t reg_dword /d 4 /f"  </p>

<p>
sc start "TrustedInstaller" </p>

<p>
sc config TrustedInstaller binPath= "Reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\CcmExec" /v Start /t reg_dword /d 4 /f"  </p>

<p>
sc start "TrustedInstaller" </p>

<p>
sc config TrustedInstaller binPath= "Reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WinDefend" /v Start /t reg_dword /d 4 /f"  </p>

<p>
sc config TrustedInstaller binPath= "C:\Windows\servicing\TrustedInstaller.exe"</p>

<p>

</p>

<p>

</p>


<p><a href="https://hackerpublicradio.org/eps/hpr4686/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4685: Listening to SSB stations in the early 1980s]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.


Lennart tells about the shortwave radio he had in the early 1980s and what he could hear on it, for example he marine band, amateur radio, CB and of course broadcast stations. The radio did not have a BFO to demodulate SSB stations, but using a s...]]></description>
<link>https://tsecurity.de/de/3674839/it+sicherheit/it+podcasts/hpr4685+listening+to+ssb+stations+in+the+early+1980s/</link>
<pubDate>Fri, 17 Jul 2026 02:03:19 +0200</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>

<p>
Lennart tells about the shortwave radio he had in the early 1980s and what he could hear on it, for example he marine band, amateur radio, CB and of course broadcast stations. The radio did not have a BFO to demodulate SSB stations, but using a second radio close by and using its local oscillator he could still make those signals intelligible.</p>


<p><a href="https://hackerpublicradio.org/eps/hpr4685/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4684: Sim Racing on the cheap!]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.


Thrustmaster TMX Force Feedback Pro Black Xbox One / Xbox Series X/S / PC




https://www.ebay.com/itm/157554569422




Dayton Audio DAEX25 Audio Exciter Pair - Sound Exciter Pair Audio Transducer - 5 Watts RMS, 8 Ohms Impedance - 2 Pack - Tu...]]></description>
<link>https://tsecurity.de/de/3672094/it+sicherheit/it+podcasts/hpr4684+sim+racing+on+the+cheap/</link>
<pubDate>Thu, 16 Jul 2026 02:03:00 +0200</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>

<p>
Thrustmaster TMX Force Feedback Pro Black Xbox One / Xbox Series X/S / PC</p>

<p>

<a href="https://www.ebay.com/itm/157554569422" rel="noopener noreferrer" target="_blank">
https://www.ebay.com/itm/157554569422</a>

</p>

<p>
Dayton Audio DAEX25 Audio Exciter Pair - Sound Exciter Pair Audio Transducer - 5 Watts RMS, 8 Ohms Impedance - 2 Pack - Turn Any Surface into a Speaker System</p>

<p>

<a href="https://www.amazon.com/dp/B001EYEM8C" rel="noopener noreferrer" target="_blank">
https://www.amazon.com/dp/B001EYEM8C</a>

</p>

<p>

<a href="https://www.simhubdash.com/" rel="noopener noreferrer" target="_blank">
https://www.simhubdash.com/</a>

</p>

<p>

<a href="https://www.accsetupcomparator.com/" rel="noopener noreferrer" target="_blank">
https://www.accsetupcomparator.com/ </a>

</p>

<p>

<a href="https://www.iracing.com/" rel="noopener noreferrer" target="_blank">
https://www.iracing.com/</a>
 ( they have buy 2 years get discount during holiday but still can't afford it .. )</p>

<p>

<a href="https://forza.net/horizon" rel="noopener noreferrer" target="_blank">
https://forza.net/horizon</a>

</p>

<p>

</p>

<p>
DiRT Rally 2.0 GOTY</p>

<p>

<a href="https://k4g.com/store?distribution%5B%5D=3&amp;q=DiRT%20Rally%202.0%20GOTY&amp;sort=price" rel="noopener noreferrer" target="_blank">
https://k4g.com/store?distribution[]=3&amp;q=DiRT%20Rally%202.0%20GOTY&amp;sort=price</a>

</p>

<p>

</p>

<p>
CrewChiefV4</p>

<p>

<a href="https://thecrewchief.org/" rel="noopener noreferrer" target="_blank">
https://thecrewchief.org/</a>

</p>

<p>

<a href="https://app.tracktitan.io/sessions/3ebbf63b-93de-4309-9a42-9311a745209d/20241228052252" rel="noopener noreferrer" target="_blank">
https://app.tracktitan.io/sessions/3ebbf63b-93de-4309-9a42-9311a745209d/20241228052252</a>

</p>

<p>

</p>

<p>
SUMMARY.</p>

<p>
User discusses sim racing challenges, costs, and setup tips.</p>

<p>
IDEAS.</p>

<ol>

<li>
 Sim racing requires time and investment.</li>

<li>
 I Racing is expensive with annual costs.</li>

<li>
 Set of Courses offers one-time payment.</li>

<li>
 Proper setup enhances sim racing experience.</li>

<li>
 Cable connections can complicate setup.</li>

<li>
 Upgrading hardware improves performance.</li>

<li>
 Arcade games like Forza offer casual play.</li>

<li>
 Realistic sim racing demands dedication.</li>

<li>
 License requirements vary between platforms.</li>

<li>
 Remote gaming systems save space.</li>

<li>
 Steering wheel upgrades improve smoothness.</li>

<li>
 Dedicated spaces optimize sim racing.</li>

<li>
 Balancing fun and realism is key.</li>

<li>
 Multi-launchers manage gaming platforms.</li>

<li>
 Hacked accounts may cause issues.</li>

<li>
 Monitoring hardware wear is important.</li>

<li>
 Shifting mechanisms enhance control.</li>

<li>
 Curved monitors improve immersion.</li>

<li>
 Time constraints affect sim racing participation.</li>

<li>
 Exploring multiple games adds variety.</li>

</ol>

<p>

</p>

<p>
RECOMMENDATIONS.</p>

<ol>

<li>
 Consider Set of Courses for a one-time payment.</li>

<li>
 Invest in a proper setup for serious sim racing.</li>

<li>
 Use a multi-launcher for managing games.</li>

<li>
 Upgrade hardware for smoother performance.</li>

<li>
 Buy specific tracks and cars to avoid costs.</li>

<li>
 Opt for a dedicated space for sim racing.</li>

<li>
 Check for license requirements before purchasing.</li>

<li>
 Remote into gaming systems to save space.</li>

<li>
 Replace plastic parts with bearings for smoother operation.</li>

<li>
 Use a 7-speed shifter for better control.</li>

<li>
 Avoid hacked accounts for reliability.</li>

<li>
 Purchase multiple accounts for different players.</li>

<li>
 Focus on arcade games for casual play.</li>

<li>
 Prioritize a curved monitor for immersion.</li>

<li>
 Use a standing desk for accessibility.</li>

<li>
 Monitor cable connections to prevent setup issues.</li>

<li>
 Upgrade steering wheel components for better experience.</li>

<li>
 Balance fun and realism based on personal preference.</li>

<li>
 Consider time investment for sim racing.</li>

<li>
 Explore different racing games for variety.</li>

</ol>

<p>

</p>


<p><a href="https://hackerpublicradio.org/eps/hpr4684/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4683: Recording the hallway track]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.


Recording Kit


General




Lanyard - HPR - Your Name 


HPR Business Cards - Your email address


HPR Stickers


Pen


A6 Notebook


Android Mobile phone 
OpenCamera






Zoom H2






Zoom H2 Handy Recorder




Set format to be...]]></description>
<link>https://tsecurity.de/de/3669312/it+sicherheit/it+podcasts/hpr4683+recording+the+hallway+track/</link>
<pubDate>Wed, 15 Jul 2026 02:02:54 +0200</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>

<h2>
Recording Kit</h2>

<h3>
General</h3>

<ul>

<li>
Lanyard - HPR - Your Name </li>

<li>
HPR Business Cards - Your email address</li>

<li>
HPR Stickers</li>

<li>
Pen</li>

<li>
A6 Notebook</li>

<li>
Android Mobile phone <a href="https://sourceforge.net/projects/opencamera/" rel="noopener noreferrer" target="_blank">
OpenCamera</a>

</li>

</ul>

<h3>
Zoom H2</h3>

<ul>

<li>

<a href="https://en.wikipedia.org/wiki/Zoom_H2_Handy_Recorder" rel="noopener noreferrer" target="_blank">
Zoom H2 Handy Recorder</a>

</li>

<li>
Set format to best and date format to ISO8601</li>

<li>
Replacement Batteries</li>

<li>
Micro USB Cable</li>

<li>
2.5 mm headphones</li>

<li>
3.5 mm Male to Male cable</li>

<li>
3.5 mm earbuds</li>

</ul>

<h3>
Backup 1</h3>

<ul>

<li>

<a href="https://en.wikipedia.org/wiki/SanDisk_portable_media_players#Sansa_Clip" rel="noopener noreferrer" target="_blank">
Sansa Clip</a>

</li>

<li>

<a href="https://en.wikipedia.org/wiki/Rockbox" rel="noopener noreferrer" target="_blank">
Rockbox</a>

</li>

<li>
Remove before flight key fob</li>

<li>
Set format to best and date format to ISO8601</li>

</ul>

<h3>
Backup 2</h3>

<ul>

<li>
Android Mobile phone <a href="https://github.com/Dimowner/AudioRecorder" rel="noopener noreferrer" target="_blank">
AudioRecorder</a>

</li>

<li>
Set format to best and date format to ISO8601</li>

</ul>

<p>

</p>


<p><a href="https://hackerpublicradio.org/eps/hpr4683/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4682: Behind the Keyboard: A Cybersecurity Operator’s Real-World Workflow]]></title>
<description><![CDATA[This show has been flagged as Explicit by the host.










SUMMARY


The presenter outlines a practical cybersecurity workflow, covering ergonomic setups, browser isolation, virtual machine troubleshooting, AI-assisted scripting, and network tunneling methods utilized during active securi...]]></description>
<link>https://tsecurity.de/de/3666605/it+sicherheit/it+podcasts/hpr4682+behind+the+keyboard+a+cybersecurity+operators+real-world+workflow/</link>
<pubDate>Tue, 14 Jul 2026 02:03:31 +0200</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Explicit by the host.</p>

<h1>

</h1>

<h1>

</h1>

<h1>
SUMMARY</h1>

<p>
The presenter outlines a practical cybersecurity workflow, covering ergonomic setups, browser isolation, virtual machine troubleshooting, AI-assisted scripting, and network tunneling methods utilized during active security assessments.</p>

<h1>
ONE-SENTENCE TAKEAWAY</h1>

<p>
Isolate browser environments, utilize automation scripts, and verify network paths before starting security tests to avoid workflow interruptions.</p>

<h1>
TOOLS</h1>

<ul>

<li>

<strong>
Talon Voice</strong>
 – Open-source voice recognition software enabling hands-free computer control and command execution.</li>

<li>

<strong>
Obsidian</strong>
 – Local-first markdown note-taking application supporting secure, AI-friendly knowledge management.</li>

<li>

<strong>
AutoHotkey</strong>
 – Windows scripting utility for creating custom macros and remapping keyboard inputs.</li>

<li>

<strong>
Chrome Debug Commands</strong>
 – Browser developer tools allowing direct inspection of extensions, cookies, and storage.</li>

<li>

<strong>
Whisper Diarization</strong>
 – Audio processing script that separates speaker tracks and converts recordings to searchable text.</li>

<li>

<strong>
Hyper-V / WSL</strong>
 – Microsoft virtualization platforms enabling isolated guest environments and Linux subsystem integration.</li>

<li>

<strong>
OpenConnect / OpenVPN</strong>
 – Command-line tunneling clients used for establishing secure, split-tunnel network connections.</li>

<li>

<strong>
Jamboree Framework</strong>
 – Portable PowerShell environment that dynamically provisions development tools without altering system paths.</li>

<li>

<strong>
MOBA Portable</strong>
 – Feature-rich terminal emulator supporting static/dynamic tunnels, auto-reconnect, and embedded X-server capabilities.</li>

<li>

<strong>
Nmap</strong>
 – Network discovery and security auditing tool utilized for comprehensive port scanning and service detection.</li>

</ul>

<h2>
00:00:00 Ergonomic Workspace Configuration</h2>

<p>
Configures physical workstation elements to reduce strain during extended testing sessions. Proper alignment prevents repetitive stress injuries while maintaining focus on technical tasks.</p>

<ul>

<li>

<strong>
Monitor Positioning</strong>
 – Displays should align with eye level to maintain neutral neck posture; the speaker notes their curved 49-inch screen sits slightly high due to chair adjustments.</li>

<li>

<strong>
Split Keyboard Layout</strong>
 – Utilizes a Freestyle 2 mechanical keyboard, allowing natural shoulder-width arm placement and reducing wrist deviation during prolonged typing.</li>

<li>

<strong>
Postural Adaptation</strong>
 – Acknowledges that ergonomic equipment requires matching body alignment; elbow rests should sit between hip and shoulder height for optimal leverage.</li>

</ul>

<h2>
01:45:00 Voice Control &amp; Note Synchronization</h2>

<p>
Utilizes auditory input methods and localized knowledge bases to streamline documentation workflows. Separating secure work notes from casual observations prevents data contamination.</p>

<ul>

<li>

<strong>
Talon Voice Integration</strong>
 – Runs continuously to handle navigation, text entry, and application switching without manual keyboard interaction.</li>

<li>

<strong>
Obsidian Migration</strong>
 – Transitions from cloud-based keep apps to local markdown files, enabling direct querying by local AI models while maintaining offline accessibility.</li>

<li>

<strong>
Note Categorization</strong>
 – Divides information into secure work records and insecure personal logs, ensuring clean data pipelines for future retrieval and analysis.</li>

</ul>

<h2>
03:50:00 Browser Extension Management &amp; Security Isolation</h2>

<p>
Separates web browsing activities from primary work processes to minimize attack surfaces. Running dedicated user profiles prevents plugin conflicts and credential leakage.</p>

<ul>

<li>

<strong>
Jailed User Accounts</strong>
 – Creates restricted system profiles that only launch the browser, isolating extensions from core workstation operations.</li>

<li>

<strong>
Shared Folder Synchronization</strong>
 – Establishes a single directory path bridging work and browsing users, allowing seamless file transfers without cross-contamination.</li>

<li>

<strong>
Extension Audit Process</strong>
 – Leverages Chrome debug commands to enumerate installed plugins, verifying functionality before deployment on target networks.</li>

</ul>

<h2>
06:15:00 Training Optimization &amp; Audio Processing</h2>

<p>
Accelerates mandatory compliance viewing through speed manipulation and automated transcription. Converting video content into searchable text enables rapid information retrieval.</p>

<ul>

<li>

<strong>
Global Speed Control</strong>
 – Increases playback rates up to sixteen times normal speed, drastically reducing time spent on repetitive corporate training modules.</li>

<li>

<strong>
Whisper Diarization Pipeline</strong>
 – Downloads video tracks, separates speaker voices, and generates timestamped transcripts for quick reference during assessments.</li>

<li>

<strong>
Download Management</strong>
 – Employs multi-threaded swarm downloaders and classic turbo managers to handle bulk media retrieval without interrupting active workflows.</li>

</ul>

<h2>
10:40:00 Virtualization &amp; Network Tunneling Protocols</h2>

<p>
Establishes isolated testing environments using Windows virtual machines while managing connectivity constraints. Proper session handling prevents unexpected disconnections during remote engagements.</p>

<ul>

<li>

<strong>
Enhanced Session Mode</strong>
 – A Hyper-V feature providing higher resolution and shared clipboard functionality; disabling it is required before initiating certain VPN clients to avoid routing conflicts.</li>

<li>

<strong>
Split Tunneling Mechanics</strong>
 – Routes specific traffic through the virtual network while keeping local resources accessible, preventing complete internet loss during connection tests.</li>

<li>

<strong>
Certificate Verification</strong>
 – Identifies self-signed SSL mismatches early in the process, documenting them as preliminary findings before proceeding with authentication steps.</li>

</ul>

<h2>
15:30:00 Macro Automation &amp; Input Remapping</h2>

<p>
Remaps frequently used keyboard shortcuts to reduce physical strain and accelerate command execution. Running scripts with elevated privileges ensures reliable input registration across virtual environments.</p>

<ul>

<li>

<strong>
Caps Lock Repurposing</strong>
 – Converts the caps lock key into a primary modifier, assigning copy/paste functions to adjacent letters for faster workflow navigation.</li>

<li>

<strong>
Physical Typing Macros</strong>
 – Simulates keystrokes with deliberate delays, allowing seamless data entry into restricted VM consoles that block standard clipboard operations.</li>

<li>

<strong>
Administrator Execution Requirement</strong>
 – Highlights that macro scripts must run with elevated privileges to successfully inject inputs across different desktop sessions.</li>

</ul>

<h2>
20:15:00 Portable Development Environments &amp; Python Management</h2>

<p>
Deploys lightweight scripting frameworks that dynamically provision necessary tools without modifying host configurations. Verifying package contents prevents dependency conflicts during testing.</p>

<ul>

<li>

<strong>
Jamboree Framework</strong>
 – A PowerShell-driven utility that downloads and configures development stacks on demand, resetting environment variables to maintain system cleanliness.</li>

<li>

<strong>
NuGet Package Filtering</strong>
 – Queries Microsoft's repository API to retrieve specific Python versions, ensuring compatibility with legacy tunneling scripts.</li>

<li>

<strong>
Binary Verification Process</strong>
 – Checks extracted archives for bundled <code>
pip.exe</code>
 or <code>
pip3.exe</code>
 executables, eliminating manual module installation steps during rapid deployments.</li>

</ul>

<h2>
28:40:00 AI-Assisted Scripting &amp; Debugging Workflows</h2>

<p>
Generates and refines PowerShell functions through iterative conversational prompts. Validating AI output against actual system behavior prevents silent configuration errors.</p>

<ul>

<li>

<strong>
Vibe Coding Approach</strong>
 – Relies on continuous feedback loops with language models to draft, minimize, and debug automation scripts in real-time.</li>

<li>

<strong>
Parameter Standardization</strong>
 – Enforces strict formatting rules for PowerShell commands, avoiding hardcoded paths and ensuring cross-environment compatibility.</li>

<li>

<strong>
Temporary Storage Management</strong>
 – Monitors extraction directories to prevent disk saturation, redirecting large package downloads away from constrained system partitions.</li>

</ul>

<h2>
35:10:00 Terminal Emulation &amp; Advanced Tunneling Strategies</h2>

<p>
Facilitates complex network routing through dedicated terminal applications. Configuring dynamic and static tunnels enables reliable reverse connections for remote assessments.</p>

<ul>

<li>

<strong>
MOBA Portable Configuration</strong>
 – Utilizes an INI-based tunnel manager that automatically maintains connections across changing IP addresses or Wi-Fi networks.</li>

<li>

<strong>
Reverse Shell Routing</strong>
 – Establishes outbound channels back to the tester, then proxies all subsequent traffic through those connections for consistent monitoring.</li>

<li>

<strong>
Proxy Chain Integration</strong>
 – Forces non-proxy-aware applications to route through Burp Suite or custom interceptors using Windows utility wrappers like Priboxy.</li>

</ul>

<h2>
42:30:00 Final Connectivity Testing &amp; Engagement Wrap-Up</h2>

<p>
Executes comprehensive port scans to verify target accessibility before documenting findings. Acknowledging workflow detours ensures realistic time management during active engagements.</p>

<ul>

<li>

<strong>
Nmap Verification</strong>
 – Runs full-port scans with verbose output to confirm host responsiveness and identify open services prior to credential testing.</li>

<li>

<strong>
Connection Refusal Documentation</strong>
 – Captures screenshot evidence of failed routing attempts, providing clear proof of network restrictions for client reporting.</li>

<li>

<strong>
Workflow Reflection</strong>
 – Recognizes that exploratory debugging adds value but requires time boundaries; balancing thoroughness with engagement scope maintains professional efficiency.</li>

</ul>

<p>

</p>


<p><a href="https://hackerpublicradio.org/eps/hpr4682/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4681: My Disabilities]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.


As a child, I was so fond of reading what I saw as beautiful. Even when above [lacking] the understanding.


The perception of beauty came mainly from the cover and the fonts used (
same today
) or from the place the book occupied on my fa...]]></description>
<link>https://tsecurity.de/de/3663982/it+sicherheit/it+podcasts/hpr4681+my+disabilities/</link>
<pubDate>Mon, 13 Jul 2026 02:03:11 +0200</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>

<p>
As a child, I was so fond of reading what I saw as beautiful. Even when above [lacking] the understanding.</p>

<p>
The perception of beauty came mainly from the cover and the fonts used (<em>
same today</em>
) or from the place the book occupied on my father’s shelf.</p>

<p>
One of them was Tuareg. More than once I took this classic from the home library, only to glance at the first page with no interest. It was only decades later — some years ago — that I saw the title again, and read with pleasure and no difficulties. It’s not a hard read, even to a 12 year-old, probably only the argument, the plot, didn’t catch me by then.</p>

<p>

</p>

<p>
Anyway, I was attracted to the book, as if simply wanting to read it made me part of the classic, the intellectual.</p>

<p>

</p>

<p>
I have less of this today. [I mean,] Not the inability to read a lot of books, but the urge to be a consumer of certain cultural product. Maybe due to not greeding to build a personal image, content without exposition.</p>

<p>
Still, sometimes, wanting to consume a piece of media and being unable to.. I wanted a story of robots, the book I though was not available [(All Systems Red)], so I bought one of scientific fiction.</p>

<p>
Somehow it attracted me when I flipped the few pages of Planet of Exile at the bookstore, an item that could lead me to a travel outside of this place, an escape. At home, I immediately saw I couldn’t grasp it. There were too many characters (too many = more than two in the first page, specially when another atmosphere is the location, a new physics to grasp). Too much information, can’t retain the minimum necessary in the way to the second, third… fifth page, by when more is being presented. This was always a disability of mine, focused on a little tiny thing, intensely, for some time, all lost in some weeks or months. I know it happens to <em>
me</em>
, because people are able to remember the names of the cars of the movie Cars. Not an incredible feat <strong>
for them</strong>
 (maybe they haven’t paid attention, nor actively tried to remember, only did), and something <strong>
strange</strong>
 to me.</p>

<p>

</p>

<p>
It was decided to register this because when I saw myself unable to read the [Ursula] Le Guin’s book, I got nervous. I’ve already been forgetting more ultimately, take confused steps, and now I can’t center on a book?! What’s happening?</p>

<p>
But then I took a breath: much can be going way too wrong from current circumstances outside and inside, but your limited comprehension of the world (and its art) is very part of you. This trace, or frailty, of your character, is not your brain rotting, it’s part of what you have been since always.</p>

<p>
Thank you.</p>


<p><a href="https://hackerpublicradio.org/eps/hpr4681/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4680: Robert A. Heinlein: The Future History, Part 2]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.
In his early days as a writer, Heinlein wrote his stories in the context of a shared universe that he called the Future History. These were mostly short stories at first, with the occasional novella. But they include some great stories.
The Future ...]]></description>
<link>https://tsecurity.de/de/3658424/it+sicherheit/it+podcasts/hpr4680+robert+a+heinlein+the+future+history+part+2/</link>
<pubDate>Fri, 10 Jul 2026 02:01:49 +0200</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>
<p>In his early days as a writer, Heinlein wrote his stories in the context of a shared universe that he called the Future History. These were mostly short stories at first, with the occasional novella. But they include some great stories.</p>
<h1 class="entry-title">The Future History, Part 2</h1>
						
<p>There were a few key themes running through Heinlein’s body of work. One we have already remarked upon, individual freedom, which had to be protected from any source of power, including both government and private corporations. This was essentially a libertarian perspective, but unlike many of today’s libertarians he was equally averse to the corporate type of power as a threat. But he had a complex view of the world which has resisted some attempts to pigeonhole him. He started out as a socialist, and while he didn’t remain one, he never became a knee-jerk reactionary either. In fact, he clearly despised them just as much. One way of looking at his body of work is that he explored the ramifications of different social policies through his stories, but in most cases the needs of a good story came first in the early years. In his later works he often surrendered to the temptation to pontificate, which reduced the enjoyment of them somewhat for anyone who was not already in agreement with his opinions</p>

<p>The second major theme you see throughout all of his works is the idea of the competent individual. He admired anyone who could do a job well, and clearly did not care whether they were man or woman, nor black or white. Alexei Panshin writes, in <a href="https://www.amazon.com/Heinlein-Dimension-Critical-Alexei-Panshin/dp/0911682015" data-type="link" data-id="https://www.amazon.com/Heinlein-Dimension-Critical-Alexei-Panshin/dp/0911682015" target="_blank" rel="noreferrer noopener">Heinlein in Dimension</a>: </p>

<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>“There is one unique and vivid human Heinlein character, but he is a composite of Joe-Jim Gregory, Harriman, Waldo, Lazarus Long, Mr. Kiku, and many others, rather than any one individual.  I call the composite the Heinlein Individual.  . . .  It is a single personality that appears in three different stages and is repeated in every Heinlein book in one form or another.</p>

<p>“The earliest stage is that of the competent but naïve youngster. . . .  The second stage is the competent man in full glory, the man who knows how things work. . . .  The last stage is the wise old man who not only knows how things work, but why they work, too.”</p>
</blockquote>

<p>Harriman we have already encountered in <em>The Man Who Sold The Moon</em>, and the others appear later. The Heinlein Individual, as he is often referred to, appears in many of Heinlein’s stories.</p>

<p>A third major theme has to do with morality and religion. Heinlein grew up in what he considered the heart of the Bible Belt, in Missouri, and saw first-hand how the evangelical Christians operated, and despised what he saw. As someone who believed in individual freedom, he could never surrender to someone else’s idea of how he should live his life. He saw them as a danger to his ideal libertarian society, and this shows up very early in his work. He personified the good, upright, church-going folk as “Mrs. Grundy”, and while you might want to draw the drapes to keep her from knowing what you were doing, you should never let her dictate how you would live your life. Revolt in 2100 begins the exploration of this in detail.</p>

<p>There is a chart of the future history at <a href="https://web.archive.org/web/20151105170345/http://www.baenebooks.com/chapters/1439133417/1439133417___1.htm" data-type="link" data-id="https://web.archive.org/web/20151105170345/http://www.baenebooks.com/chapters/1439133417/1439133417___1.htm" target="_blank" rel="noreferrer noopener">Baen Books</a>, and in it we see that the 1960s were what Heinlein called The Crazy Years. (Remember, he conceived this in the 1940s and 1950s.) But in 2012 the major thing occurred when Nehemiah Scudder, a backwoods preacher, managed to get elected as President. This would be the last election held under the U.S. Constitution as he established a religious dictatorship that lasted a couple of generations. IS this plausible? Heinlein wrote about this:</p>

<p>“<em>As for … the idea that we could lose our freedom by succumbing to a wave of religious hysteria, I am sorry to say that I consider it possible. I hope that it is not probable. But there is a latent deep strain of religious fanaticism in this, our culture; it is rooted in our history and it has broken out many times in the past.</em></p>

<p><em>“It is with us now; there has been a sharp rise in strongly evangelical sects in this country in recent years, some of which hold beliefs theocratic in the extreme, anti-intellectual, anti-scientific, and anti-libertarian.</em>“</p>

<p>His background in the Bible Belt is what informs a lot of his thinking. He goes on to describe how this might happen:</p>

<p><em>“Throw in a Depression for good measure, promise a material heaven here on earth, add a dash of anti-Semitism, anti-Catholicism, anti-Negroism, and a good large dose of anti-“furriners” in general and anti-intellectuals here at home, and the result might be something quite frightening — particularly when one recalls that our voting system is such that a minority distributed as pluralities in enough states can constitute a working majority in Washington.”</em></p>

<p>As the science fiction author <a href="https://david-brin.medium.com/heinleins-future-history-coming-true-before-our-eyes-10356a95556a" data-type="link" data-id="https://david-brin.medium.com/heinleins-future-history-coming-true-before-our-eyes-10356a95556a" target="_blank" rel="noreferrer noopener">David Brin</a> points out, Heinlein accurately predicted much of what we are going through in the United States right now. There is an emerging dictatorship in the United States, promoted by right-wing religious groups. The “material heaven here on earth” is represented by the Prosperity Gospel, prominent in the Trump movement, and so on. Where the Prophet used a restored Ku Klux Klan as his muscle, we have The Proud Boys, and so on. It really does track very closely. Read David Brin’s article for more on this.</p>

<p>But nothing lasts forever. Empires rise and fall, governments change, and in this case a resistance movement arises. The revolt is depicted in the novella <em><a href="https://en.wikipedia.org/wiki/%22If_This_Goes_On%E2%80%94%22" data-type="link" data-id="https://en.wikipedia.org/wiki/%22If_This_Goes_On%E2%80%94%22" target="_blank" rel="noreferrer noopener">If This Goes On— (1940)</a></em>, and it is set in the year 2100, giving the title to the book. The main character is John Lyle, who is a young army officer assigned to the group protecting The Prophet in his capital of New Jerusalem. In the beginning he is thoroughly indoctrinated, but then begins to question his beliefs when he falls for one of The Prophet’s virgins, Sister Judith. He has an older companion in the military who is not only unshocked when John confides in him about his doubts, but offers to help him. It turns out this companion, Zeb Jones, is a member of the underground group called The Cabal that is working to overthrow the theocracy. In the end they are successful, and in the course of this John Lyle does a lot of growing up. In this we see another common characteristic of Heinlein stories: a young, naive boy meets up with an older and wiser man who helps him to grow.</p>

<p>In 2016 <em>If This Goes On—</em> won the Retro-Hugo Award for best novella of 1940. And in a personal note, I have T-shirt that says “Scudder for President 2012”. This baffles most people, but I enjoy the in-joke.</p>

<p>What is interesting in this book is that Heinlein doesn’t stop with a successful revolution. He then goes on in a second novella to describe the government that arose following the revolution, and this story is called <em><a href="https://en.wikipedia.org/wiki/Coventry_(short_story)" data-type="link" data-id="https://en.wikipedia.org/wiki/Coventry_(short_story)" target="_blank" rel="noreferrer noopener">Coventry (1940)</a></em>. The new government that arises after the revolution is called The Covenant, and it is an attempt to make sure that what happened with Scudder in 2012 could never happen again. It is a strongly libertarian government based on an agreement to be non-violent. In this society, scientists can cured criminal or violent tendencies, but any citizen convicted of such must agree to the treatment. The alternative to treatment is that they can be exiled to a place called Coventry. Coventry is outside of the Covenant society, and the Covenant society has nothing to do with them. </p>

<p>Our protagonist, David McKinnon, is convicted of assault, and chooses to go to Coventry instead of getting treatment. He imagines it is a peaceful anarchy, but is disabused of this notion when he is robbed of all of this possessions upon entry and thrown in jail. A fellow inmate, Fader Magee, helps him escape, and we learn he is an agent of the Covenant government. They learn that two of the factions in Coventry have joined forces, and found a way to break through the barrier that surrounds Coventry. They plan to attack and overthrow the Covenant government. David and Fader separately work to escape and get back to warn the Covenant government, which they do successfully. And by doing this, David has demonstrated that he is no longer a danger to the Covenant society and no longer subject to treatment.</p>

<p>This story won a <a href="https://en.wikipedia.org/wiki/Prometheus_Award#Hall_of_Fame_Award_inductees" data-type="link" data-id="https://en.wikipedia.org/wiki/Prometheus_Award#Hall_of_Fame_Award_inductees" target="_blank" rel="noreferrer noopener">Prometheus Hall of Fame Award</a>, which is awarded by the Libertarian Futurist Society. And the Covenant society certainly has libertarian features. But this is not the Randian version of libertarianism, as exemplified by the fact that David is restored to the society because he demonstrated his concern for others. Heinlein always promoted individual freedom, but also the idea that people have a responsibility towards others.</p>

<p>Finally, <em>Revolt in 2100</em> contains the short story <em>Misfit</em>, w2hich we have looked at previously.</p>

<p><em><a href="https://en.wikipedia.org/wiki/The_Past_Through_Tomorrow" data-type="link" data-id="https://en.wikipedia.org/wiki/The_Past_Through_Tomorrow" target="_blank" rel="noreferrer noopener">The Past Through Tomorrow (1967)</a></em> is a one volume collection of most of the Future history stories. I say most because just which stories belonged in this group could change from time to time. It also has the last version of the Chart of the Future History, and a few stories we have not yet mentioned (<em>Methusaleh’s Children</em>, and <em>The Menace From Earth</em>). And many of his other works contain back references to these events that imply that they might be set in the same alternate universe. Heinlein gets the last word on this:</p>

<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p><em>“I have never been sure whether or not publishing that chart was a good idea or a bad mistake. Possibly it helped to sell some stories later—but certainly it caused me and still causes me to receive a lot nuisance mail from nitpickers. I have never felt bound by that chart; it was to serve me, not the other way around. If I found myself with a good story notion which fitted fairly well into the chart but not perfectly, I shed no tears—I went ahead and let the inconsistencies stand.</em></p>

<p><em>I want each story to be internally consistent . . . but I won’t let myself be painted into a corner through trying to fit that chart perfectly. I may start another “Future History” story tomorrow . . . and find that to make it a good yarn I must violate some item on that chart. I’ll give the nitpickers something to pick, for I will not hurt a good yarn for the sake of “logic”—logic is not involved, as that chart is fiction, not Holy Writ.”</em></p>
</blockquote>

<h3>Links:</h3>
<ul>
<li><a href="https://www.amazon.com/Heinlein-Dimension-Critical-Alexei-Panshin/dp/0911682015">https://www.amazon.com/Heinlein-Dimension-Critical-Alexei-Panshin/dp/0911682015</a></li>
<li><a href="https://web.archive.org/web/20151105170345/http://www.baenebooks.com/chapters/1439133417/1439133417___1.htm">https://web.archive.org/web/20151105170345/http://www.baenebooks.com/chapters/1439133417/1439133417___1.htm</a></li>
<li><a href="https://david-brin.medium.com/heinleins-future-history-coming-true-before-our-eyes-10356a95556a">https://david-brin.medium.com/heinleins-future-history-coming-true-before-our-eyes-10356a95556a</a></li>
<li><a href="https://en.wikipedia.org/wiki/%22If_This_Goes_On%E2%80%94%22">https://en.wikipedia.org/wiki/%22If_This_Goes_On%E2%80%94%22</a></li>
<li><a href="https://en.wikipedia.org/wiki/Coventry_(short_story)">https://en.wikipedia.org/wiki/Coventry_(short_story)</a></li>
<li><a href="https://en.wikipedia.org/wiki/Prometheus_Award#Hall_of_Fame_Award_inductees">https://en.wikipedia.org/wiki/Prometheus_Award#Hall_of_Fame_Award_inductees</a></li>
<li><a href="https://en.wikipedia.org/wiki/The_Past_Through_Tomorrow">https://en.wikipedia.org/wiki/The_Past_Through_Tomorrow</a></li>
<li><a href="https://www.palain.com/science-fiction/the-golden-age/robert-a-heinlein/the-future-history-part-2/">https://www.palain.com/science-fiction/the-golden-age/robert-a-heinlein/the-future-history-part-2/</a></li>
</ul>

<p><a href="https://hackerpublicradio.org/eps/hpr4680/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4679: HPR Beer Garden 15 - Double IPA]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.


Kevie, Paul and Dave are back once again with the HPR Beer Garden, this time focusing on the relatively new style of beer called Double IPA. Kevie samples 
Man Overboard
by 
Cromarty Brewing
, Paul tastes 
Rumble
by 
Beavertown
and Dave opts for ...]]></description>
<link>https://tsecurity.de/de/3655644/it+sicherheit/it+podcasts/hpr4679+hpr+beer+garden+15+-+double+ipa/</link>
<pubDate>Thu, 09 Jul 2026 02:02:59 +0200</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>

<p>
Kevie, Paul and Dave are back once again with the HPR Beer Garden, this time focusing on the relatively new style of beer called Double IPA. Kevie samples <a href="https://untappd.com/b/cromarty-brewing-co-man-overboard/945221" rel="noopener noreferrer" target="_blank">
Man Overboard</a>
by <a href="https://cromartybrewing.com/" rel="noopener noreferrer" target="_blank">
Cromarty Brewing</a>
, Paul tastes <a href="https://untappd.com/b/beavertown-beavertown-rumble-west-coast-dipa/6639201" rel="noopener noreferrer" target="_blank">
Rumble</a>
by <a href="https://beavertownbrewery.co.uk/" rel="noopener noreferrer" target="_blank">
Beavertown</a>
and Dave opts for <a href="https://www.northbrewing.com/products/ultra-phase-dipa-8-5" rel="noopener noreferrer" target="_blank">
Ultra Phase by North Brewing</a>

</p>

<p>

</p>

<p>

<a href="https://hackerpublicradio.org/eps/hpr4679/hpr4679_image_1.png">
<img src="https://hackerpublicradio.org/eps/hpr4679/hpr4679_image_1_tn.png">
</a>

</p>

<p>
Connect with the guys on Untappd:</p>

<ul>

<li>

<a href="https://untappd.com/user/thelovebug" rel="noopener noreferrer" target="_blank">
Dave</a>

</li>

<li>

<a href="https://untappd.com/user/gorenia" rel="noopener noreferrer" target="_blank">
Paul</a>

</li>

<li>

<a href="https://untappd.com/user/kevie49" rel="noopener noreferrer" target="_blank">
Kevie</a>

</li>

</ul>

<p>

</p>

<p>
The intro sounds for the show are used from:</p>

<ul>

<li>

<a href="https://freesound.org/people/mixtus/sounds/329806/" rel="noopener noreferrer" target="_blank">
https://freesound.org/people/mixtus/sounds/329806/</a>

</li>

<li>

<a href="https://freesound.org/people/j1987/sounds/123003/" rel="noopener noreferrer" target="_blank">
https://freesound.org/people/j1987/sounds/123003/</a>

</li>

<li>

<a href="https://freesound.org/people/greatsoundstube/sounds/628437/" rel="noopener noreferrer" target="_blank">
https://freesound.org/people/greatsoundstube/sounds/628437/</a>

</li>

</ul>

<p>

</p>

<p>
The next 3 beer styles to be reviewed:</p>

<ul>

<li>
Belgian Blonde</li>

<li>
DDH IPA</li>

<li>
Amber Ale</li>

</ul>


<p><a href="https://hackerpublicradio.org/eps/hpr4679/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4678: High Resolution Elapsed Time in Shell Scripts]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.






01 Introduction






In this episode I will describe how to calculate elapsed time in bash or other shell scripts.


While this may sound like a very simple and basic thing to do, there is a slightly more complex aspect to it if you wi...]]></description>
<link>https://tsecurity.de/de/3652976/it+sicherheit/it+podcasts/hpr4678+high+resolution+elapsed+time+in+shell+scripts/</link>
<pubDate>Wed, 08 Jul 2026 02:03:40 +0200</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>

<p>

</p>

<p>
01 Introduction</p>

<p>

</p>

<p>
In this episode I will describe how to calculate elapsed time in bash or other shell scripts.</p>

<p>
While this may sound like a very simple and basic thing to do, there is a slightly more complex aspect to it if you wish to calculate elapsed time to a higher resolution than one second. </p>

<p>

</p>

<p>
02</p>

<p>
There are many reasons for calculating elapsed time in a shell script.</p>

<p>
For example you may wish to simply report how long an operation took to run.</p>

<p>
Another reason may be that you are trying to speed up a script and need to calculate benchmark data to see how different alternative methods perform.</p>

<p>

</p>

<p>
03</p>

<p>
What may seem like a simple task gets a bit more complicated if you want to do it for multiple different operating systems even if they are all unix related, as we shall see.</p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>
04 Operating Systems Tested</p>

<p>

</p>

<p>
For the purposes of this episode, I ran tests on the current version of the following operating systems.</p>

<p>

</p>

<p>
Alma</p>

<p>
Alpine</p>

<p>
Debian</p>

<p>
FreeBSD</p>

<p>
OpenBSD</p>

<p>
RaspberryPi</p>

<p>
OpenSuse</p>

<p>
Ubuntu 2604</p>

<p>

</p>

<p>
Alma is a close copy of Red Hat that we can take as representing Red Hat style distros. </p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>
05 Simple Low Resolution Timing</p>

<p>

</p>

<p>
I will start with the simple and obvious method before describing the less obvious ones.</p>

<p>

</p>

<p>
This uses the date command to get the current time in seconds since the unix epoch. </p>

<p>
This is simply</p>

<p>
date '+%s'</p>

<p>

</p>

<p>
06</p>

<p>
Save this to a variable using whatever method you prefer.</p>

<p>
For example.</p>

<p>
starttime=$(date '+%s')</p>

<p>

</p>

<p>
07</p>

<p>
Next, do whatever operations it is you wish to time.</p>

<p>
Use the date command to get the current time again.</p>

<p>
endtime=$(date '+%s')</p>

<p>

</p>

<p>
08</p>

<p>
Now simply subtract the start time from the end time using shell arithmetic.</p>

<p>
This should be very obvious and basic.</p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>
09 Higher Resolution Timing</p>

<p>

</p>

<p>
However, suppose we wish to measure time to greater than one second of precision. </p>

<p>
We need to do two things.</p>

<p>
The first is to obtain the current time at a higher degree of precision.</p>

<p>
The second is to conduct the calculations to a higher degree of precision. </p>

<p>

</p>

<p>
10</p>

<p>
Unfortunately, the standard time precision for POSIX shells seems to be 1 second.</p>

<p>
Some shells offer a higher precision, but others do not.</p>

<p>
Furthermore, standard shell arithmatic uses integer, which limits calculations to 1 second of precision.</p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>
11 Bash High Resolution Shell Variable</p>

<p>

</p>

<p>
Fortunately, bash is one that does offer a high precision date.</p>

<p>

</p>

<p>
If you are using bash 5.0 or newer, there is a shell variable called EPOCHREALTIME which offers time since the the unix epoch (that is, since the first of January 1970, at 00:00:00 UTC) in seconds to 6 decimals of precision.</p>

<p>

</p>

<p>
12</p>

<p>
Example</p>

<p>
echo $EPOCHREALTIME</p>

<p>
1779634800.184926</p>

<p>

</p>

<p>
13</p>

<p>
This is related to the similar bash variable known as EPOCHSECONDS which gives the number of seconds since the unix epoch.</p>

<p>

</p>

<p>
14</p>

<p>
Example</p>

<p>
echo $EPOCHSECONDS</p>

<p>
1779634800</p>

<p>

</p>

<p>
15</p>

<p>
So if you are using bash, measuring time is very simple.</p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>
16 But is it Really Bash?</p>

<p>

</p>

<p>
Is your script however actually using bash?</p>

<p>
Debian and derivatives actually have two shells.</p>

<p>
The first, the interactive shell is bash.</p>

<p>
The second, the non-interactive shell is dash, which stands for "debian almquist shell".</p>

<p>

</p>

<p>
17</p>

<p>
If you open a terminal, you get bash.</p>

<p>
If your script starts with a "bin/bash" shebang line, you get bash.</p>

<p>
However, if your script starts with a "bin/sh" shebang line, you get dash.</p>

<p>
Some people find themselves getting caught out by this one when they try something out in a terminal but find that it doesn't work in their script which started with "bin/sh".</p>

<p>

</p>

<p>
18</p>

<p>
Many other, but not all, Linux distros use bash for both the interactive and non-interactive shells, so "bin/sh" and "bin/bash" work the same with those ones.</p>

<p>

</p>

<p>
So if you intend to use bash, make sure your script calls for bash in the first line.</p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>
19 The SHELL Variable</p>

<p>

</p>

<p>
So how can a script tell what shell it is running under?</p>

<p>
There is a shell variable called "SHELL" which will tell you the name of the shell.</p>

<p>
Well, sort of.</p>

<p>

</p>

<p>
20</p>

<p>
On Debian and derivatives "SHELL" will  say "bash" regardless of whether the actual shell is bash or dash.</p>

<p>
On some other operating systems "SHELL" will simply say "sh" even if it is something else entirely.</p>

<p>

</p>

<p>
So we need to do some additional levels of checking to see what we have. </p>

<p>

</p>

<p>
21</p>

<p>
To start with though, here's what each of the test distros reports for SHELL.</p>

<p>

</p>

<p>
Alma              : bash</p>

<p>
Alpine            : sh</p>

<p>
Debian            : bash</p>

<p>
FreeBSD           : sh</p>

<p>
OpenBSD           : ksh</p>

<p>
Raspberry-Pi      : bash</p>

<p>
Suse              : bash</p>

<p>
ubuntu2604        : bash</p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>
22 Bash Versus Dash</p>

<p>

</p>

<p>
First, let's try to see which ones are bash and which ones are dash.</p>

<p>

</p>

<p>
The first thing we can check is for the shell variable BASH_VERSION.</p>

<p>

</p>

<p>
23</p>

<p>
Example</p>

<p>
echo $BASH_VERSION</p>

<p>

</p>

<p>
If the shell is bash, then it will report a version string.</p>

<p>
If the shell is not bash, then it will return an empty value.</p>

<p>

</p>

<p>
24</p>

<p>
Using this test, we can see that Alma and Opensuse are indeed using bash.</p>

<p>

</p>

<p>
We however need to check Debian, Raspberry Pi, and Ubuntu when running in an "sh" script.</p>

<p>
To check this we can use the  "which" command to see what "sh" actually is.</p>

<p>

</p>

<p>
25</p>

<p>
Example</p>

<p>
echo $( ls -l $(which sh )  | rev | cut -d" " -f1 | cut -d/ -f1 | rev )</p>

<p>

</p>

<p>
26</p>

<p>
"which sh" shows us the path to "sh"</p>

<p>
However, that is a link so we need to use</p>

<p>
"ls -l" to find the actual executable.</p>

<p>
"rev" reverses the string.</p>

<p>

</p>

<p>
27</p>

<p>
"cut" takes the first element separated by spaces.</p>

<p>
The second </p>

<p>
"cut" takes the first element separated by the "/" characters.</p>

<p>
The final "rev" takes that string and reverses it again to get it in the correct order.</p>

<p>

</p>

<p>
28</p>

<p>
In the case of Debian, Raspberry Pi, and Ubuntu it tells us that this is "dash".</p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>
29 Openbsd</p>

<p>

</p>

<p>
Openbsd reports its shell as "ksh", which stands for Korn Shell. </p>

<p>
It is indeed Korn Shell, so we simply leave that one as is.</p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>
30 Alpine and Freebsd</p>

<p>

</p>

<p>
Next we have Alpine Linux and Freebsd, which both report as "sh".</p>

<p>

</p>

<p>
In the case Freebsd there doesn't appear to be any further we can go that I am aware of.</p>

<p>
It's simple "sh".</p>

<p>
It is a basic POSIX shell which seems to be similar to the original unix shell, the Bourne Shell.</p>

<p>
Older versions of Freebsd used a different shell known as tsch (the C shell), but I haven't tested that so I will ignore that here.</p>

<p>

</p>

<p>
31</p>

<p>
With Alpine Linux however, we can get the actual shell using the same method that we used for Debian Linux.</p>

<p>
This reports as being "busybox".</p>

<p>

</p>

<p>
32</p>

<p>
Busybox is a limited shell intended for use in embedded systems.</p>

<p>
Alpine was originally an embedded distro, but some people started using it for containers.</p>

<p>
Alpine is Linux, but it is not GNU/Linux, and there are a number of areas which can trip you up if you are not aware of them.</p>

<p>
So, be extra careful if you are using it for anything, and test everything.</p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>
33 Summary of Actual Shells</p>

<p>

</p>

<p>
Here is our revised list with the actual shell used when asking for "sh", so far as we can determine.</p>

<p>

</p>

<p>
Alma              : bash</p>

<p>
Alpine            : busybox</p>

<p>
Debian            : dash</p>

<p>
FreeBSD           : sh</p>

<p>
OpenBSD           : ksh</p>

<p>
Raspberry-Pi      : dash</p>

<p>
Suse              : bash</p>

<p>
ubuntu2604        : dash</p>

<p>

</p>

<p>
34</p>

<p>
There are other shells, but none of them are the default shell for any of the distros on our list, so I haven't tested them.</p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>
35 Solutions for Measuring Time</p>

<p>

</p>

<p>
Now we need to find solutions for bash, dash, ksh, sh, and busybox.</p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>
36 Bash</p>

<p>

</p>

<p>
For bash, we can simply use EPOCHREALTIME, as mentioned above.</p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>
37 Dash</p>

<p>

</p>

<p>
For dash, we can use the date command.</p>

<p>
This is a very conventional method, and is probably the first answer that anyone would give for this situation.</p>

<p>
However, while it will work in most cases, it will not work in all cases, so it is not a universal solution.</p>

<p>

</p>

<p>
38</p>

<p>
To use date we simply call it with the correct format string.</p>

<p>
This uses %s to get seconds since the epoch, and %N to get nanoseconds of the current second.</p>

<p>
If you put a decimal separator between the two it will appear in the output.</p>

<p>
You can use the correct decimal separator for your locale, but I won't go into that here.</p>

<p>
Instead I will just assume a period or dot.</p>

<p>

</p>

<p>
39</p>

<p>
Example</p>

<p>
date '+%s.%N' </p>

<p>
1779634800.358916385</p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>
40 Problems with Date on Alpine and Openbsd</p>

<p>

</p>

<p>
Date will work for bash, dash, and sh on Freebsd.</p>

<p>
However it will not work for ksh on Openbsd, or for busybox on Alpine.</p>

<p>

</p>

<p>
41</p>

<p>
With busybox on Alpine, it simply ignores the %N format specifier and prints out the epoch in seconds only followed by the decimal separator.</p>

<p>
=</p>

<p>
Example</p>

<p>
date '+%s.%N'</p>

<p>
1779634800.</p>

<p>

</p>

<p>
42</p>

<p>
With ksh on Openbsd it prints the epoch in seconds followed by the decimal separator and then the %N as a literal N.</p>

<p>

</p>

<p>
date '+%s.%N'</p>

<p>
1779634800.N</p>

<p>

</p>

<p>
43</p>

<p>
Fortunately we have alternatives for these two cases.</p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>
44 Openbsd</p>

<p>

</p>

<p>
Openbsd has the "ts" or timestamp utility installed by default.</p>

<p>
ts prints a time stamp in front of every line it receives from standard input.</p>

<p>
I won't go into details on all aspects of ts here, I'll leave that to someone else.</p>

<p>
Instead I will focus on how to use it for our specific purposes here.</p>

<p>

</p>

<p>
45</p>

<p>
We need to provide a format specifier to ts, which in this case is "%.s"</p>

<p>
We also need to provide something for standard input, or otherwise ts will simply sit there and wait for input.</p>

<p>
So what we need to do is to echo nothing through a pipe to ts while also giving ts the proper format specifier.</p>

<p>

</p>

<p>
46</p>

<p>
Example</p>

<p>
 echo | ts "%.s" </p>

<p>

</p>

<p>
47</p>

<p>
This will output the epoch time in seconds to six decimals of precision.</p>

<p>

</p>

<p>
ts is installed in Openbsd and Freebsd by default and can be used in either.</p>

<p>
It can also be installed in many other distros.</p>

<p>

</p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>
48 Busybox on Alpine</p>

<p>

</p>

<p>
None of the methods discussed so far will work for busybox on Alpine though.</p>

<p>
However there is a way, but it's a bit non obvious and somewhat hacky.</p>

<p>

</p>

<p>
49</p>

<p>
Busybox includes a command called "adjtimex".</p>

<p>
This is normally used to adjust the time hardware.</p>

<p>
However if it is run without arguments, it will report the current settings.</p>

<p>

</p>

<p>
50</p>

<p>
These include the current epoch time in seconds , and in another field the time in microseconds.</p>

<p>
These are reported as key value pairs.</p>

<p>
So what we need to do is to do the following</p>

<p>

</p>

<p>
51</p>

<p>
Run adjtimex</p>

<p>
Capture the output.</p>

<p>
Grep for "time.tv_sec"</p>

<p>
Grep for "time.tv_usec"</p>

<p>
Use cut to extract the time value in each case.</p>

<p>
Use tr to get rid of excess spaces in each case.</p>

<p>
Combine the two in a string with a decimal separator between them.</p>

<p>

</p>

<p>
52</p>

<p>
This takes a total of 4 lines of shell script. </p>

<p>
I will just describe them breifly here, see the show notes for details.</p>

<p>

</p>

<p>
53</p>

<p>
First we want to capture the output of adjtimex in a single operation.</p>

<p>
Run adjtimex and pipe the output through grep to capture lines containing "time.tv_"</p>

<p>
and save this to a variable. </p>

<p>

</p>

<p>
# Extract the current high resolution time from adjtimex.</p>

<p>
# We want two key value pairs, identified by time.tv_sec and time.tv_usec.</p>

<p>
tvals=$( adjtimex | grep "time.tv_" )</p>

<p>

</p>

<p>
54</p>

<p>
Next echo the contents of this variable and pipe it through grep, cut, and tr to get first the seconds and then the microseconds while also removing excess spaces.</p>

<p>
Save these to two separate variables.</p>

<p>
"time.tv_sec" is the time in seconds since the epoch.</p>

<p>
"time.tv_usec" is the number of microseconds in the current second.</p>

<p>

</p>

<p>
# Get the time since the unix epoch in seconds and micro-seconds.</p>

<p>
timesec=$( echo "$tvals" | grep "time.tv_sec" | cut -d: -f2 | tr -d " " )</p>

<p>
timeusec=$( echo "$tvals" |  grep "time.tv_usec" | cut -d: -f2 | tr -d " " )</p>

<p>

</p>

<p>
55</p>

<p>
Adjtimex does not zero pad the microsecond time value to provide leading zeros, so we need to take care of this using printf before we can append it to the seconds value. We didn't need to do this with date where the %N format character does this automatically.</p>

<p>

</p>

<p>
In this instance, the  printf format string is '%06d'</p>

<p>

</p>

<p>
padusec=$( printf '%06d' $timeusec )</p>

<p>

</p>

<p>
Now, combine these into a single number with a decimal separator by using simple string concatenation.</p>

<p>
# Combine them into a single number.</p>

<p>
timehires="$timesec"".""$padusec"</p>

<p>

</p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>
56 Summary of Methods</p>

<p>

</p>

<p>
Let's summarize where we are so far in terms of methods we can use to get the current time as a high resolution number.</p>

<p>

</p>

<p>
Alma                : use EPOCHREALTIME or date</p>

<p>
Debian (bash)       : use EPOCHREALTIME or date</p>

<p>
Raspberry-Pi (bash) : use EPOCHREALTIME or date</p>

<p>
ubuntu2604 (bash)   : use EPOCHREALTIME or date</p>

<p>
Suse                : use EPOCHREALTIME or date</p>

<p>
Debian (dash)       : use date</p>

<p>
Raspberry-Pi (dash) : use date</p>

<p>
ubuntu2604 (dash)   : use date</p>

<p>
Alpine              : use adjtimex and parse the output</p>

<p>
FreeBSD             : use date or ts</p>

<p>
OpenBSD             : use ts</p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>
57 Other alternatives</p>

<p>

</p>

<p>
There are a few alternatives that we haven't discussed yet.</p>

<p>

</p>

<p>
58 Bash with Dash</p>

<p>

</p>

<p>
In the case of Debian, Raspberry Pi, and Ubuntu running dash, since bash is available it is possible to write a separate bash script which simply echos EPOCHREALTIME and then call it from the dash script and capture the output. </p>

<p>

</p>

<p>
While this would work, there's probably not a lot of point to it.</p>

<p>
If you can rely on bash being there, then just change the first line of the script and make it a bash script.</p>

<p>

</p>

<p>
59 Adding Packages to Alpine</p>

<p>

</p>

<p>
The ts or timestamp utility is a common unix utility that can be installed if it is not present by default.</p>

<p>
This does produce high resolution timestamps on Alpine.</p>

<p>
On Alpine Linux this comes as part of the "moreutils" package.</p>

<p>
To add the package, use the following</p>

<p>
sudo apk add moreutils</p>

<p>
echo | ts "%.s" </p>

<p>
1779634800.959948 </p>

<p>

</p>

<p>
60</p>

<p>
You can also add the GNU coreutils, which will provide a high resolution date command which works like in the other examples.</p>

<p>
To add the package use the following</p>

<p>
sudo apk add coreutils</p>

<p>
date '+%s.%N'</p>

<p>
1779634800.212897332</p>

<p>

</p>

<p>
61</p>

<p>
If you can install more packages into your Alpine system, either of the above two is probably going to be preferable to parsing the output of adjtimex.</p>

<p>

</p>

<p>
62 Custom Timestamp Programs</p>

<p>

</p>

<p>
You can also write a very short program in python, perl, tcl, or some other language and have it output the current epoch time.</p>

<p>
I won't discuss that here though.</p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>
63 Calculating Time Differences</p>

<p>

</p>

<p>
Shell arithmetic is integer only.</p>

<p>
If we wish to use high resolution timing data, we need to do something so we don't lose the precision we have worked so hard to get.</p>

<p>
There are several possible solutions.</p>

<p>

</p>

<p>
64 Change the Time Base</p>

<p>
One method is to change the time base from seconds to milli, micro, or nanoseconds. </p>

<p>
This can be done by simply multiplying the time values by the appropriate amount (e.g. 1000, 1,000,000, etc.) before subtracting them.</p>

<p>
This allows for integer arithmetic on high resolution values without losing precision.</p>

<p>

</p>

<p>
65 Use the Shell bc Arbitrary Precision Calculator</p>

<p>
The bc command line calculator will perform calculations using real numbers and is easy to use in scripts.</p>

<p>
It is present by default in most distros.</p>

<p>

</p>

<p>
echo "scale=9; $endtime - $starttime" | bc</p>

<p>

</p>

<p>
where endtime and starttime are variables containing time values.</p>

<p>

</p>

<p>
66</p>

<p>
However, for some inexplicable reason, neither Debian nor Opensuse install it by default.</p>

<p>
It is present in Ubuntu and Raspberry Pi which are Debian derivatives, and it can be added to distros which lack it.</p>

<p>

</p>

<p>
67 Use awk</p>

<p>
awk can also perform calculations using real numbers and it is present in nearly all distros including in all of the ones we tested here.</p>

<p>

</p>

<p>
echo "$endtime $starttime" | awk '{printf "%.6f\n", $1 - $2}'</p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>
68 Benchmarks</p>

<p>

</p>

<p>
And of course no comparative evaluation would be complete without benchmarks where we see how each method compares to another in terms of speed.</p>

<p>

</p>

<p>
In the benchmark test I ran each method in a loop through multiple iterations, measured the elapsed time, subtracted out the time for an empty loop, and then compared it to alternate methods.</p>

<p>
For anything other than EPOCHREALTIME, the empty loop time is negligible and has no real effect on the results.</p>

<p>

</p>

<p>
69</p>

<p>
Rather interestingly I came across a bug which caused date to run very slowly if called immediately after using EPOCHREALTIME in bash.</p>

<p>
The effect of the bug was to make the date benchmark test roughly 24 times slower.</p>

<p>

</p>

<p>
This has been fixed in newer releases, but if you are using an older distro release then beware of this bug.</p>

<p>
I was able to get around it either putting a sleep delay between benchmarking  EPOCHREALTIME and benchmarking date, or by simply testing date before testing EPOCHREALTIME.</p>

<p>

</p>

<p>
70</p>

<p>
To be able to conduct additional tests I installed ts in Ubuntu and Alpine, and the GNU version of date in Alpine.</p>

<p>

</p>

<p>

</p>

<p>
71 EPOCHREALTIME Versus date in Ubuntu 2604 bash</p>

<p>
The EPOCHREALTIME method is 3103 times faster than date.</p>

<p>

</p>

<p>
However, when the same test is run on Ubuntu 2404 when the date test is run before the EPOCHREALTIME test, EPOCHREALTIME is 1240 faster than date.</p>

<p>
Other Linux distros show performance to Ubuntu 2404.</p>

<p>
It appears that a side effect of fixing whatever the bug is has the effect of slowing down date.</p>

<p>
However, this is probably not a significant issue in normal circumstances. </p>

<p>

</p>

<p>
72 date versus ts in Ubuntu 2604 bash</p>

<p>
The date method is 3.7 times faster than ts</p>

<p>

</p>

<p>
73 date versus ts in Ubuntu 2604 dash</p>

<p>
The date method is 4.9 times faster than ts</p>

<p>

</p>

<p>
74 date versus ts in Freebsd sh</p>

<p>
The date method is 2.5 times faster than ts</p>

<p>

</p>

<p>
75 date versus adjtimex in Alpine Busybox</p>

<p>
The date method is 6.0 times faster than adjtimex</p>

<p>

</p>

<p>
76 date versus ts in Alpine Busybox</p>

<p>
The date method is 20.0 times faster than ts</p>

<p>

</p>

<p>
77 bc versus awk in Ubuntu 2604</p>

<p>
I compared calculating the difference between two numbers when using bc versus awk. </p>

<p>
The difference is negligible, with bc being only 7% faster than awk. </p>

<p>

</p>

<p>

</p>

<p>
78 Conclusion for Benchmarks</p>

<p>
Based on these results, if you need to measure elapsed time to high resolution and care about runing the command with as little overhead as possible, then the order of preference should be the following.</p>

<p>

</p>

<p>
79</p>

<p>
If you are using a newer version of bash, then use EPOCHREALTIME.</p>

<p>
If that is not available, then use date, provided it allows for high resolution times.</p>

<p>
If the above two cannot be used, then use ts.</p>

<p>
If you are using Busybox and cannot install either GNU date or ts, then use adjtimex.</p>

<p>

</p>

<p>
Date is the closest in terms of being the universal portable solution, but it does not work in all cases.</p>

<p>

</p>

<p>
80</p>

<p>
I have not compared different platforms to each other in terms of performance, as that would be a much more involved problem that is outside the scope of this episode.</p>

<p>

</p>

<p>
However, different operating systems implement different commands in different ways.</p>

<p>

</p>

<p>
81</p>

<p>
For example, on Openbsd and Freebsd, ts appears to be an ELF binary. That is, it is executable machine code, possibly written in C.</p>

<p>
On  Ubuntu however, ts appears to be a perl script. </p>

<p>
As a result of this, the advantage that date has over ts is much less in Freebsd than it is with Ubuntu (and likely other Linux distros) as on Freebsd it doesn't need to load a perl interpreter to run ts. </p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>
82 Overall Conclusion</p>

<p>
You no doubt thought that measuring elapsed time was going to be so simple, and how could someone get an entire podcast out of such a simple subject?</p>

<p>
And yet here we are half an hour later with just a basic overview of the subject. </p>

<p>

</p>

<p>
83</p>

<p>
I hope you found this interesting and informative.</p>

<p>
Please let us know in the comments if you think that I have done anything incorrectly, or if you have another way of doing things.</p>

<p>

</p>

<p>
I hope to see you all again in another future episode of HPR.</p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>


<p><a href="https://hackerpublicradio.org/eps/hpr4678/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[176: NSL]]></title>
<description><![CDATA[One day Nick got a visit from the FBI demanding he give them data on one of his customers. They asked for it in the form of a National Security Letter or NSL. Something wasn’t right about this letter. It seemed to violate the constitution. So he set out to change the law.Learn more about Nicks wo...]]></description>
<link>https://tsecurity.de/de/3650717/it+sicherheit/it+podcasts/176+nsl/</link>
<pubDate>Tue, 07 Jul 2026 09:04:18 +0200</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>One day Nick got a visit from the FBI demanding he give them data on one of his customers. They asked for it in the form of a National Security Letter or NSL. Something wasn’t right about this letter. It seemed to violate the constitution. So he set out to change the law.</p><p>Learn more about Nicks work at <a href="https://calyxinstitute.org/"><strong>calyxinstitute.org</strong></a> and <a href="https://www.phreeli.com/"><strong>phreeli.com</strong></a>.</p><p>Check out Cindy’s book <a href="https://amzn.to/4gXuK2J"><strong>Privacy’s Defender: My Thirty-Year Fight Against Digital Surveillance</strong></a> (https://amzn.to/4gXuK2J).</p><h3>Sponsors</h3><p>Support for this show comes from <a href="https://www.threatlocker.com/"><strong>ThreatLocker®</strong></a>. ThreatLocker® is a Zero Trust Endpoint Protection Platform that strengthens your infrastructure from the ground up. With ThreatLocker® Allowlisting and Ringfencing™, you gain a more secure approach to blocking exploits of known and unknown vulnerabilities. ThreatLocker® provides Zero Trust control at the kernel level that enables you to allow everything you need and block everything else, including ransomware! Learn more at <a href="https://www.threatlocker.com/"><strong>www.threatlocker.com</strong></a>.</p><p>Support for this episode comes from <a href="https://www.netsuite.com/darknet"><strong>NetSuite</strong></a>. NetSuite gives you visibility and control of your financials, planning, budgeting, and of course - inventory - so you can manage risk, get reliable forecasts, and improve margins. NetSuite helps you identify rising costs, automate your manual business processes, and see where to save money. KNOW your numbers. KNOW your business. And get to KNOW how NetSuite can be the source of truth for your entire company. Visit <a href="https://www.netsuite.com/darknet"><strong>www.netsuite.com/darknet</strong></a> to learn more.</p><p>This show is sponsored by <a href="http://mazehq.com/darknet"><strong>Maze</strong></a>. Maze uses AI agents to triage and remediate cloud vulnerabilities by figuring out what’s actually exploitable, not just what’s theoretically risky. They remove the noise, prioritize vulns that matter, and manage remediation, so your team stops wasting time on meaningless vulns. Visit <a href="http://mazehq.com/darknet"><strong>MazeHQ.com/darknet</strong></a> for more information.</p><p><a href="https://darknetdiaries.com/sponsors/"><strong>View all active sponsors.</strong></a></p><h3>Sources</h3><ul>
<li><a href="https://www.democracynow.org/2010/8/11/gagged_for_6_years_nick_merrill"><strong>https://www.democracynow.org/2010/8/11/gagged_for_6_years_nick_merrill</strong></a></li>
<li><a href="https://globalfreedomofexpression.columbia.edu/cases/u-s-nicholas-merrill-v-loretta-e-lynch-14-cv-9763-vm/"><strong>https://globalfreedomofexpression.columbia.edu/cases/u-s-nicholas-merrill-v-loretta-e-lynch-14-cv-9763-vm/</strong></a></li>
<li><a href="https://clearinghouse.net/case/12966/"><strong>https://clearinghouse.net/case/12966/</strong></a></li>
<li><a href="https://www.theguardian.com/law/2015/dec/06/fbi-national-security-letter-gag-order-nick-merrill"><strong>https://www.theguardian.com/law/2015/dec/06/fbi-national-security-letter-gag-order-nick-merrill</strong></a></li>
<li><a href="https://www.aclu.org/documents/national-security-letters"><strong>https://www.aclu.org/documents/national-security-letters</strong></a></li>
<li><a href="https://www.eff.org/cases/re-matter-2011-national-security-letter"><strong>https://www.eff.org/cases/re-matter-2011-national-security-letter</strong></a></li>
<li>Cindy’s Book: <a href="https://amzn.to/4gXuK2J"><strong>Privacy’s Defender: My Thirty-Year Fight Against Digital Surveillance</strong></a>
</li>
</ul>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4677: UNIX Curio #10 - Checksums and Hashes]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.


This series is dedicated to exploring little-known—and occasionally useful—trinkets lurking in the dusty corners of UNIX-like operating systems.


In UNIX Curio #8 (
HPR episode 4657
), I talked about using standard utilities to compare files. L...]]></description>
<link>https://tsecurity.de/de/3650156/it+sicherheit/it+podcasts/hpr4677+unix+curio+10+-+checksums+and+hashes/</link>
<pubDate>Tue, 07 Jul 2026 02:04:13 +0200</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>

<blockquote>
This series is dedicated to exploring little-known—and occasionally useful—trinkets lurking in the dusty corners of UNIX-like operating systems.</blockquote>

<p>
In UNIX Curio #8 (<a href="https://hackerpublicradio.org/eps/hpr4657/" rel="noopener noreferrer" target="_blank">
HPR episode 4657</a>
), I talked about using standard utilities to compare files. Left unmentioned, however, was a method commonly used today—the hash function.</p>

<p>
As I've stated in previous entries, while I am an engineer, I don't have a background in computer science, so my understanding of the mathematics is limited. But I can give a practical description of what a hash function does. It takes an input, performs a set of calculations on it, and produces an output. As hash functions are practically used, the input is a set of bytes, such as a file or another piece of data like a password. The output is a numerical value in a fixed range—most often, expressed as hexadecimal characters. Because this "hash value" can always be represented in a certain number of bytes, its length as printed is usually a constant number of characters, padded with leading zeros if necessary. This episode will not cover the use of hashes in programming, focusing instead on using them to validate data.</p>

<p>
A hash function, or more specifically, a cryptographic hash function, has an additional property. It should be very difficult to predict what changes to the input would be required to produce a specific change in the output.</p>

<p>
An older, related concept is called a "checksum". While these are designed to vary when the input data is damaged or digits are transposed, they do not necessarily have that last property mentioned for cryptographic hashes. You have probably already encountered a checksum, even if you didn't recognize it. On a <a href="https://en.wikipedia.org/wiki/Payment_card_number" rel="noopener noreferrer" target="_blank">
16-digit number assigned to a Mastercard or Visa</a>

<sup>
1</sup>
 credit or debit card, the first six digits identify the card issuer (such as a bank), the next nine digits are assigned to you by the issuer, and the last digit is a check digit. The check digit is calculated using the values of the previous 15 digits, and it is a simple way to avoid typos in entering a card number.</p>

<p>
In another example, every <a href="https://en.wikipedia.org/wiki/Ethernet_frame#Frame_check_sequence" rel="noopener noreferrer" target="_blank">
Ethernet frame that your devices send or receive includes a checksum</a>

<sup>
2</sup>
 to help ensure that the contents weren't scrambled in transit. This is 32 bits long and is called a cyclical redundancy check, commonly referred to as a CRC. A CRC is also used in many other places—for example, the .zip file format includes one for each archive member, and this allows a program extracting files from the archive to identify if any were damaged.</p>

<p>
Our UNIX Curio for today is another example, <a href="https://pubs.opengroup.org/onlinepubs/009695399/utilities/cksum.html" rel="noopener noreferrer" target="_blank">
the </a>

<code>

<a href="https://pubs.opengroup.org/onlinepubs/009695399/utilities/cksum.html" rel="noopener noreferrer" target="_blank">
cksum</a>

</code>

<a href="https://pubs.opengroup.org/onlinepubs/009695399/utilities/cksum.html" rel="noopener noreferrer" target="_blank">
 utility</a>

<sup>
3</sup>
. It generates a 32-bit CRC based on the Ethernet algorithm. It operates on either a named file or standard input and outputs the CRC value, the length of the input, and the pathname if a file was given as an argument. Unlike most modern hashing programs, the checksum is printed as a decimal integer and is not padded, so it can be anywhere from one to ten digits long. The length value is the number of bytes in the input (actually specified as the number of <em>
octets</em>
, as systems could potentially use a byte that isn't eight bits long), also expressed as a decimal integer.</p>

<p>
There are two major ways that one could use <code>
cksum</code>
 to check the validity of a file. First, if you are transferring a file from one UNIX-like system to another, you could run <code>
cksum</code>
 against it on both systems and check that the CRC and length are the same. The utility can also be given multiple filenames as arguments, which would generate a list that can then be compared. The second way would be for someone publishing a file or set of files to also publish the CRC values, lengths, and names so that people downloading them could verify that they match. However, I don't think the practice of publishing lists like this really started until more recent hash functions like MD5 and SHA-1 came about so it is unlikely that anyone would publish CRC values instead.</p>

<p>
The advantage of these tools should be pretty obvious in comparison to <code>
cmp</code>
, one of the utilities discussed in UNIX Curio #8. To verify a file using <code>
cmp</code>
, you need two files to compare—if you're trying to check a large file you downloaded, you would need to spend the time and bandwidth to download a second copy. And if they didn't match, you would have no idea which of the two, if either, was correct. By contrast, <code>
cksum</code>
 is quicker to run, doesn't require downloading a massive amount of excess data, and if run against the original file, makes clear what the correct value is.</p>

<p>
This utility is a follow-on from a program called <code>
sum</code>
, which operated very much the same. I had a bit of trouble tracking down the exact development history, but what seems clear is that <a href="https://www.gnu.org/software/coreutils/manual/html_node/sum-invocation.html" rel="noopener noreferrer" target="_blank">
two different variants</a>

<sup>
4</sup>
 were popular: a BSD version and a System V version. Both output 16-bit checksums, but used different algorithms so they didn't give the same results. Also, the BSD version printed the length of the input data as the number of 1,024-byte blocks, while the System V version instead gave a count of 512-byte blocks. (Some sources <a href="https://man.freebsd.org/cgi/man.cgi?query=sum&amp;sektion=1&amp;manpath=FreeBSD+15.0-RELEASE+and+Ports" rel="noopener noreferrer" target="_blank">
claim that System V </a>

<code>

<a href="https://man.freebsd.org/cgi/man.cgi?query=sum&amp;sektion=1&amp;manpath=FreeBSD+15.0-RELEASE+and+Ports" rel="noopener noreferrer" target="_blank">
sum</a>

</code>

<a href="https://man.freebsd.org/cgi/man.cgi?query=sum&amp;sektion=1&amp;manpath=FreeBSD+15.0-RELEASE+and+Ports" rel="noopener noreferrer" target="_blank">
 generates a 32-bit checksum</a>

<sup>
5</sup>
, which could possibly be true internal to the algorithm, but I have tested several independent implementations of the utility and all of them output a 16-bit value for both the System V and BSD algorithms.)</p>

<p>
From what I can tell, <a href="https://www.tuhs.org/cgi-bin/utree.pl?file=3BSD/usr/src/cmd/sum.c" rel="noopener noreferrer" target="_blank">
the BSD version</a>

<sup>
6,7</sup>
 came first; it was in 3BSD but probably appeared even earlier. An identical <a href="https://www.tuhs.org/cgi-bin/utree.pl?file=32V/usr/src/cmd/sum.c" rel="noopener noreferrer" target="_blank">
copy of BSD's </a>

<code>

<a href="https://www.tuhs.org/cgi-bin/utree.pl?file=32V/usr/src/cmd/sum.c" rel="noopener noreferrer" target="_blank">
sum</a>

</code>

<a href="https://www.tuhs.org/cgi-bin/utree.pl?file=32V/usr/src/cmd/sum.c" rel="noopener noreferrer" target="_blank">
 was included with UNIX/32V</a>

<sup>
8,9</sup>
, which was AT&amp;T's 1979 port of Seventh Edition UNIX to the VAX and became one of the ancestors of System III. The divergence seems to have started with System III, released in 1980; <a href="https://www.tuhs.org/cgi-bin/utree.pl?file=SysIII/usr/src/cmd/sum.c" rel="noopener noreferrer" target="_blank">
its version of the </a>

<code>

<a href="https://www.tuhs.org/cgi-bin/utree.pl?file=SysIII/usr/src/cmd/sum.c" rel="noopener noreferrer" target="_blank">
sum</a>

</code>

<a href="https://www.tuhs.org/cgi-bin/utree.pl?file=SysIII/usr/src/cmd/sum.c" rel="noopener noreferrer" target="_blank">
 utility</a>

<sup>
10,11</sup>
 changed to a new default algorithm, though it could be made to use the BSD algorithm via the <code>
-r</code>
 option. System V looks to have kept the same behavior as System III. It's not clear to me why this algorithm is universally called the "System V algorithm" rather than the "System III algorithm"; perhaps it is because System V saw much more widespread use.</p>

<p>
Instead of trying to reconcile these differences, the POSIX committee decided to create a new utility with a unique name, use a separate algorithm entirely, and avoid the block-length dispute by printing the length in octets instead of blocks. I should point out that POSIX states that the CRC algorithm for <code>
cksum</code>
 does not strictly meet the mathematical definition of a "checksum". I don't know enough to say exactly <em>
why</em>
 it doesn't qualify or to say whether either of the <code>
sum</code>
 algorithms do. However, in less-formal usage the term "checksum" has gathered the meaning of any value used to represent or validate a set of data, so I am fine with using it no matter the technical details of the algorithm.</p>

<p>
When two different inputs produce the same checksum or hash value, this is called a "collision". Because the output value has a limited range, there are an infinite number of possible inputs that could produce a collision. From a practical standpoint the possibilities are more limited—the majority of these inputs are larger than the number of atoms in the universe, which can't fit on any machine. Unlike a cryptographic hash algorithm, the CRC is not specifically designed to resist an attacker crafting a malicious input that would cause a collision. However, it should be sufficient to detect accidental damage.</p>

<p>
Programs implementing more modern cryptographic hash algorithms are superior to the checksum utilities in avoiding collisions (whether malicious or accidental), but there are still three advantages that the older programs have. First, a system running a historical operating system might not have the hash programs available, but is more likely to have <code>
cksum</code>
 or <code>
sum</code>
 already included. Second, the checksum values are much shorter than the hashes output by the newer programs, making them easier for a user to compare by looking at them. This advantage is not as great as it might appear at first, because a common way to check a hash these days is to save a list of hashes and filenames—the hash programs can use that and do the comparison themselves, sparing the user from having to validate it character by character. The third advantage is that <code>
cksum</code>
 prints the input length in bytes. This greatly limits the number of inputs that could be maliciously crafted to create a collision.</p>

<p>
I did a moderate amount of research on implementations of modern cryptographic hash algorithms and found that some, such as MD5, SHA-1, and SHA-2, do use the length of the input (often termed "message length" in the literature) as part of the material fed in to the algorithm, but none of the hashing utilities present this length to the user as part of its output. There are two possible reasons for this that seem evident to me. First, if one is hashing a password, you would certainly not want to give a clear indication of its length—that would give any attacker a massive head start on guessing the password. However, that doesn't explain why one would avoid printing the input length for a file that is made publicly available. Second, it is convenient in many contexts, such as database entries or in software (such as <code>
git</code>
), for the hash to be a fixed length. Including an extra value that can be of variable length would complicate those use cases. However, the length value could simply be dropped and they would be no worse off than they are currently.</p>

<p>
Historically on UNIX, password hashing was treated differently from checksumming files—<a href="https://pubs.opengroup.org/onlinepubs/009695399/functions/crypt.html" rel="noopener noreferrer" target="_blank">
the </a>

<code>

<a href="https://pubs.opengroup.org/onlinepubs/009695399/functions/crypt.html" rel="noopener noreferrer" target="_blank">
crypt()</a>

</code>

<a href="https://pubs.opengroup.org/onlinepubs/009695399/functions/crypt.html" rel="noopener noreferrer" target="_blank">
 function</a>

<sup>
12</sup>
 was used for passwords while <code>
sum</code>
 and later <code>
cksum</code>
 were used to confirm a file's integrity. So even rather early on, these two use cases employed algorithms with different properties, but I haven't dived into the history deeply enough to know how intentional this was. My discussion in this episode focuses on the file use case, so understand that I'm largely avoiding the topic of password hashing. Digital signatures are yet another use case, one that I'm ignoring entirely.</p>

<p>
Every few years, some security researcher declares a particular hash algorithm to be "broken" and that everyone should move over to a new one, which generally has a longer hash. While the larger hash space certainly reduces the opportunity for collisions, this disrupts workflows, such as publishing information about software releases by e-mail, which still tends to observe a <a href="https://datatracker.ietf.org/doc/html/rfc2822#section-2.1.1" rel="noopener noreferrer" target="_blank">
78-character limit on each line</a>

<sup>
13</sup>
, making it harder to include a list of hashes with filenames next to them. This is in addition to the work of modifying software and scripts to use the new algorithm and managing how to treat past data. It seems to me that publishing the input length along with the hash would make it far more difficult to craft a malicious input that matches both, but I haven't found discussion of that during my investigation. (See the Appendix for a possible implementation.) Perhaps someone listening can record a response episode for HPR explaining that.</p>

<p>
References:</p>

<ol>

<li>

<a href="https://en.wikipedia.org/wiki/Payment_card_number" rel="noopener noreferrer" target="_blank">
Payment card number</a>
 https://en.wikipedia.org/wiki/Payment_card_number</li>

<li>

<a href="https://en.wikipedia.org/wiki/Ethernet_frame#Frame_check_sequence" rel="noopener noreferrer" target="_blank">
Ethernet frame: Frame check sequence</a>
 https://en.wikipedia.org/wiki/Ethernet_frame#Frame_check_sequence</li>

<li>

<a href="https://pubs.opengroup.org/onlinepubs/009695399/utilities/cksum.html" rel="noopener noreferrer" target="_blank">
Cksum specification</a>
 https://pubs.opengroup.org/onlinepubs/009695399/utilities/cksum.html</li>

<li>

<a href="https://www.gnu.org/software/coreutils/manual/html_node/sum-invocation.html" rel="noopener noreferrer" target="_blank">
GNU coreutils manual: sum</a>
 https://www.gnu.org/software/coreutils/manual/html_node/sum-invocation.html</li>

<li>

<a href="https://man.freebsd.org/cgi/man.cgi?query=sum&amp;sektion=1&amp;manpath=FreeBSD+15.0-RELEASE+and+Ports" rel="noopener noreferrer" target="_blank">
FreeBSD 15.0 sum manual page</a>
 https://man.freebsd.org/cgi/man.cgi?query=sum&amp;sektion=1&amp;manpath=FreeBSD+15.0-RELEASE+and+Ports</li>

<li>

<a href="https://www.tuhs.org/cgi-bin/utree.pl?file=3BSD/usr/man/man1/sum.1" rel="noopener noreferrer" target="_blank">
3BSD sum manual page</a>
 https://www.tuhs.org/cgi-bin/utree.pl?file=3BSD/usr/man/man1/sum.1</li>

<li>

<a href="https://www.tuhs.org/cgi-bin/utree.pl?file=3BSD/usr/src/cmd/sum.c" rel="noopener noreferrer" target="_blank">
3BSD sum source</a>
 https://www.tuhs.org/cgi-bin/utree.pl?file=3BSD/usr/src/cmd/sum.c</li>

<li>

<a href="https://www.tuhs.org/cgi-bin/utree.pl?file=32V/usr/man/man1/sum.1" rel="noopener noreferrer" target="_blank">
UNIX/32V sum manual page</a>
 https://www.tuhs.org/cgi-bin/utree.pl?file=32V/usr/man/man1/sum.1</li>

<li>

<a href="https://www.tuhs.org/cgi-bin/utree.pl?file=32V/usr/src/cmd/sum.c" rel="noopener noreferrer" target="_blank">
UNIX/32V sum source</a>
 https://www.tuhs.org/cgi-bin/utree.pl?file=32V/usr/src/cmd/sum.c</li>

<li>

<a href="https://www.tuhs.org/cgi-bin/utree.pl?file=SysIII/usr/src/man/man1/sum.1" rel="noopener noreferrer" target="_blank">
System III sum manual page</a>
 https://www.tuhs.org/cgi-bin/utree.pl?file=SysIII/usr/src/man/man1/sum.1</li>

<li>

<a href="https://www.tuhs.org/cgi-bin/utree.pl?file=SysIII/usr/src/cmd/sum.c" rel="noopener noreferrer" target="_blank">
System III sum source</a>
 https://www.tuhs.org/cgi-bin/utree.pl?file=SysIII/usr/src/cmd/sum.c</li>

<li>

<a href="https://pubs.opengroup.org/onlinepubs/009695399/functions/crypt.html" rel="noopener noreferrer" target="_blank">
Crypt specification</a>
 https://pubs.opengroup.org/onlinepubs/009695399/functions/crypt.html</li>

<li>

<a href="https://datatracker.ietf.org/doc/html/rfc2822#section-2.1.1" rel="noopener noreferrer" target="_blank">
RFC 2822: Internet Message Format: Line Length Limits</a>
 https://datatracker.ietf.org/doc/html/rfc2822#section-2.1.1</li>

<li>

<a href="https://lwn.net/ml/all/dd12623ae86aa5eb@cvs.openbsd.org/" rel="noopener noreferrer" target="_blank">
OpenSSH 10.1 released</a>
 https://lwn.net/ml/all/dd12623ae86aa5eb@cvs.openbsd.org/</li>

</ol>

<p>

<strong>
Appendix</strong>

</p>

<p>
The MD5 hash algorithm was (and still is) widely used, but many people characterize it as being "broken" and discourage its use. Let us imagine a variant of this, called MD5.L, where the normal MD5 hash is followed by a "." character and the input length expressed as a hexadecimal number.</p>

<p>
Take, for example, the <a href="https://lwn.net/ml/all/dd12623ae86aa5eb@cvs.openbsd.org/" rel="noopener noreferrer" target="_blank">
e-mail message announcing the release of OpenSSH 10.1</a>

<sup>
14</sup>
. At the bottom, it includes an SHA-1 hash and an SHA-2 256-bit hash for the available gzipped <code>
tar</code>
 files. That longer hash is encoded with Base64 because if it were given as a hexadecimal number, it would make the line longer than 78 bytes. The MD5.L hash of the file would be one character shorter than the SHA-1 hash, as shown below. (The extra length of the <em>
name</em>
 makes them both consume the same number of characters. The hashes shown are for the "portable" version of OpenSSH.)</p>

<p>
Some people claim SHA-1 is also broken, seeking to have people use newer and longer hash functions. For an attacker to compromise MD5.L in this example, they would not only have to create a valid <code>
tar</code>
 file compressed with <code>
gzip</code>
 containing a malicious payload having the right MD5 hash, that file would have to be exactly 1,972,831 bytes long (the decimal equivalent of 1e1a5f). While there are still many possible inputs that could be tried (256<sup>
1972831</sup>
, to be exact*), this is far fewer than the infinite possibilities for plain MD5, SHA-1, or SHA-2.</p>

<p>
If for some reason it is super important to have a fixed hash length, let's imagine another variation called MD5+L. In this one, instead of L being the input length, it is the input length <a href="https://www.mathwords.com/m/modulo.htm" rel="noopener noreferrer" target="_blank">
modulo</a>
 one terabyte (2<sup>
40</sup>
 bytes), which can be represented by 10 hexadecimal characters, left-padded with zeros. While this approach substantially increases the number of possible inputs an attacker could try, it is likely that an intended victim would notice that the file they downloaded is larger (or smaller) than expected by that much. The MD5+L hash is longer than a SHA-1 hash, but still shorter than a 256-bit SHA-2 hash.</p>

<pre data-language="plain">
SHA1 (openssh-10.1p1.tar.gz) = 7fd17b99d1beffb47cd380d64079e920bb0bd91f
SHA256 (openssh-10.1p1.tar.gz) = ufx6K4JXlGem8vQ+SoHI4d/aYU3bT5slWq/XAgu/B1g=
MD5.L (openssh-10.1p1.tar.gz) = 80dd9bb00a86519934710d05903fdf07.1e1a5f
MD5+L (openssh-10.1p1.tar.gz) = 80dd9bb00a86519934710d05903fdf07+00001e1a5f
</pre>

<p>
Of course, if MD5 is considered to be too weak even with the inclusion of the length, one could produce a ".L" or "+L" version of any hash function. However, longer hashes <em>
will</em>
 end up running into the 78-character limit.</p>

<p>

<em>
*This is a number with 4.75 million digits that the </em>

<code>

<em>
bc</em>

</code>

<em>
 utility on my laptop took almost 5 minutes to calculate.</em>

</p>


<p><a href="https://hackerpublicradio.org/eps/hpr4677/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4676: HPR Community News for June 2026]]></title>
<description><![CDATA[This show has been flagged as Explicit by the host.
New hosts  Welcome to our new hosts:   Lennart Benschop    Last Month's Shows    Id Day Date Title Host   4651 Mon 2026-06-01 HPR Community News for May 2026 HPR Volunteers   4652 Tue 2026-06-02 simon says Brian-in-Ohio   4653 Wed 2026-06-03 Sta...]]></description>
<link>https://tsecurity.de/de/3647466/it+sicherheit/it+podcasts/hpr4676+hpr+community+news+for+june+2026/</link>
<pubDate>Mon, 06 Jul 2026 02:03:11 +0200</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Explicit by the host.</p>
<h2>New hosts</h2> <p> Welcome to our new hosts: <br> </p><ul> <li><a href="https://hackerpublicradio.org/correspondents/0461.html" target="_blank">Lennart Benschop</a></li> </ul>   <h2>Last Month's Shows</h2>  <table> <tr> <th>Id</th> <th>Day</th> <th>Date</th> <th>Title</th> <th>Host</th> </tr> <tr> <td><strong><a href="https://hackerpublicradio.org/eps/hpr4651/index.html" target="_blank">4651</a></strong></td> <td>Mon</td> <td class="shrink">2026-06-01</td> <td><a href="https://hackerpublicradio.org/eps/hpr4651/index.html" target="_blank">HPR Community News for May 2026</a></td> <td><a href="https://hackerpublicradio.org/correspondents/0159.html" target="_blank">HPR Volunteers</a></td> </tr> <tr> <td><strong><a href="https://hackerpublicradio.org/eps/hpr4652/index.html" target="_blank">4652</a></strong></td> <td>Tue</td> <td class="shrink">2026-06-02</td> <td><a href="https://hackerpublicradio.org/eps/hpr4652/index.html" target="_blank">simon says</a></td> <td><a href="https://hackerpublicradio.org/correspondents/0326.html" target="_blank">Brian-in-Ohio</a></td> </tr> <tr> <td><strong><a href="https://hackerpublicradio.org/eps/hpr4653/index.html" target="_blank">4653</a></strong></td> <td>Wed</td> <td class="shrink">2026-06-03</td> <td><a href="https://hackerpublicradio.org/eps/hpr4653/index.html" target="_blank">Starting the Habit of Reading</a></td> <td><a href="https://hackerpublicradio.org/correspondents/0270.html" target="_blank">Thaj Sara</a></td> </tr> <tr> <td><strong><a href="https://hackerpublicradio.org/eps/hpr4654/index.html" target="_blank">4654</a></strong></td> <td>Thu</td> <td class="shrink">2026-06-04</td> <td><a href="https://hackerpublicradio.org/eps/hpr4654/index.html" target="_blank">What's in my component Box?</a></td> <td><a href="https://hackerpublicradio.org/correspondents/0201.html" target="_blank">MrX</a></td> </tr> <tr> <td><strong><a href="https://hackerpublicradio.org/eps/hpr4655/index.html" target="_blank">4655</a></strong></td> <td>Fri</td> <td class="shrink">2026-06-05</td> <td><a href="https://hackerpublicradio.org/eps/hpr4655/index.html" target="_blank">Tips for Glasses</a></td> <td><a href="https://hackerpublicradio.org/correspondents/0342.html" target="_blank">norrist</a></td> </tr> <tr> <td><strong><a href="https://hackerpublicradio.org/eps/hpr4656/index.html" target="_blank">4656</a></strong></td> <td>Mon</td> <td class="shrink">2026-06-08</td> <td><a href="https://hackerpublicradio.org/eps/hpr4656/index.html" target="_blank">My review of musicozy sleep/exercise bluetooth headband</a></td> <td><a href="https://hackerpublicradio.org/correspondents/0297.html" target="_blank">Swift110</a></td> </tr> <tr> <td><strong><a href="https://hackerpublicradio.org/eps/hpr4657/index.html" target="_blank">4657</a></strong></td> <td>Tue</td> <td class="shrink">2026-06-09</td> <td><a href="https://hackerpublicradio.org/eps/hpr4657/index.html" target="_blank">UNIX Curio #8 - Comparing Files</a></td> <td><a href="https://hackerpublicradio.org/correspondents/0459.html" target="_blank">Vance</a></td> </tr> <tr> <td><strong><a href="https://hackerpublicradio.org/eps/hpr4658/index.html" target="_blank">4658</a></strong></td> <td>Wed</td> <td class="shrink">2026-06-10</td> <td><a href="https://hackerpublicradio.org/eps/hpr4658/index.html" target="_blank">Audio Revisited</a></td> <td><a href="https://hackerpublicradio.org/correspondents/0455.html" target="_blank">Whiskeyjack</a></td> </tr> <tr> <td><strong><a href="https://hackerpublicradio.org/eps/hpr4659/index.html" target="_blank">4659</a></strong></td> <td>Thu</td> <td class="shrink">2026-06-11</td> <td><a href="https://hackerpublicradio.org/eps/hpr4659/index.html" target="_blank">Command Line Fun - Recording a show</a></td> <td><a href="https://hackerpublicradio.org/correspondents/0296.html" target="_blank">Kevie</a></td> </tr> <tr> <td><strong><a href="https://hackerpublicradio.org/eps/hpr4660/index.html" target="_blank">4660</a></strong></td> <td>Fri</td> <td class="shrink">2026-06-12</td> <td><a href="https://hackerpublicradio.org/eps/hpr4660/index.html" target="_blank">Robert A. Heinlein: The Future History, Part 1</a></td> <td><a href="https://hackerpublicradio.org/correspondents/0198.html" target="_blank">Ahuka</a></td> </tr> <tr> <td><strong><a href="https://hackerpublicradio.org/eps/hpr4661/index.html" target="_blank">4661</a></strong></td> <td>Mon</td> <td class="shrink">2026-06-15</td> <td><a href="https://hackerpublicradio.org/eps/hpr4661/index.html" target="_blank">Laptop Computer Woes, or How I Learned to Love My Tech Hoarding</a></td> <td><a href="https://hackerpublicradio.org/correspondents/0152.html" target="_blank">Claudio Miranda</a></td> </tr> <tr> <td><strong><a href="https://hackerpublicradio.org/eps/hpr4662/index.html" target="_blank">4662</a></strong></td> <td>Tue</td> <td class="shrink">2026-06-16</td> <td><a href="https://hackerpublicradio.org/eps/hpr4662/index.html" target="_blank">“What Are the Answers I Need, To the Questions I Don't Know Enough to Ask?”</a></td> <td><a href="https://hackerpublicradio.org/correspondents/0441.html" target="_blank">Antoine</a></td> </tr> <tr> <td><strong><a href="https://hackerpublicradio.org/eps/hpr4663/index.html" target="_blank">4663</a></strong></td> <td>Wed</td> <td class="shrink">2026-06-17</td> <td><a href="https://hackerpublicradio.org/eps/hpr4663/index.html" target="_blank">The hallway track at T-DOSE</a></td> <td><a href="https://hackerpublicradio.org/correspondents/0030.html" target="_blank">Ken Fallon</a></td> </tr> <tr> <td><strong><a href="https://hackerpublicradio.org/eps/hpr4664/index.html" target="_blank">4664</a></strong></td> <td>Thu</td> <td class="shrink">2026-06-18</td> <td><a href="https://hackerpublicradio.org/eps/hpr4664/index.html" target="_blank">No Input Mixing Tutorial and How to Build a Drone Box </a></td> <td><a href="https://hackerpublicradio.org/correspondents/0354.html" target="_blank">TheDUDE</a></td> </tr> <tr> <td><strong><a href="https://hackerpublicradio.org/eps/hpr4665/index.html" target="_blank">4665</a></strong></td> <td>Fri</td> <td class="shrink">2026-06-19</td> <td><a href="https://hackerpublicradio.org/eps/hpr4665/index.html" target="_blank">Pokémon GO</a></td> <td><a href="https://hackerpublicradio.org/correspondents/0403.html" target="_blank">Lee</a></td> </tr> <tr> <td><strong><a href="https://hackerpublicradio.org/eps/hpr4666/index.html" target="_blank">4666</a></strong></td> <td>Mon</td> <td class="shrink">2026-06-22</td> <td><a href="https://hackerpublicradio.org/eps/hpr4666/index.html" target="_blank">How I got into tech</a></td> <td><a href="https://hackerpublicradio.org/correspondents/0461.html" target="_blank">Lennart Benschop</a></td> </tr> <tr> <td><strong><a href="https://hackerpublicradio.org/eps/hpr4667/index.html" target="_blank">4667</a></strong></td> <td>Tue</td> <td class="shrink">2026-06-23</td> <td><a href="https://hackerpublicradio.org/eps/hpr4667/index.html" target="_blank">UNIX Curio #9 - printf</a></td> <td><a href="https://hackerpublicradio.org/correspondents/0459.html" target="_blank">Vance</a></td> </tr> <tr> <td><strong><a href="https://hackerpublicradio.org/eps/hpr4668/index.html" target="_blank">4668</a></strong></td> <td>Wed</td> <td class="shrink">2026-06-24</td> <td><a href="https://hackerpublicradio.org/eps/hpr4668/index.html" target="_blank">Nuclear Power Technology Follow Up on Safety</a></td> <td><a href="https://hackerpublicradio.org/correspondents/0455.html" target="_blank">Whiskeyjack</a></td> </tr> <tr> <td><strong><a href="https://hackerpublicradio.org/eps/hpr4669/index.html" target="_blank">4669</a></strong></td> <td>Thu</td> <td class="shrink">2026-06-25</td> <td><a href="https://hackerpublicradio.org/eps/hpr4669/index.html" target="_blank">HPR Beer Garden 14 - Super Strong Lager</a></td> <td><a href="https://hackerpublicradio.org/correspondents/0296.html" target="_blank">Kevie</a></td> </tr> <tr> <td><strong><a href="https://hackerpublicradio.org/eps/hpr4670/index.html" target="_blank">4670</a></strong></td> <td>Fri</td> <td class="shrink">2026-06-26</td> <td><a href="https://hackerpublicradio.org/eps/hpr4670/index.html" target="_blank">Playing Civilization V, Part 13</a></td> <td><a href="https://hackerpublicradio.org/correspondents/0198.html" target="_blank">Ahuka</a></td> </tr> <tr> <td><strong><a href="https://hackerpublicradio.org/eps/hpr4671/index.html" target="_blank">4671</a></strong></td> <td>Mon</td> <td class="shrink">2026-06-29</td> <td><a href="https://hackerpublicradio.org/eps/hpr4671/index.html" target="_blank">Protocal AI</a></td> <td><a href="https://hackerpublicradio.org/correspondents/0036.html" target="_blank">operat0r</a></td> </tr> <tr> <td><strong><a href="https://hackerpublicradio.org/eps/hpr4672/index.html" target="_blank">4672</a></strong></td> <td>Tue</td> <td class="shrink">2026-06-30</td> <td><a href="https://hackerpublicradio.org/eps/hpr4672/index.html" target="_blank">Hey Mum, I'm on Spotify ! </a></td> <td><a href="https://hackerpublicradio.org/correspondents/0030.html" target="_blank">Ken Fallon</a></td> </tr> </table>  <h2>Comments this month</h2>  <h3>Past shows</h3> <ul> <li><strong><a href="https://hackerpublicradio.org/eps/hpr4181/index.html#comments" target="_blank">hpr4181</a></strong> (2024-08-12) "<em>Downloading out of copyright movies</em>" by <a href="https://hackerpublicradio.org/correspondents/0435.html" target="_blank">Bob</a>.<br></li> <ul> <li><strong>Jan</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4181/index.html#comment_4777" target="_blank">subtitles</a></em>" (2026-06-29 21:55:12)<br></li> </ul> <li><strong><a href="https://hackerpublicradio.org/eps/hpr4633/index.html#comments" target="_blank">hpr4633</a></strong> (2026-05-06) "<em>Ham Radio Licence</em>" by <a href="https://hackerpublicradio.org/correspondents/0403.html" target="_blank">Lee</a>.<br></li> <ul> <li><strong>RJ</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4633/index.html#comment_4745" target="_blank">Very interesting as always</a></em>" (2026-06-02 11:22:47)<br></li> <li><strong>Lee</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4633/index.html#comment_4746" target="_blank">Aerials</a></em>" (2026-06-02 16:44:45)<br></li> </ul> <li><strong><a href="https://hackerpublicradio.org/eps/hpr4644/index.html#comments" target="_blank">hpr4644</a></strong> (2026-05-21) "<em>Response to comments on HPR4424: Newsboat...</em>" by <a href="https://hackerpublicradio.org/correspondents/0318.html" target="_blank">Archer72</a>.<br></li> <ul> <li><strong>Archer72</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4644/index.html#comment_4751" target="_blank">Not quite a complete script</a></em>" (2026-06-07 22:26:34)<br></li> <li><strong>Whiskeyjack</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4644/index.html#comment_4753" target="_blank">Response to hpr4644</a></em>" (2026-06-08 18:01:33)<br></li> <li><strong>Archer72</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4644/index.html#comment_4759" target="_blank">Response to WhiskeyJack</a></em>" (2026-06-12 16:50:42)<br></li> <li><strong>Whiskeyjack</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4644/index.html#comment_4760" target="_blank">Response to Archer72 on HPR4644</a></em>" (2026-06-13 11:13:49)<br></li> <li><strong>Archer72</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4644/index.html#comment_4762" target="_blank">EyeD3</a></em>" (2026-06-13 21:10:48)<br></li> </ul> <li><strong><a href="https://hackerpublicradio.org/eps/hpr4649/index.html#comments" target="_blank">hpr4649</a></strong> (2026-05-28) "<em>What did I do at work today? Part 3 Section 2</em>" by <a href="https://hackerpublicradio.org/correspondents/0403.html" target="_blank">Lee</a>.<br></li> <ul> <li><strong>Ken Fallon</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4649/index.html#comment_4744" target="_blank">Love PHP</a></em>" (2026-06-02 10:52:54)<br></li> <li><strong>candycanearter07</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4649/index.html#comment_4747" target="_blank">Re: Love PHP</a></em>" (2026-06-02 17:24:01)<br></li> </ul> <li><strong><a href="https://hackerpublicradio.org/eps/hpr4650/index.html#comments" target="_blank">hpr4650</a></strong> (2026-05-29) "<em>Playing Civilization V, Part 12</em>" by <a href="https://hackerpublicradio.org/correspondents/0198.html" target="_blank">Ahuka</a>.<br></li> <ul> <li><strong>Antoine</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4650/index.html#comment_4741" target="_blank">Puppetting and Happiness</a></em>" (2026-05-29 14:21:14)<br></li> <li><strong>Kevin O'Brien</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4650/index.html#comment_4742" target="_blank">That's the algorithm</a></em>" (2026-06-01 21:13:58)<br></li> <li><strong>Antoine</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4650/index.html#comment_4748" target="_blank">#2 Thanks!</a></em>" (2026-06-04 23:25:42)<br></li> </ul> </ul> <h3>This month's shows</h3> <ul> <li><strong><a href="https://hackerpublicradio.org/eps/hpr4651/index.html#comments" target="_blank">hpr4651</a></strong> (2026-06-01) "<em>HPR Community News for May 2026</em>" by <a href="https://hackerpublicradio.org/correspondents/0159.html" target="_blank">HPR Volunteers</a>.<br></li> <ul> <li><strong>candycanearter07</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4651/index.html#comment_4743" target="_blank">busy weeknd</a></em>" (2026-06-02 02:38:55)<br></li> </ul> <li><strong><a href="https://hackerpublicradio.org/eps/hpr4653/index.html#comments" target="_blank">hpr4653</a></strong> (2026-06-03) "<em>Starting the Habit of Reading</em>" by <a href="https://hackerpublicradio.org/correspondents/0270.html" target="_blank">Thaj Sara</a>.<br></li> <ul> <li><strong>Antoine</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4653/index.html#comment_4749" target="_blank">Reading always has been a life-saver for me, this alone makes this show Very Nice</a></em>" (2026-06-04 23:37:27)<br></li> <li><strong>Kevie</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4653/index.html#comment_4755" target="_blank">Nice episode</a></em>" (2026-06-10 08:11:43)<br></li> </ul> <li><strong><a href="https://hackerpublicradio.org/eps/hpr4654/index.html#comments" target="_blank">hpr4654</a></strong> (2026-06-04) "<em>What's in my component Box?</em>" by <a href="https://hackerpublicradio.org/correspondents/0201.html" target="_blank">MrX</a>.<br></li> <ul> <li><strong>Kevie</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4654/index.html#comment_4756" target="_blank">Geeks are ahead of their time</a></em>" (2026-06-10 08:14:12)<br></li> </ul> <li><strong><a href="https://hackerpublicradio.org/eps/hpr4655/index.html#comments" target="_blank">hpr4655</a></strong> (2026-06-05) "<em>Tips for Glasses</em>" by <a href="https://hackerpublicradio.org/correspondents/0342.html" target="_blank">norrist</a>.<br></li> <ul> <li><strong>Trey</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4655/index.html#comment_4750" target="_blank">Avoid hand soap </a></em>" (2026-06-05 12:11:33)<br></li> <li><strong>Jim DeVore </strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4655/index.html#comment_4770" target="_blank">Geeks are lazy, too</a></em>" (2026-06-21 00:10:45)<br></li> <li><strong>Operat0r</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4655/index.html#comment_4775" target="_blank">Glasses</a></em>" (2026-06-26 18:53:44)<br></li> </ul> <li><strong><a href="https://hackerpublicradio.org/eps/hpr4656/index.html#comments" target="_blank">hpr4656</a></strong> (2026-06-08) "<em>My review of musicozy sleep/exercise bluetooth headband</em>" by <a href="https://hackerpublicradio.org/correspondents/0297.html" target="_blank">Swift110</a>.<br></li> <ul> <li><strong>candycanearter07</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4656/index.html#comment_4752" target="_blank">wishlist!</a></em>" (2026-06-08 13:12:08)<br></li> <li><strong>Kevie</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4656/index.html#comment_4757" target="_blank">Interesting</a></em>" (2026-06-10 08:15:59)<br></li> </ul> <li><strong><a href="https://hackerpublicradio.org/eps/hpr4657/index.html#comments" target="_blank">hpr4657</a></strong> (2026-06-09) "<em>UNIX Curio #8 - Comparing Files</em>" by <a href="https://hackerpublicradio.org/correspondents/0459.html" target="_blank">Vance</a>.<br></li> <ul> <li><strong>xmanmonk</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4657/index.html#comment_4754" target="_blank">Great Show (again)</a></em>" (2026-06-09 23:31:58)<br></li> <li><strong>candycanearter07</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4657/index.html#comment_4758" target="_blank">comparisons</a></em>" (2026-06-11 16:57:57)<br></li> <li><strong>Whiskeyjack</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4657/index.html#comment_4761" target="_blank">HPR4657 - use of comm</a></em>" (2026-06-13 11:47:53)<br></li> <li><strong>Vance</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4657/index.html#comment_4763" target="_blank">Appreciate the comments</a></em>" (2026-06-15 03:16:05)<br></li> <li><strong>Whiskeyjack</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4657/index.html#comment_4766" target="_blank">Reply to Vance on awk in HPR4657</a></em>" (2026-06-15 17:02:57)<br></li> </ul> <li><strong><a href="https://hackerpublicradio.org/eps/hpr4659/index.html#comments" target="_blank">hpr4659</a></strong> (2026-06-11) "<em>Command Line Fun - Recording a show</em>" by <a href="https://hackerpublicradio.org/correspondents/0296.html" target="_blank">Kevie</a>.<br></li> <ul> <li><strong>candycanearter07</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4659/index.html#comment_4764" target="_blank">ffmpeg concatenation</a></em>" (2026-06-15 11:58:49)<br></li> <li><strong>Whiskeyjack</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4659/index.html#comment_4765" target="_blank">Reply to candycanearter07 on HPR4659</a></em>" (2026-06-15 16:53:16)<br></li> </ul> <li><strong><a href="https://hackerpublicradio.org/eps/hpr4661/index.html#comments" target="_blank">hpr4661</a></strong> (2026-06-15) "<em>Laptop Computer Woes, or How I Learned to Love My Tech Hoarding</em>" by <a href="https://hackerpublicradio.org/correspondents/0152.html" target="_blank">Claudio Miranda</a>.<br></li> <ul> <li><strong>candycanearter07</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4661/index.html#comment_4767" target="_blank">uses :)</a></em>" (2026-06-16 15:04:20)<br></li> <li><strong>xmanmonk</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4661/index.html#comment_4768" target="_blank">Great show!</a></em>" (2026-06-17 04:37:48)<br></li> <li><strong>ClaudioM</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4661/index.html#comment_4769" target="_blank">Thanks! (In reply to candycanearter &amp; xmanmonk)</a></em>" (2026-06-17 14:02:17)<br></li> </ul> <li><strong><a href="https://hackerpublicradio.org/eps/hpr4666/index.html#comments" target="_blank">hpr4666</a></strong> (2026-06-22) "<em>How I got into tech</em>" by <a href="https://hackerpublicradio.org/correspondents/0461.html" target="_blank">Lennart Benschop</a>.<br></li> <ul> <li><strong>Windigo</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4666/index.html#comment_4774" target="_blank">Nice to meet you</a></em>" (2026-06-26 02:24:48)<br></li> <li><strong>candycanearter07</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4666/index.html#comment_4776" target="_blank">hello!</a></em>" (2026-06-27 15:04:02)<br></li> </ul> <li><strong><a href="https://hackerpublicradio.org/eps/hpr4667/index.html#comments" target="_blank">hpr4667</a></strong> (2026-06-23) "<em>UNIX Curio #9 - printf</em>" by <a href="https://hackerpublicradio.org/correspondents/0459.html" target="_blank">Vance</a>.<br></li> <ul> <li><strong>candycanearter07</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4667/index.html#comment_4771" target="_blank">learned something new :)</a></em>" (2026-06-23 13:23:06)<br></li> <li><strong>Whiskeyjack</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4667/index.html#comment_4772" target="_blank">HPR4667 - printf</a></em>" (2026-06-24 03:54:20)<br></li> <li><strong>xmanmonk</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4667/index.html#comment_4773" target="_blank">Another great show!</a></em>" (2026-06-24 21:15:22)<br></li> </ul> </ul> <h2>Mailing List discussions</h2> <p>Policy decisions surrounding HPR are taken by the community as a whole. This discussion takes place on the <a href="https://lists.hackerpublicradio.com/mailman/listinfo/hpr" target="_blank">Mailing List</a> which is open to all HPR listeners and contributors. The discussions are open and available on the HPR server under <a href="https://lists.hackerpublicradio.com/pipermail/hpr">Mailman</a>. </p> <p>The threaded discussions this month can be found here:</p> <a href="https://lists.hackerpublicradio.com/pipermail/hpr/2026-June/thread.html" target="_blank">https://lists.hackerpublicradio.com/pipermail/hpr/2026-June/thread.html</a>  <h2>Events Calendar</h2> <p>With the kind permission of <strong>LWN.net</strong> we are linking to <a href="https://lwn.net/Calendar/" target="_blank">The LWN.net Community Calendar</a>.</p> <p>Quoting the site:</p> <blockquote>This is the LWN.net community event calendar, where we track events of interest to people using and developing Linux and free software. Clicking on individual events will take you to the appropriate web page.</blockquote> <!-- HPRCN:month=2026-06,latest_comment=4778,latest_host=461,latest_episode=4672 --><p><a href="https://hackerpublicradio.org/eps/hpr4676/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4675: Yard Inflatables]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.


SUMMARY


Presenter discusses modular inflatable systems and challenges with lawn ornaments.


IDEAS




 Modular inflatable systems for improved durability.


 Use of zip ties and 3D-printed parts for connectivity.


 Challenges with air f...]]></description>
<link>https://tsecurity.de/de/3642478/it+sicherheit/it+podcasts/hpr4675+yard+inflatables/</link>
<pubDate>Fri, 03 Jul 2026 02:03:17 +0200</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>

<h1>
SUMMARY</h1>

<p>
Presenter discusses modular inflatable systems and challenges with lawn ornaments.</p>

<h1>
IDEAS</h1>

<ol>

<li>
 Modular inflatable systems for improved durability.</li>

<li>
 Use of zip ties and 3D-printed parts for connectivity.</li>

<li>
 Challenges with air flow and electrical connections.</li>

<li>
 Need for modular lighting systems.</li>

<li>
 Repair techniques for inflatable seams.</li>

<li>
 Importance of quality materials for longevity.</li>

<li>
 Combining air and electrical systems in one tube.</li>

<li>
 DIY solutions for extending inflatable life.</li>

<li>
 Issues with cheap lawn ornaments and their components.</li>

<li>
 Industrial blow fans for large inflatables.</li>

<li>
 Protecting wires from weather damage.</li>

<li>
 Replacing faulty motors in inflatables.</li>

<li>
 Balancing air pressure to prevent leaks.</li>

<li>
 Modular design for easy maintenance.</li>

<li>
 Cost-effective solutions for outdoor decorations.</li>

<li>
 Challenges with outdoor charging boxes.</li>

<li>
 Enhancing durability through adhesive treatments.</li>

<li>
 Need for seamless integration of components.</li>

<li>
 Longevity of inflatables under continuous use.</li>

<li>
 Practical approaches to inflatable system design.</li>

</ol>

<h1>
RECOMMENDATIONS</h1>

<ol>

<li>
 Use modular designs for easier repairs.</li>

<li>
 Incorporate 3D-printed connectors for durability.</li>

<li>
 Protect electrical components from moisture.</li>

<li>
 Opt for industrial-grade fans for large inflatables.</li>

<li>
 Combine air and electrical systems in one tube.</li>

<li>
 Apply adhesive treatments to prevent seam splitting.</li>

<li>
 Replace faulty motors with compatible alternatives.</li>

<li>
 Balance air pressure to avoid overfilling.</li>

<li>
 Use high-quality materials for longer lifespan.</li>

<li>
 Implement DIY repair solutions for cost-effectiveness.</li>

<li>
 Design seamless connections for improved functionality.</li>

<li>
 Prioritize weather-resistant components.</li>

<li>
 Create modular lighting systems for flexibility.</li>

<li>
 Test inflatables under continuous use conditions.</li>

<li>
 Use spray adhesives to extend inflatable life.</li>

<li>
 Simplify assembly for user-friendly installation.</li>

<li>
 Explore cost-effective materials without compromising quality.</li>

<li>
 Address common failure points in inflatable systems.</li>

<li>
 Develop standardized repair techniques.</li>

<li>
 Focus on integrated design for longevity.</li>

</ol>

<p>

</p>


<p><a href="https://hackerpublicradio.org/eps/hpr4675/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4674: Audiobooks]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.


Lee recorded a show 4511 which aired on November 17, 2025. Since I had some observations of my own I decided to record a show in response. I have enjoyed some significant series of audiobooks, both in Science Fiction and in History, as they are b...]]></description>
<link>https://tsecurity.de/de/3639938/it+sicherheit/it+podcasts/hpr4674+audiobooks/</link>
<pubDate>Thu, 02 Jul 2026 02:03:30 +0200</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>

<p>
Lee recorded a show 4511 which aired on November 17, 2025. Since I had some observations of my own I decided to record a show in response. I have enjoyed some significant series of audiobooks, both in Science Fiction and in History, as they are both topics I greatly enjoy. And many of these are available online.</p>

<h3>
Links</h3>

<ul>

<li>

<a href="https://www.openculture.com/freeaudiobooks" rel="noopener noreferrer" target="_blank">
https://www.openculture.com/freeaudiobooks</a>

</li>

<li>

<a href="https://librivox.org/" rel="noopener noreferrer" target="_blank">
https://librivox.org</a>

</li>

<li>

<a href="https://archive.org/download/IsaacAsimovAudioBookCollection" rel="noopener noreferrer" target="_blank">
https://archive.org/download/IsaacAsimovAudioBookCollection</a>

</li>

<li>

<a href="https://www.google.com/search?client=ubuntu-sn&amp;channel=fs&amp;q=robert+heinlein+audiobooks+youtube" rel="noopener noreferrer" target="_blank">
https://www.google.com/search?client=ubuntu-sn&amp;channel=fs&amp;q=robert+heinlein+audiobooks+youtube</a>

</li>

<li>

<a href="https://archive.org/details/arthur-c.-clarke-audiobooks-two" rel="noopener noreferrer" target="_blank">
https://archive.org/details/arthur-c.-clarke-audiobooks-two</a>

</li>

<li>

<a href="https://librivox.org/author/808" rel="noopener noreferrer" target="_blank">
https://librivox.org/author/808</a>

</li>

<li>

<a href="https://archive.org/details/WillDurant-TheStoryOfCivilizationVolume1BookmarkableM4bFile" rel="noopener noreferrer" target="_blank">
https://archive.org/details/WillDurant-TheStoryOfCivilizationVolume1BookmarkableM4bFile</a>

</li>

</ul>

<p>

</p>


<p><a href="https://hackerpublicradio.org/eps/hpr4674/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4673: First contact conversation]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.

Hello, this is your host, Archer72 for another episode of Hacker Public radio.
In this episode, I make my first contact off a local repeater in a small town in Kentucky.
What got me to try my hand at radio? It was when I started to capture ISS ...]]></description>
<link>https://tsecurity.de/de/3637107/it+sicherheit/it+podcasts/hpr4673+first+contact+conversation/</link>
<pubDate>Wed, 01 Jul 2026 02:03:15 +0200</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>

<p>Hello, this is your host, Archer72 for another episode of Hacker Public radio.</p>
<p>In this episode, I make my first contact off a local repeater in a small town in Kentucky.</p>
<p>What got me to try my hand at radio? It was when I started to capture ISS (International Space Station) Ham radio transmissions. From Kentucky, I have logged receiving from Texas and Oregon and as far as a brief transmission over Great Britain.</p>
<p>My next step was to have a first contact, which I botched at first when I said my call sign, and didn’t leave enough time for someone to respond.</p>
<p>I thought that a repeater was the best place to start, so found this one on RepeaterBook.com</p>
<p>The repeater was found in RepeaterBook at <a href="https://www.repeaterbook.com/repeaters/details.php?state_id=21&amp;ID=101" rel="noopener noreferrer" target="_blank">RepeaterBook : My local Cynthiana, Kentucky repeater</a></p>
<p><a href="https://www.youtube.com/@HCARC-n8z" rel="noopener noreferrer" target="_blank"> Youtube : Harrison County Amateur Radio Club</a></p>
<p><a href="https://www.qrz.com/db/K4HSN" rel="noopener noreferrer" target="_blank">QRZ : Harrison County Amateur Radio Club</a></p>
<p><a href="https://www.facebook.com/groups/723790869028153" rel="noopener noreferrer" target="_blank">Facebook : Harrison County Amateur Radio Club</a></p>
<p>The callsign for this repeater is Kilo-Four-Kilo-Juliett-Quebec</p>
<p>It is currently On Air (and quite active near club time and the weekend)</p>
<p>The base frequency is 147.165 MHz with an offset of plus (+) 600 KHz and a tone to open the repeater, of 67.0 Hz</p>
<p>It is hosted by the Bluegrass Amateur Radio Society</p>
<p>The RepeaterBook entry was updated on 2025-10-27</p>

<pre data-language="plain">
K4KJQ
On-Air
Open
 147.16500 (+) MHz 67.0

Cynthiana • Harrison County • Kentucky

Updated 2025-10-27


Technical
Downlink    147.16500
Uplink  147.76500
Offset  +0.600
Uplink Tone 67.0
Downlink Tone   67.0
Antenna (AGL)   125 feet
Sponsor: Bluegrass Amateur Radio Society
Sponsor: BARS 
Local Time  04:30 (EDT UTC-04:00 DST)
America/New_York
Reviewed    2025-10-27
</pre>

<p><a href="https://www.bluegrassars.org/" rel="noopener noreferrer" target="_blank">Bluegrass Amateur Radio Society</a></p>

<h2>RepeaterBook Worldwide</h2>

<p><a href="https://www.repeaterbook.com/row_repeaters/index.php?state_id=none" rel="noopener noreferrer" target="_blank">RepeaterBook is a worldwide amateur radio repeater directory</a></p>
<p>So, with after all that being said I programmed a Baofeng BF-F8HP to this frequency manually. You can also use open source Chirp software, but I wanted to know my radio to program it on the fly.</p>
<p>This brings me to a recording with permission from Keith (KO4BWJ) who is located outside this little A notable feature of this the town of Cynthiana, Kentucky is the hometown of the artist 
<a href="https://en.wikipedia.org/wiki/Robert_Kirkman" rel="noopener noreferrer" target="_blank">Robert Kirkman</a> for the Television series The Walking Dead, and home to the mural depicting the main characters of the show. This mural had some controversy over the rights to have it depicted, or so I thought. The actual story is story is that some groups did not want a Zombie theme representing their town.</p>
<p><a href="https://www.roadsideamerica.com/tip/53474" rel="noopener noreferrer" target="_blank">Cynthiana, Kentucky: Walking Dead Mural</a></p>
<p>Without further delay, here is the promised recording.</p>
<p>…</p>
<p>I hope you enjoyed and learned from this little piece of an experience Ham vs a new (to the airwaves) Ham.</p>
<p>This has been Archer72 (Kilo-Delta-Niner-Victor-Mike-Whiskey)</p>
<p>73</p>
<p><a href="https://hackerpublicradio.org/eps/hpr4673/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4672: Hey Mum, I'm on Spotify !]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.


The Technical Dutch Open Source Event (T-DOSE) is a free conference to promote the use and development of Open Source software. This event has is organised yearly since 2006 in the Brainport region, near Eindhoven, The Netherlands. During this ev...]]></description>
<link>https://tsecurity.de/de/3634276/it+sicherheit/it+podcasts/hpr4672+hey+mum+im+on+spotify/</link>
<pubDate>Tue, 30 Jun 2026 02:02:51 +0200</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>

<p>
The Technical Dutch Open Source Event (T-DOSE) is a free conference to promote the use and development of Open Source software. This event has is organised yearly since 2006 in the Brainport region, near Eindhoven, The Netherlands. During this event, Open Source projects, developers and visitors can exchange ideas and knowledge.</p>

<p>

</p>

<p>
Ken gave a presentation, you can watch the recording <a href="https://www.youtube.com/watch?v=6gmX-Ap7knI&amp;t=10912s" rel="noopener noreferrer" target="_blank">
https://www.youtube.com/watch?v=6gmX-Ap7knI&amp;t=10912s</a>

</p>


<p><a href="https://hackerpublicradio.org/eps/hpr4672/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4671: Protocal AI]]></title>
<description><![CDATA[This show has been flagged as Explicit by the host.


In this episode, Operator dives into his ongoing journey to migrate away from centralized cloud ecosystems specifically moving his daily workflow off Google Keep and onto 
Obsidian
 hosted locally on a Debian server. Operating purely over a se...]]></description>
<link>https://tsecurity.de/de/3631691/it+sicherheit/it+podcasts/hpr4671+protocal+ai/</link>
<pubDate>Mon, 29 Jun 2026 02:02:09 +0200</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Explicit by the host.</p>

<p>
In this episode, Operator dives into his ongoing journey to migrate away from centralized cloud ecosystems specifically moving his daily workflow off Google Keep and onto <strong>
<a href="https://obsidian.md/">Obsidian</a></strong>
 hosted locally on a Debian server. Operating purely over a secure VPN to minimize his external attack surface, he discusses the security considerations of managing personal data in local plain-text markdown files.</p>

<p>
The episode features a deep dive into local AI infrastructure, sparked by technologist <a href="https://danielmiessler.com/">Daniel Miessler’s</a> recent shift away from <strong>
<a href="https://en.wikipedia.org/wiki/Retrieval-augmented_generation">RAG (Retrieval-Augmented Generation)</a></strong>
 in favor of a simpler, localized file-system-as-context approach (using fast search tools like ripgrep). Operator shares his own mixed results experimenting with RAG noting great success with massive, structured car repair manuals, but incredibly poor fidelity when indexing conversational podcast transcripts.</p>

<p>
To find the sweet spot, Operator is testing a <strong>
dual approach</strong>
: combining flat-file local search with a PostgreSQL vector database (<code>
<a href="https://github.com/pgvector/pgvector">pgvector</a></code>
). He also rants about the frustrating "hype cycle" of online tutorials that claim to teach "local" setups but secretly rely on expensive, cloud-hosted frontier models.</p>

<p>
Finally, the host introduces his ambitious roadmap for <strong>
"Protocol AI."</strong>
 Designed as a localized, read-only dashboard to help manage his ADHD and "time blindness," this system will scrape, aggregate, and summarize his cluttered digital life including multiple Gmail accounts, Yahoo spam, calendars, and a massive array of social media feeds (Signal, Discord, Mastodon, BlueSky). The long-term goal? Transitioning from a read-only local summarizer to a safe, "human-in-the-loop" execution assistant that keeps his data out of the hands of mega-corporations.</p>

<h2>
References
</h2>
<blockquote>
Obsidian is a proprietary personal knowledge base and note-taking application that operates on Markdown files. The software is free for personal and commercial use; only the offered cloud services, optional commercial licenses, and early access versions are paid. It is available as desktop versions for macOS, Windows and Linux as well as for mobile operating systems such as iOS and Android, but not as a web application. 
</blockquote>
<p>

<a href="https://en.wikipedia.org/wiki/Obsidian_(software)">Obsidian - From Wikipedia, the free encyclopedia</a>
</p>


<blockquote>
Retrieval-augmented generation (RAG) is a technique that enables large language models (LLMs) to retrieve and incorporate new information from external data sources. With RAG, LLMs first refer to a specified set of documents, then respond to user queries. These documents supplement information from the LLM's pre-existing training data. This allows LLMs to use domain-specific and/or updated information that is not available in the training data. For example, this enables LLM-based chatbots to access internal company data or generate responses based on authoritative sources. 
</blockquote>

<p><a href="https://en.wikipedia.org/wiki/Retrieval-augmented_generation">RAG (Retrieval-Augmented Generation)</a></p><p><a href="https://hackerpublicradio.org/eps/hpr4671/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4670: Playing Civilization V, Part 13]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.
In our sample game we look at playing as Austria and aiming for a Diplomatic Victory. And our focus is on puppeting City-States, but I misunderstood and instead of making a Diplomatic Victory easier, it makes it harder. I still managed to get my Di...]]></description>
<link>https://tsecurity.de/de/3626067/it+sicherheit/it+podcasts/hpr4670+playing+civilization+v+part+13/</link>
<pubDate>Fri, 26 Jun 2026 02:02:43 +0200</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>
<p>In our sample game we look at playing as Austria and aiming for a Diplomatic Victory. And our focus is on puppeting City-States, but I misunderstood and instead of making a Diplomatic Victory easier, it makes it harder. I still managed to get my Diplomatic Victory, but a Science or Domination Victory would definitely have been easier in this scenario.</p>

<h1>Playing Civilization V, Part 13</h1>

<h2>Playing for a Diplomatic Victory, Part 2</h2>

<p>So, how do you solve a Happiness problem? For a full discussion, you can check out this section of the <a href="https://civilization.fandom.com/wiki/Happiness_(Civ5)" data-type="link" data-id="https://civilization.fandom.com/wiki/Happiness_(Civ5)" target="_blank" rel="noreferrer noopener">Civilization Wiki</a>. In Civilization V you have these options:</p>

<ul>
<li>Trade for luxuries – Luxury resources are the best way to get a quick hit of Happiness, and trade is the best way to do this quickly. But to trade you have to have met the other civ, so my drive to explore pays off here. Every luxury resource I can obtain adds +4 Global Happiness to my Empire. Note that only the first unit of the resources adds happiness. So if you have multiple copies of a luxury resource you should keep one and trade the others if you can.</li>

<li>Buildings – Buildings like the Circus (+2), Colosseum (+2), Zoo (+2), and Stadium (+4) provide local happiness in the city that builds them. That still gets added to your total happiness number, but local happiness can never exceed the size of the population. So if you have a city with 5 population, building a Circus and a Colosseum might make sense, but building a Circus and a Stadium would not since 2 of the Happiness would not count. Buildings take longer than Trade deals, so if you need a quick hit start with trading for Luxuries.</li>

<li>Wonders – Chichen Itza (+4), Notre Dame (+10), Taj Mahal (+4), Eiffel Tower (+5), Neuschwanstein (+1 for every Castle you have), Prora (+1, plus +1 for every 2 Social Policies you have adopted), and CN Tower (+1 per city). Wonders are even harder to build, and you may not get them since you are competing with other players. But there is a National Wonder worth getting, the Circus Maximus (+5)</li>

<li>Social Policies – Every policy tree has policies that can add to Happiness or decrease Unhappiness, which is just as good.</li>

<li>Natural Wonders – Each Natural Wonder grants +1 Global Happiness to each empire that has discovered it. So again exploration is key.</li>

<li>Mercantile City States grant +3 Global Happiness to each Empire that is at least Friends with it.</li>
</ul>

<p>So you have a lot of options here, and they are listed in order of how you should pursue them. Trading for Luxury Resources can be done quickly and provide an immediate boost, so you should be actively trading all along. Buildings and Wonders should definitely be pursued, but here you will probably be balancing demands for other investments as well. Natural Wonders are nice, but you need to explore the whole map to max that out. I was able to trade one of my Whales to Patchacuti for one of his Ivory, which helped push my happiness up. Then with Askia I traded one Spice for one Copper. I also made a small gift to the City-State of Manila to make them my ally. Once 5 turns have elapsed, I can take them over via Diplomatic Marriage. And I have started on Colosseums in several of my cities to push up my Happiness further.</p>

<p>Meanwhile I continued my exporations, and became the first to discover all of the the other Empires in the game. This makes me the host for the World Council, which is good for one additional vote. I will keep exploring since there are probably some Natural Wonders out there worth finding yet. And indeed on the next turn I found Mount Fuji, pushing my Happiness to 24. Then I Puppeted Manilaa, and over a couple of turns it dropped to 18. But a Colosseum got built, and I found a Natural Wonder,so I am back to 21. I am not the leader in this game, and I think I can afford to Puppet another City-State. For now I am avoiding doing this to Mercantile City-States since they can add to my Happiness. But there’s lots of City-States in this game. I picked Kathmandu for my next target, but also dropped 250 on Ragusa to become Friends with them. You have to look to the future sometimes. I am currently pulling in 144 Gold per turn, so I can afford it.</p>

<p>At turn 267 my Happiness was up to 30, but as soon as I puppeted Kathmandu it dropped to 22. This is why you need to manage your Happiness carefully. This pushed me another 100 points up on the Leader board, so I am in good shape. But with 22 Happiness, I can probably afford to start on puppeting Ragusa. At turn 272 I have 5766 Gold, and I am earninig 163 Gold per turn. My Happiness is at 27, so I am in good shape. I puppet Ragusa, and my Happiness falls to 18, but my status on the leader board goes up another 100 points, putting me 200 ahead of my nearest competitor. But a few turns later and my Happiness is back up to 24, so I am starting the process to puppet Bucharest. At turn 280 I have 6584 Gold, I am earning 179 per turn, and my Happiness is 26. Then I puppet Bucharest, and my Happiness drops to 16. But I am nearly 300 ahead of my nearest competitor on the leader board, so not bad.</p>

<p>Also, we are getting near to the first World Council, where I am the host. I have put a proposal on the agenda to enact a World’s Fair. The number 2 player has put a proposal on the ban Whales as a luxury resource, and I have a lot of whale resources. I suspect the World’s Fair will pass without my votes since many other players supported it, so I will put my votes into denying the Whale ban. We’ll see how it goes. I have the most votes, but if everyone else gangs up on me they can get it passed.</p>

<p>And as I expected, the World’s Fair passed without my votes, and the Whale ban was defeated. I tabled a proposal to enact Arts Funding for the next Council. It looks to be very popular. Right now I starting to snowball. On turn 287 I now have 6476 Gold, and I am earning 231 each turn. I have puppeted 6 City-States, and my Happiness is at 31. I can now start to puppet another. In the World Council I have 4 votes, and every other player has 1. My main strategy right now is to keep on friendly terms with the other players since everything is going well. But I am also starting to build factories to improve my Production capacity, which in turn wil let me update my Military. I picked up a Great Scientist, and used him to construct an Academy to boost my Science output. And every city next to a mountain has gotten an Observatory for added science . And then I constructed the Leaning Tower of Pisa and got one free Great Person of my choice, and I chose a Great Scientist and constructed another academy. And I hit a Golden Age good for 10 turns.</p>

<p>My Golden Age ended, but on the next turn I finished the Taj Mahal which gave me another 10 turn Golden Age, in addition to =4 Global Happiness. And I used some of my big cash balance to upgrade my military units, because in this game the best way to keep the peace is to have a strong military. Then on the next turn I was able to choose an ideology, so I picked Freedom, and for my two policies I chose Universal Healthcare and Capitalism, each of which added Happiness. I have earned a couple of Great Artists, and I plan to use them to create more Golden Ages since accumulating Culture is not part of my strategy. On turn 309 I puppeted Bratislava and started on Wittenberg. And now that I have expxlored the entire map I don’t need my Caravels any longer, so I deleted them. then on turn 314 my closest competitor, Japan, denounced me, and was in turn denounced by Brazil. I have been building up my military, so I am not worried. Basically, Japan has realized I am opening up a bigger lead, and that is why they denounced me. I’d like to win without going to war, but if he attacks me I can handle it. Meanwhile, I am also building up my Science to open up a lead there.</p>

<p>On the next turn I built the Red Fort, which improves my defensive strength. Brazil approached me to join in a war on Japan, but I declined. I am not seeking a military victory in this game, so I don’t want to be distracted. However I just puppeted two more cities, and looking at the map I now have 3 cities on the border of Japan. So maybe there will be a war in my future. I got another policy to choose, and picked Universal Suffrage, which increases the length of Golden Ages, since I plan a few. And I am starting to build more military units, starting with riflemen which are good for defending cities. If I am given time I will ship them to my puppeted cities near Japan. But if he attackes me before then, they are still worth having.</p>


<h3>Links</h3>
<ul>
<li><a href="https://civilization.fandom.com/wiki/Happiness_(Civ5)">https://civilization.fandom.com/wiki/Happiness_(Civ5)</a></li>
<li><a href="https://www.palain.com/gaming/civilization-v/playing-civilization-v-part-13/">https://www.palain.com/gaming/civilization-v/playing-civilization-v-part-13/</a></li>
</ul>

<p><a href="https://hackerpublicradio.org/eps/hpr4670/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4669: HPR Beer Garden 14 - Super Strong Lager]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.


In the 14th episode of the HPR Beer Garden, Dave and Kevie are joined by regular guest Paul to sample super strong lager. Known in the media as 'Tramp Juice', the guys look at whether this infamous style is worth a try and how it rates as a beer ...]]></description>
<link>https://tsecurity.de/de/3623108/it+sicherheit/it+podcasts/hpr4669+hpr+beer+garden+14+-+super+strong+lager/</link>
<pubDate>Thu, 25 Jun 2026 02:03:19 +0200</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>

<p>
In the 14th episode of the HPR Beer Garden, Dave and Kevie are joined by regular guest Paul to sample super strong lager. Known in the media as 'Tramp Juice', the guys look at whether this infamous style is worth a try and how it rates as a beer when you look past the stigma. Dave samples <a href="https://www.carlsbergmarstons.co.uk/products/skol/skol-super/" rel="noopener noreferrer" target="_blank">
Skol Super,</a>
Kevie tries <a href="https://www.kestrelbeer.com/kestrel-super-premium/" rel="noopener noreferrer" target="_blank">
Kestrel Super</a>
and Paul opts for <a href="https://perla.pl/en/products/perla-mocna/" rel="noopener noreferrer" target="_blank">
Petra Mocna</a>
from Poland.</p>

<p>

</p>

<p>

<a href="https://hackerpublicradio.org/eps/hpr4669/hpr4669_image_1.png">
<img src="https://hackerpublicradio.org/eps/hpr4669/hpr4669_image_1_tn.png">
</a>

</p>

<p>

</p>

<p>

<strong>
Upcoming beers:</strong>

</p>

<p>
Double IPA</p>

<p>
Belgian Blonde</p>

<p>
Double Dry Hopped (DDH) IPA</p>

<p>

</p>

<p>
Connect with the guys on <strong>
Untappd</strong>
:</p>

<ul>

<li>

<a href="https://untappd.com/user/thelovebug" rel="noopener noreferrer" target="_blank">
Dave</a>

</li>

<li>

<a href="https://untappd.com/user/gorenia" rel="noopener noreferrer" target="_blank">
Paul</a>

</li>

<li>

<a href="https://untappd.com/user/kevie49" rel="noopener noreferrer" target="_blank">
Kevie</a>

</li>

</ul>

<p>

</p>

<p>
The intro sounds for the show are used from:</p>

<ul>

<li>

<a href="https://freesound.org/people/mixtus/sounds/329806/" rel="noopener noreferrer" target="_blank">
https://freesound.org/people/mixtus/sounds/329806/</a>

</li>

<li>

<a href="https://freesound.org/people/j1987/sounds/123003/" rel="noopener noreferrer" target="_blank">
https://freesound.org/people/j1987/sounds/123003/</a>

</li>

<li>

<a href="https://freesound.org/people/greatsoundstube/sounds/628437/" rel="noopener noreferrer" target="_blank">
https://freesound.org/people/greatsoundstube/sounds/628437/</a>

</li>

</ul>

<p>

</p>


<p><a href="https://hackerpublicradio.org/eps/hpr4669/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4668: Nuclear Power Technology Follow Up on Safety]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.


--------------------






01 Introduction






This is the second follow up to my 8 part series on nuclear power. In this episode I will attempt to answer a question posed by brian in ohio in a comment on HPR4583. In that comment he said:...]]></description>
<link>https://tsecurity.de/de/3619898/it+sicherheit/it+podcasts/hpr4668+nuclear+power+technology+follow+up+on+safety/</link>
<pubDate>Wed, 24 Jun 2026 02:03:28 +0200</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>

<p>
--------------------</p>

<p>

</p>

<p>
01 Introduction</p>

<p>

</p>

<p>
This is the second follow up to my 8 part series on nuclear power. In this episode I will attempt to answer a question posed by brian in ohio in a comment on HPR4583. In that comment he said:</p>

<p>

</p>

<p>
02</p>

<p>
--------------------</p>

<p>

</p>

<p>
Loving this series. Maybe Whiskey Jack could give some cost comparisons between large and small reactors. He could also give us a realistic look at nuclear plant safety/accidents compared to conventional power production. Looking forward to the episode on FORTH generation reactors ;-)</p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>
03</p>

<p>
End of quote.</p>

<p>

</p>

<p>
The first question I answered in my previous follow up, which was HPR4628. In this episode I will attempt to answer the second question, which was about the safety of nuclear power compared to other sources of electrical power generation.</p>

<p>

</p>

<p>
One of the HPR janitors encouraged me to make this episode, so I think we can thank him for getting another HPR episode made.</p>

<p>

</p>

<p>
04 Defining the Scope</p>

<p>
First, let's define the scope of the question. </p>

<p>

</p>

<p>
This will cover electrical power generation only.</p>

<p>
Within that scope I will consider only the following sources of energy.</p>

<p>

</p>

<p>
05</p>

<p>
Coal</p>

<p>
Oil</p>

<p>
Natural Gas</p>

<p>
Hydroelectric</p>

<p>
Nuclear</p>

<p>
Wind</p>

<p>
Solar</p>

<p>

</p>

<p>
I won't cover geothermal, wave, or tidal power as these are only used in very small amounts and so there simply isn't enough literature on them to base a discussion on . </p>

<p>

</p>

<p>
06 Foreshadow Conclusion</p>

<p>
I should mention right away that I cannot provide absolute answers to this question in the form of a nice, neat ranking table based on numbers from peer reviewed scientific sources. </p>

<p>
The reasons for this will become apparent, but to put it briefly, the data on which to base such a ranking simply doesn't exist. </p>

<p>

</p>

<p>
I will however provide context within which people can think about the issue.</p>

<p>
Wherever possible, I will provide links to the references that I used in the show notes so you can read further on this yourself.</p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>
07 Energy Catastrophism versus Energy Uniformitarianism</p>

<p>

</p>

<p>
First though I need to go off on a slight geological detour in order to explain an important analogy that I will use.</p>

<p>

</p>

<p>
08</p>

<p>
In the 19th century there was a great debate among geologists over what is known as catastrophism versus uniformitarianism.</p>

<p>
In seeking to explain the origins of the earth and of the landscape that we see around us, there were two points of view.</p>

<p>

</p>

<p>
09</p>

<p>
One was "catastrophism". </p>

<p>
This is the belief that the mountains, valleys, and plains that we see around us were formed as a result of great catastrophes which occurred relatively recently in earth's history. </p>

<p>
This explanation was necessary in order to fit geological features into an earth that was believed to be only a few thousands of years old.</p>

<p>
This view was heavily influenced  by religious belief.</p>

<p>
In this view Noah's flood was the great catastrophe and the fossils of dinosaurs were the remains of animals who had not been saved on the ark and so had died in the flood.</p>

<p>

</p>

<p>
10</p>

<p>
The other point of view was uniformitarianism.</p>

<p>
This was the hypothesis that the landscape we see around us can be explained by the very slow accumulation of very small changes over very long periods of time. </p>

<p>
For this to be true however, the earth had to be far older than the few thousand years that a literal reading of the bible would suggest.</p>

<p>
The earth in fact had to be many, many, millions of years old.</p>

<p>

</p>

<p>
11</p>

<p>
Eventually, the uniformitarian view won out and people understood that while some catastrophes can take place, the shape of the landscape is overwhelmingly due to small changes over very long periods of time.</p>

<p>

</p>

<p>

</p>

<p>
12 How is this Relevant to this Episode You Ask?</p>

<p>
How this is relevant is that I will use this analogy to explain how we need to think about energy and safety.</p>

<p>
Very small numbers of deaths and injuries multiplied over many occurrences can add up to big numbers, comparable in scale or possibly even larger than a single catastrophe or even several of them.</p>

<p>

</p>

<p>
13</p>

<p>
I don't know if anyone else has used this analogy before, I have just thought of this when writing the script for this podcast.</p>

<p>
None the less, I think it is a very useful way of helping to understand the issues.</p>

<p>

</p>

<p>
14</p>

<p>
As an example of this, think about the well known case of the safety of flying versus the safety of travelling in your car.</p>

<p>
Air crashes are catastrophes that make the headlines.</p>

<p>
Automobile crashes are seldom more than local news at best.</p>

<p>
You have probably heard many times the claim that if you making a trip somewhere, you are safer to fly than to drive yourself in your car.</p>

<p>

</p>

<p>

</p>

<p>
15 Example - Hydro versus Solar</p>

<p>
I will now present an example of this.</p>

<p>
Hydro electric power has some notable large scale catastrophes associated with it.</p>

<p>
Roof top solar power does not have any notable catastrophes that I am aware of.</p>

<p>
However, which is safer?</p>

<p>

</p>

<p>
16 Hydro Catastrophes</p>

<p>
Here are three examples of hydro electric catastrophes in just one country, Italy.</p>

<p>

</p>

<p>
The Vajont Dam which collapsed in1963</p>

<p>
An estimated 1,917 to 2,500 people died.</p>

<p>

</p>

<p>
The Sella Zerbino dam which collapsed in 1935.</p>

<p>
More than 100 people died.</p>

<p>

</p>

<p>
The Gleno Dam which collapsed in 1923.</p>

<p>
An estimated 350 people died.</p>

<p>

</p>

<p>
https://damfailures.org/</p>

<p>
https://pmc.ncbi.nlm.nih.gov/articles/PMC4997708/</p>

<p>

</p>

<p>
17</p>

<p>
I haven't tried to compile a global list of the worst hydro electric dam collapses, as this sort of information is actually very difficult to find, even on web sites dedicated to dam failures.</p>

<p>
An additional problem is that information on whether a dam was used for electric power generation or not is often not available.</p>

<p>

</p>

<p>
18</p>

<p>
Dam failures where contradictory or insufficient information is available on whether there was an associated hydro power plant include the 1975 Banqian Dam failure, where death estimates range up to a quarter of a million.</p>

<p>

</p>

<p>
19 Solar Panel Slow Accumulation</p>

<p>
Contrast this with roof top solar panels.</p>

<p>
Many small accidents can add up to big numbers as well.</p>

<p>

</p>

<p>
20</p>

<p>
Health and safety literature discussing solar panel safety mention things such as</p>

<p>
Falls from roofs.</p>

<p>
Electric shock.</p>

<p>
Arc flash (burns from electrical arcing).</p>

<p>
Normal electrical safety procedures which are based around locking out sources of energy do not work with solar panels which makes safety more difficult.</p>

<p>
Heat stress due to working exposed in the hot sun.</p>

<p>

</p>

<p>
Warning from US government on falls by solar panel installers.</p>

<p>
https://stacks.cdc.gov/view/cdc/228946</p>

<p>
https://www.osha.gov/green-jobs/solar</p>

<p>

</p>

<p>

</p>

<p>
21 Why We Cannot Compare the Two</p>

<p>
Hydro catastrophes are not well documented, but we can at least find records of some of the most notable ones.</p>

<p>
However, even those have very large variations in estimates of deaths.</p>

<p>

</p>

<p>
22</p>

<p>
Roof top solar deaths however are largely undocumented.</p>

<p>
The industry is largely unregulated.</p>

<p>
There is no central authority which accumulates many individual deaths or injuries.</p>

<p>
At best there are worker and public safety bodies who simply accumulate those statistics into general construction or household injuries.</p>

<p>

</p>

<p>
23</p>

<p>
Thus we have no reliable means of comparing the two energy sources on a comparable basis.</p>

<p>
We face the same problem with all other major electrical energy sources. </p>

<p>
So far as I am aware, there are no peer reviewed scientific studies which compare the relative safety of all of the major electrical energy sources we are considering here based on actual numbers.</p>

<p>

</p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>
24 Safety Risks</p>

<p>

</p>

<p>
I will now try to list some the major hazards for each of energy sources we are considering.</p>

<p>
There is however limited data available.</p>

<p>
In many cases we just have reference to worker safety organizations as to what the hazards are.</p>

<p>
I will not attempt here to put numbers to these here. </p>

<p>

</p>

<p>
Categories</p>

<p>

</p>

<p>
25 Coal, Oil, Natural Gas</p>

<p>
The hazards are</p>

<p>
Air pollution</p>

<p>
Mining and oil field accidents</p>

<p>
Pipeline explosions</p>

<p>
Transportation accidents. These- move a lot of material so these are significant.</p>

<p>

</p>

<p>
26 Hydroelectric</p>

<p>
These include</p>

<p>
Dam collapse</p>

<p>
Drowning</p>

<p>

</p>

<p>
27 Nuclear</p>

<p>
These include</p>

<p>
Radiation exposure</p>

<p>

</p>

<p>
28 Wind</p>

<p>
These include</p>

<p>
Falls</p>

<p>
Confined space deaths (there is not much detail on this)</p>

<p>
Electric shock</p>

<p>
Ice throws (that is, throwing pieces of ice off the blades)</p>

<p>
This technology has a significant problem with people working alone which greatly increases risks associated with other dangers.</p>

<p>

</p>

<p>
29 Solar</p>

<p>
These include</p>

<p>
Falls</p>

<p>
Electric shock</p>

<p>
Arc flash</p>

<p>
Heat stress</p>

<p>

</p>

<p>
30</p>

<p>
I have not tried to cover all possible risks associated with each category, just the ones which each industry considers to be the risks they concern themselves with.</p>

<p>
There does not exist any means by which risks of similar types are compared across different industries. </p>

<p>

</p>

<p>
31 Reliability of Supply is Also Safety</p>

<p>
In a completely electrified net zero society, reliability of supply is a safety matter.</p>

<p>
People will die in very large numbers in cold climates if they do not have heat.</p>

<p>
If we have no fossil fuels, we need to also consider how reliably does a grid based on any of the options work.</p>

<p>
I have not seen anyone attempt to address this question and will not attempt to address it here.</p>

<p>
However, it must be addressed in any comprehensive attempt to rank safety. </p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>
32 Studies or Articles on Estimates of Relative Safety</p>

<p>

</p>

<p>
Despite the difficulties of comparing the safety of different sources of energy, some people have attempted this anyway.</p>

<p>
Different estimates done at different times had different focuses, so unfortunately we do not have a nice set of studies that we can neatly use to cross check one another.</p>

<p>
I will however list the names and the authors and summarize the results.</p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>
33 The Health Hazards of Not Going Nuclear</p>

<p>
By Dr. Petr Beckman</p>

<p>
Published in 1976</p>

<p>

</p>

<p>
The author of this book tried to address the relative safety of different sources of energy in the mid 1970s.</p>

<p>
However, it is old at this point, so I won't bother digging through its pages to find his figures.</p>

<p>

</p>

<p>
34</p>

<p>
He mainly focused on comparing electric power generated with coal to nuclear. </p>

<p>
His conclusion was that if the goal was to prevent deaths or ill health in the process of generating electricity, then the logical conclusion was to replace coal fired power plants with nuclear.</p>

<p>

</p>

<p>
35</p>

<p>
The book was relatively well known at the time, as least as far as books on energy are concerned, so I thought it was still worth mentioning.</p>

<p>
I happen to have a copy of this book which I bought back in that time period</p>

<p>
It was the 8th printing of the book, so it would appear to have had relatively good sales. </p>

<p>

</p>

<p>
36</p>

<p>
The author did address the issue of what I have termed "catastrophism" in his comparison of different energy sources, although I don't know if he used this phrase.</p>

<p>
I don't know if he was the first to use this sort of analysis, but he certainly was very influential in terms of popularizing it.</p>

<p>

</p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>
37 Risk of Energy Production</p>

<p>
by Herbert Inhaber</p>

<p>
Publication AECB 1119</p>

<p>
March 1978</p>

<p>

</p>

<p>
This study is a scientific paper from the same time period as the book "The Health Hazards of Not Going Nuclear".</p>

<p>

</p>

<p>
38</p>

<p>
He based his risk estimates largely on estimates of the amount of material which was used in the construction and operation of various power sources.</p>

<p>
While we could argue over whether or not this is a valid methodology, I think any such argument would be pointless as I think the age of the study alone renders it not relevant today anyway.</p>

<p>
Advancements in materials have changed the basis results significantly by now.</p>

<p>
However, as it exists I thought I would mention it to show that the idea of comparing energy sources to each other is not a new one.</p>

<p>
The author compared a wider variety of potential sources than Beckman did. </p>

<p>

</p>

<p>
39</p>

<p>
Here's his conclusions.</p>

<p>
He assumes equal amounts of energy produced by each method.</p>

<p>
The numbers are normalized such that the total sums to 100%.</p>

<p>
You can think of it in terms of what proportion of total deaths or injuries would result from each source if each were equally used. </p>

<p>

</p>

<p>
40</p>

<p>
Coal 27.5%</p>

<p>
Oil 25.6%</p>

<p>
Methanol 16.7%</p>

<p>
Wind 10.8%</p>

<p>
Solar photovoltaic 9.2%</p>

<p>
Thermal 8.1%</p>

<p>
Solar space heating 1.5%</p>

<p>
Ocean thermal 0.4%</p>

<p>
Nuclear 0.13%</p>

<p>
Natural Gas 0.08%</p>

<p>

</p>

<p>
41</p>

<p>
His natural gas estimate is drastically different from that of other authors. </p>

<p>
I am not going to worry about explaining it however, as the study is as I said old enough to be not very relevant anyway.</p>

<p>
I am mainly including this here out of historical interest. </p>

<p>

</p>

<p>
42</p>

<p>
As a footnote, the methanol he refers to would be synthesized from wood. This was a popular idea in that era as a means of providing liquid fuels for transportation. Practical battery electric cars in those days were strictly science fiction.</p>

<p>

</p>

<p>
43</p>

<p>
The ocean thermal category is a real blast from the past and I had forgotten all about that concept.</p>

<p>
It was a very popular idea at that time and was supposed to be *the* big and upcoming thing in renewable energy.</p>

<p>
It involved various means of attempting to extract energy from differences in water temperature at different depths in the ocean. </p>

<p>
It gradually faded away however, as despite great efforts being put into it, designs never proved to be practical.</p>

<p>

</p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>
44 Electricity generation and health</p>

<p>
Anil Markandya, Paul Wilkinson</p>

<p>
Published in the Lancet, Vol 370, 15 September 2007</p>

<p>

</p>

<p>
45</p>

<p>
This is more recent than the previous one, although it is nearly 20 years old at this point.</p>

<p>
Unfortunately it doesn't cover wind or solar, just fossil fuels and nuclear.</p>

<p>
However it is still useful, and the Lancet is a very reputable peer reviewed journal.</p>

<p>

</p>

<p>
46</p>

<p>
I will present just the results rather than discussing the whole paper. </p>

<p>
The authors  break it down into deaths among the public, occupational deaths, and air pollution related deaths, serious illness, and minor illness.</p>

<p>

</p>

<p>
47</p>

<p>
They  break the energy sources down into lignite, coal, gas, oil, biomass, and nuclear. </p>

<p>
Lignite is a type of very low grade coal used mainly for electric power generation. </p>

<p>
In this paper biomass refers to energy crops and forest residues.</p>

<p>

</p>

<p>
48</p>

<p>
I will summarize the results by category rather than trying to describe a table that has 6 rows and 5 columns.</p>

<p>

</p>

<p>
All numbers are normalized in terms of deaths or cases per TWh.</p>

<p>

</p>

<p>
49</p>

<p>
Occupational deaths from accidents</p>

<p>
lignite 0.1 </p>

<p>
coal 0.1 </p>

<p>
gas 0.001</p>

<p>
 oil no data</p>

<p>
biomass - no data</p>

<p>
Nuclear is 0.019. </p>

<p>

</p>

<p>
50</p>

<p>
Deaths among the public from accidents</p>

<p>
lignite 0.02 </p>

<p>
coal 0.02 </p>

<p>
gas 0.02</p>

<p>
 oil 0.03</p>

<p>
biomass no data</p>

<p>
Nuclear 0.003</p>

<p>

</p>

<p>
51</p>

<p>
Air pollution deaths</p>

<p>
lignite 32.6</p>

<p>
coal 24.5</p>

<p>
gas 2.8</p>

<p>
 oil 18.4</p>

<p>
biomass 4.63</p>

<p>
Nuclear 0.052</p>

<p>

</p>

<p>
52</p>

<p>
Air pollution serious illnesses</p>

<p>
lignite 298</p>

<p>
coal 225</p>

<p>
gas 30</p>

<p>
 oil 161</p>

<p>
biomass 43</p>

<p>
Nuclear 0.22</p>

<p>

</p>

<p>
53</p>

<p>
Air pollution minor illnesses</p>

<p>
lignite 17,676</p>

<p>
coal 13,288</p>

<p>
gas 703</p>

<p>
 oil 9,551</p>

<p>
biomass 2,276</p>

<p>
Nuclear no data</p>

<p>

</p>

<p>
54</p>

<p>
Natural gas edges out nuclear power slightly in terms of occupational safety, but in every other category nuclear is drastically lower in terms of ill effects than any of the alternatives.</p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>

</p>

<p>
55 2020 Fatalities for US Roofers Increased 15% as Solar Roof Installations Increase</p>

<p>
Published in The Next Big Future</p>

<p>
July 6, 2021 by Brian Wang</p>

<p>

</p>

<p>
56</p>

<p>
This seems to be written by someone who has a popular science blog.</p>

<p>
I'm not familiar with it personally, but he addresses the subject so I'll list it.</p>

<p>

</p>

<p>
The title implies that it's all about rooftop solar, but he provides comparative numbers for the other energy sources of interest, so that is useful for our purposes.</p>

<p>
However, he doesn't describe his methodology, so we need to treat them with some caution.</p>

<p>

</p>

<p>
Here are his results</p>

<p>
These are deaths per thousand terawatt hours.</p>

<p>

</p>

<p>
57</p>

<p>
Coal - 100,000</p>

<p>
Oil - 36,000</p>

<p>
Natural gas - 4,000</p>

<p>
Hydro - 1,400</p>

<p>
Rooftop solar - 440</p>

<p>
Wind - 150</p>

<p>
Nuclear - 90</p>

<p>

</p>

<p>
58</p>

<p>
If we plot these numbers on a bar chart, coal and oil are so large that all of the others are squished to the  bottom of the chart and are difficult to see at all.</p>

<p>

</p>

<p>
Let's therefore look at these in terms of orders of magnitude.</p>

<p>
Keep in mind that this is a logarithmic scale.</p>

<p>
This means that the difference between 4 and 5 is much greater in linear terms than the difference between 1 and 2. </p>

<p>

</p>

<p>
59</p>

<p>
Coal - 5</p>

<p>
Oil - 4</p>

<p>
Natural gas - 3</p>

<p>
Hydro - 3</p>

<p>
Rooftop solar - 2</p>

<p>
Wind - 2</p>

<p>
Nuclear - 1</p>

<p>

</p>

<p>
60</p>

<p>
Each of these numbers represents an order of magnitude, that is a power of ten. </p>

<p>
We can see that with rooftop solar, wind, and nuclear, the numbers are so close and the uncertainties are so great and their relative values so small compared to say coal that they can be seen as equivalent so far as safety is concerned.</p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>
61 What are the safest and cleanest sources of energy?</p>

<p>
by Hannah Ritchie</p>

<p>
Published in Our World in Data</p>

<p>
First published in 2017, updated in 2022 and 2024</p>

<p>

</p>

<p>
62</p>

<p>
The author of this study addressed both deaths and greenhouse gas emissions.</p>

<p>
Deaths from accidents and air pollution are normalized to per TWh of electricity, while greenhouse gas emissions are normalized to GWh of electricity over the life cycle of the plant.</p>

<p>

</p>

<p>
63</p>

<p>
Here are the death figures.</p>

<p>
Coal 24.6</p>

<p>
Oil 18.4</p>

<p>
Biomass 4.6</p>

<p>
Natural Gas 2.8</p>

<p>
Hydro power 1.3</p>

<p>
Wind 0.04</p>

<p>
Nuclear 0.03</p>

<p>
Solar 0.02</p>

<p>

</p>

<p>
64</p>

<p>
For greenhouse gas emissions the figures are</p>

<p>
Coal 970 tons</p>

<p>
Oil 720 tons</p>

<p>
Natural gas 440 tons</p>

<p>
Biomass 78 to 230 tons</p>

<p>
Solar 53 tons</p>

<p>
Hydro power 24 tons</p>

<p>
Wind 11 tons</p>

<p>
Nuclear 6 tons</p>

<p>

</p>

<p>
65</p>

<p>
If we take the death figures and rank them by order of magnitude as we did with the previous article, we get the following.</p>

<p>

</p>

<p>
66</p>

<p>
Coal - 4</p>

<p>
Oil - 4</p>

<p>
Biomass - 3</p>

<p>
Natural Gas - 3</p>

<p>
Hydro power - 3</p>

<p>
Wind - 1</p>

<p>
Nuclear - 1</p>

<p>
Solar - 1</p>

<p>

</p>

<p>
67</p>

<p>
Keep in mind that the previous article covered only rooftop solar and not large industrial installations, and so is not directly comparable. </p>

<p>
Also the units are different, with the previous article being in terms of thousand TWh, and this one being in TWh. </p>

<p>
If we exclude solar (as the numbers are not comparable), Brian Wang's numbers are between 1.5 to 4 times higher than Ritchie's, except for hydro which are almost identical. I think this latter is due to both sets of numbers are dominated by one exceptionally big hydro accident. </p>

<p>

</p>

<p>
68</p>

<p>
Overall however, the relative rankings are quite comparable. </p>

<p>

</p>

<p>
Ritchie's numbers for deaths from coal, oil, and natural gas appear to be directly from the study by  Markandya and Wilkinson mentioned above.</p>

<p>

</p>

<p>
For the benefit of those who are wondering, Ritchie specifically states that her numbers for nuclear include the Chernobyl and Fukushima accidents. </p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>

</p>

<p>
https://www.iaea.org/publications/magazines/bulletin/21-1/solar-power-more-dangerous-nuclear</p>

<p>
Direct link to file</p>

<p>
https://www.iaea.org/sites/default/files/publications/magazines/bulletin/bull21-1/21104091117.pdf</p>

<p>

</p>

<p>
https://ourworldindata.org/safest-sources-of-energy</p>

<p>

</p>

<p>
https://www.thelancet.com/journals/lancet/article/PIIS0140-6736(07)61253-7/abstract</p>

<p>

</p>

<p>
https://www.nextbigfuture.com/2021/07/2020-fatalities-for-us-roofers-increased-15-as-solar-roof-installations-increase.html</p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>
69 Conclusion from Studies</p>

<p>

</p>

<p>
Remember that in engineering terms, when comparing groups of numbers which contain both both very small numbers and one or more very large numbers, the differences between the small numbers are often not significant. </p>

<p>
The differences between the small numbers may be the product of our ability to measure these things rather than any real differences. </p>

<p>

</p>

<p>
70</p>

<p>
For example, in the article by Ritchie wind power would appear to be twice as dangerous as nuclear.</p>

<p>
However, the difference between them is 0.02 compared to 24.6 for coal. </p>

<p>
In other words, the difference between apparently "dangerous" wind and apparently "safe" nuclear is equivalent to 0.08% of the total for coal. </p>

<p>
It's therefore meaningless and a red herring to even worry about.</p>

<p>

</p>

<p>
71</p>

<p>
With the above taken into consideration, generally the different sources of energy fall into two broad categories in terms of number of deaths, injuries, and illnesses.</p>

<p>
The fossil fuels and biomass fall into one group and wind, solar, and nuclear into another group.</p>

<p>

</p>

<p>
72</p>

<p>
Hydro power would seem to fall into the higher risk category or at least somewhere between the two,  but this I suspect is mainly due to one exceptionally large dam collapse in China, the Banqian Dam failure in 1975.</p>

<p>
This is mentioned as being specifically included in the article written by Ritchie.</p>

<p>
This was a multi-purpose dam, and information on this dam is difficult to find.</p>

<p>
It is not clear to me whether it had a hydro electric generator associated with either it or another dam that was part of the same system.</p>

<p>

</p>

<p>
73</p>

<p>
Some people therefor may argue for its exclusion from the numbers.</p>

<p>
Of course some people may argue for its inclusion anyway, as it was a dam regardless of whether it actually had an electric generator attached.</p>

<p>
If we exclude it, then I think the numbers for hydro power would fall into the same range as for nuclear, wind, and solar.</p>

<p>

</p>

<p>
74</p>

<p>
Most people would consider hydro power to be safe and clean enough regardless of this and I will rank it as such in any conclusions that I come to. </p>

<p>
As you can see, even if we have numbers, it can be a matter of opinion as to how to interpret them.</p>

<p>

</p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>
75 Taking a Systems Approach</p>

<p>

</p>

<p>
Now let's take a look at the broader energy picture today and into the future.</p>

<p>
Many countries in many parts of the world have committed to the concept of "Net Zero", which means eliminating carbon emissions on a net basis.</p>

<p>
Net zero essentially means the complete electrification of society.</p>

<p>
We must therefore have electrical energy on demand and at low cost.</p>

<p>
We must as a result of this look at complete electrical systems rather than individual sources in isolation.</p>

<p>

</p>

<p>
76</p>

<p>
At one time many electrical systems were entirely coal or entirely hydroelectric.</p>

<p>
This is no longer the case.</p>

<p>
There are now major amounts of wind and solar involved in many countries.</p>

<p>
However these are inherently intermittent.</p>

<p>
This means that other sources of energy are inherently also required to have a functional system.</p>

<p>

</p>

<p>
77</p>

<p>
If any particular solution inherently requires fossil fuels to meet part of the demand, then the safety, pollution, and climate issues relating to those fossil fuels have to be factored in to that complete system when trying to come up with a relative ranking.</p>

<p>

</p>

<p>
Talking about Individual sources in isolation are therefore meaningless in these countries.</p>

<p>

</p>

<p>
78</p>

<p>
There are battery systems,  but these are mainly used to stabilize and regulate the grid plus to a lesser degree to smooth out short term daily peaks in demand. </p>

<p>
They do not have the ability to store large amounts of electricity on a large scale for an entire grid for days, weeks, and months to make up for intermittency. </p>

<p>

</p>

<p>
79</p>

<p>
So a serious attempt to rank sources of energy would need to look at a variety of representative countries and for each one come up with a plan that involves 'x' megawatts from source 'a', 'y' megawatts from source 'b', etc., and total up the values for each. </p>

<p>

</p>

<p>
80</p>

<p>
I am not aware of anyone who has studied this larger issue.</p>

<p>
However, the problem has to be addressed from this perspective in order for any answer to be useful.</p>

<p>
Not taking this into account is like ordering a diet soft drink to go with with a high calorie meal and assuring yourself that your plans to diet are fine. </p>

<p>

</p>

<p>
81</p>

<p>
This is not to imply there is anything inherently wrong with wind or solar.</p>

<p>
It does mean that if your goal is to achieve both net zero and a clean environment, you have to look at your entire energy system as a complete system rather than focusing on what you feel are the most reassuring parts of it while ignoring the rest.</p>

<p>

</p>

<p>
This does however add to the argument that it is in fact inherently very difficult to come up with a system of ranking energy sources for safety.</p>

<p>

</p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>
82 Nuclear, Climate, and Clean Air - Contrasting Examples</p>

<p>

</p>

<p>
To give a tangible example we will now look at two different places that followed two divergent paths at roughly around the same time frame.</p>

<p>

</p>

<p>
These are the province of Ontario in Canada, and Germany. </p>

<p>

</p>

<p>
83</p>

<p>
Ontario had a mix of coal, hydro electric, and nuclear generating plants.</p>

<p>
Germany had a mix of coal, nuclear and natural gas plants.</p>

<p>

</p>

<p>
Ontario shut down their coal fired plants and kept their nuclear plants.</p>

<p>
Germany however shut down their nuclear plants and kept their coal fired plants.</p>

<p>

</p>

<p>

</p>

<p>
84 The Phase Out of Coal in Ontario</p>

<p>

</p>

<p>
In 2003 Ontario decided to close all of its coal fired generating plants, which consisted of 19 units (that is boilers and turbines) totalling 8,800 MW.</p>

<p>
This phase out was completed by 2014.</p>

<p>

</p>

<p>
85</p>

<p>
Here are the figures for amount of power generated by each energy source in 2003 and 2014.</p>

<p>
Nuclear went from 42% to 60%</p>

<p>
Hydro went from 23% to 24%</p>

<p>
Gas went from 11% to 9%</p>

<p>
Coal went from 25% to 0%</p>

<p>
Non-hydro renewable went from 0% to 7%.</p>

<p>

</p>

<p>
86</p>

<p>
As you can see, the bulk of that replacement came from increased use of nuclear power. </p>

<p>
Furthermore, this did not result in simply replacing coal with natural gas.</p>

<p>
While gas is cleaner than coal, it still has emissions and if you recall from the studies that we looked at earlier, had an estimated death rate roughly 2 orders of magnitude greater than nuclear, solar, or wind.</p>

<p>

</p>

<p>
87</p>

<p>
To put this in more practical terms, at one time Toronto regularly had clouds of smog obscuring it, to a large extent due to these coal fired power plants</p>

<p>

</p>

<p>
With the phase out of coal, smog days went to zero in 2015 compared to 53 a decade earlier.</p>

<p>

</p>

<p>
The 2023 figures for Ontario show carbon emissions of 53 grams per kWh of electricity generated.</p>

<p>
We can use this as a rough benchmark comparison for total emissions.</p>

<p>

</p>

<p>

</p>

<p>
88 The Phase out of Nuclear in Germany</p>

<p>
Until March of 2011, Germany generated one quarter of its electrical power from nuclear.</p>

<p>
Starting in 2011 however, they began shutting down their nuclear power plants.</p>

<p>
These were then phased out over the next decade.</p>

<p>
However, the coal plants were to be kept to 2038.</p>

<p>
In 2026 Germany began talking about increasing use of coal in order to save gas.</p>

<p>
In the same year the German chancellor Friedrich Merz stated that the phase out of nuclear was a </p>

<p>
quote  “serious strategic mistake”.</p>

<p>
EU Commission President Ursula von der Leyen said it was "a strategic mistake for Europe to turn its back on a reliable, affordable source of low-emissions power".</p>

<p>

</p>

<p>
89</p>

<p>
I won't go into the details of the phase out, but let's look at some emissions numbers for Germany.</p>

<p>
If we look at the official numbers from the European Environmental Agency for 2024, for Germany their emissions were 298 grams per kWh of electricity generated.</p>

<p>

</p>

<p>
Recall that we are using emissions as a very rough guide to amount of air pollution, and that this has a direct effect on the safety of the overall electrical energy system.</p>

<p>

</p>

<p>
90</p>

<p>
So, who actually made their people safer, Ontario who phased out their coal plants and kept their nuclear plants, or Germany who phased out their nuclear plants and kept their coal plants?</p>

<p>

</p>

<p>
91</p>

<p>
If you want a comparison directly within Europe, then Germany has one of the highest rates of emissions per kWh of electricity generated, whereas France, who use mainly nuclear power, have one of the lowest at 43 grams per kWh of electricity generated.</p>

<p>

</p>

<p>
Again, who is making their people safer, Germany or France?</p>

<p>

</p>

<p>
92</p>

<p>
I don't want to make it sound like I am picking on Germany.</p>

<p>
I am also not going to tell them how they ought to run their country. </p>

<p>
However they provide a good real world example of how we need to look at things in overall context when we are thinking about the choices that we make. </p>

<p>

</p>

<p>

</p>

<p>
https://www.ontario.ca/page/end-coal</p>

<p>
https://www.cbc.ca/news/canada/windsor/smog-study-shows-significant-decreases-in-pollutants-in-ontario-1.4151183</p>

<p>

</p>

<p>
https://www.eea.europa.eu/en/analysis/indicators/greenhouse-gas-emission-intensity-of-1</p>

<p>
https://world-nuclear.org/information-library/country-profiles/countries-g-n/germany</p>

<p>

</p>

<p>
https://www.politico.eu/article/friedrich-merz-is-right-to-reject-germanys-nuclear-phase-out-says-iea-chief-fatih-birol/</p>

<p>

</p>

<p>
https://www.politico.eu/article/germany-considers-ramping-up-coal-power-to-avert-energy-crisis/</p>

<p>

</p>

<p>
https://www.iea.org/countries/estonia/electricity</p>

<p>
https://www.iea.org/countries/malta/electricity</p>

<p>

</p>

<p>

</p>

<p>
--------------------</p>

<p>
 </p>

<p>
93 Conclusions</p>

<p>
As we can see, there don't appear to be an abundance of peer reviewed scientific studies that we can simply point to in order to answer the question of safety of all possible major different energy sources once and for all.</p>

<p>

</p>

<p>
Collecting the data to even attempt to answer the question is inherently very difficult as we cannot readily conduct experiments to answer the question, and sources of data are not collected or consolidated in a manner which can answer this question adequately.</p>

<p>

</p>

<p>
94</p>

<p>
The essence of the problem is that most energy industries are not as tightly regulated and monitored to the same degree that say nuclear power or commercial airliners are, so this data is simply not being systematically recorded.</p>

<p>

</p>

<p>
However, a number of people have attempted to make estimates.</p>

<p>

</p>

<p>
95</p>

<p>
Their conclusions would seem to be that nuclear, wind, and solar are roughly equivalent in terms of safety.</p>

<p>
All fossil fuels are much less safe than nuclear, wind, and solar, by as much as several orders of magnitude.</p>

<p>

</p>

<p>
96</p>

<p>
We can however say with a reasonable degree of certainty that if a country shut down their nuclear power plants and kept their fossil fuel plants, particularly coal, then they probably made their people less safe than if they had done things the other way around. </p>

<p>

</p>

<p>
97</p>

<p>
I hope that I have provided some context in which to think about the issue. </p>

<p>

</p>

<p>
Thanks again to brian in ohio for providing the question upon which this episode is based.</p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>


<p><a href="https://hackerpublicradio.org/eps/hpr4668/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4667: UNIX Curio #9 - printf]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.


This series is dedicated to exploring little-known—and occasionally useful—trinkets lurking in the dusty corners of UNIX-like operating systems.


The 
echo
 command is very useful—it prints the arguments given to it, followed by a newline chara...]]></description>
<link>https://tsecurity.de/de/3616910/it+sicherheit/it+podcasts/hpr4667+unix+curio+9+-+printf/</link>
<pubDate>Tue, 23 Jun 2026 02:03:29 +0200</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>

<blockquote>
This series is dedicated to exploring little-known—and occasionally useful—trinkets lurking in the dusty corners of UNIX-like operating systems.</blockquote>

<p>
The <code>
echo</code>
 command is very useful—it prints the arguments given to it, followed by a newline character. (The newline is sometimes also called a linefeed character depending on who is writing or speaking, and has the ASCII decimal value 10.) It has many uses, either in a script or interactively on the command line. The <code>
echo</code>
 utility is used to display text, the value of a variable, or the result of a pathname expansion. It can also feed text to another command in a pipeline.</p>

<p>
As useful as <code>
echo</code>
 is, it should come as no surprise that it <a href="https://archive.org/details/a_research_unix_reader/page/n99/mode/1up" rel="noopener noreferrer" target="_blank">
first appeared early on in Bell Laboratories' Second Edition UNIX</a>

<sup>
1</sup>
 in 1972. This <a href="https://archive.org/details/a_research_unix_reader/page/n22/mode/1up" rel="noopener noreferrer" target="_blank">
initial version accepted no options</a>

<sup>
2</sup>
—although the manual page doesn't explicitly say output is followed by a newline character, the description of writing "as a line" seems to imply it. In <a href="https://man.cat-v.org/unix_7th/1/echo" rel="noopener noreferrer" target="_blank">
Seventh Edition UNIX, the manual page</a>

<sup>
3</sup>
 makes that clear, and also features the addition of the <code>
-n</code>
 option, which causes <code>
echo</code>
 to print the arguments <em>
without</em>
 a trailing newline character. <a href="https://man.cat-v.org/unix_8th/1/echo" rel="noopener noreferrer" target="_blank">
Eighth Edition UNIX's </a>

<code>

<a href="https://man.cat-v.org/unix_8th/1/echo" rel="noopener noreferrer" target="_blank">
echo</a>

</code>

<sup>
4</sup>
 gained the <code>
-e</code>
 option, which allows certain escape codes from the C programming language to be used.</p>

<p>
These variations caused differences in behavior between different versions of <code>
echo</code>
. Will running <code>
echo -n something</code>
 on your system output the text "something" without a newline, or "-n something" followed by a newline? Things get even trickier when the command arguments include parameter or pathname expansions. If there are files named "-n" and "something" in the current directory, what does <code>
echo *</code>
 output? Like the previous question, that depends on whether or not your version of <code>
echo</code>
 treats <code>
-n</code>
 as an option. You can't get around this ambiguity by quoting or escaping the "*", because that just causes <code>
echo</code>
 to print a literal asterisk.</p>

<p>

<em>
Example using GNU utilities on Debian 12; both the "echo" utility and the "echo" builtin of bash recognize "-n" as an option.</em>

</p>

<pre data-language="plain">
$ ls -1
-n
something
$ echo *
something$ #Shell prompt is on the same line because "-n" was treated as an option to echo
$ echo "*"
*
</pre>

<p>
The solution was to create a new utility, which is the first UNIX Curio for today: <code>
printf</code>
. This command allows a user to print text similar to the way the identically-named function works in the C programming language. You <a href="https://pubs.opengroup.org/onlinepubs/9699919799/utilities/printf.html" rel="noopener noreferrer" target="_blank">
run </a>

<code>

<a href="https://pubs.opengroup.org/onlinepubs/9699919799/utilities/printf.html" rel="noopener noreferrer" target="_blank">
printf</a>

</code>

<sup>
5</sup>
 followed by a format string, followed by zero or more arguments. No newline characters are printed unless specifically indicated by the format string or the arguments.</p>

<p>
To use <code>
printf</code>
 to print "something" without a newline, that would just be <code>
printf something</code>
. This demonstrates that you don't need any arguments—in this example, the format string is just a set of regular characters to be displayed. If you wanted a newline character at the end, <code>
printf "something\n"</code>
 would give you that. (In this case, the format string needs to be quoted so the "\n" isn't interpreted by the shell.) In addition to "\n" for a newline, you can also use "\a" for an alert (rings the terminal bell), "\b" for a backspace, "\f" for a formfeed, "\r" for a carriage return, "\t" for a horizontal tab, "\v" for a vertical tab, and "\\" to get a literal backslash. In addition to these special characters, any arbitrary byte can be included using a backslash followed by one to three octal digits; however, it might be difficult to predict what will be output because it can differ based on the character set the terminal is using. It is safer and more portable to stick to the pre-defined characters if possible.</p>

<p>
The <em>
real</em>
 magic of the <code>
printf</code>
 utility comes from using "conversion specifications" in the format string. Probably the simplest of these to explain is the "%s" conversion specification—it represents a string of any length. The command <code>
printf "Hi, %s, how are you?\n"</code>
 followed by a list of names would print the greeting for each name, putting it in the place occupied by the "%s".</p>

<pre data-language="plain">
$ printf "Hi, %s, how are you?\n" Alice Bob Carol
Hi, Alice, how are you?
Hi, Bob, how are you?
Hi, Carol, how are you?
</pre>

<p>
The format string is reused as many times as needed to consume all of the arguments. Take, for example, the command <code>
printf "Hi, %s, have you met %s?\n"</code>
. If this is run with two name arguments, it would print the sentence on one line, using both names. If run with four name arguments, it would print the sentence twice, once with the first two names and again with the second two names. If you only gave it three names, the last "%s" conversion specification would be replaced with a null string.</p>

<pre data-language="plain">
$ printf "Hi, %s, have you met %s?\n" Alice Bob
Hi, Alice, have you met Bob?
$ printf "Hi, %s, have you met %s?\n" Alice Bob Carol David
Hi, Alice, have you met Bob?
Hi, Carol, have you met David?
$ printf "Hi, %s, have you met %s?\n" Alice Bob Carol
Hi, Alice, have you met Bob?
Hi, Carol, have you met ?
</pre>

<p>
Three other items can also be given in each conversion specification: flags, the field width, and the precision. The exact meanings of these depend on which type of conversion specifier character you are using. For "%s", using a "-" as the flag causes the text to be left-justified instead of the default right-justified, a field width causes the printed field to be at least as long as the number given, and a precision limits the number of bytes written from the string to the number given.</p>

<pre data-language="plain">
$ #Example of %s with a precision value
$ printf "Hi, %.3s, how are you?\n" Alice Bob Carol
Hi, Ali, how are you?
Hi, Bob, how are you?
Hi, Car, how are you?
$ #Example of %s with a field width
$ printf "Hi, %8s, how are you?\n" Alice Bob Carol
Hi,    Alice, how are you?
Hi,      Bob, how are you?
Hi,    Carol, how are you?
$ #Example of %s with a left-justify flag and a field width
$ printf "Hi, %-8s, how are you?\n" Alice Bob Carol
Hi, Alice   , how are you?
Hi, Bob     , how are you?
Hi, Carol   , how are you?
$ #Example of %s with a left-justify flag, a field width, and a precision
$ printf "Hi, %-8.3s, how are you?\n" Alice Bob Carol
Hi, Ali     , how are you?
Hi, Bob     , how are you?
Hi, Car     , how are you?
</pre>

<p>
While "%s" is probably the most commonly-used conversion specification, others are available. A whole set of them are dedicated to printing integer values as a signed decimal, an unsigned decimal, an unsigned octal, or an unsigned hexadecimal number. These also can take flags, a field width, and a precision. I think the details and nuances of all this are too complex to clearly explain here, so I will just refer you to the <a href="https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap05.html" rel="noopener noreferrer" target="_blank">
POSIX "file format notation" specification</a>

<sup>
6</sup>
.</p>

<p>
Be aware that unlike the <code>
printf</code>
 function in the C programming language, the <code>
printf</code>
 utility is <em>
not</em>
 obligated to accept conversion specifications for floating-point numbers. While some implementations might support this, scripts intended to be portable should limit themselves to the restricted set required by the POSIX standard (%d, %i, %o, %u, %x, %X, %c, and %s, plus %b and %% described below).</p>

<p>
Two more conversion specifications are worth mentioning. The first is <em>
only</em>
 required by the standard for the <code>
printf</code>
 utility, not the C function, and is "%b". This is the same as "%s", except that certain backslash escape sequences in the argument will be treated specially. This includes all the ones described above <em>
except</em>
 for the one using octal digits to represent a byte. In an argument, this is instead represented by "\0" followed by one to three octal digits. An additional backslash escape sequence accepted is "\c"—this does not print anything itself, but causes <code>
printf</code>
 to immediately halt output.</p>

<p>
The final conversion specification is "%%", which just outputs a literal "%". You can't use a bare "%" in the format string, because <code>
printf</code>
 expects that to introduce a conversion specification. Be careful not to be tripped up by this when trying to print some value as a percentage.</p>

<p>

<em>
Example assuming that the hypothetical "/dev/batterycharge" file on your laptop outputs the battery charge level (42% in this case). As you can see, in some cases an error message might be displayed, but in others it might just behave in a way you didn't intend without complaining. GNU's "printf" utility and the "printf" builtin of bash both support "%e" as a conversion specification as an extension to POSIX.</em>

</p>

<pre data-language="plain">
$ cat /dev/batterycharge
42
$ #Wrong
$ printf "Your laptop's charge level is $(cat /dev/batterycharge)%.\n"
bash: printf: `\': invalid format character
Your laptop's charge level is 42$ #Shell prompt appears here from the error
$ #Right
$ printf "Your laptop's charge level is $(cat /dev/batterycharge)%%.\n"
Your laptop's charge level is 42%.
$ #Next one treats %e as the specifier, with the space and "l" as flags
$ printf "Your laptop has $(cat /dev/batterycharge)% level of charge.\n"
Your laptop has 42 0.000000e+00vel of charge.
$ #Because no arguments were given, "0" was used for the value to convert
</pre>

<p>
Let's go back to the situation I was describing with <code>
echo</code>
—we have files named "-n" and "something" in the current directory and want to print all their names, separated by spaces. We could do that with <code>
printf "%s " *</code>
, which would not treat the "-n" as an option. However, the output might look a little weird because there wouldn't be a newline character at the end. We could insert a newline by using "%b" instead of "%s" and following the asterisk with a "\n\c" as the second argument. The "\c" is there to prevent the final space in the format string from being printed after the newline.</p>

<pre data-language="plain">
$ ls -1
-n
something
$ printf "%s " *
-n something $ #No newline was printed here
$ printf "%b " * "\n"
-n something
 $ #There's a newline, but also a spurious space before the shell prompt
$ printf "%b " * "\n\c"
-n something
$ #No space before the shell prompt this time
</pre>

<p>
Using the "%b" conversion specification can therefore solve one problem, but it also introduces another. Arguments which include a backslash can be interpreted as escape sequences, and many systems are fine with allowing backslashes in filenames. In cases where you're just using the <code>
printf</code>
 utility to <em>
display</em>
 text, it's usually not a big deal if the output looks a little wonky. Where you really need to be careful is when the text is being piped to another program, as control characters and other oddities might cause unexpected results, and can potentially create security problems if processed by a script or utility running as a privileged user.</p>

<pre data-language="plain">
$ #GNU "ls" displays filenames containing a backslash in single quotes
$ ls -1
apple
banana
'\cherry'
durian
$ printf "%b " * "\n\c"
apple banana $ #"\c" in "\cherry" stops output immediately
</pre>

<p>
The <code>
printf</code>
 utility <a href="https://archive.org/details/a_research_unix_reader/page/n95/mode/1up" rel="noopener noreferrer" target="_blank">
looks to have shown up first in 1986's Ninth Edition UNIX</a>

<sup>
7</sup>
, though the <a href="https://man.cat-v.org/unix_10th/1/echo" rel="noopener noreferrer" target="_blank">
earliest manual page I could find</a>

<sup>
8</sup>
 is from the Tenth Edition. Its first appearance in BSD <a href="https://man.freebsd.org/cgi/man.cgi?query=printf&amp;sektion=1&amp;manpath=4.3BSD+Reno" rel="noopener noreferrer" target="_blank">
seems to be from 1990 in the 4.3 Reno release</a>

<sup>
9</sup>
. Two years later, it was added to Issue 4 of The Open Group's CAE Specification. From what I can tell, it did not seem to be in AT&amp;T's System III—presumably the <code>
printf</code>
 utility did make it into System V at some point but I found it difficult to track this down.</p>

<p>
While <code>
echo</code>
 is still suitable for use where you know for certain that you want a newline character printed at the end and none of the arguments will start with a hyphen, consider using the <code>
printf</code>
 utility instead for displaying text. It offers more flexibility and features than you are guaranteed to get with <code>
echo</code>
, although it does require a bit of forethought in constructing a proper format string and arguments. That is not necessarily a bad thing, because a script's author <em>
should</em>
 be thinking about what might happen if it is called with "strange" text or filenames.</p>

<p>
This episode also provides a good case for being careful when naming files—many filesystems will allow you to use hyphens, control characters, quotation marks, and potentially any character other than a slash or a null byte in a filename. As we've seen, some of these characters can create problems for standard utilities. While it can feel limiting, especially for people not using English, the safest filenames to use on a UNIX-like system consist only of characters in the <a href="https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap03.html#tag_03_282" rel="noopener noreferrer" target="_blank">
"portable filename character set" as defined by POSIX</a>

<sup>
10</sup>
 and where the first character is <em>
not</em>
 a hyphen. This set includes the lowercase and uppercase letters "a" through "z", the numerals "0" through "9", and the period, underscore, and hyphen. Notably, it does <em>
not</em>
 include the space character.</p>

<p>
That leads me to another UNIX Curio that I only just now discovered while researching this episode. This is <a href="https://pubs.opengroup.org/onlinepubs/9699919799/utilities/pathchk.html" rel="noopener noreferrer" target="_blank">
the </a>

<code>

<a href="https://pubs.opengroup.org/onlinepubs/9699919799/utilities/pathchk.html" rel="noopener noreferrer" target="_blank">
pathchk</a>

</code>

<a href="https://pubs.opengroup.org/onlinepubs/9699919799/utilities/pathchk.html" rel="noopener noreferrer" target="_blank">
 utility</a>

<sup>
11</sup>
. It can be run with one or more strings as arguments, checks each one against a set of rules for pathnames, and outputs an error message for each problem found. By default, it checks against the following limits on the system where it's being run: maximum number of bytes in the full path, maximum number of bytes in any component of the path, all byte sequences must be valid in the given directory, and the user running the program must have access to all directories referenced. If run with the <code>
-p</code>
 option, instead of those limits, it checks against POSIX limits: a maximum of 256 bytes in the full path, a maximum of 14 bytes in each component of the path, and each component must only include characters from the portable set. The <code>
-P</code>
 option adds warnings if any component starts with a "-" or if the pathname is completely empty. While the exit status will tell you if the checks succeeded or not, I don't feel like the <code>
pathchk</code>
 utility is well suited to be used in an automated fashion, as the exact wording of its output is not specified and checks cannot be selected individually. However, it can be used interactively to validate pathnames you aren't sure about. See the linked specification for full details.</p>

<p>
References:</p>

<ol>

<li>

<a href="https://archive.org/details/a_research_unix_reader/page/n99/mode/1up" rel="noopener noreferrer" target="_blank">
A Research UNIX Reader: Combined Tables of Contents</a>
 https://archive.org/details/a_research_unix_reader/page/n99/mode/1up</li>

<li>

<a href="https://archive.org/details/a_research_unix_reader/page/n22/mode/1up" rel="noopener noreferrer" target="_blank">
A Research UNIX Reader: Second Edition UNIX echo manual page</a>
 (although this page has "v1" typed at the top, the date and the tables of contents indicate it first appeared in v2, a.k.a. Second Edition) https://archive.org/details/a_research_unix_reader/page/n22/mode/1up</li>

<li>

<a href="https://man.cat-v.org/unix_7th/1/echo" rel="noopener noreferrer" target="_blank">
Seventh Edition UNIX echo manual page</a>
 https://man.cat-v.org/unix_7th/1/echo</li>

<li>

<a href="https://man.cat-v.org/unix_8th/1/echo" rel="noopener noreferrer" target="_blank">
Eighth Edition UNIX echo manual page</a>
 https://man.cat-v.org/unix_8th/1/echo</li>

<li>

<a href="https://pubs.opengroup.org/onlinepubs/9699919799/utilities/printf.html" rel="noopener noreferrer" target="_blank">
Printf specification</a>
 https://pubs.opengroup.org/onlinepubs/9699919799/utilities/printf.html</li>

<li>

<a href="https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap05.html" rel="noopener noreferrer" target="_blank">
File Format Notation specification</a>
 https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap05.html</li>

<li>

<a href="https://archive.org/details/a_research_unix_reader/page/n95/mode/1up" rel="noopener noreferrer" target="_blank">
A Research UNIX Reader: Ninth Edition Table of Contents</a>
 https://archive.org/details/a_research_unix_reader/page/n95/mode/1up</li>

<li>

<a href="https://man.cat-v.org/unix_10th/1/echo" rel="noopener noreferrer" target="_blank">
Tenth Edition UNIX echo/printf manual page</a>
 https://man.cat-v.org/unix_10th/1/echo</li>

<li>

<a href="https://man.freebsd.org/cgi/man.cgi?query=printf&amp;sektion=1&amp;manpath=4.3BSD+Reno" rel="noopener noreferrer" target="_blank">
4.3BSD Reno printf manual page</a>
 https://man.freebsd.org/cgi/man.cgi?query=printf&amp;sektion=1&amp;manpath=4.3BSD+Reno</li>

<li>

<a href="https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap03.html#tag_03_282" rel="noopener noreferrer" target="_blank">
Definitions: Portable Filename Character Set</a>
 https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap03.html#tag_03_282</li>

<li>

<a href="https://pubs.opengroup.org/onlinepubs/9699919799/utilities/pathchk.html" rel="noopener noreferrer" target="_blank">
Pathchk specification</a>
 https://pubs.opengroup.org/onlinepubs/9699919799/utilities/pathchk.html</li>

</ol>

<p>

</p>


<p><a href="https://hackerpublicradio.org/eps/hpr4667/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4666: How I got into tech]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.


I started out with Basic on the TI-99/4A in 1984. The bare machine could not be programmed by the user in machine code. In 1985 I bought a ZX Spectrum, that gave me total control over the machine.


I wrote two FORTH systems on the ZX-Spectrum.

...]]></description>
<link>https://tsecurity.de/de/3614279/it+sicherheit/it+podcasts/hpr4666+how+i+got+into+tech/</link>
<pubDate>Mon, 22 Jun 2026 02:03:34 +0200</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>

<p>
I started out with Basic on the <a href="https://en.wikipedia.org/wiki/TI-99/4A">TI-99/4A</a> in 1984. The bare machine could not be programmed by the user in machine code. In 1985 I bought a <a href="https://en.wikipedia.org/wiki/ZX_Spectrum">ZX Spectrum</a>, that gave me total control over the machine.</p>

<p>
I wrote two <a href="https://en.wikipedia.org/wiki/Forth_(programming_language)">FORTH</a> systems on the ZX-Spectrum.</p>

<p>
In 1988 I got my first <a href="https://en.wikipedia.org/wiki/Intel_8088">8088</a> PC, also programming it in <a href="https://en.wikipedia.org/wiki/Forth_(programming_language)">FORTH</a>.</p>

<p>
In 1992 I got an <a href="https://en.wikipedia.org/wiki/I386">80386</a> PC and I ran Linux on it. MCC Interim Release from v. This was the first Linux distro.</p>

<p>
I have been using <a href="https://en.wikipedia.org/wiki/Linux">Linux</a> ever since. </p>

<p>
From then on I obtained newer PCs, such as a <a href="https://en.wikipedia.org/wiki/Pentium">Pentium</a> in 1995, a <a href="https://en.wikipedia.org/wiki/Pentium_II">Pentium-2</a> in 1998, a <a href="https://en.wikipedia.org/wiki/Pentium_4">Pentium-4</a> in 2003 and a Core-2 Duo in 2006.</p>

<p>
I used several <a href="https://hackerpublicradio.org/eps/hpr4666/%3Ca%20href=" https:>Linux</a> distributions: but I always return to Debian.</p>

<h3>Links:</h3>


<ul>
<li><a href="https://github.com/ForthHub/F83">https://github.com/ForthHub/F83</a> F83.COM is the ready to run FORTH system. </li>
<li><a href="https://github.com/uho/F-PC">https://github.com/uho/F-PC</a> F-PC - a Forth system optimized for IBM-PC, XT and AT machines running DOS</li>
<li><a href="https://www.latte.org/latte.html">https://www.latte.org/latte.html</a>Latte The Language for Transforming Text</li>
<li><a href="https://en.wikipedia.org/wiki/Joe's_Own_Editor">https://en.wikipedia.org/wiki/Joe's_Own_Editor</a>           </li>
<li><a href="https://www.freebsd.org/">https://www.freebsd.org/</a></li>
<li><a href="https://www.debian.org/">https://www.debian.org/</a></li>
<li><a href="https://www.gentoo.org/">https://www.gentoo.org/</a></li>
<li><a href="https://en.wikipedia.org/wiki/Mac_Mini">https://en.wikipedia.org/wiki/Mac_Mini</a></li>
<li><a href="https://en.wikipedia.org/wiki/PowerPC">https://en.wikipedia.org/wiki/PowerPC</a></li>
<li><a href="https://en.wikipedia.org/wiki/Ivy_Bridge_(microarchitecture)">https://en.wikipedia.org/wiki/Ivy_Bridge_(microarchitecture)</a></li>
<li><a href="https://en.wikipedia.org/wiki/Ubuntu">https://en.wikipedia.org/wiki/Ubuntu</a></li>
<li><a href="https://en.wikipedia.org/wiki/Firefox">https://en.wikipedia.org/wiki/Firefox</a></li>
<li><a href="https://en.wikipedia.org/wiki/Chromium_(web_browser)">https://en.wikipedia.org/wiki/Chromium_(web_browser)</a></li>
<li><a href="https://www.raspberrypi.com/products/raspberry-pi-400/">https://www.raspberrypi.com/products/raspberry-pi-400/</a></li>
<li><a href="https://www.intel.com/content/www/us/en/ark/products/series/217838/12th-generation-intel-core-i5-processors.html">https://www.intel.com/content/www/us/en/ark/products/series/217838/12th-generation-intel-core-i5-processors.html</a></li>
<li><a href="https://en.wikipedia.org/wiki/Windows_11">https://en.wikipedia.org/wiki/Windows_11</a></li>
</ul><p><a href="https://hackerpublicradio.org/eps/hpr4666/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4665: Pokémon GO]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.




Pokémon Go (stylized as Pokémon GO) is a 2016 augmented reality (AR) mobile game developed and published by Niantic, in partnership with Nintendo and The Pokémon Company, for iOS and Android devices. The game uses GPS to locate, capture, train...]]></description>
<link>https://tsecurity.de/de/3609139/it+sicherheit/it+podcasts/hpr4665+pokmon+go/</link>
<pubDate>Fri, 19 Jun 2026 02:03:47 +0200</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>

<p>

<em>
Pokémon Go (stylized as Pokémon GO) is a 2016 augmented reality (AR) mobile game developed and published by Niantic, in partnership with Nintendo and The Pokémon Company, for iOS and Android devices. The game uses GPS to locate, capture, train, and battle Pokémon. It is free-to-play, featuring a freemium model that includes local advertising and offers in-app purchases for additional in-game items. Pokémon Go launched with approximately 150 Pokémon species, with new species regularly introduced.</em>

</p>

<p>

</p>

<p>
-- Wikipedia.org</p>


<p><a href="https://hackerpublicradio.org/eps/hpr4665/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4664: No Input Mixing Tutorial and How to Build a Drone Box]]></title>
<description><![CDATA[This show has been flagged as Explicit by the host.


Some links to other tutorials (in case you need a visual element, these helped me out)






Mixing board tutorial


https://youtu.be/H-7kQmpjBds






Drone Box tutorial


https://youtu.be/50C6DBsqy24



Provide feedback on this episode.]]></description>
<link>https://tsecurity.de/de/3606386/it+sicherheit/it+podcasts/hpr4664+no+input+mixing+tutorial+and+how+to+build+a+drone+box/</link>
<pubDate>Thu, 18 Jun 2026 02:03:32 +0200</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Explicit by the host.</p>

<p>
Some links to other tutorials (in case you need a visual element, these helped me out)</p>

<p>

</p>

<p>
Mixing board tutorial</p>

<p>
<a href="https://youtu.be/H-7kQmpjBds">https://youtu.be/H-7kQmpjBds</a></p>

<p>

</p>

<p>
Drone Box tutorial</p>

<p>
<a href="https://youtu.be/50C6DBsqy24">https://youtu.be/50C6DBsqy24</a></p>



<p><a href="https://hackerpublicradio.org/eps/hpr4664/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4663: The hallway track at T-DOSE]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.
T-DOSE

TDOSE 2027


Mark you calendars #TDOSE 2027 on 5 and 6 June '27 in the Weeffabriek, Geldrop.




T-DOSE
Info Booth
Hackalot
Laptop Revive
Free Software Foundation Europe
Doeidag and Banray
Debian
Angry Nerds Podcast
Freie Software Freunde -...]]></description>
<link>https://tsecurity.de/de/3603360/it+sicherheit/it+podcasts/hpr4663+the+hallway+track+at+t-dose/</link>
<pubDate>Wed, 17 Jun 2026 02:02:25 +0200</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>
<h1>T-DOSE</h1>

<h2>TDOSE 2027</h2>

<p>
Mark you calendars #TDOSE 2027 on 5 and 6 June '27 in the Weeffabriek, Geldrop.
</p>

<ul>

<li><a href="https://hackerpublicradio.org/eps/hpr4663/index.html#TDOSE" rel="noopener noreferrer" target="_blank">T-DOSE</a></li>
<li><a href="https://hackerpublicradio.org/eps/hpr4663/index.html#InfoBooth" rel="noopener noreferrer" target="_blank">Info Booth</a></li>
<li><a href="https://hackerpublicradio.org/eps/hpr4663/index.html#Hackalot" rel="noopener noreferrer" target="_blank">Hackalot</a></li>
<li><a href="https://hackerpublicradio.org/eps/hpr4663/index.html#LaptopRevive" rel="noopener noreferrer" target="_blank">Laptop Revive</a></li>
<li><a href="https://hackerpublicradio.org/eps/hpr4663/index.html#FSFE" rel="noopener noreferrer" target="_blank">Free Software Foundation Europe</a></li>
<li><a href="https://hackerpublicradio.org/eps/hpr4663/index.html#DoeidagBanray" rel="noopener noreferrer" target="_blank">Doeidag and Banray</a></li>
<li><a href="https://hackerpublicradio.org/eps/hpr4663/index.html#Debian" rel="noopener noreferrer" target="_blank">Debian</a></li>
<li><a href="https://hackerpublicradio.org/eps/hpr4663/index.html#AngryNerdsPodcast" rel="noopener noreferrer" target="_blank">Angry Nerds Podcast</a></li>
<li><a href="https://hackerpublicradio.org/eps/hpr4663/index.html#FYMT" rel="noopener noreferrer" target="_blank">Freie Software Freunde - Free Your Model Train</a></li>
<li><a href="https://hackerpublicradio.org/eps/hpr4663/index.html#HPR" rel="noopener noreferrer" target="_blank">Hacker Public Radio: The community Podcast</a></li>
<li><a href="https://hackerpublicradio.org/eps/hpr4663/index.html#UBports" rel="noopener noreferrer" target="_blank">UBports</a></li>
<li><a href="https://hackerpublicradio.org/eps/hpr4663/index.html#Adfinis" rel="noopener noreferrer" target="_blank">Adfinis</a></li>
<li><a href="https://hackerpublicradio.org/eps/hpr4663/index.html#credit" rel="noopener noreferrer" target="_blank">Credits</a></li>
</ul>

<h2>The Technical Dutch Open Source Event (T-DOSE)</h2>
<p>
<audio controls="" preload="none">
<source src="https://hub.hackerpublicradio.org/ccdn.php?filename=/eps/hpr4663/hpr4663.ogg#t=40.000000,283.720000" type="audio/ogg">
<source src="https://hub.hackerpublicradio.org/ccdn.php?filename=/eps/hpr4663/hpr4663.mp3#t=40.000000,283.720000" type="audio/mpeg">
</audio>
</p>
<p>
In <a href="https://hackerpublicradio.org/eps/hpr4641/index.html" rel="noopener noreferrer" target="_blank">
hpr4641 :: Technical Dutch Open Source Event (T-DOSE)</a>
, Ken interviewed Peter van Ginneken about the <a href="https://t-dose.org/" rel="noopener noreferrer" target="_blank">
T-DOSE</a>
conference.</p>

<blockquote>
The Technical Dutch Open Source Event (T-DOSE) is a free conference to promote the use and development of Open Source software. This event has is organised yearly since 2006 in the Brainport region, near Eindhoven, The Netherlands. During this event, Open Source projects, developers and visitors can exchange ideas and knowledge.</blockquote>

<p>

<a href="https://hackerpublicradio.org/eps/hpr4663/hpr4663_image_ext_1.jpeg">
<img src="https://hackerpublicradio.org/eps/hpr4663/hpr4663_image_ext_1_tn.jpeg">
</a>

</p>

<p>
Peter van Ginneken Opens the Event.</p>

<p>

<a href="https://hackerpublicradio.org/eps/hpr4663/hpr4663_image_ext_2.jpeg">
<img src="https://hackerpublicradio.org/eps/hpr4663/hpr4663_image_ext_2_tn.jpeg">
</a>

</p>

<p>
We catch up with him at the start of Day 2.</p>

<h2>
Info Booth</h2>
<p>
<audio controls="" preload="none">
<source src="https://hub.hackerpublicradio.org/ccdn.php?filename=/eps/hpr4663/hpr4663.ogg#t=283.720000,639.720000" type="audio/ogg">
<source src="https://hub.hackerpublicradio.org/ccdn.php?filename=/eps/hpr4663/hpr4663.mp3#t=283.720000,639.720000" type="audio/mpeg">
</audio>
</p>

<p>
The backbone of any event is the Info booth and catering.</p>

<p>

<a href="https://hackerpublicradio.org/eps/hpr4663/hpr4663_image_ext_3.jpeg">
<img src="https://hackerpublicradio.org/eps/hpr4663/hpr4663_image_ext_3_tn.jpeg">
</a>

</p>

<p>
Here we talk to Nick Hibma who when not serving on the Info Booth is treasurer of the T-DOSE organisation.</p>

<p>

<a href="https://hackerpublicradio.org/eps/hpr4663/hpr4663_image_ext_4.jpeg">
<img src="https://hackerpublicradio.org/eps/hpr4663/hpr4663_image_ext_4_tn.jpeg">
</a>

</p>

<p>
Ready to serve sandwitches, sell T-Shirts, Magic Mugs, and <a href="https://www.club-mate.de/en/" rel="noopener noreferrer" target="_blank">
club-mate</a>

</p>

<p>

<a href="https://hackerpublicradio.org/eps/hpr4663/hpr4663_image_ext_5.jpeg">
<img src="https://hackerpublicradio.org/eps/hpr4663/hpr4663_image_ext_5_tn.jpeg">
</a>

</p>

<p>
T-Shirts</p>

<p>

<a href="https://hackerpublicradio.org/eps/hpr4663/hpr4663_image_ext_6.jpeg">
<img src="https://hackerpublicradio.org/eps/hpr4663/hpr4663_image_ext_6_tn.jpeg">
</a>

</p>

<p>

<a href="https://www.club-mate.de/en/" rel="noopener noreferrer" target="_blank">
club-mate</a>

</p>

<p>

<a href="https://hackerpublicradio.org/eps/hpr4663/hpr4663_image_ext_7.jpeg">
<img src="https://hackerpublicradio.org/eps/hpr4663/hpr4663_image_ext_7_tn.jpeg">
</a>

</p>

<p>
Magic Mugs</p>

<h2>Hackalot</h2>
<p>
<audio controls="" preload="none">
<source src="https://hub.hackerpublicradio.org/ccdn.php?filename=/eps/hpr4663/hpr4663.ogg#t=639.720000,1320.720000" type="audio/ogg">
<source src="https://hub.hackerpublicradio.org/ccdn.php?filename=/eps/hpr4663/hpr4663.mp3#t=639.720000,1320.720000" type="audio/mpeg">
</audio>
</p>



<p>
Hackalot is the Eindhoven and surrounding area hackerspace. A hackerspace is a place where hackers can work on their own or collaborative projects. You can work and talk together, but you can also do your own thing. Together we can also purchase a lot of cooler tools such as lasercutters and 3d printers. Often there is no suitable place for equipment at home. So if you know someone, you are either an electronics/computer/technical hobby that got out of hand, come on by!</p>

<p>

<a href="https://hackerpublicradio.org/eps/hpr4663/hpr4663_image_ext_8.jpeg">
<img src="https://hackerpublicradio.org/eps/hpr4663/hpr4663_image_ext_8_tn.jpeg">
</a>

</p>

<p>
Boekenwuurm at the Hackalot stand.</p>

<p>

<a href="https://hackerpublicradio.org/eps/hpr4663/hpr4663_image_ext_9.jpeg">
<img src="https://hackerpublicradio.org/eps/hpr4663/hpr4663_image_ext_9_tn.jpeg">
</a>

</p>

<p>
The Hackalot stand.</p>

<ul>

<li>

<a href="https://hsnl.social/@boekenwuurm" rel="noopener noreferrer" target="_blank">
Boekenwuurm@hsnl.social</a>

</li>

<li>

<a href="https://boekenwuurm.nl/" rel="noopener noreferrer" target="_blank">
boekenwuurm.nl</a>

</li>

<li>

<a href="https://hackalot.nl/" rel="noopener noreferrer" target="_blank">
Hackalot</a>

</li>

</ul>

<h2>Laptop Revive</h2>
<p>
<audio controls="" preload="none">
<source src="https://hub.hackerpublicradio.org/ccdn.php?filename=/eps/hpr4663/hpr4663.ogg#t=1320.720000,1824.720000" type="audio/ogg">
<source src="https://hub.hackerpublicradio.org/ccdn.php?filename=/eps/hpr4663/hpr4663.mp3#t=1320.720000,1824.720000" type="audio/mpeg">
</audio>
</p>

<p>
Laptop Revive collects discarded laptops, that are still working. We then install Linux Mint to provide a working laptops to students who cannot afford laptops. We are socially involved, sustainable and open.</p>

<p>

<a href="https://hackerpublicradio.org/eps/hpr4663/hpr4663_image_ext_10.jpeg">
<img src="https://hackerpublicradio.org/eps/hpr4663/hpr4663_image_ext_10_tn.jpeg">
</a>

</p>

<p>
Alex Kok Laptop Revive</p>

<ul>

<li>

<a href="https://www.laptoprevive.nl/" rel="noopener noreferrer" target="_blank">
Laptop Revive</a>

</li>

</ul>

<h2>Free Software Foundation Europe</h2>

<p>
Free Software Foundation Europe (FSFE) information booth, with information material, stickers and merchandise.</p>

<p>

<a href="https://hackerpublicradio.org/eps/hpr4663/hpr4663_image_ext_11.jpeg">
<img src="https://hackerpublicradio.org/eps/hpr4663/hpr4663_image_ext_11_tn.jpeg">
</a>

</p>

<p>
Nico was so busy that we were unable to snag an interview this time. However check out our talk with him at the <a href="https://hackerpublicradio.org/eps/hpr4639/index.html" rel="noopener noreferrer" target="_blank">
NLUUG Spring Conference 2026</a>
.</p>

<ul>

<li>

<a href="https://fsfe.org/index.en.html" rel="noopener noreferrer" target="_blank">
Free Software Foundation Europe</a>

</li>

</ul>

<h2>Doeidag and Banray</h2>
<p>
<audio controls="" preload="none">
<source src="https://hub.hackerpublicradio.org/ccdn.php?filename=/eps/hpr4663/hpr4663.ogg#t=1824.720000,2330.720000" type="audio/ogg">
<source src="https://hub.hackerpublicradio.org/ccdn.php?filename=/eps/hpr4663/hpr4663.mp3#t=1824.720000,2330.720000" type="audio/mpeg">
</audio>
</p>

<p>
We also interviewed Geert-Jan Meewisse in <a href="https://hackerpublicradio.org/eps/hpr4639/index.html" rel="noopener noreferrer" target="_blank">
hpr4639 :: NLUUG Spring Conference 2026</a>
but this time he is here talking about <a href="https://banray.eu/en/index.html" rel="noopener noreferrer" target="_blank">
banray.eu</a>

</p>

<blockquote>
In 2025, Meta sold over seven million pairs of camera-equipped glasses that look like regular Ray-Bans. The person wearing them looks like anyone else. But these people are now products, as is everyone they interact with.</blockquote>

<p>
He then also mentioned the <a href="https://doeidag.nl/" rel="noopener noreferrer" target="_blank">
Doeidag</a>
project where they encourage people to drop one service at a time on the first Sunday of the month</p>

<ul>

<li>

<a href="https://doeidag.nl/" rel="noopener noreferrer" target="_blank">
https://doeidag.nl/</a>

</li>

<li>

<a href="https://banray.eu/en/index.html" rel="noopener noreferrer" target="_blank">
https://banray.eu/</a>

</li>

</ul>

<p>

<a href="https://hackerpublicradio.org/eps/hpr4663/hpr4663_image_ext_12.jpeg">
<img src="https://hackerpublicradio.org/eps/hpr4663/hpr4663_image_ext_12_tn.jpeg">
</a>

</p>

<p>
Geert-Jan Meewisse Doeidag and Banray</p>

<h2>Debian</h2>
<p>
<audio controls="" preload="none">
<source src="https://hub.hackerpublicradio.org/ccdn.php?filename=/eps/hpr4663/hpr4663.ogg#t=2330.720000,2660.720000" type="audio/ogg">
<source src="https://hub.hackerpublicradio.org/ccdn.php?filename=/eps/hpr4663/hpr4663.mp3#t=2330.720000,2660.720000" type="audio/mpeg">
</audio>
</p>

<p>
The Debian Project is an association of Free Software developers who volunteer their time and effort in order to produce the completely free operating system Debian.</p>

<p>

<a href="https://hackerpublicradio.org/eps/hpr4663/hpr4663_image_ext_13.jpeg">
<img src="https://hackerpublicradio.org/eps/hpr4663/hpr4663_image_ext_13_tn.jpeg">
</a>

</p>

<p>
Ken Talks to Joost van Baal Llić from the Debian Project</p>

<p>

<a href="https://www.debian.org/" rel="noopener noreferrer" target="_blank">
Debian</a>

</p>

<h2>Angry Nerds Podcast</h2>

<p>
Angry Nerds, met extra cyber!</p>

<p>
The Angry Nerds is a Dutch Language podcast about privacy and security</p>

<p>
It's a live show that is topical and often humorous tech podcast where a group of enthusiastic nerds discusses current technology, IT and cybersecurity topics. The hosts combine technical depth with background conversations, humor and the occasionally a good dose of cynicism. Expect conversations about everything from network infrastructures to software development, from privacy issues to bizarre tech trends.</p>

<p>

<a href="https://hackerpublicradio.org/eps/hpr4663/hpr4663_image_ext_14.jpeg">
<img src="https://hackerpublicradio.org/eps/hpr4663/hpr4663_image_ext_14_tn.jpeg">
</a>

</p>

<p>
Ken on the Angry Nerds Podcast</p>

<p>You can listen to the recording at <a href="https://makertube.net/w/6M6VumLCH99mN3y1dZjRz9?start=1h16m11s">Angry Nerds op T-DOSE 2026 deel 2 (prikkelarme versie)</a>.</p>

<ul>

<li>

<a href="https://angrynerdspodcast.nl/" rel="noopener noreferrer" target="_blank">
Angry Nerds Podcast</a>

</li>

</ul>

<h2>Freie Software Freunde - Free Your Model Train</h2>
<p>
<audio controls="" preload="none">
<source src="https://hub.hackerpublicradio.org/ccdn.php?filename=/eps/hpr4663/hpr4663.ogg#t=2660.720000,3279.720000" type="audio/ogg">
<source src="https://hub.hackerpublicradio.org/ccdn.php?filename=/eps/hpr4663/hpr4663.mp3#t=2660.720000,3279.720000" type="audio/mpeg">
</audio>
</p>

<p>
We are a non-profit organization. We are committed to Free Software and Open Standards. Software is not just technology, it's an important part of our daily life.</p>

<p>
We want to raise awareness of the importance of Free Software and Open Standards. That is why we are concerned with topics outside of technology: politics, education, ethics, psychology, ecology and economics, licenses, ... One of our projects is "Free your model train". Our goal is to raise awareness of the benefits of open standards.</p>

<p>

<a href="https://hackerpublicradio.org/eps/hpr4663/hpr4663_image_ext_15.jpeg">
<img src="https://hackerpublicradio.org/eps/hpr4663/hpr4663_image_ext_15_tn.jpeg">
</a>

</p>

<p>
Birgit Hücking (@akkolady) standing at the <a href="http://freie-software.org/" rel="noopener noreferrer" target="_blank">
freie-software.org</a>

</p>

<p>

<a href="https://hackerpublicradio.org/eps/hpr4663/hpr4663_image_ext_16.jpeg">
<img src="https://hackerpublicradio.org/eps/hpr4663/hpr4663_image_ext_16_tn.jpeg">
</a>

</p>

<p>
The <a href="http://freie-software.org/" rel="noopener noreferrer" target="_blank">
freie-software.org</a>
table with two large train loops, a smaller internal one. Two knitted Tux Mascots. And a lot of information.</p>

<p>

<a href="https://hackerpublicradio.org/eps/hpr4663/hpr4663_image_ext_17.jpeg">
<img src="https://hackerpublicradio.org/eps/hpr4663/hpr4663_image_ext_17_tn.jpeg">
</a>
Close up of the two knitted Tux Mascot.</p>

<ul>
<li><a href="https://chaos.social/@akkolady" rel="noopener noreferrer" target="_blank">@akkolady@chaos.social</a></li>
<li><a href="https://mastodon.social/@FreieSoftwareFreunde" rel="noopener noreferrer" target="_blank">@FreieSoftwareFreunde@mastodon.social</a></li>
<li><a href="https://freie-software.org/" rel="noopener noreferrer" target="_blank">Freie Software Freunde</a></li>
<li><a href="https://freie-software.org/?Projekte___Free_Your_Model_Train" rel="noopener noreferrer" target="_blank">Free Your Model Train</a></li>
<li><a href="https://fymt.de/" rel="noopener noreferrer" target="_blank">https://fymt.de</a></li>

</ul>

<h2>Hacker Public Radio: The community Podcast</h2>

<blockquote>
Hacker Public Radio is a technology focused podcast that releases shows every weekday Monday to Friday. Our shows are created by people like you, and can be on any topic that is of interest to hackers, hobbyists, makers, etc. We are a welcoming community that offers positive feedback and encourages respectful debate. This is our 21st year of operation, and we will release our 5,000th show in August. Everything we do is released under a Free Culture License. We do not vet, edit, moderate or in any way censor any of the audio you submit, we trust you to do that. We will be available to guide you in sharing your knowledge with the community. Having had a stand at FOSDEM (BE), OggCamp(UK), Linux Fest North West(US), Spectrum (FR), we are available to show you how easy podcasting can be. We will be answering your questions, and conducting interviews with anyone with anything interesting to say.</blockquote>

<p>

<a href="https://hackerpublicradio.org/eps/hpr4663/hpr4663_image_ext_18.jpeg">
<img src="https://hackerpublicradio.org/eps/hpr4663/hpr4663_image_ext_18_tn.jpeg">
</a>

</p>

<p>
The HPR booth.</p>

<ul>

<li>

<a href="https://hackerpublicradio.org/" rel="noopener noreferrer" target="_blank">
Hacker Public Radio</a>

</li>

</ul>

<h2>UBports</h2>
<p>
<audio controls="" preload="none">
<source src="https://hub.hackerpublicradio.org/ccdn.php?filename=/eps/hpr4663/hpr4663.ogg#t=3279.720000,4060.720000" type="audio/ogg">
<source src="https://hub.hackerpublicradio.org/ccdn.php?filename=/eps/hpr4663/hpr4663.mp3#t=3279.720000,4060.720000" type="audio/mpeg">
</audio>
</p>

<blockquote>
We are developing an open source Linux mobile OS built to be your daily driver... ...and we'd like to welcome you to our community.</blockquote>

<p>
Next up is a chat with Sander Klootwijk about UBports and Ubuntu Touch. Their website has a list of <a href="https://devices.ubuntu-touch.io/" rel="noopener noreferrer" target="_blank">
supported devices</a>
.</p>

<p>

<a href="https://hackerpublicradio.org/eps/hpr4663/hpr4663_image_ext_19.jpeg">
<img src="https://hackerpublicradio.org/eps/hpr4663/hpr4663_image_ext_19_tn.jpeg">
</a>

</p>

<p>
We talk with Sander Klootwijk</p>

<p>

<a href="https://hackerpublicradio.org/eps/hpr4663/hpr4663_image_ext_20.jpeg">
<img src="https://hackerpublicradio.org/eps/hpr4663/hpr4663_image_ext_20_tn.jpeg">
</a>

</p>

<p>
Proof it's running on actual hardware</p>

<p>

<a href="https://hackerpublicradio.org/eps/hpr4663/hpr4663_image_ext_21.jpeg">
<img src="https://hackerpublicradio.org/eps/hpr4663/hpr4663_image_ext_21_tn.jpeg">
</a>

</p>

<p>
Yumi The UBports Installer Mascot was not available for comment.</p>

<p>

<a href="https://hackerpublicradio.org/eps/hpr4663/hpr4663_image_ext_22.jpeg">
<img src="https://hackerpublicradio.org/eps/hpr4663/hpr4663_image_ext_22_tn.jpeg">
</a>

</p>

<p>
Ubuntu Touch on a Fairphone</p>

<ul>

<li>

<a href="https://mastodon.social/@BallonQuartier@mastodon.nl" rel="noopener noreferrer" target="_blank">
@BallonQuartier@mastodon.nl</a>

</li>

<li>

<a href="https://ubports.com/en/" rel="noopener noreferrer" target="_blank">
UBports</a>

</li>

<li>

<a href="https://devices.ubuntu-touch.io/" rel="noopener noreferrer" target="_blank">
https://devices.ubuntu-touch.io/</a>

</li>

</ul>

<h2>Adfinis</h2>
<p>
<audio controls="" preload="none">
<source src="https://hub.hackerpublicradio.org/ccdn.php?filename=/eps/hpr4663/hpr4663.ogg#t=4060.720000,4688.720000" type="audio/ogg">
<source src="https://hub.hackerpublicradio.org/ccdn.php?filename=/eps/hpr4663/hpr4663.mp3#t=4060.720000,4688.720000" type="audio/mpeg">
</audio>
</p>

<blockquote>
Accelerate your business with open source-driven automation, security, cloud, and DevSecOps solutions from Adfinis, your end-to-end partner for robust, flexible IT that drives growth and innovation at any scale. Welcome to Our World Full of Open Source</blockquote>

<blockquote>
At Adfinis, we believe in the transformative power of open source technology to foster innovation, transparency, and collaboration. We are committed to providing solutions free from vendor lock-in, ensuring our clients retain full control and flexibility over their systems. Digital sustainability lies at the heart of our approach, as we strive to create technologies that not only serve the present but also support a long-term, environmentally responsible future. Additionally, we champion digital sovereignty, empowering organizations and communities to own and control their data, infrastructure, and technological destiny. These principles drive us to build a more open, sustainable, and inclusive digital world.</blockquote>

<p>
Finally we chat to <a href="mailto:Coen.hamers@adfinis.com" rel="noopener noreferrer" target="_blank">
Coen hamers</a>
, <a href="mailto:Robert.debock@adfinis.com" rel="noopener noreferrer" target="_blank">
Robert de Bock</a>
, and <a href="mailto:annebelle.vanwaardenburg@adfinis.com" rel="noopener noreferrer" target="_blank">
Annebelle van Waardenburg</a>
from <a href="https://www.adfinis.com/" rel="noopener noreferrer" target="_blank">
Adfinis</a>
whose sponsorship made the event possible.</p>
<p>
</p><ul>
<li><a href="https://www.adfinis.com/en/solutions" rel="noopener noreferrer" target="_blank">https://www.adfinis.com/en/solutions</a></li>
<li><a href="https://www.adfinis.com/en/career" rel="noopener noreferrer" target="_blank">https://www.adfinis.com/en/career</a></li>
</ul>


<p>

<a href="https://hackerpublicradio.org/eps/hpr4663/hpr4663_image_ext_23.jpeg">
<img src="https://hackerpublicradio.org/eps/hpr4663/hpr4663_image_ext_23_tn.jpeg">
</a>

</p>

<h2>Credits</h2>

<ul>
<li><a href="https://freesound.org/people/jzielke011/sounds/439690/">Record Needle Rip</a></li>
<li><a href="https://archive.org/details/FreeSoftwareSong_131">Free Software Song</a></li>
</ul>


<p><a href="https://hackerpublicradio.org/eps/hpr4663/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4662: “What Are the Answers I Need, To the Questions I Don't Know Enough to Ask?”]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.


Wandering along the suggestion of topics in Hacker Public Radio, we come to this: how to obtain the answer to something that I don’t even know how to ask?


 


My opinion is: you can’t get an answer without the desire, be it represented by a q...]]></description>
<link>https://tsecurity.de/de/3600435/it+sicherheit/it+podcasts/hpr4662+what+are+the+answers+i+need+to+the+questions+i+dont+know+enough+to+ask/</link>
<pubDate>Tue, 16 Jun 2026 02:26:18 +0200</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>

<p>
Wandering along the suggestion of topics in Hacker Public Radio, we come to this: how to obtain the answer to something that I don’t even know how to ask?</p>

<p>
 </p>

<p>
My opinion is: you can’t get an answer without the desire, be it represented by a question or a quest.</p>

<p>
So, how to pose the correct question? There are a few steps!</p>

<p>
1st, <strong>
interest</strong>
. Get motivated to know, even if you don’t know exactly what you want specifically.</p>

<p>
2nd: be open to deconstruction. To learn is to recognize you didn’t know before (self-pride has to give place for learning). And when confronted with the new, things you thought you knew — even ones you relied on before — may need to be now rejected, if incompatible with the truth you only now receive.</p>

<p>
3rd: when the barriers are down, it’s possible to <strong>
study</strong>
 the theme. Because, at the moment, you don’t know what you don’t know; while one ignores something, he’s only ignorant. One have to listen to others, to practice and<em>
/or</em>
 reflect on the subject until he reaches something specific (and not easily or promptly answerable) worth being the object of his quest or question.</p>

<p>
4th: with the question in hand, go for the answer. If it’s valuable for you, more time or less time you are definitely going to get it. If it’s too broad, or you lose interest, or if you need <em>
more</em>
 after getting the initial answer, no problem: you can reformulate and start from the beginning. Great part of the necessary questions only come after the answer already came by a long course of inquiries [questions] (natural consequence of studying with a desire).</p>

<p class="ql-align-center">
* * *</p>

<p>
Credits:</p>

<p>
1) Writing is putting thoughts in order and being able to detect what is loosen or unfounded (needing refinement of discard). “The reason so many people have trouble writing is that it’s fundamentally difficult. To write well you have to think clearly, and thinking clearly is hard.” (<a href="https://paulgraham.com/writes.html" rel="noopener noreferrer" target="_blank">
https://paulgraham.com/writes.html</a>
)</p>

<p>
2) “What Are the Answers I Need, To the Questions I Don't Know Enough to Ask?” (<a href="https://hackerpublicradio.com/about.html#requested_topics" rel="noopener noreferrer" target="_blank">
https://hackerpublicradio.com/about.html#requested_topics</a>
)</p>

<p>
(<em>
1 and 2 came at a particular time together and where more deterministic to the line of this episode.</em>
)</p>

<p>
3) Teacher Roosevelt, a course administrator (coordinator) of my post-graduation at Escola Paranaense de Direito, that ministered about the end of course paper and how to pose the question you are going to pose in order to write about a topic.</p>

<p>
4) Gym <em>
exercises</em>
 (because doing seated leg curls is difficult and gives strange sensations to many men; as <em>
thinking</em>
, gives a strange feeling one can’t even discern immediately if it’s good, bad, or only odd).</p>

<p>
Sound effect for credits numbering: “Number pad 1”, by phatkatz4 on Freesound (<a href="https://pixabay.com/sound-effects/musical-number-pad-1-105399/" rel="noopener noreferrer" target="_blank">
https://pixabay.com/sound-effects/musical-number-pad-1-105399/</a>
)</p>

<p>
Thank you!</p>


<p><a href="https://hackerpublicradio.org/eps/hpr4662/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4661: Laptop Computer Woes, or How I Learned to Love My Tech Hoarding]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.

    
      
        Blog post: https://claudiomiranda.wordpress.com/2026/05/19/laptop-computer-woes-or-how-i-learned-to-love-my-tech-hoarding/
      
        HP ProBook 4540s specifications: https://support.hp.com/au-en/product/product-specs/hp-pr...]]></description>
<link>https://tsecurity.de/de/3597786/it+sicherheit/it+podcasts/hpr4661+laptop+computer+woes+or+how+i+learned+to+love+my+tech+hoarding/</link>
<pubDate>Mon, 15 Jun 2026 02:04:37 +0200</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>

    <ul>
      <li>
        Blog post: <a href="https://claudiomiranda.wordpress.com/2026/05/19/laptop-computer-woes-or-how-i-learned-to-love-my-tech-hoarding/">https://claudiomiranda.wordpress.com/2026/05/19/laptop-computer-woes-or-how-i-learned-to-love-my-tech-hoarding/</a></li>
      <li>
        HP ProBook 4540s specifications: <a href="https://support.hp.com/au-en/product/product-specs/hp-probook-4540s-notebook-pc/">https://support.hp.com/au-en/product/product-specs/hp-probook-4540s-notebook-pc/</a></li>
      <li>
        Tonymacx86 forum post on the 1920x1080 screen upgrade for the
        ProBook 4540s: <a href="https://www.tonymacx86.com/threads/4540s-lcd-screen-1080p-replacement.88212/">https://www.tonymacx86.com/threads/4540s-lcd-screen-1080p-replacement.88212/</a></li>
      <li>
        Panelook.com link to the LG156WF1 screen variants: <a href="https://www.panelook.com/modelsearch.php?keyword=LP156WF1&amp;search_id=1839426">https://www.panelook.com/modelsearch.php?keyword=LP156WF1&amp;search_id=1839426</a></li>
      <li>
        HP ProBook 4540s teardown and screen upgrade video by JSnake
        Repair: <a href="https://youtu.be/3ceZ1m7JFYw?t=1252">https://youtu.be/3ceZ1m7JFYw?t=1252</a></li>
    </ul>
    <p>
    </p>
    <p>
      <a href="https://hackerpublicradio.org/eps/hpr4661/hpr4661_image_1.jpeg">
        <img src="https://hackerpublicradio.org/eps/hpr4661/hpr4661_image_1_tn.jpeg">
      </a>
    </p>
    <p>
      <a href="https://hackerpublicradio.org/eps/hpr4661/hpr4661_image_2.jpeg">
        <img src="https://hackerpublicradio.org/eps/hpr4661/hpr4661_image_2_tn.jpeg">
      </a>
    </p>
    <p>
      <a href="https://hackerpublicradio.org/eps/hpr4661/hpr4661_image_3.jpeg">
        <img src="https://hackerpublicradio.org/eps/hpr4661/hpr4661_image_3_tn.jpeg">
      </a>
    </p>
    <p>
      <a href="https://hackerpublicradio.org/eps/hpr4661/hpr4661_image_4.jpeg">
        <img src="https://hackerpublicradio.org/eps/hpr4661/hpr4661_image_4_tn.jpeg">
      </a>
    </p>
    <p>
      <a href="https://hackerpublicradio.org/eps/hpr4661/hpr4661_image_5.jpeg">
        <img src="https://hackerpublicradio.org/eps/hpr4661/hpr4661_image_5_tn.jpeg">
      </a>
    </p>
    <p>
      <a href="https://hackerpublicradio.org/eps/hpr4661/hpr4661_image_6.jpeg">
        <img src="https://hackerpublicradio.org/eps/hpr4661/hpr4661_image_6_tn.jpeg">
      </a>
    </p>
    <p>
      <a href="https://hackerpublicradio.org/eps/hpr4661/hpr4661_image_7.jpeg">
        <img src="https://hackerpublicradio.org/eps/hpr4661/hpr4661_image_7_tn.jpeg">
      </a>
    </p>
    <p>
      <a href="https://hackerpublicradio.org/eps/hpr4661/hpr4661_image_8.jpeg">
        <img src="https://hackerpublicradio.org/eps/hpr4661/hpr4661_image_8_tn.jpeg">
      </a>
    </p>
    <p>
      <a href="https://hackerpublicradio.org/eps/hpr4661/hpr4661_image_9.jpeg">
        <img src="https://hackerpublicradio.org/eps/hpr4661/hpr4661_image_9_tn.jpeg">
      </a>
    </p>
    <p>
    </p><p><a href="https://hackerpublicradio.org/eps/hpr4661/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4660: Robert A. Heinlein: The Future History, Part 1]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.

In his early days as a writer, Heinlein wrote his stories in the context of a shared universe that he called the Future History. These were mostly short stories at first, with hte occasional novella. But they inclode some great stories.

The Futur...]]></description>
<link>https://tsecurity.de/de/3592085/it+sicherheit/it+podcasts/hpr4660+robert+a+heinlein+the+future+history+part+1/</link>
<pubDate>Fri, 12 Jun 2026 02:03:36 +0200</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>

<p>In his early days as a writer, Heinlein wrote his stories in the context of a shared universe that he called the Future History. These were mostly short stories at first, with hte occasional novella. But they inclode some great stories.</p>

<h1>The Future History, Part 1</h1>

<p>One thing Heinlein became well known for was his Future History. This placed many of his stories in a common framework of a future environment, and allowed events from one story to influence events in other stories. Here is what he had to say about it, in a post I found on the Heinlein Society Facebook site:</p>

<blockquote>
<p>“I never “created” or “invented” a “Future History.” On April Fool’s Day 1939 I started to write commercially; by the middle of August I had written 8 shorts &amp; a serial. As 5 of these items were more or less to the same fictional background, I found that I was continually having to check back to keep from tripping over my own feet.</p>

<p>So I took an old navigation chart, about 3×4 feet, turned it over, made the time scale vertical, then set up 5 columns: stories, characters, technical data, sociological, remarks. Then I checked those first 5 stories, filled data into proper columns at the proper height for the fictional date—and continued to do this with other stories later. The chart was on the righthand wall near my elbow and was unusually messy as I never took the chart down to add to it—just reached over and scrawled on it.”</p>

<p>Source: <a href="https://www.facebook.com/HeinleinSociety/posts/i-never-created-or-invented-a-future-history-on-april-fools-day-1939-i-started-t/1092968002874634/">https://www.facebook.com/HeinleinSociety/posts/i-never-created-or-invented-a-future-history-on-april-fools-day-1939-i-started-t/1092968002874634/</a></p>
</blockquote>

<p>One thing that became clear as his Future History developed is that he was not looking at <em>our</em> future exactly. He was very clear in his mind that he was writing fiction, and not issuing prophecies. If you are reading it today, it is best to think of this as a kind of alternate timeline, and this is something that holds true through a lot of his work. Even in his later novels, which were never formally part of his Future History, he would mention events from that past group of works, which may implicitly incorporate them. But this is an area where scholars are in disagreement as to which if the later novels, if any, should be incorporated. And there were unwritten stories that appeared on the chart that would have given further background to the stories that were written. They were stories Heinlein seems to have intended to write at some point, but never got around to writing. You can get more information about this in his book <em>Revolt in 2100</em>.</p>

<p>The Future History stories were initially collected primarily in three books: <em><a href="https://www.amazon.com/Man-Who-Sold-Moon/dp/0671578634" data-type="link" data-id="https://www.amazon.com/Man-Who-Sold-Moon/dp/0671578634" target="_blank" rel="noreferrer noopener">The Man Who Sold the Moon (1950)</a></em>, <em><a href="https://www.amazon.com/Green-Hills-Earth-Robert-Heinlein/dp/0671578537" data-type="link" data-id="https://www.amazon.com/Green-Hills-Earth-Robert-Heinlein/dp/0671578537" target="_blank" rel="noreferrer noopener">The Green Hills of Earth (1951)</a></em>, and <em><a href="https://www.amazon.com/dp/B0011GBTKM/" data-type="link" data-id="https://www.amazon.com/dp/B0011GBTKM/" target="_blank" rel="noreferrer noopener">Revolt in 2100 (1953)</a></em>. Each of them fleshes out this hypothetical world in different ways. The first one, <em>The Man Who Sold The Moon</em>, introduces us to a businessman named D.D. Harriman, who is obsessed with going to the moon. But he thinks it should be done by private enterprise rather than by government. So he concocts a scheme to do this. He promotes a legal theory that the rights to the moon belong to the countries that it directly flies over, sort of like air rights taken to infinity. Then he uses the chaos of competing interests to throw this into the United Nations, and then gets the U.N. to give him the rights. He finally gets to launch a mission to set up a Moon base, but cannot join the expedition because the corporation considers him too valuable to risk. In a sequel story, <em>Requiem</em>, he does get to the moon just in time to die there. Heinlein was never above writing a tear-jerker.</p>

<p>Of course, the book has other stories not linked to D.D. Harriman. Heinlein’s fist story, <em>Life-Line</em>, is also collected here. And his second story, <em>Let There Be Light</em>, anticipates the development of solar power panels, but similarly to Life-Line, this earns the enmity of corporate interest, in the form of the Power Syndicate. <em>The Roads Must Roll</em> postulates moving roadways in the future, but the story really is about the sociology of technology in the future. And <em>Blowups Happen</em>, originally from 1940, anticipates nuclear fission as a power source, but it proves to be dangerous. They claim that the craters on the moon were really caused by a series of explosions to reactors that wiped out an earlier civilization. So they move the reactor into space for safety. And this feeds back into The Man Who Sold The Moon when this reactor in space blows up. </p>

<p>In these early stories we can already see that Heinlein has a complex view of society. In <em>Life-Line</em> and <em>Let There Be Light</em> corporate power is the villain of the story, and some of this also shows up in <em>Blowups Happen</em>. But in <em>The Man Who Sold The Moon</em> we see that private enterprise is preferred to government action. I think the way this can be reconciled is to see that Heinlein is always concerned with individual personal freedom and opposed to anything that might endanger that, whether from too much government or too powerful corporate interests.</p>

<p><em>The Green Hills of Earth</em> contains the story of the same name, which concerns a former space engineer, Rhysling, now blinded by radiation and unemployable, who is also a poet. And one of his poems has that title. The crew of Apollo 15 named a crater on the moon “Rhysling”, and they planned to read a bit of it at the crater, but those trips could get very busy. Still, as they were getting ready to leave the moon there was this exchange. Note that Allen is the Capcom, and Scott and Jones are the astronauts :</p>

<blockquote>
<p>“Allen: As the space poet Rhysling (the blind poet in Robert Heinlein’s The Green Hills of Earth) would say, we’re ready for you to “come back again to the homes of men on the cool green hills of Earth.”</p>

<p>[Scott – “That’s from the Green Hills of Earth. That’s one we talked about before the flight. Have you read that one?”] [Jones – “Oh, yeah! That was a favorite when I was a kid. Had you read it?”]</p>

<p>[Scott – “Sure. (Quoting from memory):</p>

<p><em>We pray for one last landing</em><br><em>on the globe that gave us birth</em><br><em>To rest our eyes on fleecy skies</em><br><em>and the cool green hills of Earth</em>.”</p>
</blockquote>

<p>Although two of the stories in this collection were older, from 1941, most of them are from 1948 and 1949. And there is a reason for that. On December 7, 1941, the United States found itself at war with Imperial Japan, and few days later Nazi Germany. Coming from a family that had fought in every American war you would expect Heinlein to get involved somehow. He could not enlist due to his medical retirement from the Navy, but since he had an engineering background so he became a civilian employee at the Philadelphia Navy Yard, where he was joined by fellow science fiction writers Isaac Asimov and L. Sprague de Camp. A nice retelling of this can be found at <em><a href="https://www.kirkusreviews.com/news-and-features/articles/asimov-de-camp-and-heinlein-naval-aviation-experim/" data-type="link" data-id="https://www.kirkusreviews.com/news-and-features/articles/asimov-de-camp-and-heinlein-naval-aviation-experim/" target="_blank" rel="noreferrer noopener">Kirkus Reviews</a></em>, and Asimov also discusses this in his biography. The upshot is that there is a gap of about 5 years when Heinlein did not publish anything.</p>

<p>It is also notable that Heinlein by this point had escaped from the pulp science fiction magazines and gotten published in what were called the “slicks’, so-called because the paper they were printed on was slick and higher quality than the pulps. His stories began to be published in places like <em>The Saturday Evening Post</em>, <em>Argosy Magazine</em>, and <em>Town &amp; Country</em>. And these outlets paid higher rates than the pulps, a significant matter for any writer. Heinlein always maintained that the only reason anyone would write was to make money.</p>

<p>And the stories were getting to be quite good as well. <em>Delilah and the Space Rigger (1949)</em> tells the story of a woman who joins a construction crew on a space station and faces discrimination, but wins out in the end, which was pretty progressive for the time, but not atypical for Heinlein. <em>Space Jockey</em> is a fairly pedestrian story about a rocket pilot dealing with his every day life. But <em>The Long Watch</em> is an important story to Heinlein’s view of the important things in life. A young officer is assigned to duty on the lunar base, where there are nuclear weapons stored. His superiors want to stage a coup, using those weapons, which can threaten the Earth while being beyond the reach of retaliation. The young officer sacrifices himself to prevent their plot from succeeding, and becomes recognized in a death as a great hero. And this becomes part of the background to a later juvenile novel <em>Space Cadet</em>, as well as being referenced occasionally in other stories, so you can see that he regarded it as an important statement. <em>Gentlemen, Be Seated</em> is a cute little story about a man who saves people when a leak happens in a tunnel on the Moon by plugging the leak with his rear end. <em>The Black Pits of Luna</em> is little thing about a boy scout who is able to rescue his little brother, but it foreshadows the Juvenile novels he later wrote.</p>

<p><em>It’s Great To Be Back!</em> is about a couple who have moved to the Moon, but continually find fault with the living arrangements. They finally decide to go back to Earth, but discover that it was not really the place they had remembered, and they then return to the Moon, which they now realize is home. <em>-We Also Walk Dogs</em> is a gem of a story concerning a company called General Services that basically does things for their clients. Their advertising slogan is “Want somebody murdered? Then DON’T call General Services. But for <em>anything else</em>, call…. It Pays!” They deal a few different problems in this story, but the main one is the development of anti-gravity, and it features a Chinese porcelain bowl. <em>Ordeal in Space</em> is about a spaceman who has an accident that gives him a fear of heights and washed him out of space. But he has to face his fear when he needs to rescue a kitten from the 35th floor. One thing about Heinlein is that he was a firm and devoted cat fancier, so it no accident that a kitten is the one that has to be rescued. And the final story, <em>Logic of Empire</em>, he discusses the development of slavery in the Venus colony as a natural consequence of machinery being expensive and humans being cheap. And in this story there is a background reference to Nehemiah Scudder, who will soon be important in the Future History.</p>

<p>One of the things that is worthy of a brief discussion at this point is exemplified by the story <em>Logic of Empir</em>e, and that is the reference to the Venus colony. We now know that Venus can best be described as hellish, with crushing air pressure and temperatures high enough to melt metals. The best designed landers can last no more than minutes before being destroyed. But this was not known when Heinlein was writing these early stories. The prevailing view at that time was that Venus was shrouded in clouds because it was very wet and swampy, so that is what Heinlein went with. Similarly his Mars had canals and was inhabited. You just have to go with it in these stories, as you have to do with so much of Golden Age science Fiction, let alone pre-Golden Age.</p>



<h3>Links:</h3>
<ul>
<li><a href="https://www.facebook.com/HeinleinSociety/posts/i-never-created-or-invented-a-future-history-on-april-fools-day-1939-i-started-t/1092968002874634/">https://www.facebook.com/HeinleinSociety/posts/i-never-created-or-invented-a-future-history-on-april-fools-day-1939-i-started-t/1092968002874634/</a></li>
<li><a href="https://www.amazon.com/Man-Who-Sold-Moon/dp/0671578634">https://www.amazon.com/Man-Who-Sold-Moon/dp/0671578634</a></li>
<li><a href="https://www.amazon.com/Green-Hills-Earth-Robert-Heinlein/dp/0671578537">https://www.amazon.com/Green-Hills-Earth-Robert-Heinlein/dp/0671578537</a></li>
<li><a href="https://www.amazon.com/dp/B0011GBTKM/">https://www.amazon.com/dp/B0011GBTKM/</a></li>
<li><a href="https://www.kirkusreviews.com/news-and-features/articles/asimov-de-camp-and-heinlein-naval-aviation-experim/">https://www.kirkusreviews.com/news-and-features/articles/asimov-de-camp-and-heinlein-naval-aviation-experim/</a></li>
<li><a href="https://www.palain.com/science-fiction/the-golden-age/robert-a-heinlein/the-future-history-part-1/">https://www.palain.com/science-fiction/the-golden-age/robert-a-heinlein/the-future-history-part-1/</a></li>
</ul>



<p><a href="https://hackerpublicradio.org/eps/hpr4660/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4659: Command Line Fun - Recording a show]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.


In this episode Kevie does a step-by-step approach to record an episode of HPR using the FFMPEG tool on the Linux command line.






Before beginning please ensure that FFMPEG is installed, it is available in the vast majority of Linux reposi...]]></description>
<link>https://tsecurity.de/de/3589227/it+sicherheit/it+podcasts/hpr4659+command+line+fun+-+recording+a+show/</link>
<pubDate>Thu, 11 Jun 2026 02:02:07 +0200</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>

<p>
In this episode Kevie does a step-by-step approach to record an episode of HPR using the FFMPEG tool on the Linux command line.</p>

<p>

</p>

<p>
Before beginning please ensure that FFMPEG is installed, it is available in the vast majority of Linux repositories.</p>

<p>

</p>

<p>
Start by making a new folder to keep all your files in and move into the new folder (these will be numerous by the end of your recording):</p>

<pre data-language="plain">
mkdir Podcast
cd Podcast
</pre>

<p>
To start recording audio use the command:</p>

<pre data-language="plain">
ffmpeg -f pulse -i default file01.flac
</pre>

<p>
and finish the recording by pressing ctrl+c. I would recommend recording a test piece of audio to ensure that you are recording from your desired microphone and that the levels are to your liking. </p>

<p>

</p>

<p>
To listen to the audio file we use ffplay:</p>

<pre data-language="plain">
ffplay file01.flac
</pre>

<p>

</p>

<p>
Once all of the files have been recorded, to reduce the need for editing I would recommend recording several short segments, we need to put these together using:</p>

<pre data-language="plain">
ffmpeg -i file01.flac -i file02.flac -i file03.flac -i file04.flac -i file05.flac -filter_complex "[0:a][1:a][2:a][3:a][4:a]concat=n=5:v=0:a=1" filedone.flac 
</pre>

<p>
Not that the number of sets squared brackets [] should be the same as the number of files (these start at zero) and the number after n= should be the actual number of files you wish to combine.</p>

<p>

</p>

<p>
To remove any extended periods of silence then we can use:</p>

<pre data-language="plain">
ffmpeg -i filedone.flac -af silenceremove=stop_periods=-1:stop_duration=1:stop_threshold=-45dB filefinished.flac
</pre>

<p>
Please note that this is a bit flaky at the time of recording (my results have been mixed) and it will re-encode the audio file so never do this with a lossy file such as ogg or mp3 as this will reduce the quality, keep this for lossless versions such as flac or wav files.</p>

<p>

</p>

<p>
If you want to spend a bit more time editing the files and getting a better final audio file then the most effective way (but not quick) is to trim the audio from the end and beginning. Listen to the audio files and note the times of any periods of silence. As these normally are at the beginning and end, especially when we are recording in short segments then I will limit the instructions to avoid these becoming silly in length.</p>

<p>

</p>

<p>
Firstly clip off the end silences first, if you start with the beginning then it will change the starting position of the end silences. To remove audio from the end of a track use:</p>

<pre data-language="plain">
ffmpeg -i file01.flac -vn -acodec copy -to 00:01:30 file01cut.flac
</pre>

<p>
In this example anything after 1 minute and 30 seconds will be removed. The edited audio file will then be saved as file01cut.flac. This method does not re-encode the audio so there is no loss of quality.</p>

<p>

</p>

<p>
To remove audio from the start of a track use:</p>

<pre data-language="plain">
ffmpeg -ss 30 -i file01.flac -c copy file01cut.flac
</pre>

<p>
In the above example the first 30 seconds of the file will be removed and saved as file01cut.flac</p>

<p>

</p>

<p>
Once you have edited each audio file then they will need to be merged together again to make a complete show.</p>

<p>

</p>


<p><a href="https://hackerpublicradio.org/eps/hpr4659/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4658: Audio Revisited]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.


01 Introduction






This is a follow up to my 4 part series on simple podcasting. 


In this episode I will discuss a number of experiments with audio filtering.


These experiments were inspired by comments by listeners and by other discu...]]></description>
<link>https://tsecurity.de/de/3586209/it+sicherheit/it+podcasts/hpr4658+audio+revisited/</link>
<pubDate>Wed, 10 Jun 2026 02:03:15 +0200</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>

<p>
01 Introduction</p>

<p>

</p>

<p>
This is a follow up to my 4 part series on simple podcasting. </p>

<p>
In this episode I will discuss a number of experiments with audio filtering.</p>

<p>
These experiments were inspired by comments by listeners and by other discussions about audio on HPR.</p>

<p>
I am not an audio expert, so I am doing this partly in order to learn something, but mainly in order to have a bit of fun.</p>

<p>
I hope that you find this entertaining as well. </p>

<p>

</p>

<p>
In a comment on the first episode a listener mentioned something called Solocast and said that the method bore a resemblance to the method that I was using.</p>

<p>

</p>

<p>
Here is his comment</p>

<p>

</p>

<p>
--------------------</p>

<p>
02</p>

<p>
Comment #3 posted on 2026-04-03 07:49:58 by Reto</p>

<p>
It reminds me about Solocast</p>

<p>

</p>

<p>
Hi Whiskeyjack,</p>

<p>
I really liked your podcast and the topic. I cannot remember about your last, but the sound quality of this one was good on my mobile speakers :)</p>

<p>

</p>

<p>
The concept reminded me about the program from Norrist (another host on HPR), while similar does it have some differences HPR 3496 https://hackerpublicradio.org/eps.php?id=3496</p>

<p>

</p>

<p>
As I am not on the future feed, I look forward to your next episode.</p>

<p>

</p>

<p>
Cheers, Reto</p>

<p>

</p>

<p>
--------------------</p>

<p>
03</p>

<p>
End of comment.</p>

<p>

</p>

<p>
I did not recall having heard the episode on Solocast, but this sounded very interesting. Solocast was in HPR episode 3496 and was released by norrist on the 27th of December 2021.</p>

<p>

</p>

<p>
I listened to that episode and does indeed use use the same basic concept of recording short segments of audio and combining them later instead of creating one big recording and editing it with an audio editor.</p>

<p>
04</p>

<p>
The main difference is that the work flow that I described involves a lot of manual steps, while Solocast is a short Python program that automates the entire process of presenting your script, recording the segments, combining the segments, and filtering and normalizing the result. </p>

<p>

</p>

<p>
I won't try to describe Solocast in detail, instead I would recommend just listening to HPR episode 3496 to get norrist's explanation directly.</p>

<p>

</p>

<p>
--------------------</p>

<p>
05</p>

<p>
While I wanted to make sure that I credited norrist with having come up with this concept four years before I did, this won't be the focus of this episode.</p>

<p>

</p>

<p>
Instead I will talk about audio filtering and various experiments that I ran on several different methods. </p>

<p>
06</p>

<p>
While looking at the source code for Solocast I noticed that it used a filtering method that resembled one used by Jivetalk, a podcast production program that caught the attention of one of the HPR community news presenters.</p>

<p>

</p>

<p>
This method involves taking a sample of quiet audio where there is no speaking taking place, and then using this as input to a noise reduction filter which is applied to the voice recording. </p>

<p>
The filter subtracts the quiet sample from the voice audio, which should theoretically remove the ambient noise.</p>

<p>
07</p>

<p>
I decided to apply this method to a number of different audio test recordings which were recorded under different circumstances using different hardware.</p>

<p>
In this way I could see if the method worked equally well under all circumstances or if there were some sorts of noise which it was suited to and some sorts that were not.</p>

<p>
08</p>

<p>
While I was at it, I also picked several other filter methods to see how they worked as well. </p>

<p>
Potentially, some methods may be better under some conditions while other methods were better suited to others.</p>

<p>

</p>

<p>
--------------------</p>

<p>
09</p>

<p>
I won't present all of my experiments, as that would be a bit dull to listen to. </p>

<p>
Instead I will describe each method and then present audio samples which illustrate my conclusions.</p>

<p>

</p>

<p>
There are two pieces of audio software involved, both of which were also used in my series on simple podcasting.</p>

<p>

</p>

<p>
10</p>

<p>
The first is Sox, spelled s o x , and which is short for Sound Exchange.</p>

<p>
Sox is a command line program for audio manipulation.</p>

<p>
Sox is Free Software, released under the GPLv2 or later.</p>

<p>

</p>

<p>
The other is FFMPEG, which is also a command line program.</p>

<p>
FFMPEG is also Free Software, released under the LGPL V 2.1 or later, and GPL v 2 or later.</p>

<p>

</p>

<p>
Sox actually uses FFMPEG for certain operations.</p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>
11 Audio Hardware</p>

<p>

</p>

<p>
For recording hardware I used the following.</p>

<p>

</p>

<p>
12 Maxwell Headset</p>

<p>
The first is a cheap Maxwell headset that has an electrical noise problem. Unfortunately I don't have a model number for this headset.</p>

<p>

</p>

<p>
I described this hardware, the noise problems that I had with it, and how I created filters to deal with the noise in my series on simple podcasting.</p>

<p>
Briefly though, this is a headset that has a build in microphone on a boom which allows the microphone to be positioned close to the mouth.</p>

<p>
It connects with a USB cable.</p>

<p>

</p>

<p>
13 Borne Earpiece and In-line Microphone</p>

<p>
This is a set of earplugs that go in your ears and connected by wires and a very small microphone built into a small bulge in the cable. It connects using a 3.5mm jack.</p>

<p>
The model number seems to be BUD250-BL.</p>

<p>

</p>

<p>
14 XTrike Headset</p>

<p>
This is a gaming headset similar to the Maxwell headset described above.</p>

<p>
The model number is GH-510</p>

<p>
It uses a USB connection.</p>

<p>

</p>

<p>
15 Yanmai Condenser Microphone</p>

<p>
This is a microphone that comes with a small tripod stand. </p>

<p>
The model number is SF-910</p>

<p>
It uses a 3.5mm audio jack.</p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>
16</p>

<p>
This is not a review of the hardware. </p>

<p>
Rather, I was trying to create audio problems so that I could test ways to fix them.</p>

<p>
Therefore, do not take the above list as a recommendation of what to buy.</p>

<p>
However, you can see that I am not using any expensive audio hardware.</p>

<p>
If you want to make an HPR podcast, you do not need professional level hardware.</p>

<p>

</p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>
17 Audio Samples</p>

<p>

</p>

<p>
The audio samples are as follows</p>

<p>

</p>

<p>
18 Quiet</p>

<p>
This was recorded in a quiet environment at my desk. </p>

<p>
This is my normal podcasting environment and represents optimal conditions. </p>

<p>
The main reason for this method is to see how the various filter methods perform when dealing with the electrical noise from the Maxwell headset.</p>

<p>

</p>

<p>
19 Small fan</p>

<p>
This is a small USB powered table fan approximately 10 cm in diameter. </p>

<p>
It was located roughly 40 cm or less to the left of the microphone, although this varies depending on the microphone. </p>

<p>

</p>

<p>
20 Traffic</p>

<p>
This was along a busy street with traffic noise in the background.</p>

<p>

</p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>
21 Filter Methods</p>

<p>

</p>

<p>
Sox noisered Filter with Audio Profile</p>

<p>

</p>

<p>
This method uses the Sox noisered filter. Here is a brief quote from the Sox documentation on this filter.</p>

<p>

</p>

<p>
Quote</p>

<p>

</p>

<p>
Reduce noise in the audio signal by profiling and filtering. This effect is moderately effective at removing consistent background noise such as hiss or hum. To use it, first run SoX with the noiseprof effect on a section of audio that ideally would contain silence but in fact contains noise - such sections are typically found at the beginning or the end of a recording. </p>

<p>

</p>

<p>
End of quote</p>

<p>

</p>

<p>
For these tests I recorded a separate noise profile to go with each test.</p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>
22 Basic Manual Filter</p>

<p>
This is a basic high and low pass filter pair based on the work I had done in my previous series on simple podcasting.</p>

<p>
However, based on the tests that I have done for this episode, I decided to get a bit more aggressive in terms of filtering.</p>

<p>
I use a high pass filter of 120 Hz, and low pass filter of 8 kHz.</p>

<p>
The each filter is then applied twice to increase its effect.</p>

<p>
I also added band reject filters to deal specifically with 50 and 60 Hz line noise.</p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>
23 Complex Manual Filter</p>

<p>
This uses the manually constructed filter described in my series on simple podcasting.</p>

<p>
This uses the basic manual filter plus a series of custom bandreject filters to fix specific noise problems with the Maxwell headset.</p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>
24 FFMPEG afftdn Filter</p>

<p>
The documentation describes this as </p>

<p>
"Denoise audio samples with FFT."</p>

<p>

</p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>
25 FFMPEG arnndn Filter</p>

<p>
The documentation describes this as </p>

<p>
"Reduce noise from speech using Recurrent Neural Networks."</p>

<p>

</p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>
26 FFMPEG agate Filter</p>

<p>
I will pronounce this as "agate" for convenience.</p>

<p>
The documentation describes this as</p>

<p>
"A gate is mainly used to reduce lower parts of a signal. </p>

<p>
This kind of signal processing reduces disturbing noise between useful signals."</p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>
27 Method</p>

<p>

</p>

<p>
The experimental method used was to take each noise sample and apply the different filter methods to it.</p>

<p>
Where there are parameters which can be adjusted, a script was used to generate a series of different sample files with different parameter values.</p>

<p>
Not all possible parameters were experimented with, as the goal is to see which method produces what sorts of results under different circumstances, not to get the best possible result for the samples that I happen to have.</p>

<p>

</p>

<p>
The method in each case was as follows</p>

<p>

</p>

<p>
28 Step 1</p>

<p>
Convert the audio file to FLAC if it is not already in that format. </p>

<p>

</p>

<p>
29 Step 2</p>

<p>
Apply a basic high and low pass filter described previously to each sample. </p>

<p>

</p>

<p>
The reason for this basic filtering is that it eliminates at least some undesired noise in a fairly fool proof manner, leaving less for the more advanced filter to deal with. </p>

<p>
This should allow for a better test of the filter under realistic conditions.</p>

<p>

</p>

<p>
30 Step 3</p>

<p>
Apply the noise reduction filter being tested.</p>

<p>

</p>

<p>
31 Step 4</p>

<p>
Normalize the filtered sample to 17 LUFS according to the EBU R128 standard.</p>

<p>
The EBU standard is described in my series on simple podcasting.</p>

<p>
Normalizing adjusts the audio signal to a desired loudness level.</p>

<p>
This allows for more more consistent sound levels and allows us to hear the results under realistic conditions.</p>

<p>
I normalize the audio individually for each sample as different recording hardware requires different amounts of loudness adjustment.</p>

<p>
This is different from the typical podcast process where normalizing takes place as the very last step in the process, but it was necessary in this case.</p>

<p>

</p>

<p>
32 Step 5</p>

<p>
Concatenate selected sample audio files to one another to allow for better review and comparing.</p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>
33 Results</p>

<p>

</p>

<p>
The results are grouped according to the type of noise which is being mitigated. This allows for easier comparison of the effectiveness of each technique under different circumstances.</p>

<p>

</p>

<p>
I have only picked a few examples of interest out of the numerous experiments that I conducted.</p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>

</p>

<p>
34 Quiet Recording Environment with Maxwell Headset</p>

<p>

</p>

<p>
This compares how well the various filtering methods work on the noise induced by the electronics in the Maxwell headset.</p>

<p>
This electronic noise consisted of a noise spike every 1 kHz.</p>

<p>
This should be representative of electronic noise caused by problems in recording hardware.</p>

<p>

</p>

<p>
35 Manual Filter</p>

<p>

</p>

<p>
The manual filter applied a narrow band reject filter every 1 kHz from 1 kHz to 12 kHz.</p>

<p>
This completely removed the otherwise audible whine caused by the noise.</p>

<p>

</p>

<p>

</p>

<p>
36 FFMPEG afftdn</p>

<p>

</p>

<p>
This method allows for setting a noise floor and then specifying how much the noise floor should be reduced by. </p>

<p>
The method is very sensitive to getting the noise floor correct for that recording. Set the floor too low and nothing happens. Set it too high, and some distortion results.</p>

<p>

</p>

<p>
However it seemed to be moderately effective, but it would seem to require checking it and possibly adjusting it each time it is used.</p>

<p>

</p>

<p>

</p>

<p>
37 FFMPEG agate</p>

<p>

</p>

<p>
This method allows setting a noise floor and then suppressing all sound which falls below that level.</p>

<p>
This method is very sensitive to getting the noise floor correct for that recording.</p>

<p>
If set too low (or quiet), it is ineffective.</p>

<p>
If set too high (or loud), it distorts words which come after a pause, which would typically be between sentences.</p>

<p>

</p>

<p>
38</p>

<p>
When set correctly, it completely removes noise in the silences between sentences.</p>

<p>
However, the noise is still audible during speech.</p>

<p>
This is because the noise in this case is a higher frequency than normal speech, and so stands out more.</p>

<p>
It may not be a significant problem for noise which is closer to the main vocal frequency band.</p>

<p>

</p>

<p>
Overall, this method is not suitable for this particular problem.</p>

<p>

</p>

<p>

</p>

<p>
39 FFMPEG arnndn</p>

<p>

</p>

<p>
This method used the standard model.</p>

<p>
A variety of different noise reduction models are available.</p>

<p>
I only tested it with one, std.rnnn</p>

<p>

</p>

<p>
It does not seem to introduce much distortion in the voice signal even with a high amount of mix parameter.</p>

<p>

</p>

<p>
40</p>

<p>
However, it is only slightly effective at removing the whine from the signal, even with a high amount of mix parameter.</p>

<p>

</p>

<p>
Overall, this method does not appear to be useful for this sort of noise problem.</p>

<p>

</p>

<p>

</p>

<p>
41 Sox noisered Filter</p>

<p>
This was effective in removing noise between words, but noise can be heard while words are being spoken. It was better than agate however.</p>

<p>

</p>

<p>

</p>

<p>
42 Overall Conclusion for the Maxwell Headset Noise</p>

<p>

</p>

<p>
When dealing with narrow noise bands that occur at known frequencies, the manual filter is leagues ahead of any of the other tested alternatives. </p>

<p>

</p>

<p>
43 Sample Audio</p>

<p>
Here is  a sample audio recording showing the best overall results</p>

<p>
The sample is repeated, first with only basic low and high pass filtering, and then with the manually constructed filtering. </p>

<p>
In the first sample you should hear a high pitched background whine.</p>

<p>
In the second sample, the high pitched whine is completely removed.</p>

<p>

</p>

<p>
44 (Audio sample inserted here.)</p>

<p>

</p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>
45 Traffic Noise</p>

<p>

</p>

<p>
This was recorded using the Borne in-line microphone connected to a mobile phone while walking along beside a busy street.</p>

<p>
This was in dry cool spring weather, and the road was paved with asphalt.</p>

<p>
This should be reasonably representative of podcasting while walking outdoors in a noisy environment.</p>

<p>

</p>

<p>

</p>

<p>
46 Basic Manual Filter</p>

<p>
This used the basic manual filter with high and low pass filters. This did nothing very useful in this case as the signal was already filtered within those limits by the recording hardware anyway. The low sample rate of 8 kHz in the phone limited the upper frequency to 4 kHz. Recall that the sample rate has to be twice the highest frequency that you want to detect. </p>

<p>

</p>

<p>
Overall, this is not suitable for this sort of problem.</p>

<p>

</p>

<p>

</p>

<p>
47 FFMPEG afftdn</p>

<p>

</p>

<p>
With a high noise floor, background noise is reduced, but not eliminated. There was not much distortion in the voice.</p>

<p>

</p>

<p>
This is only slightly useful for this sort of problem. </p>

<p>

</p>

<p>

</p>

<p>
48 FFMPEG agate</p>

<p>

</p>

<p>
With a high threshhold, background noise is reduced, but not eliminated. There was some distortion in the voice. </p>

<p>
The background noise could also be heard when speaking, but because the frequency of the background signal was similar to the louder voice signal, it was not as noticeable as it would have been if the two were very different. </p>

<p>

</p>

<p>
This is moderately useful for this sort of problem. It may be more useful in situations where the background noise was not quite as loud.</p>

<p>

</p>

<p>

</p>

<p>
49 FFMPEG arnndn</p>

<p>

</p>

<p>
With high amounts of noise reduction, much of the background noise is suppressed, but there is not a lot of distortion in the voice. </p>

<p>
The  background traffic noise is still present, but is significantly less. </p>

<p>

</p>

<p>
This offers only a moderate improvement.</p>

<p>

</p>

<p>

</p>

<p>
50 Sox noisered Filter</p>

<p>
With small amounts of noise reduction voice is clear but traffic noise is present as a very significant continuous warbling sound in the background. </p>

<p>
This is no improvement on the original and in fact could be seen as making it worse.</p>

<p>
With moderate amounts of noise reduction, traffic noise is mostly gone, but there are still various squeaks present. Voice is noticeably distorted.</p>

<p>
With large amounts of noise reduction, traffic noise is gone but voice is highly distorted.</p>

<p>

</p>

<p>
This is moderately useful for this sort of problem, but requires careful adjustment. </p>

<p>

</p>

<p>

</p>

<p>
51 FFMPEG arnndn Followed by FFMPEG agate</p>

<p>
This combined two different filters.</p>

<p>
First, it used arnndn to suppress the background noise to a lower level without much voice distortion.</p>

<p>
Then it applied the agate filter to suppress the noise levels between words still further.</p>

<p>
This used the same amount of mix and threshold as was found to be most effective when each of these filters was used on its own.</p>

<p>
The background noise is almost completely gone while distortion of the voice signal is low.</p>

<p>

</p>

<p>

</p>

<p>
52 Overall Conclusion for Traffic Noise</p>

<p>
The arnndn combined with agate filters was the most successful at suppressing background noise while limiting the amount of voice signal distortion. </p>

<p>

</p>

<p>
53 Sample Audio</p>

<p>
Here is an audio sample for what I felt to be the best overall results, the arnndn filter combined with the agate filter.</p>

<p>
First is the original audio with basic filtering.</p>

<p>
This is followed with the same audio after being passed through the arnndn and agate filters.</p>

<p>

</p>

<p>
54 (Insert arnndn plus agate audio sample here)</p>

<p>

</p>

<p>
55 Another Sample</p>

<p>
Here is a second audio sample showing the Sox noisered profile based filter.</p>

<p>
I have included this to show how a profile based filter can make things worse if you are not careful how you use it. </p>

<p>
This repeats the test audio 4 times.</p>

<p>
The first is with basic filtering only.</p>

<p>
The second uses low amounts of noise reduction.</p>

<p>
The third uses moderate amounts of noise reduction.</p>

<p>
The fourth uses high amounts of noise reduction.</p>

<p>

</p>

<p>
56 (Insert noisered audio sample here)</p>

<p>

</p>

<p>

</p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>
57 Small Fan Noise with Yanmai Microphone</p>

<p>

</p>

<p>
This was recorded using the Yanmai condenser microphone.</p>

<p>
A small fan was set up behind and to the left of the microphone.</p>

<p>
This is intended to represent situations where someone may have a fan or air conditioner running in the background due to hot weather, or has a loud computer fan.</p>

<p>

</p>

<p>
58</p>

<p>
A condenser microphone was used for this test as they are more prone to picking up unwanted noise.</p>

<p>
However, for practical recording purposes, this sort of microphone is unsuitable for this type of environment.</p>

<p>

</p>

<p>
59 Basic Manual Filter</p>

<p>
This used the basic manual filter with high and low pass filters. </p>

<p>
This did nothing useful as the fan noise was in the same frequency range as the voice signal.</p>

<p>
This may be of more help in cases where the noise is below the 120 Hz cut off used in the low pass filter.</p>

<p>

</p>

<p>

</p>

<p>
60 FFMPEG afftdn</p>

<p>
With high amounts of noise reduction, much of the background noise is suppressed, but there is  some distortion in the voice. </p>

<p>
The  background fan noise is still present, but is significantly less. </p>

<p>
Overall this is moderately effective.</p>

<p>

</p>

<p>
61 FFMPEG agate</p>

<p>
This was effective in removing noise between words, but noise can be heard while words are being spoken.</p>

<p>
However, this was a small voice sample and it is possible that more problems could occur.</p>

<p>
With less fan noise than was in this sample this technique may work much better.</p>

<p>

</p>

<p>

</p>

<p>
62 FFMPEG arnndn</p>

<p>
With high amounts of noise reduction, much of the background noise is suppressed, but there is not a lot of distortion in the voice. </p>

<p>
The  background fan noise is still present, but is significantly less. </p>

<p>
Overall this was fairly effective.</p>

<p>

</p>

<p>
63 Sox noisered Filter</p>

<p>
With small amounts of noise reduction voice is clear but fan noise is present as a slight warbling sound in the background.</p>

<p>
With moderate amounts of noise reduction, fan noise is gone, but voice is somewhat distorted.</p>

<p>
With large amounts of noise reduction, fan noise is gone but voice is very distorted.</p>

<p>

</p>

<p>
64</p>

<p>
In general this method is fairly successful at dealing with this sort of problem. </p>

<p>
However, there is a trade off between background noise and voice quality. </p>

<p>
Getting that trade off correct takes experiment and judgment for each specific situation. </p>

<p>

</p>

<p>
65 FFMPEG arnndn Followed by FFMPEG agate</p>

<p>
This combined two different filters.</p>

<p>
First, it used arnndn to suppress the background noise to a lower level without much voice distortion.</p>

<p>
Then it applied the agate filter to suppress the noise levels between words still further.</p>

<p>
This got rid of virtually all of the background noise between words.</p>

<p>
If you listen carefully however, there is a slight buzzing  sound in the voice signal.</p>

<p>

</p>

<p>
66 Overall Conclusion for Fan Noise with Yanmai Microphone.</p>

<p>
Of the methods tested, the arnndn followed by agate filter seemed to offer the most improvement for the least effort and least voice distortion.</p>

<p>
The arnndn filter on its own seemed the next most preferable to me despite leaving some fan noise in the background.</p>

<p>

</p>

<p>
67 Audio Sample</p>

<p>
Here is an audio sample for what I felt to be the best overall results, the arnndn filter combined with the agate filter.</p>

<p>
First is the original audio with basic filtering.</p>

<p>
This is followed with the same audio after being passed through the arnndn and agate filters.</p>

<p>

</p>

<p>

</p>

<p>

</p>

<p>
68 (Insert audio sample here)</p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>
69 Small Fan Noise Recorded with Headset</p>

<p>

</p>

<p>
The following is an observation rather than a filtering technique.</p>

<p>
When a recording was made using the Maxwell headset and listened to on the headset later or with speakers,  the fan was virtually inaudible.</p>

<p>
When the same recording was listened to with the XTrike headset, it was barely audible with careful listening and only identifiable as a fan because I knew it was there.</p>

<p>

</p>

<p>
70</p>

<p>
In situations where there is ambient noise, the best noise reduction technique is probably to move the microphone as close to your mouth as possible, although not directly in front of it, and reduce the gain if there is a gain adjustment in the microphone.</p>

<p>
This will work far better than trying to remove the noise later.</p>

<p>
If you are recording an HPR episode at a desk, then an inexpensive headset with boom mike may do the job just fine with minimal effort and expense.</p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>
71 Conclusions</p>

<p>

</p>

<p>
I have tested three noise scenarios - </p>

<p>

</p>

<p>
Electronic noise in the audio hardware at specific frequencies.</p>

<p>

</p>

<p>
Recording outdoors with an inline microphone in a noisy traffic environment.</p>

<p>

</p>

<p>
A noisy fan creating background noise in an office.</p>

<p>

</p>

<p>
My conclusions on these are  as follows.</p>

<p>

</p>

<p>
72 Electronic Noise in the Audio Hardware at Specific Frequencies</p>

<p>
If you can use Audacity or some other means to find the frequencies which are causing the noise, the best solution, assuming you don't just replace the hardware, is to manually construct filters to remove those specific frequencies.</p>

<p>
This is the safest solution in terms of only doing what you tell it to and not producing unexpected surprises some time down the road when something changed in the environment.</p>

<p>

</p>

<p>
73</p>

<p>
If you are looking for a fairly automatic filtering method, the Sox noisered profile based filter seems to work fairly well.</p>

<p>
There is an equivalent filter in ffmpeg, but I did not include that in my experiments as it is harder to use in a script  because it does not use a separate noise profile file.</p>

<p>

</p>

<p>

</p>

<p>
74 Recording Outdoors with an Inline Microphone in a Noisy Traffic Environment.</p>

<p>

</p>

<p>
In this situation, the FFMPEG arnndn combined with agate filters seem to be the most successful.</p>

<p>

</p>

<p>
The Sox noisered filter may work, but at the cost of more distortion in the voice than is seen in the other methods.</p>

<p>

</p>

<p>
75</p>

<p>
An inherent problem with any profile based noise reduction method is that if the background noise is not constant, which it seldom is in that sort of environment, the profile may not represent the background noise which is present later on in the recording. </p>

<p>
This risks adding more distortion in the voice as the profile and later environments diverge.</p>

<p>

</p>

<p>
76</p>

<p>
However, for this application a different microphone that provided a better recording would appear to be advisable.</p>

<p>
A solution which brought the microphone much closer to the mouth and so resulted in a better ratio of voice signal compared to background noise would appear to be necessary, after which the question of what sort of noise reduction to use would need to be re-evaluated.</p>

<p>

</p>

<p>

</p>

<p>
77 A Noisy Fan Creating Background Noise in an Office.</p>

<p>

</p>

<p>
The Sox noisered filter and the FFMPEG arnndn, afftdn, and agate methods all work to some degree.</p>

<p>
However, they all need correct selection of parameters to achieve the proper results.</p>

<p>

</p>

<p>
When I compared all four methods side by side, I found the arnndn combined with the agate filter to be preferable in terms of the trade off between background noise reduction and distortion of the voice signal.</p>

<p>
The arnndn filter on its own seemed the next most preferable to me despite leaving some fan noise in the background.</p>

<p>

</p>

<p>
78</p>

<p>
However, that is a subjective judgment of a specific noise sample when recorded using a specific microphone.</p>

<p>
Keep in mind though that many listeners will not be listening in an idea environment.</p>

<p>
They may be doing things where background noise is present rather than in a very quiet room and so may find a small amount of background noise in the recording to be less of a problem than distortion in the voice signal which may make some words harder to understand. </p>

<p>

</p>

<p>
79</p>

<p>
When I conducted the same experiment recorded with the XTrike headset I found that arnndn seemed to offer no noticeable improvement.</p>

<p>
This may be because the amount of audible fan noise was far less with the XTrike headset to begin with.</p>

<p>
In other words, there is no single best solution here, and you may have to be prepared to try different options to see which one works in your situation.</p>

<p>
The important thing is to avoid making things worse by applying filtering that is not appropriate for that situation. </p>

<p>

</p>

<p>
The best method may be to use a recording method that doesn't pick up the fan noise to begin with.</p>

<p>
This can include just using a gaming headset with boom mic.</p>

<p>

</p>

<p>
80</p>

<p>
I have one final observation on this point regarding headsets.</p>

<p>
The Maxwell headset has a foam cover over the microphone while the XTrike headset does not.</p>

<p>
There was some slight audible wind buffeting noise picked up by the XTrike headset that was not observed with the Maxwell.</p>

<p>
This seemed to cause particular problems with the Sox noisered profile based filter, as this noise was irregular and after filtering would show up as a warbling sound. </p>

<p>
If you use a headset and plan to use it in conjunction with a fan, it may be advisable to apply some sort of wind cover over it.</p>

<p>

</p>

<p>

</p>

<p>
81 Combining Complex Filters</p>

<p>
In several cases I found that combining several complex filters offered better results than  using any single one on its own.</p>

<p>

</p>

<p>
The basic strategy though is to first use a method which is good at reducing undesirable noise without introducing excessive voice distortion.</p>

<p>
Then apply a different filter which is good at reducing small levels of background noise to an even lower level while affecting the voice signal as little as possible.</p>

<p>
This uses the relative strengths of different filter types  to compensate for the weaknesses of the other.</p>

<p>

</p>

<p>
82</p>

<p>
Different combinations of filters were most effective for different types of problems. </p>

<p>
I did not try all possible combinations however.</p>

<p>
Perhaps a further exploration of this would be worth doing in a later podcast.</p>

<p>

</p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>
83 Case Study - Noise in Another HPR Episode Audio</p>

<p>

</p>

<p>
In the comments to my second episode on Simple Podcasting (which is HPR4618) where I discussed basic filtering, a couple of listeners brought up an interesting point.</p>

<p>

</p>

<p>
Antoine mentioned "declicking" in a post. </p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>
Vance replied </p>

<p>
84</p>

<p>
Antoine, thanks for mentioning the click removal capability in Audacity! While I already knew about its noise removal filter, I wasn't aware it also had click removal.</p>

<p>

</p>

<p>
It might have helped me for HPR4637, where some sort of electromagnetic signal was picked up by my microphone/recorder, a Zoom H2 (the tapping sound was *not* present in the room where I recorded).</p>

<p>

</p>

<p>
While click removal does seem to distort speech when applied to it (though to my ears, it doesn't sound as weird as when noise removal is done with speech), I could have applied the filter only to the pauses, where the "tapping" is most noticeable. I will consider doing this in the event that I'm not able to eliminate the source of interference in the future, which would be the best way to go.</p>

<p>

</p>

<p>
--------------------</p>

<p>
85</p>

<p>
End of quote.</p>

<p>

</p>

<p>
I found this interesting as it sounded like another audio problem that could be experimented with.</p>

<p>

</p>

<p>
I found a sample of the episode which had the clicks and cut a copy of that segment out to experiment with.</p>

<p>
These sounds are a series of clicks, or "ticks" would be another way to describe them, in the quiet part of the audio between sentences or phrases.</p>

<p>

</p>

<p>
86</p>

<p>
Next I used Audacity to study the sound spectrum.</p>

<p>
I found a massive 60 Hz noise spike.</p>

<p>
However, my speakers won't reproduce sound that low, and filtering this out didn't reduce the clicks.</p>

<p>
The clicks turned out to be bursts of noise across the 100 to 800 Hz band, which is right where the main vocal band also is.</p>

<p>
This makes it difficult to filter based on frequency.</p>

<p>
The most promising approach would seem to be to filter based on sound level.</p>

<p>

</p>

<p>
87</p>

<p>
I tried all of the individual audio filter techniques mentioned in the other experiments above.</p>

<p>
None produced satisfactory results except for agate, which makes quiet audio quieter.</p>

<p>
This completely suppressed the clicks.</p>

<p>
However, when applied to the entire episode it also distorted the start of a few sentences which began with single short syllables.</p>

<p>

</p>

<p>
88</p>

<p>
The agate filter has a number of parameters which could be adjusted to try to deal with these cases, although I did not spend the time to do so.</p>

<p>

</p>

<p>
Another solution to this distortion problem is to simply not apply the filter to those parts of the audio which are affected.</p>

<p>
If you record the audio as a series of small individual files, it would be easy enough to filter before concatenating the files together while skipping those files which contain audio which is not suited to this method.</p>

<p>

</p>

<p>
Here are the results of the experiments.</p>

<p>

</p>

<p>
89 FFMPEG afftdn</p>

<p>
This reduces the size of of the ticks, but they are still present.</p>

<p>
However, they may be reduced to a level which is considered acceptable. </p>

<p>

</p>

<p>
90 FFMPEG agate</p>

<p>
This was very effective in removing ticks with the right parameters. </p>

<p>
However, it can introduce some voice distortion in the form of cutting out the start of a few sentences which began with single short syllables.</p>

<p>
This can be corrected with a very short "attack" parameter to turn off the filter when it detects sound above a set threshhold. </p>

<p>

</p>

<p>
91 FFMPEG arnndn</p>

<p>
This was relatively ineffective.</p>

<p>

</p>

<p>
92 Sox noisered</p>

<p>
This was effective in removing the sounds between phrases. </p>

<p>
However, it introduces some distortion in the voice signal.</p>

<p>

</p>

<p>
93</p>

<p>
I also tried combining filters.</p>

<p>

</p>

<p>
FFMPEG afftdn Followed by agate</p>

<p>
This combined two different filters.</p>

<p>
First, it used afftdn to suppress the background noise to a lower level without much voice distortion.</p>

<p>
Then it applied the agate filter to suppress the noise levels between words still further.</p>

<p>
This got rid of virtually all of the background noise between words.</p>

<p>

</p>

<p>
94</p>

<p>
Here is a short audio sample from HPR4637. </p>

<p>
First is the unfiltered audio. </p>

<p>
Second is the filtered audio using the combined afftdn plus agate filters.</p>

<p>
Since the "clicks" are very quiet, you may not hear them unless you are in quiet environment.</p>

<p>
Quite a few listeners would probably not be aware of the perceived audio problem in this episode if it had not been discussed here.</p>

<p>
None the less, it makes for an interesting experiment.</p>

<p>
Here it is:</p>

<p>

</p>

<p>
95 (Insert sample audio here)</p>

<p>

</p>

<p>

</p>

<p>
96 Overall Conclusion for Noise "Ticks"</p>

<p>
The afftdn combined with agate filters seemed to offer the best overall results when used with the right parameters.</p>

<p>
However, the author, Vance, speaks very clearly and evenly, and so his voice is ideally suited for use with this filter.</p>

<p>
Another author's voice may not be as suited to this filter.</p>

<p>

</p>

<p>
97</p>

<p>
The Sox noisered profile based filter offers various degrees of trade off between suppressing noise and distorting the voice signal.</p>

<p>
As to whether this is an acceptable trade off depends on the particular voice in question and how easily understood it is under normal circumstances with out additional distortion. </p>

<p>
The afftdn filter may be a fairly safe filter to use on its own while producing acceptable if not perfect output.</p>

<p>

</p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>

</p>

<p>
98 Overall Conclusions</p>

<p>

</p>

<p>
I have presented only a few of the experiments that I conducted.</p>

<p>
My overall conclusion after all of this is that there is no universal audio filtering method that works best in all circumstances.</p>

<p>
There are instead a number of tools in the toolbox, and picking the right one for the job takes a bit of trial and error.</p>

<p>
99</p>

<p>
However, if you have a repeatable recording environment, then once you have decided what tool you need you should create a script for it so you can have a repeatable processing setup.</p>

<p>
These conclusions apply to voice podcasting.</p>

<p>
Music has a different set of criteria and techniques that work well with basic voice podcasting may produce poor results when applied to music which has a broader range of frequency and just as importantly, a broad range of loudness. </p>

<p>

</p>

<p>
100</p>

<p>
If you are used to using filters and effects in Audacity, many of the settings on those correspond to arguments in the command line version of ffmpeg.</p>

<p>
It is worth learning how to use ffmpeg directly to automate your recording process.</p>

<p>

</p>

<p>
101</p>

<p>
The experiments that I conducted were greatly assisted by writing scripts which created multiple versions of audio files with different settings, thereby allowing me to try many different alternatives relatively easily.</p>

<p>
It also allowed me to concatenate different audio samples into a single audio file and so listen to different versions in quick succession, making subjective listening judgments more reliable.</p>

<p>

</p>

<p>
102</p>

<p>
It is important to keep in mind in all this that I am playing with audio filtering mainly to have fun.</p>

<p>
It is not necessary to do any of this if you think your podcast episode sounds just fine without it.</p>

<p>
So, don't let any of what I have talked about in all this discourage you from simply recording a podcast and sending it in as is.</p>

<p>

</p>

<p>
I will include copies of the filters I have described here in the show notes.</p>

<p>

</p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>
103 Related Matters</p>

<p>

</p>

<p>
Hardware Characterization Using Audio Signals</p>

<p>
I found it useful to characterize the hardware that I had in order to understand its limitations better before starting the experiments.</p>

<p>
This involved playing a signal out through a set of speakers and then recording it through a microphone.</p>

<p>

</p>

<p>
104</p>

<p>
I used two types of signal for this.</p>

<p>
One is type of signal is known as a "chirp" signal.</p>

<p>
This is a sine wave that steadily increases in frequency as it sweeps across the audio spectrum.</p>

<p>
The standard audio range is 20 Hz to 20 kHz, but for my purposes I limited the upper frequency to 15 kHz to save time as anything beyond that is not very useful for voice podcasts. </p>

<p>

</p>

<p>
105</p>

<p>
By recording the chirp signal with a microphone and analyzing it with a Fourier transform, I could quickly see what each device was capable of.</p>

<p>
See my previous series on simple podcasting for an explanation of what a Fourier transform is and what software to use to see the results of it.</p>

<p>

</p>

<p>
Here is a chirp signal.</p>

<p>

</p>

<p>
106 (Insert Audio Sample Here)</p>

<p>

</p>

<p>
107</p>

<p>
In addition to a chirp signal, I also used a series of simple tones of specific frequencies. </p>

<p>
By using these tones of known frequency I could gain an understanding of the limitations of my speakers and headphones, and just as importantly, my own ears.</p>

<p>
By understanding these limitations I was able to narrow the range of frequencies that I need to deal with quite considerably and set the high and low pass filters accordingly.</p>

<p>
These tones are a series of flac files generated with ffmpeg.</p>

<p>

</p>

<p>
108</p>

<p>
Here is a a sample audio tone at a 2 kHz frequency.</p>

<p>

</p>

<p>
109 (Insert Audio Sample Here)</p>

<p>

</p>

<p>
110</p>

<p>
Copies of the script to create the chirp signal and the tones are in the show notes.</p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>

</p>

<p>
111 A "Not a Review" of some of the Hardware that I Used</p>

<p>

</p>

<p>
I said that I would not do a review of the hardware that I used.</p>

<p>
However, some of it deserves mention for either how good or bad it was.</p>

<p>
I will record each section using the hardware being described.</p>

<p>

</p>

<p>

</p>

<p>
112 Maxwell Headset</p>

<p>
This is my original recording  hardware. </p>

<p>
This is a headset with boom mic and USB connection.</p>

<p>
There is no model number on it, so I don't know the model.</p>

<p>
This probably cost somewhere between 10 and 25 dollars.</p>

<p>
The earpieces sit on the ears and do not fully enclose them.</p>

<p>
This makes it light weight and comfortable to wear for extended periods of time.</p>

<p>
It has a problem however with electronic noise consisting of a noise spike every 1 kHz.</p>

<p>
I was able to fix this with a series of filters using FFMPEG.</p>

<p>
Fixing this problem is what got me started in understanding audio.</p>

<p>
I will probably continue to use this headset to make podcasts.</p>

<p>

</p>

<p>
113 XTrike Headset, Model GH-510</p>

<p>
This is also a headset with boom mic and USB connection.</p>

<p>
I purchased this headset for the purposes of experimentation for this podcast episode.</p>

<p>
It cost $12.88.</p>

<p>
I found it to be surprisingly good for the price.</p>

<p>
It has fully enclosed ear pieces however, which may make it uncomfortable to wear in hot weather.</p>

<p>
I may try doing some of my future podcasting using this headset.</p>

<p>

</p>

<p>
114 Borne Earpiece and In-line Microphone</p>

<p>
This is a set of earplugs that go in your ears and connected by wires and a very small microphone built into a small bulge in the cable. It connects using a 3.5mm jack.</p>

<p>
The model number seems to be BUD250-BL.</p>

<p>
It cost approximately $3.00.</p>

<p>
I bought several sets of these and use them for listening to podcasts from an MP3 player.</p>

<p>
The ear pieces are pretty good for listening with.</p>

<p>
The microphone works reasonably well when used in a quiet location.</p>

<p>
It is less good when in a noisy environment.</p>

<p>
It is very important however to secure the microphone to your lapel or other location reasonably near your mouth and to point the microphone (that is the small hole) outwards and not simply let it dangle freely.</p>

<p>
If you let it just hang, you will get poor quality and inconsistent audio. </p>

<p>

</p>

<p>
115 Yanmai Condenser Microphone, Model SF-910</p>

<p>
I purchased this microphone for the purposes of experimentation for this podcast episode.</p>

<p>
It cost $3.88.</p>

<p>
As it is a condenser microphone, it is prone to picking up background noise more and as such is probably not a good choice for podcasting by single person sitting at a desk.</p>

<p>
However, it is none the less a surprisingly good microphone for surprisingly little money.</p>

<p>

</p>

<p>
116 iCan USB Microphone, Model M-306</p>

<p>
I purchased this microphone for the purposes of experimentation for this podcast episode.</p>

<p>
This has a USB connection.</p>

<p>
This was also relatively inexpensive at $7.99, or roughly twice the price of the Yanmai microphone. </p>

<p>
Unlike the Yanmai however, it is absolutely wretched.</p>

<p>
There was such a high degree of distortion when recording through it that I found I could not use it in the fan experiments which I had bought it for. </p>

<p>
I ended up buying the Yanmai microphone for that instead. </p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>
117 Easy Effects Software</p>

<p>
The techniques described so far all involve recording audio files and then processing them later to produce the desired result.</p>

<p>
This is probably the simplest and most straightforward way of doing things if you are making a typical podcast.</p>

<p>
However, there may be instances where you want to apply filtering or other effects on the "live" signal immediately and not after the fact.</p>

<p>

</p>

<p>
118</p>

<p>
There is audio software which can hook into your computer's audio system and do this with a live signal.</p>

<p>
For Linux, there is a package called "Easy Effects".</p>

<p>
This is Free Software and comes under a GPL V3 or later license.</p>

<p>
I installed it from the Debian repository under Ubuntu 24.04.</p>

<p>

</p>

<p>
119</p>

<p>
You can create various filters and even chain them together to combine them.</p>

<p>
I played with it a bit but do not know enough about it to discuss it seriously at this time.</p>

<p>
However, I thought it would be worth mentioning for the sake of those who may wish to try it out themselves.</p>

<p>

</p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>

</p>

<p>
120 Episode Conclusion</p>

<p>

</p>

<p>
After having had some fun with audio and listening to other HPR members talk about audio, I thought I would have some more fun by playing with noise reduction filters.</p>

<p>
I have no intention of becoming an audio professional, but by doing some experiments I learned a few things and had some fun doing it.</p>

<p>

</p>

<p>
I hope that the rest of you found this interest as well.</p>

<p>

</p>

<p>
I will see you all again later in another episode of Hacker Public Radio. </p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>
Scripts</p>

<p>

</p>

<p>
Basic Filter</p>

<p>
This shows basic high and low pass filters ( 120 Hz and 8 kHz respectively)</p>

<p>
and band reject filters for 50 and 60 Hz.</p>

<p>

</p>

<p>
# The high and low pass filters.</p>

<p>
hlpfil="highpass=f=120, highpass=f=120, lowpass=f=8000, lowpass=f=8000"</p>

<p>

</p>

<p>
# Band reject filters filter for 60Hz and another for 50Hz.</p>

<p>
linefil="bandreject=f=60:width_type=h:w=20, bandreject=f=50:width_type=h:w=20"</p>

<p>

</p>

<p>
# Filter using ffmpeg.</p>

<p>
ffmpeg -i inputfile.flac -af "$hlpfil, $linefil" outputname.flac</p>

<p>

</p>

<p>
# ======================================================================</p>

<p>

</p>

<p>
afftdn Filter</p>

<p>

</p>

<p>
# noisefloor should be between 20 and 80.</p>

<p>
noisefloor=$1</p>

<p>
# Run the noise reduction. </p>

<p>
ffmpeg -i testrec-filtered.flac -af "afftdn=nr=10:nf=-""$noisefloor" tmptestrec.flac</p>

<p>

</p>

<p>
# ======================================================================</p>

<p>

</p>

<p>
agate Filter</p>

<p>

</p>

<p>
# threshold shoud be between 10 and 80.</p>

<p>
threshold=$1</p>

<p>
# Run the noise reduction. </p>

<p>
ffmpeg -i testrec-filtered.flac -af "agate=threshold=-"$threshold"dB:range=-60dB" tmptestrec.flac</p>

<p>

</p>

<p>
# ======================================================================</p>

<p>

</p>

<p>
arnndn Filter</p>

<p>

</p>

<p>
# mix should be between 0 and 1.</p>

<p>
mix=$1</p>

<p>
# Run the noise reduction. </p>

<p>
ffmpeg -i testrec-filtered.flac -af 'arnndn=model=std.rnnn:mix='"$mix" tmptestrec.flac</p>

<p>

</p>

<p>
# ======================================================================</p>

<p>

</p>

<p>
sox noisered Filter</p>

<p>

</p>

<p>
# Generate the noise profile from a sample of background noise.</p>

<p>
sox silencefiltered.flac -n noiseprof noise.prof</p>

<p>

</p>

<p>
# nramount shoudl be between 0 and 1</p>

<p>
sox testrec-filtered.flac noiseout-testrec.flac noisered noise.prof "$nramount"</p>

<p>

</p>

<p>
# ======================================================================</p>

<p>

</p>

<p>
Manual Filter for Maxwell Headset Noise</p>

<p>

</p>

<p>

</p>

<p>
# Create a series of band reject filters, from 1 kHz to 11 kHz.</p>

<p>
ftemplate="bandreject=f=%s000:width_type=h:w=100"</p>

<p>
kilospikefil=$( seq 1 11 | xargs printf "$ftemplate," )</p>

<p>

</p>

<p>
# Using ffmpeg</p>

<p>
ffmpeg -i testrec-filtered.flac -af "$kilospikefil" tmptestrec.flac</p>

<p>

</p>

<p>
# ======================================================================</p>

<p>

</p>

<p>
Create a "chirp" signal</p>

<p>

</p>

<p>
# Start frequency.</p>

<p>
f0=20</p>

<p>
# End frequency.</p>

<p>
f1=15000</p>

<p>
# Duration of signal.</p>

<p>
duration=10</p>

<p>

</p>

<p>
ffmpeg -f lavfi -i "aevalsrc=sin(2 * PI * (0.5 * ($f1 - $f0)/$duration * t^2 + ($f0 * t))):s=44100:d=$duration" -c:a flac -af "aformat=sample_fmts=s16" chirp.flac</p>

<p>

</p>

<p>
# ======================================================================</p>

<p>

</p>

<p>
Generate Audio Tones</p>

<p>

</p>

<p>
toneout () {</p>

<p>
	</p>

<p>
	printf -v freqval "%05d" $1</p>

<p>
	ffmpeg -f lavfi -i "sine=frequency=$freqval:duration=3" tmptone.flac</p>

<p>
	# Normalize</p>

<p>
	ffmpeg -i tmptone.flac -af loudnorm=I=-17:TP=-2.0:LRA=4.0 -ar 44.1k -sample_fmt s16 tone$freqval.flac</p>

<p>
	rm tmptone.flac</p>

<p>
}</p>

<p>

</p>

<p>
# List of frequencies in hertz.</p>

<p>
freqlist="50 60 100 120 130 140 150 160 170 200 500 1000 2000 3000 4000 5000 6000 7000 8000 9000"</p>

<p>

</p>

<p>
for freq in $( echo $freqlist ); do</p>

<p>
	toneout $freq</p>

<p>
done</p>

<p>

</p>

<p>
# ======================================================================</p>

<p>

</p>


<p><a href="https://hackerpublicradio.org/eps/hpr4658/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4657: UNIX Curio #8 - Comparing Files]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.


This series is dedicated to exploring little-known—and occasionally useful—trinkets lurking in the dusty corners of UNIX-like operating systems.


Most users of UNIX-like systems are probably familiar with the 
diff
 utility. It is widely used w...]]></description>
<link>https://tsecurity.de/de/3583198/it+sicherheit/it+podcasts/hpr4657+unix+curio+8+-+comparing+files/</link>
<pubDate>Tue, 09 Jun 2026 02:03:04 +0200</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>

<blockquote>
This series is dedicated to exploring little-known—and occasionally useful—trinkets lurking in the dusty corners of UNIX-like operating systems.</blockquote>

<p>
Most users of UNIX-like systems are probably familiar with the <code>
diff</code>
 utility. It is widely used with source code to compare two files and see what the differences are between them. Non-programmers, like me, also use it to examine what has changed in different versions of scripts or configuration files. Quite a few pieces of newer software can compare different versions of data and express changes in a format either identical to or similar to <code>
diff</code>
 output.</p>

<p>
However, there are two other long-standing tools for this purpose that are far less known and deserve in my view to be termed UNIX Curios. The first of these is <code>

<a href="https://pubs.opengroup.org/onlinepubs/009695399/utilities/cmp.html" rel="noopener noreferrer" target="_blank">
cmp</a>

</code>

<sup>
1</sup>
. While <code>
diff</code>
 is primarily intended to be used on text files and compares them line by line, <code>
cmp</code>
 compares files byte by byte. In my experience, its main use is to see whether two binary files are in fact identical—if they are, <code>
cmp</code>
 outputs nothing and returns an exit status of 0. Back when methods of transferring files were not as reliable as they are today, this was a tool I would reach for sometimes. For example, you could use it to confirm that the data on a CD-ROM you burned was the same as the original.</p>

<p>
If there is a difference between the files, <code>
cmp</code>
 will return an exit status of 1. By default, it will also print the location (byte and line number) of the first differing byte. When used with the <code>
-l</code>
 option, it will print the location and value of <em>
every</em>
 byte that differs. There is one exception to these: if the files are the same except that one is shorter than the other, it will print a message to that effect. The exit status will still be 1 in that case.</p>

<p>
Using the <code>
-s</code>
 option with <code>
cmp</code>
 will cause it to be totally silent and output nothing. Only the exit status will indicate whether the files are the same, different, or if the exit status is greater than 1, that an error occurred. This makes it useful for scripting, for example in case you wanted to confirm that a file copied to another location arrived fully intact.</p>

<p>
It is worth noting that <code>
diff</code>
 is also capable of comparing binary files—however, it is not required by POSIX to report what is actually different or where differences occur. The same exit status as in <code>
cmp</code>
 is returned: 0 if the files are the same, 1 if they are different, or greater than 1 if an error occurred. While many implementations offer an option to suppress the output, <a href="https://pubs.opengroup.org/onlinepubs/009695399/utilities/diff.html" rel="noopener noreferrer" target="_blank">
this is not in the standard</a>

<sup>
2</sup>
 so the most portable method would be to instead redirect output to <code>
/dev/null</code>
. On my system the <code>
diff</code>
 utility is three times the size of <code>
cmp</code>
, so if you don't need its extra capabilities, it is a less efficient way of doing the job.</p>

<p>
The other UNIX Curio for today is <code>

<a href="https://pubs.opengroup.org/onlinepubs/009695399/utilities/comm.html" rel="noopener noreferrer" target="_blank">
comm</a>

</code>

<a href="https://pubs.opengroup.org/onlinepubs/009695399/utilities/comm.html" rel="noopener noreferrer" target="_blank">
, and this utility</a>

<sup>
3</sup>
 is also intended to compare two files to see what is common between them. Ken Fallon briefly talked about it a few years ago in <a href="https://hackerpublicradio.org/eps/hpr3889/" rel="noopener noreferrer" target="_blank">
HPR episode 3889</a>
. Compared to the others, it has a much more specific use case. The two files are expected to be text files that are already sorted. What <code>
comm</code>
 will do is print a tab-separated list of all the lines appearing in either or both files. Lines only in the first file will appear in the first column, lines only in the second file will be in the second column, and lines in both files will be in the third column.</p>

<p>
Any combination of the options <code>
-1</code>
, <code>
-2</code>
, and <code>
-3</code>
 can be used with <code>
comm</code>
 to suppress printing of the first, second, or third column respectively. Using all three options at the same time <em>
is</em>
 supported but it results in no output, so that isn't very useful. Unlike the other utilities, the exit status of <code>
comm</code>
 doesn't tell you anything about the two files. It will be 0 if the program ran successfully, and greater than 0 if it didn't.</p>

<p>
I'm not sure if I have ever actually used <code>
comm</code>
 for anything practical. I find its default output a bit difficult to meaningfully interpret, plus you need to ensure the two files are already sorted. It seems to be best suited to comparing lists, and one use case that Ken Fallon mentioned would be comparing two lists of files to see if any are missing. The command <code>
comm -3 listA listB</code>
 would print files that only appear in <em>
listA</em>
 in the first column and those only in <em>
listB</em>
 in the second column. This would let you ignore all the filenames that appear in both and focus on those that were absent from one or the other. If on the other hand you only wanted to see the filenames that <em>
are</em>
 on both lists, <code>
comm -12 listA listB</code>
 would give you that.</p>

<p>
Some more frivolous potential uses also come to mind. If for some reason the <code>
cat</code>
 utility is broken on your system, you could use <code>
comm listA /dev/null</code>
 to print the file <em>
listA</em>
 instead. If you want to insert tab characters before every line of a file but have an aversion to using <code>
sed</code>
 or <code>
awk</code>
, then <code>
comm /dev/null listA</code>
 would output <em>
listA</em>
 with one tab before each line, and <code>
comm listA listA</code>
 would insert two tabs. A bit silly, but it would work. The GNU implementation of <code>
comm</code>
 even lets you <a href="https://www.gnu.org/software/coreutils/manual/html_node/comm-invocation.html" rel="noopener noreferrer" target="_blank">
choose something other than a tab to separate the columns</a>

<sup>
4</sup>
, so you could go wild with that.</p>

<p>
According to the POSIX specifications for <code>
cmp</code>
 and <code>
comm</code>
, one of the two filenames given as arguments, but not both, can be a "<code>
-</code>
", in which case standard input will be used for that "file" in the comparison. Also, the results are undefined if both arguments are the same FIFO special, character special, or block special file. Some implementations might not have these limitations, but you shouldn't rely on that everywhere.</p>

<p>
All three of these were developed quite early. The <code>

<a href="http://man.cat-v.org/unix-1st/1/cmp" rel="noopener noreferrer" target="_blank">
cmp</a>

</code>

<a href="http://man.cat-v.org/unix-1st/1/cmp" rel="noopener noreferrer" target="_blank">
 utility</a>
 appeared in 1971's First Edition UNIX<sup>
5</sup>
, while <code>

<a href="https://www.tuhs.org/cgi-bin/utree.pl?file=V4/usr/man/man1/comm.1" rel="noopener noreferrer" target="_blank">
comm</a>

</code>
 and <code>

<a href="https://www.tuhs.org/cgi-bin/utree.pl?file=V4/usr/source/s1/diff1.c" rel="noopener noreferrer" target="_blank">
diff</a>

</code>
 seem to have made their debut in Fourth Edition UNIX<sup>
6,7</sup>
 from 1973. The original versions might not have behaved exactly like their modern counterparts, and newer implementations (especially of the <code>
diff</code>
 utility) have acquired additional options and capabilities, but the basic operation of each has stayed the same.</p>

<p>
The next time you need to compare files against each other, consider whether <code>
cmp</code>
 or <code>
comm</code>
 might be appropriate before automatically reaching for <code>
diff</code>
. They all have their uses in different situations.</p>

<p>
References:</p>

<ol>

<li>

<a href="https://pubs.opengroup.org/onlinepubs/009695399/utilities/cmp.html" rel="noopener noreferrer" target="_blank">
Cmp specification</a>
 https://pubs.opengroup.org/onlinepubs/009695399/utilities/cmp.html</li>

<li>

<a href="https://pubs.opengroup.org/onlinepubs/009695399/utilities/diff.html" rel="noopener noreferrer" target="_blank">
Diff specification</a>
 https://pubs.opengroup.org/onlinepubs/009695399/utilities/diff.html</li>

<li>

<a href="https://pubs.opengroup.org/onlinepubs/009695399/utilities/comm.html" rel="noopener noreferrer" target="_blank">
Comm specification</a>
 https://pubs.opengroup.org/onlinepubs/009695399/utilities/comm.html</li>

<li>

<a href="https://www.gnu.org/software/coreutils/manual/html_node/comm-invocation.html" rel="noopener noreferrer" target="_blank">
GNU coreutils manual: comm</a>
 https://www.gnu.org/software/coreutils/manual/html_node/comm-invocation.html</li>

<li>

<a href="http://man.cat-v.org/unix-1st/1/cmp" rel="noopener noreferrer" target="_blank">
First Edition UNIX cmp manual page</a>
 http://man.cat-v.org/unix-1st/1/cmp</li>

<li>

<a href="https://www.tuhs.org/cgi-bin/utree.pl?file=V4/usr/man/man1/comm.1" rel="noopener noreferrer" target="_blank">
Fourth Edition UNIX comm manual page</a>
 https://www.tuhs.org/cgi-bin/utree.pl?file=V4/usr/man/man1/comm.1</li>

<li>

<a href="https://www.tuhs.org/cgi-bin/utree.pl?file=V4/usr/source/s1/diff1.c" rel="noopener noreferrer" target="_blank">
Fourth Edition UNIX diff source</a>
 https://www.tuhs.org/cgi-bin/utree.pl?file=V4/usr/source/s1/diff1.c</li>

</ol>

<p>

</p>


<p><a href="https://hackerpublicradio.org/eps/hpr4657/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4656: My review of musicozy sleep/exercise bluetooth headband]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.

    
      Sound quality, ease of use, comfort, battery life, price
    
    https://themusicozy.com/products/headband/index.htmlProvide feedback on this episode.]]></description>
<link>https://tsecurity.de/de/3580174/it+sicherheit/it+podcasts/hpr4656+my+review+of+musicozy+sleepexercise+bluetooth+headband/</link>
<pubDate>Mon, 08 Jun 2026 02:02:47 +0200</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>

    <p>
      Sound quality, ease of use, comfort, battery life, price<br>
    </p>
    <a href="https://themusicozy.com/products/headband/index.html">https://themusicozy.com/products/headband/index.html</a><br><p><a href="https://hackerpublicradio.org/eps/hpr4656/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4655: Tips for Glasses]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.


HPR and Glasses




HPR community members are nerds


We know from movies that nerds wear glasses


We can conclude that HPR community members wear glasses




Cleaning Background




I have very oily skin and am constantly smudging my gl...]]></description>
<link>https://tsecurity.de/de/3574126/it+sicherheit/it+podcasts/hpr4655+tips+for+glasses/</link>
<pubDate>Fri, 05 Jun 2026 02:03:03 +0200</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>

<h2>
HPR and Glasses</h2>

<ol>

<li>
HPR community members are nerds</li>

<li>
We know from movies that nerds wear glasses</li>

<li>
We can conclude that HPR community members wear glasses</li>

</ol>

<h2>
Cleaning Background</h2>

<ul>

<li>
I have very oily skin and am constantly smudging my glasses</li>

<li>
All lenses wipes are too small.</li>

<li>
I accidentally touch the lenses with my fingers when I am trying to clean them And smudge them up again</li>

<li>
I heard an eye doctor say, the best way to clean glasses is with dish soap and dry with a microfiber cloth</li>

<li>
I tried this method It is a great solution because you wash glasses and fingers tips at the same time</li>

</ul>

<h2>
Cleaning Method</h2>

<ul>

<li>
Hand soap is OK to use on glasses.</li>

<li>
get the soap on you fingertips</li>

<li>
Then hold your glasses one of the lenses</li>

<li>
Use your thumb and finger tips to clean the glasses</li>

<li>
the soap removes the excess oil from your fingertips</li>

<li>
no smudges when you dry with the microfiber cloth</li>

</ul>

<h2>
Progressives</h2>

<ul>

<li>
With regular progressives the top of the lenses is for distance vision and the bottom of the lenses is for up close vision</li>

<li>
There is a zone in the middle for medium distance, but it is very narrow</li>

<li>
Using a computer at work I kept having to move my head up and down to find the best position for working.</li>

<li>
Computer Glasses have more space for intermediate distances</li>

<li>
From <a href="https://iotlenses.com/blog/eight-types-of-progressive-lenses.html" rel="noopener noreferrer" target="_blank">
https://iotlenses.com/blog/eight-types-of-progressive-lenses.html</a>

</li>

</ul>

<blockquote>
Computer progressive lenses, also known as occupational designs or enhanced readers, are optimized for intermediate and near vision, making them ideal for tasks like prolonged computer work or activities at mid-range distance</blockquote>

<p>

</p>


<p><a href="https://hackerpublicradio.org/eps/hpr4655/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4654: What's in my component Box?]]></title>
<description><![CDATA[This show has been flagged as Explicit by the host.


Background


This episode describes the contents of an old fishing tackle box I got as a birthday present very many years ago. I used it over the years to gather a pile of mostly useless electronic components and junk.


I came across it rec...]]></description>
<link>https://tsecurity.de/de/3571118/it+sicherheit/it+podcasts/hpr4654+whats+in+my+component+box/</link>
<pubDate>Thu, 04 Jun 2026 02:01:47 +0200</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Explicit by the host.</p>

<h2>
Background</h2>

<p>
This episode describes the contents of an old fishing tackle box I got as a birthday present very many years ago. I used it over the years to gather a pile of mostly useless electronic components and junk.</p>

<p>
I came across it recently when we were doing a clear out. Mrs X wanted to throw it out. I had a lot of sentimental value due to the long time I’ve had it. I am a bit of a hoarder and it took a bit of persuasion on my part to be able to keep it especially since I could not think of a single use for any of the contents!</p>

<p>

</p>

<p>
I’ve not had time to add links against all the items. Hopefully I’ve managed to add links to most of the more unusual items. Apologies if I’ve missed any.</p>

<p>

<a href="https://hackerpublicradio.org/eps/hpr4654/hpr4654_image_1.jpeg">
<img src="https://hackerpublicradio.org/eps/hpr4654/hpr4654_image_1_tn.jpeg">
</a>

</p>

<h1>
Contents of Box</h1>

<p>

<a href="https://hackerpublicradio.org/eps/hpr4654/hpr4654_image_2.jpeg">
<img src="https://hackerpublicradio.org/eps/hpr4654/hpr4654_image_2_tn.jpeg">
</a>

</p>

<p>

</p>

<h1>
Top row left to right, back to front</h1>

<p>

</p>

<h2>
Compartment 1</h2>

<p>

<a href="https://en.wikipedia.org/wiki/Phone_connector_(audio)" rel="noopener noreferrer" target="_blank">
Stereo Jack plug &amp; socket</a>

</p>

<p>
Double pole double throw (2-way) switch</p>

<p>

<a href="https://en.wikipedia.org/wiki/Relay" rel="noopener noreferrer" target="_blank">
12V dc relay from RS</a>

</p>

<p>
3 legged semiconductor (voltage regulator?)</p>

<p>

</p>

<h2>
Compartment 2</h2>

<p>
Multiple fuses mostly for cars</p>

<p>

</p>

<h2>
Compartment 3</h2>

<p>
Small silica jelly pouch</p>

<p>

<a href="https://en.wikipedia.org/wiki/Miniature_snap-action_switch" rel="noopener noreferrer" target="_blank">
Micro Switch</a>

</p>

<p>

<a href="https://en.wikipedia.org/wiki/Reed_switch" rel="noopener noreferrer" target="_blank">
Reed switches (Not reed relays as I call them in my show)</a>

</p>

<p>

</p>

<h2>
Compartment 4</h2>

<p>
Potentiometers, Rheostat, variable resistors <a href="https://en.wikipedia.org/wiki/Potentiometer" rel="noopener noreferrer" target="_blank">
https://en.wikipedia.org/wiki/Potentiometer</a>

</p>

<p>
Control knobs</p>

<p>

</p>

<h2>
Compartment 5</h2>

<p>
Large selection of miniature panel mounted toggle switches <a href="https://en.wikipedia.org/wiki/Switch#Toggle_switch" rel="noopener noreferrer" target="_blank">
https://en.wikipedia.org/wiki/Switch#Toggle_switch</a>

</p>

<p>

</p>

<h2>
Compartment 6</h2>

<p>
Two crocodile clips <a href="https://en.wikipedia.org/wiki/Crocodile_clip" rel="noopener noreferrer" target="_blank">
https://en.wikipedia.org/wiki/Crocodile_clip</a>

</p>

<p>
Half of a Hi Fi speaker plug <a href="https://en.wikipedia.org/wiki/File:Speaker_din_male_and_female.jpg" rel="noopener noreferrer" target="_blank">
https://en.wikipedia.org/wiki/File:Speaker_din_male_and_female.jpg</a>

</p>

<p>
Washer</p>

<p>

</p>

<h2>
Compartment 7</h2>

<p>
Mostly chocolate block connectors <a href="https://en.wikipedia.org/wiki/File:Leuchterklemme_75dpi.jpg" rel="noopener noreferrer" target="_blank">
https://en.wikipedia.org/wiki/File:Leuchterklemme_75dpi.jpg</a>

</p>

<p>
Small selection of glass cartridge Fuses</p>

<p>
Single 13 Amp mains fuse for UK plug</p>

<p>
Assortment of soldering iron tips</p>

<p>
Crocodile clip</p>

<p>
Air adapter for foot pump for blowing up an air bed or similar</p>

<p>
Spare nozzle for a de-soldering tool. Made from PTFE <a href="https://en.wikipedia.org/wiki/Desoldering#/media/File:Vacuum_plunge.jpg" rel="noopener noreferrer" target="_blank">
https://en.wikipedia.org/wiki/Desoldering#/media/File:Vacuum_plunge.jpg</a>

</p>

<p>

<a href="https://en.wikipedia.org/wiki/Polytetrafluoroethylene" rel="noopener noreferrer" target="_blank">
https://en.wikipedia.org/wiki/Polytetrafluoroethylene</a>

</p>

<p>
Ferrite ring <a href="https://en.wikipedia.org/wiki/Ferrite_bead" rel="noopener noreferrer" target="_blank">
https://en.wikipedia.org/wiki/Ferrite_bead</a>

</p>

<p>

</p>

<h2>
Compartment 8</h2>

<p>
Rubber Grommets and a heatsink</p>

<p>

</p>

<p>

</p>

<h1>
Middle row left to right, back to front</h1>

<p>

</p>

<h2>
Compartment 1</h2>

<p>
Large selection of glass cartridge fuses</p>

<p>

</p>

<h2>
Compartment 2</h2>

<p>
Another large selection of glass cartridge fuses</p>

<p>
Small selection of diodes, some quite Large <a href="https://en.wikipedia.org/wiki/Diode" rel="noopener noreferrer" target="_blank">
https://en.wikipedia.org/wiki/Diode</a>

</p>

<p>

</p>

<h2>
Compartment 3</h2>

<p>
Two multi turn precision variable resistors <a href="https://en.wikipedia.org/wiki/Potentiometer#/media/File:Beckman_Helipot_potentiometer_SA1400A_2007.075.002.jpg" rel="noopener noreferrer" target="_blank">
https://en.wikipedia.org/wiki/Potentiometer#/media/File:Beckman_Helipot_potentiometer_SA1400A_2007.075.002.jpg</a>

</p>

<p>
Cheap variable resistor with in built switch</p>

<p>

</p>

<h2>
Compartment 4</h2>

<p>
Bag of multi coloured LED’s (Cheap for Pi add on board)</p>

<p>
2 inch 8 ohm speaker</p>

<p>

</p>

<h2>
Compartment 5</h2>

<p>
Panel mounted heavy duty toggle switch, two pole one way</p>

<p>

</p>

<h2>
Compartment 6</h2>

<p>
Light Dependent Resistor (LDR) <a href="https://en.wikipedia.org/wiki/Photoresistor" rel="noopener noreferrer" target="_blank">
https://en.wikipedia.org/wiki/Photoresistor</a>

</p>

<p>
Large Tricolour LED</p>

<p>

</p>

<h2>
Compartment 7</h2>

<p>
Variable capacitors PCB (Printed Circuit board) mounted</p>

<p>
Spare nozzle for de-soldering tool. Made from PTFE</p>

<p>
Light Dependent Resistor (LDR)</p>

<p>
Panel mounted heavy duty rotary switch, two pole one way</p>

<p>
Bag of various fuses</p>

<p>
Halogen 12V car headlight bulb</p>

<p>
Variable resistor with long plastic spindle, panel mount</p>

<p>
Heatsink possibly for heavy duty transistor</p>

<p>

</p>

<h2>
Compartment 8</h2>

<p>
Variable resistor PCB (Printed circuit board) mounted</p>

<p>

</p>

<p>

</p>

<h1>
Bottom row</h1>

<p>
This is just a big jumble of stuff, listed in no particular order</p>

<p>
DC red and black power lead with inbuilt fuse</p>

<p>
Small solder-less breadboard for prototyping</p>

<p>

<a href="https://en.wikipedia.org/wiki/Breadboard" rel="noopener noreferrer" target="_blank">
https://en.wikipedia.org/wiki/Breadboard</a>

</p>

<p>
Bag of various plugs &amp; connectors mostly Jack plugs and sockets</p>

<p>
Bag of quartz crystals and a components receipt from 1985 I added crystals to an old PMR (Private mobile radio) boot mount radio. Possible a Pye Westminster Radio. I looked but couldn’t find picture of the radio</p>

<p>
Several bits of Perfboard or strip board</p>

<p>

<a href="https://en.wikipedia.org/wiki/Perfboard" rel="noopener noreferrer" target="_blank">
https://en.wikipedia.org/wiki/Perfboard</a>

</p>

<p>
1 Watt audio amplifier kit with instructions not built!</p>

<p>
D-type serial port mounted to PCB with screw down connections</p>

<p>
Bag of resistors <a href="https://en.wikipedia.org/wiki/Resistor" rel="noopener noreferrer" target="_blank">
https://en.wikipedia.org/wiki/Resistor</a>

</p>

<p>
Large bag of LED panel mount holders</p>

<p>
Electronic Instruction guide XH79L (Maplin) price 25p</p>

<p>
Chocolate block connecting block <a href="https://en.wikipedia.org/wiki/File:Leuchterklemme_75dpi.jpg" rel="noopener noreferrer" target="_blank">
https://en.wikipedia.org/wiki/File:Leuchterklemme_75dpi.jpg</a>

</p>

<p>
Telephone pickup for recording phone calls. (Never worked) <a href="https://www.amazon.co.uk/Black-Telephone-Pickup-Sensitive-Microphone/dp/B000L1OZG8" rel="noopener noreferrer" target="_blank">
https://www.amazon.co.uk/Black-Telephone-Pickup-Sensitive-Microphone/dp/B000L1OZG8</a>

</p>

<p>
Multi coloured ribbon cable</p>

<p>
Plastic trimming tool screwdriver set. <a href="https://www.amazon.co.uk/C-K-T4857-Precision-Plastic-Trimmer/dp/B000WKIYTW" rel="noopener noreferrer" target="_blank">
https://www.amazon.co.uk/C-K-T4857-Precision-Plastic-Trimmer/dp/B000WKIYTW</a>

</p>

<p>
Panel mounted BNC socket (Baby Neill Constant)</p>

<p>

<a href="https://en.wikipedia.org/wiki/BNC_connector" rel="noopener noreferrer" target="_blank">
https://en.wikipedia.org/wiki/BNC_connector</a>

</p>

<p>

<a href="https://hackerpublicradio.org/eps/hpr4654/hpr4654_image_3.jpeg">
<img src="https://hackerpublicradio.org/eps/hpr4654/hpr4654_image_3_tn.jpeg">
</a>

</p>


<p><a href="https://hackerpublicradio.org/eps/hpr4654/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4653: Starting the Habit of Reading]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.





Openreads is a privacy oriented and open source cross-platform app written in Flutter available for Android and iOS for keeping track of your books.


There are four lists provided so you won't get confused:


books you finished,
books you are...]]></description>
<link>https://tsecurity.de/de/3567899/it+sicherheit/it+podcasts/hpr4653+starting+the+habit+of+reading/</link>
<pubDate>Wed, 03 Jun 2026 02:02:52 +0200</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>
<p><a href="https://github.com/mateusz-bak/openreads/releases/latest"><img alt="Get it on Github" src="https://raw.githubusercontent.com/mateusz-bak/openreads/master/doc/github/get-it-on-github.png" height="70"></a>
<a href="https://f-droid.org/en/packages/software.mdev.bookstracker" rel="nofollow"><img alt="Get it on F-Droid" src="https://camo.githubusercontent.com/5702f84de955c553161db1d6ce6fa114679af1dab8ec4037a7cbf9b0ff8b5c82/68747470733a2f2f6664726f69642e6769746c61622e696f2f617274776f726b2f62616467652f6765742d69742d6f6e2e706e67" data-canonical-src="https://fdroid.gitlab.io/artwork/badge/get-it-on.png" height="70"></a>
<a href="https://play.google.com/store/apps/details?id=software.mdev.bookstracker" rel="nofollow"><img alt="Get it on Google Play" src="https://camo.githubusercontent.com/1fe86ca33ef309648abb9f19c703e571dd7d97d5a9f64156ffa1f0ae3302b14a/68747470733a2f2f706c61792e676f6f676c652e636f6d2f696e746c2f656e5f75732f6261646765732f696d616765732f67656e657269632f656e5f62616467655f7765625f67656e657269632e706e67" data-canonical-src="https://play.google.com/intl/en_us/badges/images/generic/en_badge_web_generic.png" height="70"></a>
<a href="https://apps.apple.com/app/id6476542305" rel="nofollow"><img alt="Download on App Store" src="https://raw.githubusercontent.com/mateusz-bak/openreads/master/doc/app_store/download_on_app_store.png" height="70"></a></p>

<h3>Openreads is a privacy oriented and open source cross-platform app written in Flutter available for Android and iOS for keeping track of your books.</h3>
<a aria-label="Permalink: Openreads is a privacy oriented and open source cross-platform app written in Flutter available for Android and iOS for keeping track of your books." href="https://github.com/mateusz-bak/openreads#openreads-is-a-privacy-oriented-and-open-source-cross-platform-app-written-in-flutter-available-for-android-and-ios-for-keeping-track-of-your-books"></a>

<h4>There are four lists provided so you won't get confused:</h4>
<a aria-label="Permalink: There are four lists provided so you won't get confused:" href="https://github.com/mateusz-bak/openreads#there-are-four-lists-provided-so-you-wont-get-confused"></a>
<ul>
<li>books you finished,</li>
<li>books you are currently reading,</li>
<li>books you want to read later,</li>
<li>books you didn't finish.</li>
</ul>
<p>You can use custom tags and filter through them.</p>

<h4>A book can be added by:<a aria-label="Permalink: A book can be added by:" href="https://github.com/mateusz-bak/openreads#a-book-can-be-added-by"><svg data-component="Octicon" class="octicon octicon-link" viewbox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"></svg></a></h4>

<ul>
<li>looking it up in the Open Library database,</li>
<li>scanning its barcode,</li>
<li>adding its details manually.</li>
</ul>

<h4>You can also view some cool statistics!</h4>

<h3>Links:</h3>
<ul>
  <li><a href="https://www.sarna.net/wiki/Mercenary%27s_Star_(novel)">       Battletech: Mercenary's Star by William H. Keith</a></li>
  <li><a href="https://newsociety.com/book/permaculture-for-the-rest-of-us/">
      Permaculture for the Rest of Us by Jenni Blackmore</a></li>
  <li><a href="https://en.wikipedia.org/wiki/Piranesi_(novel)">
      Piranesi by Susanna Clarke</a></li>
  <li><a href="https://www.sarna.net/wiki/The_Price_of_Glory">
      Battletech: The Price of Glory by William H. Keith</a></li>
  <li><a href="https://hackerpublicradio.org/eps/hpr4653/The%20Urban%20Homestead%20by%20Kelly%20Coyne">
      The Urban Homestead by Kelly Coyne</a></li>
  <li><a href="https://www.sarna.net/wiki/The_Sword_and_the_Dagger">
      Battletech: The Sword and the Dagger by Ardath Mayhar</a></li>
  <li><a href="https://www.sarna.net/wiki/Warrior:_En_Garde">
      Battletch: Warrior En Garde by Michal A. Stackpole</a></li>
  <li><a href="https://en.wikipedia.org/wiki/Sisterhood_of_Dune">
      Sisterhood of Dune by Brian Herbert and Kevin J. Anderson</a></li>
  <li><a href="https://www.goodreads.com/book/show/26596785-fundamentals-of-the-wudang-sword-method---selected-translations-with-com">Fundamentals of       the Wudang Sword Method by Scott M. Rodell</a></li>
  <li><a href="https://www.sarna.net/wiki/Warrior:_Riposte">
      Battletech: Warrior Riposte by Michal A. Stackpole</a></li>
  <li><a href="https://www.goodreads.com/book/show/26087493-the-cardio-code">
      The Cardio Code by Kenneth Jay</a></li>
  <li><a href="https://en.wikipedia.org/wiki/Mentats_of_Dune">
      Mentats of Dune by Brian Herbert and Kevin J. Anderson</a></li>
  <li><a href="https://johnjeavons.org/books-and-videos/">
      How to Grow More Vegtables by John Jeavons</a></li>
</ul>
<p><a href="https://hackerpublicradio.org/eps/hpr4653/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[175: Bayrob]]></title>
<description><![CDATA[It started with a fake car listing on eBay.What looked like a simple online scam quietly grew, over more than a decade, into one of the most sophisticated cybercrime operations the FBI had ever traced. Custom malware. Opsec off the charts. Fleets of infected computers mining cryptocurrency for so...]]></description>
<link>https://tsecurity.de/de/3565142/it+sicherheit/it+podcasts/175+bayrob/</link>
<pubDate>Tue, 02 Jun 2026 09:03:46 +0200</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>It started with a fake car listing on eBay.</p><p>What looked like a simple online scam quietly grew, over more than a decade, into one of the most sophisticated cybercrime operations the FBI had ever traced. Custom malware. Opsec off the charts. Fleets of infected computers mining cryptocurrency for someone else. Millions of dollars siphoned from victims who had no idea.</p><p>This is the story of Bayrob and the three men from Romanian who were behind it. And the long, strange road that led American investigators to their door.</p><h3>Sponsors</h3><p>Support for this show comes from <a href="https://www.threatlocker.com/"><strong>ThreatLocker®</strong></a>. ThreatLocker® is a Zero Trust Endpoint Protection Platform that strengthens your infrastructure from the ground up. With ThreatLocker® Allowlisting and Ringfencing™, you gain a more secure approach to blocking exploits of known and unknown vulnerabilities. ThreatLocker® provides Zero Trust control at the kernel level that enables you to allow everything you need and block everything else, including ransomware! Learn more at <a href="https://www.threatlocker.com/"><strong>www.threatlocker.com</strong></a>.</p><p>This show is sponsored by <a href="https://www.meter.com/"><strong>Meter</strong></a>, the company building networks from the ground up. Meter delivers a complete networking stack - wired, wireless, and cellular - in one solution that’s built for performance and scale. Alongside their partners, Meter designs the hardware, writes the firmware, builds the software, manages deployments, and runs support. Learn more at <a href="https://www.meter.com/"><strong>meter.com</strong></a>.</p><p>This show is sponsored by <a href="http://mazehq.com/darknet"><strong>Maze</strong></a>. Maze uses AI agents to triage and remediate cloud vulnerabilities by figuring out what’s actually exploitable, not just what’s theoretically risky. They remove the noise, prioritize vulns that matter, and manage remediation, so your team stops wasting time on meaningless vulns. Visit <a href="http://mazehq.com/darknet"><strong>MazeHQ.com/darknet</strong></a> for more information.</p><p>Support for this episode comes from <a href="https://www.netsuite.com/darknet"><strong>NetSuite</strong></a>. NetSuite gives you visibility and control of your financials, planning, budgeting, and of course - inventory - so you can manage risk, get reliable forecasts, and improve margins. NetSuite helps you identify rising costs, automate your manual business processes, and see where to save money. KNOW your numbers. KNOW your business. And get to KNOW how NetSuite can be the source of truth for your entire company. Visit <a href="https://www.netsuite.com/darknet"><strong>www.netsuite.com/darknet</strong></a> to learn more.</p><p>This episode is sponsored by <a href="https://www.chainguard.dev/"><strong>Chainguard</strong></a>. Chainguard builds container images the right way — minimal, hardened, and built from source every single day. We’re talking images with zero known CVEs, designed from the ground up for production. No bloat. No mystery packages. No 2 a.m. patching marathons because some transitive dependency lit up your dashboard. Stop patching images that are insecure. Start shipping clean. Head to <a href="https://www.chainguard.dev/"><strong>chainguard.dev</strong></a> to see how secure your software supply chain can really be.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4652: simon says]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.


From https://en.wikipedia.org/wiki/Simon_(game)



Simon is an electronic game of short-term memory skill invented by Ralph H. Baer and Howard J. Morrison, working for toy design firm Marvin Glass and Associates, with software programming b...]]></description>
<link>https://tsecurity.de/de/3564577/it+sicherheit/it+podcasts/hpr4652+simon+says/</link>
<pubDate>Tue, 02 Jun 2026 02:02:42 +0200</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>

<p>
From <a href="https://en.wikipedia.org/wiki/Simon_(game)">https://en.wikipedia.org/wiki/Simon_(game)</a>
</p>

<p>
Simon is an electronic game of short-term memory skill invented by Ralph H. Baer and Howard J. Morrison, working for toy design firm Marvin Glass and Associates, with software programming by Lenny Cope. The device creates a series of tones and lights and requires a user to repeat the sequence. If the user succeeds, the series becomes progressively longer and more complex. Once the user fails or the time limit runs out, the game is over. The original version was manufactured and distributed by Milton Bradley and later by Hasbro after it took over Milton Bradley. Much of the assembly language code was written by Charles Kapps, who taught computer science at Temple University and also wrote one of the first books on the theory of computer programming. Simon was launched in 1978 at Studio 54 in New York City and was an immediate success, becoming a pop culture symbol of the 1970s and 1980s
</p>

<p>

<a href="https://hackerpublicradio.org/eps/hpr4652/hpr4652_image_1.jpeg">
<img src="https://hackerpublicradio.org/eps/hpr4652/hpr4652_image_1_tn.jpeg">
</a>

</p>

<p>

<a href="https://hackerpublicradio.org/eps/hpr4652/hpr4652_image_2.jpeg">
<img src="https://hackerpublicradio.org/eps/hpr4652/hpr4652_image_2_tn.jpeg">
</a>

</p>

<p>

<a href="https://hackerpublicradio.org/eps/hpr4652/hpr4652_image_3.jpeg">
<img src="https://hackerpublicradio.org/eps/hpr4652/hpr4652_image_3_tn.jpeg">
</a>

</p>

<p>

<a href="https://hackerpublicradio.org/eps/hpr4652/hpr4652_image_4.jpeg">
<img src="https://hackerpublicradio.org/eps/hpr4652/hpr4652_image_4_tn.jpeg">
</a>

</p>





<p><a href="https://hackerpublicradio.org/eps/hpr4652/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4651: HPR Community News for May 2026]]></title>
<description><![CDATA[This show has been flagged as Explicit by the host.
New hosts  There were no new hosts this month.   Last Month's Shows    Id Day Date Title Host   4630 Fri 2026-05-01 Playing Civilization V, Part 11 Ahuka   4631 Mon 2026-05-04 HPR Community News for April 2026 HPR Volunteers   4632 Tue 2026-05-0...]]></description>
<link>https://tsecurity.de/de/3561558/it+sicherheit/it+podcasts/hpr4651+hpr+community+news+for+may+2026/</link>
<pubDate>Mon, 01 Jun 2026 02:16:46 +0200</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Explicit by the host.</p>
<h2>New hosts</h2> <p> There were no new hosts this month. </p>  <h2>Last Month's Shows</h2>  <table> <tr> <th>Id</th> <th>Day</th> <th>Date</th> <th>Title</th> <th>Host</th> </tr> <tr> <td><strong><a href="https://hackerpublicradio.org/eps/hpr4630/index.html" target="_blank">4630</a></strong></td> <td>Fri</td> <td class="shrink">2026-05-01</td> <td><a href="https://hackerpublicradio.org/eps/hpr4630/index.html" target="_blank">Playing Civilization V, Part 11</a></td> <td><a href="https://hackerpublicradio.org/correspondents/0198.html" target="_blank">Ahuka</a></td> </tr> <tr> <td><strong><a href="https://hackerpublicradio.org/eps/hpr4631/index.html" target="_blank">4631</a></strong></td> <td>Mon</td> <td class="shrink">2026-05-04</td> <td><a href="https://hackerpublicradio.org/eps/hpr4631/index.html" target="_blank">HPR Community News for April 2026</a></td> <td><a href="https://hackerpublicradio.org/correspondents/0159.html" target="_blank">HPR Volunteers</a></td> </tr> <tr> <td><strong><a href="https://hackerpublicradio.org/eps/hpr4632/index.html" target="_blank">4632</a></strong></td> <td>Tue</td> <td class="shrink">2026-05-05</td> <td><a href="https://hackerpublicradio.org/eps/hpr4632/index.html" target="_blank">Hackerpublic Radio New Years Eve Show 2026 Episode 6</a></td> <td><a href="https://hackerpublicradio.org/correspondents/0269.html" target="_blank">Honkeymagoo</a></td> </tr> <tr> <td><strong><a href="https://hackerpublicradio.org/eps/hpr4633/index.html" target="_blank">4633</a></strong></td> <td>Wed</td> <td class="shrink">2026-05-06</td> <td><a href="https://hackerpublicradio.org/eps/hpr4633/index.html" target="_blank">Ham Radio Licence</a></td> <td><a href="https://hackerpublicradio.org/correspondents/0403.html" target="_blank">Lee</a></td> </tr> <tr> <td><strong><a href="https://hackerpublicradio.org/eps/hpr4634/index.html" target="_blank">4634</a></strong></td> <td>Thu</td> <td class="shrink">2026-05-07</td> <td><a href="https://hackerpublicradio.org/eps/hpr4634/index.html" target="_blank">Upgrade Failsause</a></td> <td><a href="https://hackerpublicradio.org/correspondents/0036.html" target="_blank">operat0r</a></td> </tr> <tr> <td><strong><a href="https://hackerpublicradio.org/eps/hpr4635/index.html" target="_blank">4635</a></strong></td> <td>Fri</td> <td class="shrink">2026-05-08</td> <td><a href="https://hackerpublicradio.org/eps/hpr4635/index.html" target="_blank">What did I do at work today? Part 3 Section 1</a></td> <td><a href="https://hackerpublicradio.org/correspondents/0403.html" target="_blank">Lee</a></td> </tr> <tr> <td><strong><a href="https://hackerpublicradio.org/eps/hpr4636/index.html" target="_blank">4636</a></strong></td> <td>Mon</td> <td class="shrink">2026-05-11</td> <td><a href="https://hackerpublicradio.org/eps/hpr4636/index.html" target="_blank">7 seconds memory</a></td> <td><a href="https://hackerpublicradio.org/correspondents/0441.html" target="_blank">Antoine</a></td> </tr> <tr> <td><strong><a href="https://hackerpublicradio.org/eps/hpr4637/index.html" target="_blank">4637</a></strong></td> <td>Tue</td> <td class="shrink">2026-05-12</td> <td><a href="https://hackerpublicradio.org/eps/hpr4637/index.html" target="_blank">UNIX Curio #6 - at and batch</a></td> <td><a href="https://hackerpublicradio.org/correspondents/0459.html" target="_blank">Vance</a></td> </tr> <tr> <td><strong><a href="https://hackerpublicradio.org/eps/hpr4638/index.html" target="_blank">4638</a></strong></td> <td>Wed</td> <td class="shrink">2026-05-13</td> <td><a href="https://hackerpublicradio.org/eps/hpr4638/index.html" target="_blank">Simple Podcasting - Episode 3 - Analyzing and Filtering</a></td> <td><a href="https://hackerpublicradio.org/correspondents/0455.html" target="_blank">Whiskeyjack</a></td> </tr> <tr> <td><strong><a href="https://hackerpublicradio.org/eps/hpr4639/index.html" target="_blank">4639</a></strong></td> <td>Thu</td> <td class="shrink">2026-05-14</td> <td><a href="https://hackerpublicradio.org/eps/hpr4639/index.html" target="_blank">NLUUG Spring Conference 2026</a></td> <td><a href="https://hackerpublicradio.org/correspondents/0030.html" target="_blank">Ken Fallon</a></td> </tr> <tr> <td><strong><a href="https://hackerpublicradio.org/eps/hpr4640/index.html" target="_blank">4640</a></strong></td> <td>Fri</td> <td class="shrink">2026-05-15</td> <td><a href="https://hackerpublicradio.org/eps/hpr4640/index.html" target="_blank">Robert A. Heinlein</a></td> <td><a href="https://hackerpublicradio.org/correspondents/0198.html" target="_blank">Ahuka</a></td> </tr> <tr> <td><strong><a href="https://hackerpublicradio.org/eps/hpr4641/index.html" target="_blank">4641</a></strong></td> <td>Mon</td> <td class="shrink">2026-05-18</td> <td><a href="https://hackerpublicradio.org/eps/hpr4641/index.html" target="_blank">Technical Dutch Open Source Event (T-DOSE)</a></td> <td><a href="https://hackerpublicradio.org/correspondents/0030.html" target="_blank">Ken Fallon</a></td> </tr> <tr> <td><strong><a href="https://hackerpublicradio.org/eps/hpr4642/index.html" target="_blank">4642</a></strong></td> <td>Tue</td> <td class="shrink">2026-05-19</td> <td><a href="https://hackerpublicradio.org/eps/hpr4642/index.html" target="_blank">Hackerpublic Radio New Years Eve Show 2026 Episode 7</a></td> <td><a href="https://hackerpublicradio.org/correspondents/0269.html" target="_blank">Honkeymagoo</a></td> </tr> <tr> <td><strong><a href="https://hackerpublicradio.org/eps/hpr4643/index.html" target="_blank">4643</a></strong></td> <td>Wed</td> <td class="shrink">2026-05-20</td> <td><a href="https://hackerpublicradio.org/eps/hpr4643/index.html" target="_blank">HPR Beer Garden 13 - Triple IPA</a></td> <td><a href="https://hackerpublicradio.org/correspondents/0296.html" target="_blank">Kevie</a></td> </tr> <tr> <td><strong><a href="https://hackerpublicradio.org/eps/hpr4644/index.html" target="_blank">4644</a></strong></td> <td>Thu</td> <td class="shrink">2026-05-21</td> <td><a href="https://hackerpublicradio.org/eps/hpr4644/index.html" target="_blank">Response to comments on HPR4424: Newsboat...</a></td> <td><a href="https://hackerpublicradio.org/correspondents/0318.html" target="_blank">Archer72</a></td> </tr> <tr> <td><strong><a href="https://hackerpublicradio.org/eps/hpr4645/index.html" target="_blank">4645</a></strong></td> <td>Fri</td> <td class="shrink">2026-05-22</td> <td><a href="https://hackerpublicradio.org/eps/hpr4645/index.html" target="_blank">ZERO HOUR: FRIDAY AFTERNOON APK HACKING </a></td> <td><a href="https://hackerpublicradio.org/correspondents/0036.html" target="_blank">operat0r</a></td> </tr> <tr> <td><strong><a href="https://hackerpublicradio.org/eps/hpr4646/index.html" target="_blank">4646</a></strong></td> <td>Mon</td> <td class="shrink">2026-05-25</td> <td><a href="https://hackerpublicradio.org/eps/hpr4646/index.html" target="_blank">Mobile Gaming</a></td> <td><a href="https://hackerpublicradio.org/correspondents/0446.html" target="_blank">Elsbeth</a></td> </tr> <tr> <td><strong><a href="https://hackerpublicradio.org/eps/hpr4647/index.html" target="_blank">4647</a></strong></td> <td>Tue</td> <td class="shrink">2026-05-26</td> <td><a href="https://hackerpublicradio.org/eps/hpr4647/index.html" target="_blank">UNIX Curio #7 - Compression</a></td> <td><a href="https://hackerpublicradio.org/correspondents/0459.html" target="_blank">Vance</a></td> </tr> <tr> <td><strong><a href="https://hackerpublicradio.org/eps/hpr4648/index.html" target="_blank">4648</a></strong></td> <td>Wed</td> <td class="shrink">2026-05-27</td> <td><a href="https://hackerpublicradio.org/eps/hpr4648/index.html" target="_blank">Simple Podcasting - Episode 4 - Audio Analysis Fun</a></td> <td><a href="https://hackerpublicradio.org/correspondents/0455.html" target="_blank">Whiskeyjack</a></td> </tr> <tr> <td><strong><a href="https://hackerpublicradio.org/eps/hpr4649/index.html" target="_blank">4649</a></strong></td> <td>Thu</td> <td class="shrink">2026-05-28</td> <td><a href="https://hackerpublicradio.org/eps/hpr4649/index.html" target="_blank">What did I do at work today? Part 3 Section 2</a></td> <td><a href="https://hackerpublicradio.org/correspondents/0403.html" target="_blank">Lee</a></td> </tr> <tr> <td><strong><a href="https://hackerpublicradio.org/eps/hpr4650/index.html" target="_blank">4650</a></strong></td> <td>Fri</td> <td class="shrink">2026-05-29</td> <td><a href="https://hackerpublicradio.org/eps/hpr4650/index.html" target="_blank">Playing Civilization V, Part 12</a></td> <td><a href="https://hackerpublicradio.org/correspondents/0198.html" target="_blank">Ahuka</a></td> </tr> </table>  <h2>Comments this month</h2>  <h3>Past shows</h3> <ul> <li><strong><a href="https://hackerpublicradio.org/eps/hpr4424/index.html#comments" target="_blank">hpr4424</a></strong> (2025-07-17) "<em>How I use Newsboat for Podcasts and Reddit</em>" by <a href="https://hackerpublicradio.org/correspondents/0318.html" target="_blank">Archer72</a>.<br></li> <ul> <li><strong>أحمد المحمودي</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4424/index.html#comment_4721" target="_blank">How did I find HPR</a></em>" (2026-05-12 17:16:07)<br></li> <li><strong>candycanearter07</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4424/index.html#comment_4723" target="_blank">Re: How did I find HPR</a></em>" (2026-05-12 19:36:04)<br></li> </ul> <li><strong><a href="https://hackerpublicradio.org/eps/hpr4502/index.html#comments" target="_blank">hpr4502</a></strong> (2025-11-04) "<em>Cheap Yellow Display Project Part 3: Reverse beacon network </em>" by <a href="https://hackerpublicradio.org/correspondents/0394.html" target="_blank">Trey</a>.<br></li> <ul> <li><strong>Archer72</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4502/index.html#comment_4734" target="_blank">Morse code</a></em>" (2026-05-19 15:00:39)<br></li> </ul> <li><strong><a href="https://hackerpublicradio.org/eps/hpr4567/index.html#comments" target="_blank">hpr4567</a></strong> (2026-02-03) "<em>Movie Recommendations for Hackers</em>" by <a href="https://hackerpublicradio.org/correspondents/0194.html" target="_blank">Deltaray</a>.<br></li> <ul> <li><strong>Antoine</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4567/index.html#comment_4738" target="_blank">Some watched!</a></em>" (2026-05-27 03:33:12)<br></li> </ul> <li><strong><a href="https://hackerpublicradio.org/eps/hpr4587/index.html#comments" target="_blank">hpr4587</a></strong> (2026-03-03) "<em>UNIX Curio #1 - Shell Archives</em>" by <a href="https://hackerpublicradio.org/correspondents/0459.html" target="_blank">Vance</a>.<br></li> <ul> <li><strong>Dave Morriss</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4587/index.html#comment_4718" target="_blank">Great reminder! I had forgotten shar</a></em>" (2026-05-07 18:18:05)<br></li> <li><strong>Vance</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4587/index.html#comment_4719" target="_blank">Color printing</a></em>" (2026-05-08 22:02:23)<br></li> </ul> <li><strong><a href="https://hackerpublicradio.org/eps/hpr4607/index.html#comments" target="_blank">hpr4607</a></strong> (2026-03-31) "<em>UNIX Curio #3 - basename and dirname</em>" by <a href="https://hackerpublicradio.org/correspondents/0459.html" target="_blank">Vance</a>.<br></li> <ul> <li><strong>Vance</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4607/index.html#comment_4720" target="_blank">Correction</a></em>" (2026-05-12 01:03:12)<br></li> </ul> <li><strong><a href="https://hackerpublicradio.org/eps/hpr4618/index.html#comments" target="_blank">hpr4618</a></strong> (2026-04-15) "<em>Simple Podcasting - Episode 2 - Basic Filtering</em>" by <a href="https://hackerpublicradio.org/correspondents/0455.html" target="_blank">Whiskeyjack</a>.<br></li> <ul> <li><strong>Henrik Hemrin</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4618/index.html#comment_4725" target="_blank">Generating sine wave</a></em>" (2026-05-14 19:59:46)<br></li> <li><strong>Whiskeyjack</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4618/index.html#comment_4726" target="_blank">Reply to Henrik Hemrin on Sine Waves in HPR4618</a></em>" (2026-05-15 15:22:16)<br></li> </ul> <li><strong><a href="https://hackerpublicradio.org/eps/hpr4627/index.html#comments" target="_blank">hpr4627</a></strong> (2026-04-28) "<em>UNIX Curio #5 - Faster, Pussycat! Kill! Kill!</em>" by <a href="https://hackerpublicradio.org/correspondents/0459.html" target="_blank">Vance</a>.<br></li> <ul> <li><strong>Steve Barnes</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4627/index.html#comment_4735" target="_blank">Thanks for the context!</a></em>" (2026-05-21 05:28:05)<br></li> </ul> <li><strong><a href="https://hackerpublicradio.org/eps/hpr4628/index.html#comments" target="_blank">hpr4628</a></strong> (2026-04-29) "<em>Nuclear Power Technology Follow Up</em>" by <a href="https://hackerpublicradio.org/correspondents/0455.html" target="_blank">Whiskeyjack</a>.<br></li> <ul> <li><strong>Antoine</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4628/index.html#comment_4729" target="_blank">o/</a></em>" (2026-05-17 00:24:23)<br></li> <li><strong>Whiskeyjack</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4628/index.html#comment_4731" target="_blank">Reply to Antoine on HPR4628</a></em>" (2026-05-17 18:08:18)<br></li> </ul> </ul> <h3>This month's shows</h3> <ul> <li><strong><a href="https://hackerpublicradio.org/eps/hpr4631/index.html#comments" target="_blank">hpr4631</a></strong> (2026-05-04) "<em>HPR Community News for April 2026</em>" by <a href="https://hackerpublicradio.org/correspondents/0159.html" target="_blank">HPR Volunteers</a>.<br></li> <ul> <li><strong>Whiskeyjack</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4631/index.html#comment_4713" target="_blank">Response to Ken Fallon in HPR4631 Community News</a></em>" (2026-05-04 05:13:02)<br></li> <li><strong>candycanearter07</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4631/index.html#comment_4714" target="_blank">new episodes</a></em>" (2026-05-04 18:47:39)<br></li> <li><strong>Ken Fallon</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4631/index.html#comment_4715" target="_blank">new candycanearter07 episodes</a></em>" (2026-05-05 09:00:00)<br></li> <li><strong>أحمد المحمودي</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4631/index.html#comment_4722" target="_blank">Thanks for the encouragement</a></em>" (2026-05-12 17:18:20)<br></li> </ul> <li><strong><a href="https://hackerpublicradio.org/eps/hpr4634/index.html#comments" target="_blank">hpr4634</a></strong> (2026-05-07) "<em>Upgrade Failsause</em>" by <a href="https://hackerpublicradio.org/correspondents/0036.html" target="_blank">operat0r</a>.<br></li> <ul> <li><strong>YourName</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4634/index.html#comment_4716" target="_blank">Why is the audio so bad OMG sorry</a></em>" (2026-05-06 20:05:43)<br></li> <li><strong>Ken Fallon</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4634/index.html#comment_4717" target="_blank">Already reported and fixed</a></em>" (2026-05-06 20:35:49)<br></li> </ul> <li><strong><a href="https://hackerpublicradio.org/eps/hpr4637/index.html#comments" target="_blank">hpr4637</a></strong> (2026-05-12) "<em>UNIX Curio #6 - at and batch</em>" by <a href="https://hackerpublicradio.org/correspondents/0459.html" target="_blank">Vance</a>.<br></li> <ul> <li><strong>candycanearter07</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4637/index.html#comment_4724" target="_blank">still useful!</a></em>" (2026-05-13 03:43:37)<br></li> <li><strong>norrist</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4637/index.html#comment_4727" target="_blank">at for scheduled reboots</a></em>" (2026-05-16 19:41:04)<br></li> <li><strong>Vance</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4637/index.html#comment_4730" target="_blank">Good points</a></em>" (2026-05-17 03:03:47)<br></li> <li><strong>Whiskeyjack</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4637/index.html#comment_4732" target="_blank">At and batch in HPR4637</a></em>" (2026-05-17 18:35:11)<br></li> </ul> <li><strong><a href="https://hackerpublicradio.org/eps/hpr4640/index.html#comments" target="_blank">hpr4640</a></strong> (2026-05-15) "<em>Robert A. Heinlein</em>" by <a href="https://hackerpublicradio.org/correspondents/0198.html" target="_blank">Ahuka</a>.<br></li> <ul> <li><strong>Antoine</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4640/index.html#comment_4728" target="_blank">Nice tips</a></em>" (2026-05-17 00:22:01)<br></li> <li><strong>Kevin O'Brien</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4640/index.html#comment_4733" target="_blank">I enjoyed doing it</a></em>" (2026-05-17 19:14:19)<br></li> </ul> <li><strong><a href="https://hackerpublicradio.org/eps/hpr4646/index.html#comments" target="_blank">hpr4646</a></strong> (2026-05-25) "<em>Mobile Gaming</em>" by <a href="https://hackerpublicradio.org/correspondents/0446.html" target="_blank">Elsbeth</a>.<br></li> <ul> <li><strong>candycanearter07</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4646/index.html#comment_4736" target="_blank">my opinion of mobile gaming</a></em>" (2026-05-27 00:24:58)<br></li> </ul> <li><strong><a href="https://hackerpublicradio.org/eps/hpr4647/index.html#comments" target="_blank">hpr4647</a></strong> (2026-05-26) "<em>UNIX Curio #7 - Compression</em>" by <a href="https://hackerpublicradio.org/correspondents/0459.html" target="_blank">Vance</a>.<br></li> <ul> <li><strong>xmanmonk</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4647/index.html#comment_4737" target="_blank">Great Series</a></em>" (2026-05-27 00:29:32)<br></li> <li><strong>candycanearter07</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4647/index.html#comment_4739" target="_blank">thoughts</a></em>" (2026-05-27 13:20:13)<br></li> </ul> </ul> <h2>Mailing List discussions</h2> <p>Policy decisions surrounding HPR are taken by the community as a whole. This discussion takes place on the <a href="https://lists.hackerpublicradio.com/mailman/listinfo/hpr" target="_blank">Mailing List</a> which is open to all HPR listeners and contributors. The discussions are open and available on the HPR server under <a href="https://lists.hackerpublicradio.com/pipermail/hpr">Mailman</a>. </p> <p>The threaded discussions this month can be found here:</p> <a href="https://lists.hackerpublicradio.com/pipermail/hpr/2026-May/thread.html" target="_blank">https://lists.hackerpublicradio.com/pipermail/hpr/2026-May/thread.html</a>  <h2>Events Calendar</h2> <p>With the kind permission of <strong>LWN.net</strong> we are linking to <a href="https://lwn.net/Calendar/" target="_blank">The LWN.net Community Calendar</a>.</p> <p>Quoting the site:</p> <blockquote>This is the LWN.net community event calendar, where we track events of interest to people using and developing Linux and free software. Clicking on individual events will take you to the appropriate web page.</blockquote> <!-- HPRCN:month=2026-05,latest_comment=4739,latest_host=460,latest_episode=4650 --><p><a href="https://hackerpublicradio.org/eps/hpr4651/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4650: Playing Civilization V, Part 12]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.
In our sample game we look at playing as Austria and aiming for a Diplomatic Victory. And our focus is on puppeting Citty-States, but be I misunderstood and instead of making a Diplomatic Victory easier, it makes it harder. I still managed to get m...]]></description>
<link>https://tsecurity.de/de/3555758/it+sicherheit/it+podcasts/hpr4650+playing+civilization+v+part+12/</link>
<pubDate>Fri, 29 May 2026 02:03:08 +0200</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>
<p>In our sample game we look at playing as Austria and aiming for a Diplomatic Victory. And our focus is on puppeting Citty-States, but be I misunderstood and instead of making a Diplomatic Victory easier, it makes it harder. I still managed to get my Diplomatic Victory, but a Science or Domination Victory would definitely have been easier in this scenario.</p>
<h1 class="entry-title">Playing Civilization V, Part 12</h1>
<h2>A Diplomatic Victory Strategy</h2>

<p>Civilization V introduced a new Victory type and I thought it might be fun to try this strategy for a sample game to see broadly how this would work. I decided I would play as Austria on Prince level, which means that all players are equal and no one is favored. For my map I chose Fractal, Map Size = Standard, Game speed = Standard. My only Advanced Option was Quick Combat, because I didn’t need to see that drawn out, particularly since I plan to avoid combat as much as necessary. My leader is Maria Theresa, and her Austria has a unique ability called Diplomatic Marriage. This allows us to either Annex or Puppet any city-state that has been allied to us for 5 turns with the proper expenditure of Gold. My plan was to use this to Puppet the city-states to control their votes for the Diplomatic Victory, but that was a misunderstanding. I actually implemented one of the hardest ways to win a Diplomatic Victory. But that is what I did. Now to get them to ally with me the most effective way to do this is with cash and lots of it, and of course even more cash to actually effect to Puppeting of them. So my overriding objective in this game is to amass a large Treasury. But of course I cannot ignore my military either, since a weak military invites attacks form greedy neighbors. And I may need to “liberate” the occasional city-state if another player conquers them. Austria also has a Unique Unit, the Hussar, which replaces the Cavalry unit. It can move after attacking, has a flanking bonus, and has one extra movement. And the Unique Building is the Coffee House, which increases the generation of Great People in the city by 25%. So you can expect me to build these in every city as well.</p>

<p>With that in mind, I started the game and settled in place, I had Mountains nearby, but also Sheep and Silver within my city, so some useful resources. I immediately started to produce a Scout as my first unit, and sent my Warrior out to explore. In the very early stage I focus on exploring the surrounding area and finding any Goody Huts, i.e. Ruins. My initial city site is not exactly ideal, as it is all hilly with Jungle nearby. After building my two Scouts, my next priority was to build a Worker unit to increase the productivity of my city. And for my first social policy I unlocked Tradition. When I got my second policy I picked Oligarchy, and plan to complete all of the Tradition tree. I cleared out a Barbarian encampment, and then discovered my first City-state, Vilnius. Then I needed to clear out another Barbarian encampment that was blocking me from finishing my exploration. Meanwhile I am focusing on getting techs for sailing the ocean blue, because that is how I plan to get trade routes, discover City-states I can puppet, and so on.</p>

<p>Because money is key to my strategy I made a beeline for Currency in the my Science research. And while headed there I completed the Tradition tree. When I can get there I will work on the Commerce tree to maximize my cash, but until then the Patronage tree will let me improve my City-state relations, which is important for improving my relationships with City-states. After all, you need to be allies with them for 5 turns before you can puppet them. I now have three cities, and can probably squeeze out a few more, which should be sufficient to my needs. </p>

<p>At Turn 141 I have 6 cities, which is all I will build in this game. I now have the technology to build Workshops, which are the first productivity boosters available, so I set all my cities to building them. For Research my immediate object was to get to Compass so I could build the Galleass, which would let me do more ocean exploration. But to go into deep Ocean I will need to go further to get Astronomy, which will let me build the Caravel which can enter deep ocean.  Once I got that I switched to Banking, not just for the money, but as a prerequisite to building the Forbidden Palace, which grants two additional delegates in the World Congress/United Nations. When I get Banking I’ll go back to Astronomy, and then Navigation, to advance my seagoing capabilities.</p>

<p>By Turn 216 I had gotten Banking and started on the Forbidden Palace. And by luck, just as I got started I got a Great Engineer. I am holding him in reserve in case I need to hurry production, since Great Engineers are the only way to do that in Civ 5. I also picked up Astronomy, which will let me build Caravels to explore the whole ocean. My next research priority will be Gunpowder since it is time to beef up my defenses.</p>

<p>At Turn 240 my Caravels started to come out, and I found several new City-States. And since my Treasury is healthy (I started with 6,000 gold, and I’m bringing in 100 each turn), I began the process of puppeting the City-states. </p>

<h2>Puppeting City-states as Austria</h2>

<p>Let’s look at this in detail since it is important. The requirements are 2 things:</p>

<ul>
<li>Be allied with the City-state for 5 consecutive turns</li>

<li>Have the cash needed. This amount is not too much early on, but it rises over time.</li>
</ul>

<p>So, how do you become allies with a City-state? There are a number of things you can do to improve your relationship. You can take on a quest that a City-state has published, which can be things like “Find another Natural Wonder” or “Create a Great Admiral”. These quests pop up continuously throughout the game, and you are free to ignore them, but fulfilling one will improve your relationship. Trade will also improve your relationship, so in this game all of my Trade routes were made with City-states. If you are in a position to have a successful war, you can find a former City-state that was conquered by one of the other Empires, liberate it, and then it will be your ally for the rest of the game. Giving them presents is how I usually do it, though. You can give them units or money. If your purpose is to get allies, money works best. But I do gift units in 2 circumstances. First, if I have obsolete units, giving them away might be better then deleting them. Second, if a City-state is under attack by another Empire. Gifting them units might help them hold out and make life difficult for a rival.</p>

<p>The place where all of this is done is the City-state screen which opens up when you click on the bar above the City-state, which is where you handle all of your relationships. At the top of this screen you see your current status, which more often than not will be Neutral, which is how all City-state relationships start out. But you can get them angry by, for instance, moving a unit of your into their territory. If you only do it once, and give them time to get over it, they will go back to Neutral. You can also improve the relationship by pledging to protect them, but be careful. If they get attacked and you do not try to protect them, they will get very angry. Giving a gift opens a pop-up to say what kind of gift: 250 gold, 500 gold, 1000 gold, or a Unit. Note that a Unit is only worth 5 influence points, while 250 Gold is worth 20, so as I said Money is more powerful if your aim is to improve your status with them.</p>

<p>So at Turn 242 I found the City-state of Singapore, and it appears that I was the first Empire to find them. So I immediately pledged to protect them. My Influence with them was 20, which is Neutral. We just met, and that is where things stand on first meeting. The be Friends you need to get to 30, and to be allies you need to get to 60. When I clicked Next Turn, I got a Quest from Singapore. They were worried about a Barbarian Encampment nearby, and if I cleared it out I would get additional influence with them. In this case, though, I let that go by. I want to move more quickly, and Singapore is across the Ocean from me. My influence with them at this point was 21, so only a modest increase. But I have 6038 Gold in my Treasury, and I am bringing in 102 per turn. So let’s see what a gift of 500 Gold will do. It brings me to 65 influence, so we are now Allies. But when I mouse-over Singapore, the pop-up window reminds me that my Influence will decrease by 1.12 per turn. For an Empire other than Austria this would mean a regular infusion of cash to keep up your status. And I have won Diplomatic victories with other Empires by saving up a lot of cash and dumping it on City-states just before the United Nations vote. </p>

<p>But for Austria you have special ability called Diplomatic Marriage that lets you turn the City-state into a Puppet, and that is permanent. But it also presents some obstacles as we will see. We are allies now, but my influence will drop by 1 each turn, and I might lose my allyship before I can puppet them. But I can gift a unit and get another 5, and I happen to have a very obsolete Warrior unit that will serve the purpose. However, it takes three turns for the Unit to arrive, so I lose few more points.  At Turn 247 I can now use the diplomatic Marriage option to make a puppet of Singapore. Prior to doing this I was fourth in score with 604, while the leader had 729. My Happiness Level was +25, and I now had 5833 Gold in my Treasury. Then I made Singapore a puppet, and now I am third in the game with a score of 664. My Treasury has fallen to 5258, which means it cost me 575 Gold. But most significant is that my Happiness fell from +25 to +9, which is a huge loss. I have enough gold to puppet 4-5 more City-states at this time but if I did I would have rebellions breaking out and my Empire would eventually collapse. </p>

<p>This is the obstacle that Austria has to face. We need to promote Happiness before we go much further with making puppets. Civ is always a game of balances.</p>
<h3>Links</h3>
<ul>
<li><a href="https://civilization.fandom.com/wiki/City-state_(Civ5)">https://civilization.fandom.com/wiki/City-state_(Civ5)</a></li>
<li><a href="https://civilization.fandom.com/wiki/Austrian_(Civ5)">https://civilization.fandom.com/wiki/Austrian_(Civ5)</a></li>
<li><a href="https://www.palain.com/gaming/civilization-v/playing-civilization-v-part-12/">https://www.palain.com/gaming/civilization-v/playing-civilization-v-part-12/</a></li>
</ul>

<p><a href="https://hackerpublicradio.org/eps/hpr4650/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4649: What did I do at work today? Part 3 Section 2]]></title>
<description><![CDATA[This show has been flagged as Explicit by the host.




It is suggested reviewing the episode 
What did I do at work today? Part 3 Section 1
 prior to listening










Test driven development
 - a way of writing code that involves writing an automated unit-level test case that fails, the...]]></description>
<link>https://tsecurity.de/de/3553083/it+sicherheit/it+podcasts/hpr4649+what+did+i+do+at+work+today+part+3+section+2/</link>
<pubDate>Thu, 28 May 2026 07:47:58 +0200</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Explicit by the host.</p>

<p>

<em>
It is suggested reviewing the episode <u>
What did I do at work today? Part 3 Section 1</u>
 prior to listening</em>

</p>

<p>

</p>

<p>

<strong>
Test driven development</strong>
 - a way of writing code that involves writing an automated unit-level test case that fails, then writing just enough code to make the test pass, then refactoring both the test code and the production code, then repeating with another new test case. - <a href="https://en.wikipedia.org/wiki/Test-driven_development" rel="noopener noreferrer" target="_blank">
https://en.wikipedia.org/wiki/Test-driven_development</a>

</p>

<p>

</p>

<p>

<strong>
Joplin</strong>
 - Joplin is an open source, cross platform note-taking app. - <a href="https://joplinapp.org/" rel="noopener noreferrer" target="_blank">
https://joplinapp.org/</a>

</p>

<p>

</p>

<p>

<strong>
PHP</strong>
 - A popular general-purpose scripting language that is especially suited to web development. Fast, flexible and pragmatic, PHP powers everything from your blog to the most popular websites in the world. - <a href="https://www.php.net/" rel="noopener noreferrer" target="_blank">
https://www.php.net/</a>

</p>

<p>

</p>

<p>

<strong>
MySQL</strong>
 - MySQL is an open-source relational database management system. MariaDB is a community developed fork of MySQL, often installing the MySQL package on a Linux distribution will actually install MariaDB. - <a href="https://en.wikipedia.org/wiki/MySQL" rel="noopener noreferrer" target="_blank">
https://en.wikipedia.org/wiki/MySQL</a>
 - <a href="https://mariadb.org/" rel="noopener noreferrer" target="_blank">
https://mariadb.org/</a>
 - <a href="https://www.mysql.com/" rel="noopener noreferrer" target="_blank">
https://www.mysql.com/</a>

</p>

<p>

</p>

<p>

<strong>
Sublime Text</strong>
 - Cross platform text editor - <a href="https://www.sublimetext.com/" rel="noopener noreferrer" target="_blank">
https://www.sublimetext.com/</a>

</p>

<p>

</p>

<p>

<strong>
Nmap</strong>
 - Network Mapper is a free and open source utility for network discovery and security auditing - <a href="https://nmap.org/" rel="noopener noreferrer" target="_blank">
https://nmap.org/</a>

</p>

<p>

</p>

<p>

<strong>
Markdown Fenced code blocks</strong>
 - "A code fence is a sequence of at least three consecutive backtick characters (`) or tildes (~). (Tildes and backticks cannot be mixed.) A fenced code block begins with a code fence, preceded by up to three spaces of indentation. The line with the opening code fence may optionally contain some text following the code fence; this is trimmed of leading and trailing spaces or tabs and called the info string. ... Although this spec doesn’t mandate any particular treatment of the info string, the first word is typically used to specify the language of the code block."</p>

<p>

</p>

<pre data-language="plain">
```ruby
def foo(x)
 return 3
end
```
</pre>

<p>

</p>

<p>

<em>
from CommonMark Spec at <a href="https://commonmark.org/" rel="noopener noreferrer" target="_blank">
https://commonmark.org/</a>
 (CommonMark is a standard, interoperable and testable version of Markdown.)</em>

</p>

<p>

</p>

<p>

<u>
Writing to a Database with PHP</u>

</p>

<p>

</p>

<p>
The following PHP method is implemented within a database access class:</p>

<p>

</p>

<pre data-language="plain">
function create_with_id($id, $name) {
  $born = time();
  $id = mysqli_real_escape_string($this-&gt;db, $id);
  $name = mysqli_real_escape_string($this-&gt;db, $name);
  $sql = "INSERT INTO object
      (object_id, display_name_text, born, died)
    VALUES
      ($id, '$name', $born, 0);
  ";
  db_run_sql($this-&gt;db, $sql);
}
</pre>

<p>

</p>

<p>

<em>
Note </em>

<strong>

<em>
db_run_sql</em>

</strong>

<em>
 is a helper function defined elsewhere, not a built in function, and the property </em>

<strong>

<em>
db</em>

</strong>

<em>
 is a previously initialized </em>

<strong>

<em>
mysqli</em>

</strong>

<em>
 object.</em>

</p>


<p><a href="https://hackerpublicradio.org/eps/hpr4649/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4648: Simple Podcasting - Episode 4 - Audio Analysis Fun]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.


01


This is the fourth episode in a four part series on simple podcasting.






02 Introduction


In this episode we will discuss alternatives to Audacity when it comes to analyzing audio spectrums to find the sources of unwanted noise.

...]]></description>
<link>https://tsecurity.de/de/3549503/it+sicherheit/it+podcasts/hpr4648+simple+podcasting+-+episode+4+-+audio+analysis+fun/</link>
<pubDate>Wed, 27 May 2026 02:01:50 +0200</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>

<p>
01</p>

<p>
This is the fourth episode in a four part series on simple podcasting.</p>

<p>

</p>

<p>
02 Introduction</p>

<p>
In this episode we will discuss alternatives to Audacity when it comes to analyzing audio spectrums to find the sources of unwanted noise.</p>

<p>
I previously promised some gratuitous hackery, and we will get into that in this episode.</p>

<p>

</p>

<p>
03</p>

<p>
Recall that with Audacity you first import the audio file, then select the part of the audio you wish to analyze (or ctrl-A for all), and then select analyze &gt; plot spectrum.</p>

<p>
This is in fact the only feature of Audacity that I know how to use. I am definitely not an audio expert.</p>

<p>
I do however have some background in processing and analyzing other signals, so some of the basics are familiar to me. </p>

<p>

</p>

<p>
04</p>

<p>
We can accomplish the same thing that Audacity does in this instance provided we can do the following.</p>

<p>
First, we need to get the data out of the audio file and into a form which we can import into other software.</p>

<p>
Second, we need to perform certain mathematical operations on this data.</p>

<p>
Finally, we need to be able to plot the results of these calculations on a chart.</p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>
05 Fourier Transforms</p>

<p>
First though, we need a bit of mathematical background.</p>

<p>
What Audacity is doing when it shows a plot of frequency versus amplitude is that it is showing the results of a Fourier Transform.</p>

<p>
A Fourier Transforms is a mathematical operation that converts the time domain into the frequency domain. </p>

<p>
Any complex signal, audio or otherwise, can be broken down into a collection of sine waves of various frequencies. </p>

<p>
For example, a simple square wave signal of say 100 hertz can be represented as a sine wave of frequency 100 hertz plus a collection of higher frequency sine waves which add together to give the sharp corners.</p>

<p>

</p>

<p>
06</p>

<p>
A Fourier Transform finds these sine waves and sorts them out into separate bins, with each bin representing an individual frequency or a collection of closely related frequencies, depending on how fine grained the sorting is.</p>

<p>

</p>

<p>
07</p>

<p>
This is exactly what we want when we are trying to figure out how to filter out noise. </p>

<p>
Recall that earlier in this series we had to solve a problem with a high pitched background noise which was originating in my cheap microphone. </p>

<p>
Analyzing this audio by frequency showed that it was a series of individual tones at 1 kHz intervals.</p>

<p>
We were then able to use filters targeted at those frequencies to get rid of that noise.</p>

<p>

</p>

<p>
08</p>

<p>
There are several optimized versions of the Fourier Transform algorithm.</p>

<p>
A very common one is the Fast Fourier Transform, common abbreviated to just "FFT".</p>

<p>
This is so common that the term "FFT" is often used to simply mean any Fourier Transform even though this is not technically correct.</p>

<p>

</p>

<p>
09</p>

<p>
Typical FFT algorithms require that the number of data samples is exactly a power of two. </p>

<p>
So the number of samples we need may be something like 4096, 8192, or 65536, to give a few random examples.</p>

<p>
When we transform from the time domain to the frequency domain, each sample becomes a single frequency "bin". So the more samples we have, the finer the resolution we get in terms of frequency.</p>

<p>

</p>

<p>
10</p>

<p>
If we assume we are dealing with flac files recorded at a 44.1 kHz sample rate, that is, 44100 samples per second, then if we have 32768 samples, each "bin" represents slightly more than 1 hertz. </p>

<p>
If we have 65536 samples, then each "bin" represents a fraction of a hertz.</p>

<p>
For our purposes we will pick 65536 samples.</p>

<p>
That means we need 1.48 seconds of data.</p>

<p>
For simplicity's sake we will record at least 2 seconds of data and then just discard the samples that we don't need.</p>

<p>

</p>

<p>
11</p>

<p>
There is a further complication here. Fourier Transforms normally work with complex numbers.</p>

<p>
Recall from your school days that as well as integers and real numbers there are complex numbers. </p>

<p>
Each complex number consists of two parts, a real component and an imaginary component. </p>

<p>
I won't go into the details of this, just accept that each sample needs to have two components.</p>

<p>
Fortunately, if we don't have complex number data we can just set the imaginary component to zero and use that.</p>

<p>

</p>

<p>
This is enough talking about the theory, let's get into the practical details. </p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>

</p>

<p>
12 Extracting Data from Audio Files</p>

<p>
First we will look at how to extract the data from the audio files.</p>

<p>
Fortunately, one of the programs which we have already been using can do this.</p>

<p>

</p>

<p>
To do this we will use Sox.</p>

<p>
I am not aware of an equivalent feature in ffmpeg.</p>

<p>

</p>

<p>
13</p>

<p>
Sox calls itself "SoX - Sound eXchange, the Swiss Army knife of audio manipulation"</p>

<p>
Sox is free software and is licensed under the GPLV2 or later.</p>

<p>

</p>

<p>
In this case we want to use a feature which allows us to convert a binary audio signal file to a text data file.</p>

<p>

</p>

<p>
To convert the file to text data we just give the output file a ".dat" file extension and Sox will do this for us.</p>

<p>

</p>

<p>
14</p>

<p>
Here is a command example.</p>

<p>
sox inputfile.flac tdata.dat</p>

<p>

</p>

<p>
15</p>

<p>
This gives us a file in the following format, assuming this is a mono audio recording.</p>

<p>

</p>

<p>
; Sample Rate 44100</p>

<p>
; Channels 1</p>

<p>
			   0   0.045471191406 </p>

<p>
   2.2675737e-05   0.055023193359 </p>

<p>
   4.5351474e-05   0.048217773438 </p>

<p>
   6.8027211e-05   0.053192138672 </p>

<p>

</p>

<p>
etc.</p>

<p>

</p>

<p>
The first line states the sample frequency</p>

<p>
The second line states that the data is for channel 1.</p>

<p>
The data starts on the third line.</p>

<p>
Column 1 is the time in seconds.</p>

<p>
Column 2 is the waveform data point.</p>

<p>

</p>

<p>
16</p>

<p>
To analyze the data we want a subset of these samples.</p>

<p>
When we convert from the time domain to the frequency domain, our resolution will be determined by the number of samples. We would like therefore to have at least as many samples as the sampling rate.</p>

<p>
We also want the samples size to be an even multiple of two.</p>

<p>
The number of points we want to have is equal to the next even multiple of two above our chosen sampling rate, 44,100 Hz.</p>

<p>
This number would be 65536.</p>

<p>

</p>

<p>
17</p>

<p>
To extract this data from the file we can do the following.</p>

<p>
tail tdata.dat -n+3 | head -n65536 | awk '{printf "%s\n", $2}' &gt; tdata.csv</p>

<p>

</p>

<p>
18</p>

<p>
We use tail to skip over the first three lines.</p>

<p>
We use head to take the next 65536 lines and discard the rest.</p>

<p>
We use awk to extract the second column which we will use as the real component. </p>

<p>

</p>

<p>
We now have this data as a csv file in one column.</p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>
19 Analyzing the Data</p>

<p>
To analyze the data we need software which can calculate FFTs.</p>

<p>
I will now show two examples of this, a very simple case using Libre Office Calc, and a more complex but more complete one using GNU Octave.</p>

<p>

</p>

<p>
20 Using Libre Office</p>

<p>
We can do fourier analysis and plot charts using Libre Office.</p>

<p>

</p>

<p>
Take the csv file of data that we previously created.</p>

<p>
For this example I used data from a recording of silence so that I could see what internal noise was being generated by the headset.</p>

<p>
Open the csv file and import it into Libre Office Calc.</p>

<p>

</p>

<p>
21</p>

<p>
Now select all 65536 rows of column A.</p>

<p>
The Fourier function will automatically fill the imaginary component with zeros if we don't provide an column of imaginary numbers, so we don't need to provide a column of zeros.</p>

<p>
Then select Data &gt; Statistics &gt; Fourier Analysis.</p>

<p>

</p>

<p>
22</p>

<p>
A window will open allowing you to select various parameters.</p>

<p>
For Results to:, enter "D1".</p>

<p>
Grouped by Columns.</p>

<p>
Select OK.</p>

<p>

</p>

<p>
23</p>

<p>
New data should now appear starting in cell D1.</p>

<p>
The first line will say " Fourier Transform"</p>

<p>
The second line will state the input range.</p>

<p>
The third line will state "Real" in column D, and "Imaginary" in column E.</p>

<p>
The data will start in row 4.</p>

<p>

</p>

<p>
24</p>

<p>
For our simple example we will ignore the imaginary data and just use the real data, which will form our Y component when we plot it on a chart.</p>

<p>
We now need to create the X axis data.</p>

<p>

</p>

<p>
25</p>

<p>
Each cell is a "bin" of frequencies.</p>

<p>
Each cell therefore represents (sample frequency) / (Number of samples) Hz.</p>

<p>

</p>

<p>
26</p>

<p>
To create the X axis data showing frequency, enter the following formula in to column C to the left of each D column number.</p>

<p>
=((44100/65536) * (ROW() - 4)</p>

<p>

</p>

<p>
27</p>

<p>
We can now create an XY chart showing the frequency analysis. </p>

<p>
You may need to exclude the first couple of dozen rows as very low frequency components which cannot be heard may otherwise overwhelm the data we are interested in.</p>

<p>
Also, you only need the first half of the chart. </p>

<p>
The FFT mirrors the data from the first half of the array into the second half.</p>

<p>

</p>

<p>
28</p>

<p>
Because characterizing a sine wave requires a minimum of 2 points, although we have a sample frequency of 44.1 kHz, we really only have sound waves up to a maximum of half that, or 22.05 kHz.</p>

<p>
Create the chart with lines only.</p>

<p>
If you followed the above instructions, you should see something resembling what we saw in Audacity, except with each bin more sharply defined.</p>

<p>

</p>

<p>
29</p>

<p>
In the data that I had from a recording of unfiltered headset noise, I could see a distinct noise spike every 1000 hertz. </p>

<p>

</p>

<p>
30</p>

<p>
However, we have taken several shortcuts.</p>

<p>
First, the imaginary component of the data was ignored.</p>

<p>
Second, the magnitude (that is, Y axis) has both positive and negative peaks. </p>

<p>
Third, the data is not scaled to dB sound units, so we just have a relative measure.</p>

<p>
However, that by itself is enough to tell us where the frequencies are that we need to construct filters to deal with.</p>

<p>

</p>

<p>
31</p>

<p>
We could refine this spreadsheet a  bit more to deal with the above issues, but I think we have demonstrated the basic principle, and working with a spreadsheet can be a bit awkward.</p>

<p>

</p>

<p>
However, if working with a spreadsheet is what you want to do, then you can add more columns and more formulae to improve on it.</p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>
32 Other Analysis Software</p>

<p>
I will go on to GNU Octave in a moment, but I want to get a few other alternatives out of the way first.</p>

<p>
I won't go into any detail on them other than to point them out to people who want to have a go at trying these themselves.</p>

<p>

</p>

<p>
33 Grace</p>

<p>
There is math and plotting software called Grace.</p>

<p>
This is free software, released under the GPL V2.</p>

<p>
According to the documentation, it seems to have the features we need, including an FFT function.</p>

<p>
However, I could not get it to work properly  on Ubuntu 24.04.</p>

<p>
I could not get it to load a data file and plot data.</p>

<p>

</p>

<p>
34</p>

<p>
The error messages were vague and unhelpful. </p>

<p>
The file navigation system didn't work. </p>

<p>
There was no obvious path to success, and if it isn't easy to use then there is no point to it.</p>

<p>
This is fairly old software, designed for X Window and Motif. </p>

<p>
I gave up on it as not suitable for this series as I am looking for some fairly low effort things for people to try themselves.</p>

<p>
If someone else can get it to work on their PC, perhaps they could do an HPR episode on this themselves.</p>

<p>

</p>

<p>
35 Command Line FFT Packages</p>

<p>
There are several command line FFT packages.</p>

<p>
They will read data from std in or from a file and output the FFT.</p>

<p>
However, these are not packaged for Ubuntu and appear to be distributed as C source code which you would download and compile.</p>

<p>
You can experiment with those if you wish, but I felt they were a bit out of scope for discussion here as I am looking at common tools that are ready to use.</p>

<p>

</p>

<p>
36</p>

<p>
Here are two examples.</p>

<p>
One is</p>

<p>
Command-line Fast Fourier Transform utility</p>

<p>
https://github.com/gregfjohnson/fft</p>

<p>

</p>

<p>
Another is</p>

<p>
cli-fft</p>

<p>
https://github.com/jonolafur/cli-fft</p>

<p>

</p>

<p>
37</p>

<p>
I have not tried these and cannot say whether they are any good or not. </p>

<p>

</p>

<p>
Similarly, there are a number of FFT packages that are libraries for languages such as Python. </p>

<p>
If you want to take the time to write a short program to go with them, you can create a dedicated FFT command line program.</p>

<p>
However, I felt that this too was out of scope for what I was trying to do here.</p>

<p>

</p>

<p>
38 Doing it the Hard Way</p>

<p>
Hypothetically, it may be possible to write an FFT function in bash bc, which is the arbitrary precision calculator language which is part of the standard shell package. </p>

<p>

</p>

<p>
I say hypothetically, because I have not tried it.</p>

<p>
I think it would be an interesting challenge, but I don't have the time at the moment to try it.</p>

<p>
If anyone feels motivated to give it a try, they're welcome to give it a go and then do a podcast episode on it. </p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>
39 GNU Octave</p>

<p>

</p>

<p>
We have seen that as well as using features built into Audacity to analyze the audio spectrum to see the frequencies of undesired noises, we were able to do the same using a Libre Office spreadsheet.</p>

<p>

</p>

<p>
40</p>

<p>
Now we'll look at another bit of software, GNU Octave. GNU Octave is free software, licensed under the GPL V3 or later. It is a mathematical scripting language, very similar to Matlab. People use it for mathematical, engineering, and scientific work. It can be found in most Linux distros and is available for some other operating systems as well. </p>

<p>

</p>

<p>
41</p>

<p>
Octave has two features built in that we need for our purposes. It does FFTs, and it has a plotting system built in to produce graphs.</p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>
42</p>

<p>
We will take the same audio test file that we used with Audacity and Libre Office and use it here as well.</p>

<p>

</p>

<p>
The bash script to convert the flac file to text data is essentially the same, with the exception that file extension on the output file as is ".txt" instead of ".csv". This latter change was an arbitrary decision on my part.</p>

<p>

</p>

<p>
43</p>

<p>
As a quick review, this bash script uses sox to convert a flac file to a text ".dat" file.</p>

<p>
Then it uses tail, head, and awk to extract the first 65536 rows of data, skipping over the header information and ignoring the first column of time data.</p>

<p>
This script will be in the show notes.</p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>
#!/bin/bash</p>

<p>

</p>

<p>
# This version is for use with the GNU Octave script.</p>

<p>

</p>

<p>
sox hsnoisemono.flac hsnoisemono.dat</p>

<p>

</p>

<p>
tail hsnoisemono.dat -n+3 | head -n65536 | awk '{printf "%s\n", $2}' &gt; hsnoisemono.txt</p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>
44</p>

<p>
We now have a 1.1 MB file containing 65536 samples of data in text format. </p>

<p>

</p>

<p>
Now the next thing we need to do is to create a short Octave script file. </p>

<p>
I will just give a brief overview of the script here, the full script will be in the show notes.</p>

<p>

</p>

<p>
45</p>

<p>
I put the script in a file called "octavespectrum.m". I have never used Octave before now, but the convention seems to be to give the script a ".m" ending.</p>

<p>

</p>

<p>
The "she-bang" line is "#!/usr/bin/env octave". If you make the file executable you can run it like any other script, or you can type "octave" and then the name of the script to run.</p>

<p>

</p>

<p>
46</p>

<p>
I won't read out the script in detail, as that would be too hard to following along in a podcast.</p>

<p>

</p>

<p>
However, I pass several arguments to the script including the name of the data file, and then two integers that I use to limit the display area in the Y and X axes so I can have the chart focus on the areas of interest that I want to see. </p>

<p>
I also pass a string containing the name of the graphic file that I want the chart exported to.</p>

<p>
This was an arbitrary decision on my part and you can just hard code these values in if that is what you want to do.</p>

<p>

</p>

<p>
47</p>

<p>
The arguments are accessed by calling the "args()" function, which returns an array of strings.</p>

<p>

</p>

<p>
Next, it reads in the specified file using the "dlmread()" function. This reads all of the data into an array.</p>

<p>

</p>

<p>
48</p>

<p>
Next, it performs a hamming windowing function on the data. I'll explain that briefly.</p>

<p>
It is standard practice when doing FFT signal processing to "window" the signal.</p>

<p>
Since the signal sample is of finite length, it will stop at each end of the array. </p>

<p>

</p>

<p>
49</p>

<p>
Unless you were lucky enough for this to happen exactly at a zero crossing, this would produced an abrupt transition in the data which looks like "noise" to the FFT.</p>

<p>
The solution is to taper  the signal off gradually towards the ends so that when it gets cut off the signal is fairly small at that point anyway.</p>

<p>
There are a variety of different windowing functions, but "hamming" seems to be the most commonly used.</p>

<p>

</p>

<p>
50</p>

<p>
Next, it does an FFT using the "fft()" function.</p>

<p>

</p>

<p>
51</p>

<p>
This gives us real and imaginary outputs.</p>

<p>
These are combined by summing the squares of each corresponding real and imaginary element and then taking the square root of each and storing that in a new array. This gives a single array of the same length as the originals, but combining the two output components.</p>

<p>
If anyone wants to tell me that this isn't how things are done in the audio world, they're welcome to make an HPR episode telling us all the right way to do things.</p>

<p>

</p>

<p>
52</p>

<p>
Then it does some scaling and selection of subsets of data so we get the X axis in hertz and just the number of samples that we wish to look at.</p>

<p>

</p>

<p>
If you are looking at the script, the thing to keep in mind is that Octave will work on entire arrays of data in a single operation. You don't need to write explicit loops for this. The looping is handled implicitly as part of the syntax. </p>

<p>

</p>

<p>
53</p>

<p>
It also does various other things that make the chart easier to read. The comments in the script describe these in more detail. Since this is a script it's easier to add these sorts of refinements than is the case for a spreadsheet so I have made the effort to add them.</p>

<p>

</p>

<p>
Finally it calls the "plot()" function. </p>

<p>
If an output graphics file name was provided, it also creates a PNG file containing the same image using the "saveas" function.</p>

<p>

</p>

<p>
54</p>

<p>
We now see the chart, and it looks more or less as expected. </p>

<p>
However, this chart is interactive.</p>

<p>
You can zoom and pan the data, something that you can't do with either Audacity or Libre Office.</p>

<p>

</p>

<p>
The chart window doesn't have a function for exporting the resulting chart to a "png" file, it will only save to an ".ofig" file. The ofig file is not a standard graphics file, it is a serialization of the chart data that can only be looked at using the Octave chart viewer.</p>

<p>

</p>

<p>
55</p>

<p>
Alternatively, you can just take a screenshot of the chart after you have interactively zoomed and panned to a point of interest. </p>

<p>

</p>

<p>
At the bottom left of the chart window is a pair of x-y coordinates which tell you the current position of the mouse pointer in chart units.</p>

<p>
This is very handy as it can be used to get the exact (or close to exact) frequency of each noise spike.</p>

<p>

</p>

<p>
56</p>

<p>
The Y axis is not scaled in any particular units such as dB, as I'm not sure how to do that according to audio industry conventions.</p>

<p>
On the other hand, I'm not sure that it's really necessary, as I don't know what dB means in tangible terms anyway. </p>

<p>
It does show relative sizes, so it helps to determine whether you have one noise frequency or multiple frequencies to worry about. </p>

<p>

</p>

<p>
57</p>

<p>
If anyone is familiar with how to scale the raw data from a flac file as exported by Sox into dB units according to audio industry convention, then they are welcome to create an HPR episode telling us how to do it. </p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>
58 Comments on GNU Octave</p>

<p>

</p>

<p>
I had never used GNU Octave before this, although I had heard of it and it is quite a significant piece of software for a specific segment of users.</p>

<p>

</p>

<p>
59</p>

<p>
The syntax is a bit odd especially in how it deals with array operations, but I was able to google various examples and answers to eventually get this working.</p>

<p>
A few other peculiarities are that it uses the percent "%" character to denote a comment, and leaving out the semi-colon at the end of the line causes it to print the answer to the console after executing the statement. </p>

<p>

</p>

<p>
60</p>

<p>
The GNU Octave solution was harder to get working than the Libre Office method.</p>

<p>
However, once it was working it is easier to use repeatedly.</p>

<p>

</p>

<p>
If I were to want to automatically generate audio files with different filtering or other options and wanted to script the creation of a large number of images showing the results, this would be the way to do it.</p>

<p>

</p>

<p>
61</p>

<p>
When your run the Octave script you may get a warning which says something like</p>

<p>
"QSocketNotifier: Can only be used with threads started with QThread".</p>

<p>
This is apparently a routine warning message from the Qt graphics system which has no real significance in this context and can be ignored for our purposes. </p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>
62</p>

<p>
We now have a bash script which will use sox to extract the data from a flac file, and a GNU Octave script which can be used to display the resulting frequency spectrum. </p>

<p>

</p>

<p>
This does more or less the same thing as "Plot Spectrum" does in Audacity, but allows for zooming and panning to get a more detailed look at the data. </p>

<p>

</p>

<p>
63</p>

<p>
However it doesn't give you an absolute reading of the sound levels in dB, something that Audacity does provide. </p>

<p>

</p>

<p>
What I wanted it for though was to find the frequencies of the audible noise in the signal, something that it does quite well.</p>

<p>

</p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>
#!/usr/bin/env octave</p>

<p>

</p>

<p>
% Perform an FFT on the data in a file and plot the results.</p>

<p>

</p>

<p>
% ======================================================================</p>

<p>

</p>

<p>
% The sampling frequency. This must be changed to accommodate the</p>

<p>
% actual sampling frequency if it was something else.</p>

<p>
samplefreq = 44100;</p>

<p>

</p>

<p>
% Thickness of line on plot.</p>

<p>
linewidth = 2;</p>

<p>

</p>

<p>
% ======================================================================</p>

<p>

</p>

<p>
% The name of the data file is passed as a argument.</p>

<p>
args = argv();</p>

<p>
if length(args) &lt; 3</p>

<p>
	quit</p>

<p>
endif</p>

<p>

</p>

<p>

</p>

<p>
% File name.</p>

<p>
fname = args{1};</p>

<p>
% Clip the peak values.</p>

<p>
peakclip = str2double(args{2});</p>

<p>
% How much data to show, in kHz.</p>

<p>
rbound = str2double(args{3}) * 1000;</p>

<p>
% The optional file name to save a chart image to.</p>

<p>
if length(args) &gt; 3 </p>

<p>
	chartfile = args{4};</p>

<p>
else</p>

<p>
	chartfile = "";</p>

<p>
endif</p>

<p>

</p>

<p>

</p>

<p>
% ======================================================================</p>

<p>
% Read the data in from the file.</p>

<p>
sampledata = dlmread(fname);</p>

<p>
% Number of samples.</p>

<p>
samplecount = length(sampledata);</p>

<p>

</p>

<p>
% ======================================================================</p>

<p>

</p>

<p>
% Window the data. This helps deal with the discontinuity of data at</p>

<p>
% each end of the array and the effects this has on introducing apparent</p>

<p>
% noise into the signal. </p>

<p>
windoweddata = (hamming(samplecount) .* sampledata);</p>

<p>

</p>

<p>
% ======================================================================</p>

<p>

</p>

<p>
% Do the actual FFT.</p>

<p>
fftresults = fft(windoweddata);</p>

<p>

</p>

<p>
% Get real component.</p>

<p>
r = real(fftresults);</p>

<p>
% Get the imaginary component.</p>

<p>
i = imag(fftresults);</p>

<p>

</p>

<p>
% Combine the real and imaginary. In order to square each element of each</p>

<p>
% array, we must use the ".^" operator, not just "^".</p>

<p>
rfft = sqrt(r.^2 + i.^2);</p>

<p>
realfft = rfft(1:samplecount);</p>

<p>

</p>

<p>
% ======================================================================</p>

<p>

</p>

<p>
% Scale factor for frequency.</p>

<p>
fscale = samplefreq / samplecount;</p>

<p>
% X axis scale, scaled to frequency.</p>

<p>
f = (0:samplefreq/2) * fscale;</p>

<p>
% Take a subset of the data if specified. rbound has to be re-scaled</p>

<p>
% from kHz to array increments.</p>

<p>
freq = f(1:min(rbound / fscale,length(f)));</p>

<p>

</p>

<p>

</p>

<p>
% y axis. We take the absolute value and then limit (clip) the peaks</p>

<p>
% so that a few large peaks don't obscure the smaller ones.</p>

<p>
mag = min(abs(realfft(1: length(freq))), peakclip);</p>

<p>

</p>

<p>

</p>

<p>
% Plot the results.</p>

<p>
figure;</p>

<p>
whandle = plot(freq, mag, 'LineWidth', linewidth);</p>

<p>
title(["Audio Spectrum of ", fname]);</p>

<p>
xlabel("Frequency (Hz)");</p>

<p>
ylabel("Unscaled Magnitude");</p>

<p>
grid on;</p>

<p>

</p>

<p>
% If the appropriate optional argument was specified, save the chart</p>

<p>
% to a file of that name.</p>

<p>
if length(chartfile) &gt; 4</p>

<p>
	saveas(gcf, chartfile, "png");</p>

<p>
endif</p>

<p>

</p>

<p>
% Need this so the plot window stays open. </p>

<p>
waitfor(whandle);</p>

<p>

</p>

<p>
% ======================================================================</p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>
This is the shell script used with the above Octave script. </p>

<p>
The arguments are</p>

<p>
1 -  the file name for the input data file.</p>

<p>
2 - The value to clip the peaks at.</p>

<p>
3 - The upper frequency bound in kHz.</p>

<p>
4 - The output graphics file name.</p>

<p>

</p>

<p>
#!/bin/bash</p>

<p>

</p>

<p>
octave octavespectrum.m hsnoisemono.txt 10 12 hsnoisemono.png</p>

<p>

</p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>
64 Episode Conclusion</p>

<p>
In this episode we covered the following topics.</p>

<p>
What Fourier transforms are.</p>

<p>
Extracting data from audio files using Sox.</p>

<p>
Analyzing the data using Libre Office.</p>

<p>
Analyzing the data using GNU Octave.</p>

<p>
And, several alternative analysis methods.</p>

<p>

</p>

<p>

</p>

<p>
65 Series Conclusion</p>

<p>
This is the end of a four part series on simple podcasting.</p>

<p>

</p>

<p>
In the first episode, we covered a simple podcast recording method. This first episode is all you really need to make a podcast.</p>

<p>

</p>

<p>
66</p>

<p>
In the second episode we covered basic filtering and a few other simple topics. The methods discussed in that episode provide basic improvements to your audio if you feel the need for it.</p>

<p>

</p>

<p>
67</p>

<p>
In the third episode we covered how to analyze audio noise problems using Audacity and additional filtering techniques to deal with specific problems that we may find.</p>

<p>
We also covered command line recording, playback, and getting information about an audio recording.</p>

<p>

</p>

<p>
68</p>

<p>
In the fourth episode we engaged in a bit of gratuitous hackery for the fun of it and showed how to use alternative software methods to analyze audio signals.</p>

<p>

</p>

<p>
69</p>

<p>
I hope that this series has been both useful and entertaining and that you will use the knowledge gained here to create and submit your own HPR podcast episodes.</p>

<p>

</p>

<p>
--------------------</p>

<p>
--------------------</p>

<p>

</p>


<p><a href="https://hackerpublicradio.org/eps/hpr4648/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4647: UNIX Curio #7 - Compression]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.


This series is dedicated to exploring little-known—and occasionally useful—trinkets lurking in the dusty corners of UNIX-like operating systems.


In UNIX Curio #4 (
HPR episode 4617
), I teased the subject of file compression. Today I'm circlin...]]></description>
<link>https://tsecurity.de/de/3546580/it+sicherheit/it+podcasts/hpr4647+unix+curio+7+-+compression/</link>
<pubDate>Tue, 26 May 2026 02:02:57 +0200</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>

<blockquote>
This series is dedicated to exploring little-known—and occasionally useful—trinkets lurking in the dusty corners of UNIX-like operating systems.</blockquote>

<p>
In UNIX Curio #4 (<a href="https://hackerpublicradio.org/eps/hpr4617/" rel="noopener noreferrer" target="_blank">
HPR episode 4617</a>
), I teased the subject of file compression. Today I'm circling back to that.</p>

<p>
The history of data compression goes back at least to the 1970s, and in contexts outside UNIX and computers, probably even earlier. Somehow, it is refreshing to learn that humans have always struggled to have enough storage space to keep all the data they want to hang on to. One way around this limitation is to use some form of compression.</p>

<p>
I am only going to dive into <em>
lossless</em>
 compression for this episode—that is, a compression method that can be reversed and will spit out the original data bit for bit. Lossy compression methods also have their places: you might be familiar with their use for audio (such as Ogg Vorbis or MP3); it's also used for images (such as JPEG). Lossy compression allows some of the original data to be thrown away, resulting in a smaller file than is possible with lossless compression, but the intent is for the result to still sound or look "good enough" to a human observer. Also, I am going to limit my discussion to generic methods used for many types of data; while FLAC does lossless compression, it is specifically designed just for audio.</p>

<p>
I should make clear that I have never studied computer science or information theory, so this episode will not get into the science behind various types of compression algorithms and how they differ. But in general, these methods take advantage of the fact that many types of data have recurring patterns. English text mostly consists of words that often re-appear many times—source code similarly has keywords and variable names that recur. Compression is accomplished by representing a piece of data that occurs multiple times with a symbol that is shorter in length.</p>

<p>
The first compression program in the UNIX world I could find is called <code>

<a href="https://www.tuhs.org/cgi-bin/utree.pl?file=V8/usr/src/cmd/pack/pack.c" rel="noopener noreferrer" target="_blank">
pack</a>

</code>

<a href="https://www.tuhs.org/cgi-bin/utree.pl?file=V8/usr/src/cmd/pack/pack.c" rel="noopener noreferrer" target="_blank">
, from 1978</a>

<sup>
1</sup>
. It was shortly followed in 1979 by a similar program called <code>

<a href="https://www.tuhs.org/cgi-bin/utree.pl?file=2.9BSD/usr/src/ucb/compact/compact.c" rel="noopener noreferrer" target="_blank">
compact</a>

</code>

<sup>
2</sup>
. Both of these used a technique called Huffman coding, but with some differences between them. Files compressed with <code>
pack</code>
 were given a <code>
.z</code>
 extension and <code>
compact</code>
 gave filenames a <code>
.C</code>
 extension. Roughly every five or ten years after this, a new program would come along and achieve lasting popularity.</p>

<p>
There were, and still are, two opposing forces facing any new form of compression. Working in favor was the advantages it provided—first among these was achieving a better compression ratio, but performance improvements such as speed or reduced memory usage could also be compelling. The force against any new method was the fact that it was not yet widely supported—it doesn't much help to have a smaller file if the people you share it with cannot decompress it.</p>

<p>
The next major advance in compression arose out of three scientific papers: two in 1977 and 1978 by Abraham Lempel and Jacob Ziv (called LZ77 and LZ78), and one by Terry Welch in 1984 which built on LZ78. This last method is typically referred to as LZW. Our UNIX Curio for today is a <a href="https://pubs.opengroup.org/onlinepubs/009695399/utilities/compress.html" rel="noopener noreferrer" target="_blank">
program called </a>

<code>

<a href="https://pubs.opengroup.org/onlinepubs/009695399/utilities/compress.html" rel="noopener noreferrer" target="_blank">
compress</a>

</code>

<sup>
3</sup>
 that implements the LZW method. Files compressed this way are named with the extension <code>
.Z</code>
. I had always assumed that this was to honor Jacob Ziv, but now that I've researched the history, it seems more likely to be a follow-on from how files compressed by <code>
pack</code>
 were named. Since <code>
pack</code>
 did not use any of the Lempel-Ziv methods, I would guess that it used <code>
.z</code>
 because that wasn't already taken by anything else, but that's pure speculation.</p>

<p>
I do recall encountering <code>
.Z</code>
 files in the wild, but feel certain that hasn't happened in the last 25 years, maybe longer. If you need to expand one of these, <code>

<a href="https://pubs.opengroup.org/onlinepubs/009695399/utilities/uncompress.html" rel="noopener noreferrer" target="_blank">
uncompress</a>

</code>

<sup>
4</sup>
 is the program to use (<a href="https://www.gnu.org/software/gzip/manual/gzip.html" rel="noopener noreferrer" target="_blank">
GNU's </a>

<code>

<a href="https://www.gnu.org/software/gzip/manual/gzip.html" rel="noopener noreferrer" target="_blank">
gunzip</a>

</code>

<a href="https://www.gnu.org/software/gzip/manual/gzip.html" rel="noopener noreferrer" target="_blank">
 can also handle them</a>

<sup>
5</sup>
). However, there was a serious problem that arose with the LZ78 and LZW compression methods. Both of them were patented, and the owner became aggressive in seeking payment from developers and users. The <code>
compress</code>
 utility was developed within two months of the publication of Welch's 1984 paper and was included in Bell Laboratories' Eighth Edition UNIX before these shakedowns started. The paper did not disclose that a patent had been filed, and apparently Spencer Thomas and the other developers of <code>
compress</code>
 were unaware of it. The utility became popular for a while, and was even standardized by POSIX, but people moved away from LZW once the legal threats started.</p>

<p>
Another important advance came in 1991 and was called the DEFLATE compression method. It combined the un-patented LZ77 method with Huffman coding to achieve a similar level of compression as LZW (actually, often better) without the legal trouble. DEFLATE was developed for <code>
PKZIP</code>
 and was soon adopted by the GNU project's <code>
gzip</code>
 compressor. While Phil Katz (the "PK" in <code>
PKZIP</code>
) patented one way of implementing the DEFLATE method, <a href="https://tools.ietf.org/html/rfc1951" rel="noopener noreferrer" target="_blank">
it was possible to write a compressor and decompressor without infringing</a>

<sup>
6</sup>
; also, he apparently <a href="https://ethw.org/History_of_Lossless_Data_Compression_Algorithms#The_Rise_of_Deflate" rel="noopener noreferrer" target="_blank">
never tried to enforce the patent</a>

<sup>
7</sup>
.</p>

<p>
As I mentioned in UNIX Curio #4, .zip is both an archive <em>
and</em>
 a compression format. Each archive member can be compressed with one of several possible methods (or stored without compression). Unlike a <code>
tar</code>
 file where compression can be applied to the entire archive, in .zip each archive member is compressed individually. This often means a .zip file will be slightly bigger than a <code>
tar</code>
 file with the same contents compressed with <code>
gzip</code>
, because the .zip format cannot take advantage of duplication that occurs among more than one member of the archive. The vast majority of .zip files use only the DEFLATE and uncompressed storage methods and these are the only options if you want to follow the profile standardized in ISO/IEC 21320-1. Actually, since they both use DEFLATE, <code>
gzip</code>
 is able to extract a .zip file in the special case where it only holds one member compressed with that method.</p>

<p>
From the 1990s onward, people paid significant attention to avoiding patent landmines, so only methods that didn't have that problem became broadly popular. While the patents on LZ78 and LZW have since expired, I feel like their most successful legacy was in discouraging people from using those methods, leading to DEFLATE taking the popularity crown.</p>

<p>
The next step came in 1996 and 1997 with the development of <code>
bzip</code>
 and <code>
bzip2</code>
 by Julian Seward. The original method was quickly followed by <code>
bzip2</code>
, which was the version that achieved true popularity. They use the Burrows-Wheeler transform, which does not itself compress data but re-arranges it to make it more compressible; <a href="https://en.wikipedia.org/wiki/Bzip2" rel="noopener noreferrer" target="_blank">
this is combined with other techniques</a>

<sup>
8</sup>
. (At least, that's my understanding. I told you, I'm not up on information theory.) This provides a significant reduction in the compressed size of the data compared to earlier methods—however, it is slower than DEFLATE both during compression and decompression.</p>

<p>
Separate projects have developed parallel versions of <code>
gzip</code>
 and <code>
bzip2</code>
 that can take advantage of multi-processor machines, but the original utilities run single-threaded.</p>

<p>
Another five years later, in 2001, Igor Pavlov added the Lempel-Ziv-Markov chain algorithm (LZMA), an enhancement to LZ77, to his 7-Zip compression tool. This was followed a few years later by LZMA2, a container format that allowed for LZMA compression to be split between multiple threads. Broad LZMA2 support came to the UNIX world in 2009 with the <code>

<a href="https://en.wikipedia.org/wiki/XZ_Utils" rel="noopener noreferrer" target="_blank">
xz</a>

</code>

<a href="https://en.wikipedia.org/wiki/XZ_Utils" rel="noopener noreferrer" target="_blank">
 utility</a>

<sup>
9</sup>
. It offers roughly similar compression ratios to <code>
bzip2</code>
, though it can be better or worse depending on the data to be compressed. While compression generally takes even longer than <code>
bzip2</code>
, decompression is significantly faster (though still not as fast as <code>
gzip</code>
). The Linux kernel relatively quickly supported <a href="https://lwn.net/Articles/423541/" rel="noopener noreferrer" target="_blank">
booting from xz-compressed images</a>

<sup>
10</sup>
 because it was a good match for that use case—compression, the time-consuming activity, only has to be done once while the more frequent decompression during boot happens relatively fast.</p>

<p>
The last method I will cover is <a href="https://en.wikipedia.org/wiki/Zstd" rel="noopener noreferrer" target="_blank">
Zstandard</a>

<sup>
11</sup>
, often written as <code>
zstd</code>
. This came about in 2015, and is another variation on LZ77 that uses finite-state entropy (which means nothing to me, but you might understand it). It performs about as well as DEFLATE in terms of compression ratios, but is much faster both when compressing and decompressing data. I should say that these statements are true with the typical default settings—depending on the compression level selected, it can compress more slowly, but compress the data smaller. However, decompression is always speedier than DEFLATE. This makes it attractive for some uses, and it is heavily promoted by Meta/Facebook, where Yann Collet developed it. For example, shipping large amounts of actively-used data between machines in a data center can go more quickly when the size is reduced; however, if the compression and decompression steps take too long that benefit is lost. A speedy method can be valuable even if it doesn't result in the greatest reduction in size. This use case stands in contrast to, say, a compressed backup file which might only be accessed in a disaster recovery scenario or never accessed at all, making size more important than speed.</p>

<p>
Both the <code>
xz</code>
 and <code>
zstd</code>
 utilities have some built-in support for multi-threading, but the default is to run in a single thread. While <code>
xz</code>
 can use multiple threads for decompression (but only if the file was compressed in multi-thread mode), the reference <code>
zstd</code>
 utility can only use more than one thread for compression, not decompression.</p>

<p>
There are many other methods of lossless compression that have been developed over the decades, but I believe these are the ones you are most likely to encounter in the world of UNIX-like systems. This is a personal opinion, and others might choose a different set. As mentioned, it can be tough for a new method to gain popularity and 35-year-old DEFLATE is still probably the most commonly used despite not being the fastest or offering the greatest reduction in size. Even systems like FreeBSD, NetBSD, and OpenBSD that do not like to include GNU tools supported it by developing their own version of <code>
gzip</code>
 based on the permissively-licensed <code>
zlib</code>
 library.</p>

<p>
Technically, the LZW method used by the <code>
compress</code>
 utility is still standardized by POSIX, so one might expect it to have the widest support. However, aggressive patent enforcement discouraged adoption, especially by Free and Open Source Software systems—even though the patent has expired, it is still out of favor compared to DEFLATE. For this reason, I feel justified in calling it a curio.</p>

<p>
References:</p>

<ol>

<li>

<a href="https://www.tuhs.org/cgi-bin/utree.pl?file=V8/usr/src/cmd/pack/pack.c" rel="noopener noreferrer" target="_blank">
Eighth Edition UNIX pack.c</a>
 https://www.tuhs.org/cgi-bin/utree.pl?file=V8/usr/src/cmd/pack/pack.c</li>

<li>

<a href="https://www.tuhs.org/cgi-bin/utree.pl?file=2.9BSD/usr/src/ucb/compact/compact.c" rel="noopener noreferrer" target="_blank">
2.9BSD compact.c</a>
 https://www.tuhs.org/cgi-bin/utree.pl?file=2.9BSD/usr/src/ucb/compact/compact.c</li>

<li>

<a href="https://pubs.opengroup.org/onlinepubs/009695399/utilities/compress.html" rel="noopener noreferrer" target="_blank">
Compress specification</a>
 https://pubs.opengroup.org/onlinepubs/009695399/utilities/compress.html</li>

<li>

<a href="https://pubs.opengroup.org/onlinepubs/009695399/utilities/uncompress.html" rel="noopener noreferrer" target="_blank">
Uncompress specification</a>
 https://pubs.opengroup.org/onlinepubs/009695399/utilities/uncompress.html</li>

<li>

<a href="https://www.gnu.org/software/gzip/manual/gzip.html" rel="noopener noreferrer" target="_blank">
GNU Gzip manual</a>
 https://www.gnu.org/software/gzip/manual/gzip.html</li>

<li>

<a href="https://tools.ietf.org/html/rfc1951" rel="noopener noreferrer" target="_blank">
RFC 1951: DEFLATE Compressed Data Format Specification version 1.3</a>
 https://tools.ietf.org/html/rfc1951</li>

<li>

<a href="https://ethw.org/History_of_Lossless_Data_Compression_Algorithms#The_Rise_of_Deflate" rel="noopener noreferrer" target="_blank">
History of Lossless Data Compression Algorithms: The Rise of Deflate</a>
 https://ethw.org/History_of_Lossless_Data_Compression_Algorithms#The_Rise_of_Deflate</li>

<li>

<a href="https://en.wikipedia.org/wiki/Bzip2" rel="noopener noreferrer" target="_blank">
bzip2</a>
 https://en.wikipedia.org/wiki/Bzip2</li>

<li>

<a href="https://en.wikipedia.org/wiki/XZ_Utils" rel="noopener noreferrer" target="_blank">
XZ Utils</a>
 https://en.wikipedia.org/wiki/XZ_Utils</li>

<li>

<a href="https://lwn.net/Articles/423541/" rel="noopener noreferrer" target="_blank">
2.6.38 merge window part 2</a>
 https://lwn.net/Articles/423541/</li>

<li>

<a href="https://en.wikipedia.org/wiki/Zstd" rel="noopener noreferrer" target="_blank">
zstd</a>
 https://en.wikipedia.org/wiki/Zstd</li>

</ol>

<p>

<strong>
Appendix</strong>

</p>

<p>
The table below demonstrates the results of compressing different types of data using tools described in this episode. While not totally rigorous, I did run each compression and decompression multiple times to ensure I was getting consistent results. The laptop I used has an Intel Core i5-6200U CPU running at 2.30GHz, and the system had at least 5 GB of free memory for each run. While this processor has two cores and can run four simultaneous threads, all utilities were run single-threaded.</p>

<p>
The term "best" means the highest level of compression available (the exact level used is shown). For <code>
bzip2</code>
, the default <em>
is</em>
 the best. For <code>
zstd</code>
, "best" is -19, which is the highest "normal" level, but "ultra" levels that are even higher also exist. Ratios are the percentage of the original size that the file was reduced to (other sources might instead express the compression ratio as the <em>
reduction</em>
 in size achieved). In all results, smaller numbers are better.</p>

<pre data-language="plain">
┌────────────────────────────┬─────────────┬─────────────┬─────────────┬─────────────┬─────────────┬─────────────┬─────────────┐
│                            │    gzip     │    gzip     │    bzip2    │     xz      │     xz      │    zstd     │    zstd     │
│                            │(default -6) │  (best -9)  │    (-9)     │(default -6) │  (best -9)  │(default -3) │ (best -19)  │
├──────────────┬─────────────┼─────────────┼─────────────┼─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤
│              │Size (ratio) │ 22,036,508  │ 21,891,623  │ 15,795,698  │ 13,487,768  │ 12,938,464  │ 20,454,657  │ 13,709,078  │
│              │             │ (24%)       │ (24%)       │ (17%)       │ (15%)       │ (14%)       │ (23%)       │ (15%)       │
│English Text  ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤
│(90,532,092   │Compression  │ 4.8s        │ 7.6s        │ 8.5s        │ 49.8s       │ 58.8s       │ 0.6s        │ 65.2s       │
│bytes         │time         │             │             │             │             │             │             │             │
│uncompressed) ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤
│              │Decompression│ 0.7s        │ 0.8s        │ 3.7s        │ 1.2s        │ 1.2s        │ 0.4s        │ 0.4s        │
│              │time         │             │             │             │             │             │             │             │
├──────────────┼─────────────┼─────────────┼─────────────┼─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤
│              │Size (ratio) │ 125,291,122 │ 124,189,544 │ 98,016,512  │ 84,882,492  │ 81,954,344  │ 120,604,855 │ 87,298,645  │
│              │             │ (21%)       │ (21%)       │ (17%)       │ (14%)       │ (14%)       │ (20%)       │ (15%)       │
│Source Code   ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤
│(590,008,320  │Compression  │ 22.0s       │ 39.3s       │ 54.8s       │ 241s        │ 298s        │ 3.7s        │ 348s        │
│bytes         │time         │             │             │             │             │             │             │             │
│uncompressed) ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤
│              │Decompression│ 5.1s        │ 5.1s        │ 20.3s       │ 8.1s        │ 7.8s        │ 2.4s        │ 2.4s        │
│              │time         │             │             │             │             │             │             │             │
├──────────────┼─────────────┼─────────────┼─────────────┼─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤
│              │Size (ratio) │ 32,830,905  │ 32,371,241  │ 26,856,579  │ 20,717,288  │ 20,352,880  │ 28,538,810  │ 23,154,582  │
│              │             │ (19%)       │ (19%)       │ (16%)       │ (12%)       │ (12%)       │ (17%)       │ (13%)       │
│Binary Program├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤
│(171,972,264  │Compression  │ 6.4s        │ 22.4s       │ 18.6s       │ 62.2s       │ 67.8s       │ 0.8s        │ 111s        │
│bytes         │time         │             │             │             │             │             │             │             │
│uncompressed) ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤
│              │Decompression│ 1.5s        │ 1.5s        │ 5.6s        │ 2.3s        │ 2.3s        │ 0.7s        │ 0.7s        │
│              │time         │             │             │             │             │             │             │             │
├──────────────┼─────────────┼─────────────┼─────────────┼─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤
│              │Size (ratio) │ 146,397,772 │ 146,397,757 │ 144,485,451 │ 131,950,232 │ 130,926,780 │ 147,154,979 │ 145,703,840 │
│              │             │ (89%)       │ (89%)       │ (88%)       │ (80%)       │ (80%)       │ (90%)       │ (89%)       │
│WAVE Audio    ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤
│(164,396,302  │Compression  │ 9.2s        │ 9.2s        │ 25.1s       │ 70.4s       │ 97.7s       │ 0.7s        │ 58.3s       │
│bytes         │time         │             │             │             │             │             │             │             │
│uncompressed) ├─────────────┼─────────────┼─────────────┼─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤
│              │Decompression│ 2.0s        │ 2.0s        │ 13.5s       │ 12.2s       │ 12.1s       │ 0.6s        │ 0.8s        │
│              │time         │             │             │             │             │             │             │             │
├──────────────┴─────────────┼─────────────┼─────────────┼─────────────┼─────────────┼─────────────┼─────────────┼─────────────┤
│                            │     gzip    │    gzip     │    bzip2    │     xz      │     xz      │    zstd     │    zstd     │
│                            │(default -6) │  (best -9)  │    (-9)     │(default -6) │  (best -9)  │(default -3) │ (best -19)  │
└────────────────────────────┴─────────────┴─────────────┴─────────────┴─────────────┴─────────────┴─────────────┴─────────────┘
</pre>

<ul>

<li>
English text consists of Titles 1 through 10 of the 2020 U.S. <em>
Code of Federal Regulations</em>
.</li>

<li>
Source code consists of a <code>
tar</code>
 file containing the Linux kernel source, version 4.0.</li>

<li>
Binary program consists of an ELF-format executable of the <code>
pandoc</code>
 application, version 2.17.1.1 found on Debian 12.</li>

<li>
Audio consists of a 24-bit Signed Integer PCM WAVE file with 2 channels at 44.1kHz, about 10:21 in length. For comparison, the audio-specific <code>
flac</code>
 lossless compression utility reduced this file to 97,962,711 bytes (60%) in 2.6 seconds at the default (-5) level and to 97,714,876 bytes (59%) in 5.4 seconds at the highest (-8) level.</li>

</ul>

<p>

</p>


<p><a href="https://hackerpublicradio.org/eps/hpr4647/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4646: Mobile Gaming]]></title>
<description><![CDATA[This show has been flagged as Explicit by the host.


Games Mentioned


Tile Survive - https://tilesurvivegame.com/en
Monopoly Go - https://apps.apple.com/us/app/monopoly-go/id1621328561
Arrows Go - https://apps.apple.com/us/app/arrows-go-arrow-puzzles/id6758326278


Apologies, Lee's mi...]]></description>
<link>https://tsecurity.de/de/3545930/it+sicherheit/it+podcasts/hpr4646+mobile+gaming/</link>
<pubDate>Mon, 25 May 2026 17:48:48 +0200</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Explicit by the host.</p>


<h2>Games Mentioned

<ul>
<li>Tile Survive - <a href="https://tilesurvivegame.com/en" rel="noopener noreferrer" target="_blank">https://tilesurvivegame.com/en</a></li>
<li>Monopoly Go - <a href="https://apps.apple.com/us/app/monopoly-go/id1621328561" rel="noopener noreferrer" target="_blank">https://apps.apple.com/us/app/monopoly-go/id1621328561</a></li>
<li>Arrows Go - <a href="https://apps.apple.com/us/app/arrows-go-arrow-puzzles/id6758326278" rel="noopener noreferrer" target="_blank">https://apps.apple.com/us/app/arrows-go-arrow-puzzles/id6758326278</a></li>
</ul>

</h2><p><em>Apologies, Lee's mic is a bit metallic due to filtering out background noise from a fan</em></p>

<p><a href="https://hackerpublicradio.org/eps/hpr4646/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4645: ZERO HOUR: FRIDAY AFTERNOON APK HACKING]]></title>
<description><![CDATA[This show has been flagged as Explicit by the host.



WARNING AI GENERATED NOTES AHEAD YMMW 








Here is a summary of the recorded training session regarding Android hacking from Hacker Public Radio, including web references for the main topics discussed.








Overview




T...]]></description>
<link>https://tsecurity.de/de/3538027/it+sicherheit/it+podcasts/hpr4645+zero+hour+friday+afternoon+apk+hacking/</link>
<pubDate>Fri, 22 May 2026 02:03:42 +0200</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Explicit by the host.</p>

<p>

WARNING AI GENERATED NOTES AHEAD YMMW 
</p>

<p>

</p>

<p>

Here is a summary of the recorded training session regarding Android hacking from Hacker Public Radio, including web references for the main topics discussed.
</p>

<h3>

</h3>

<h3>

Overview
</h3>

<p>

The recording features a security consultant performing a live assessment of an Android application. The consultant uses a custom tool suite called "Jamboree" and various other utilities to test a location-sharing and vehicle management app. The session highlights the increasing complexity of mobile app security, specifically dealing with SSL pinning, encrypted traffic, and anti-tampering mechanisms 
<sup>
1</sup>

.
</p>

<h3>

Environment and Tools
</h3>

<p>

The assessment is conducted on a rooted Android emulator. The speaker utilizes several tools to set up the environment and intercept traffic:
</p>

<ul>

<li>

<strong>
Jamboree</strong>

: A custom automation tool developed by the speaker over six years to handle rooting, proxy setup, and app installation within minutes 
<sup>
1</sup>

.
</li>

<li>

<strong>
Burp Suite</strong>

: The primary interception proxy used to analyze traffic between the app and the production server 
<sup>
1</sup>

.
</li>

<li>

<strong>
Frida</strong>

: Used to bypass anti-root detection and SSL pinning 
<sup>
1</sup>

.
</li>

<li>

<strong>
Ghidra</strong>

: A decompiler used to analyze the app's code, specifically helpful for patching the Flutter-based application 
<sup>
1</sup>

.
</li>

<li>

<strong>
Android Debug Bridge (ADB)</strong>

: Used for troubleshooting, debugging, and analyzing logs (
<code>
logcat</code>

) to extract user IDs and location data 
<sup>
1</sup>

.
</li>

</ul>

<h3>

Technical Challenges: SSL Pinning and Flutter
</h3>

<p>

The target application is built using Flutter and implements rigorous security controls, including SSL pinning, which prevents standard Man-in-the-Middle (MitM) attacks. The app's HTTP client ignores system and user-installed certificates, and it does not respect device Wi-Fi proxy settings 
<sup>
1</sup>

.
</p>

<p>

To overcome this:
</p>

<ol>

<li>

<strong>
Traffic Redirection</strong>

: The speaker uses 
<code>
iptables</code>

 commands to force all HTTP and HTTPS traffic through the proxy's IP address at the network layer, bypassing the app's proxy ignorance 
<sup>
1</sup>

.
</li>

<li>

<strong>
Patching with AI</strong>

: The speaker leverages AI (specifically mentioning Claude and access to "Kuro") to assist in patching the APK. The AI helped navigate Ghidra and generate Python scripts to bypass the app's protections, allowing the modified APK to trust the auditor's certificate 
<sup>
1</sup>

.
</li>

<li>

<strong>
Frida Scripts</strong>

: "Frida anti-root SSL pinning" scripts are executed to further mitigate detection mechanisms 
<sup>
1</sup>

.
</li>

</ol>

<h3>

Key Vulnerabilities Identified
</h3>

<p>

<strong>
1. Geolocation Spoofing</strong>

</p>

<p>

The consultant successfully spoofed the device's GPS location using emulator settings (e.g., setting the location to Puerto Rico or Costa Rica). The application accepted this falsified location data as valid, indicating a lack of server-side verification for location origin 
<sup>
1</sup>

.
</p>

<p>

<strong>
2. Insecure Direct Object Reference (IDOR) / Broken Access Control</strong>

</p>

<p>

The most critical finding involves the app's user tracking feature.
</p>

<ul>

<li>

The consultant discovered that the API allows querying a user's location via a 
<code>
user_id</code>

.
</li>

<li>

By intercepting traffic and analyzing 
<code>
adb logcat</code>

 logs, the consultant extracted their own 
<code>
user_id</code>

 and the 
<code>
user_id</code>

 of a second test account 
<sup>
1</sup>

.
</li>

<li>

While authenticated as one user, the consultant was able to send a request substituting the 
<code>
user_id</code>

 with the target's ID. The server responded with the target's GPS coordinates. This confirms that an authenticated user can track any other user's real-time location if they possess the target's ID 
<sup>
1</sup>

.
</li>

<li>

Proof of concept was created by copying the request as a 
<code>
curl</code>

 command to demonstrate the exploit 
<sup>
1</sup>

.
</li>

</ul>

<p>

<strong>
3. Potential Information Disclosure</strong>

</p>

<p>

The consultant began testing a feature that allows users to add vehicles by license plate. The concern is that querying a license plate might return excessive PII (Personally Identifiable Information), such as VIN numbers or registration details, beyond what the UI strictly requires (least privilege issue) 
<sup>
1</sup>

.
</p>

<p>

<strong>
4. Access Control (Calendar Feature)</strong>

</p>

<p>

The consultant tested whether calendar events could be accessed by switching 
<code>
user_id</code>

 parameters. This test resulted in a "401 Unauthorized" error, indicating that this specific endpoint had proper access control in place 
<sup>
1</sup>

.
</p>

<h3>

Web References and Resources
</h3>

<p>

Below are references for the main tools and concepts discussed in the training:
</p>

<ul>

<li>

<strong>
Hacker Public Radio</strong>

: 
<a href="https://hackerpublicradio.org/" rel="noopener noreferrer" target="_blank">
https://hackerpublicradio.org/</a>

</li>

<li>

<strong>
Burp Suite (Web Security Testing)</strong>

: 
<a href="https://portswigger.net/burp" rel="noopener noreferrer" target="_blank">
https://portswigger.net/burp</a>

</li>

<li>

<strong>
Frida (Dynamic Instrumentation Toolkit)</strong>

: 
<a href="https://frida.re/" rel="noopener noreferrer" target="_blank">
https://frida.re/</a>

</li>

<li>

<strong>
Ghidra (Software Reverse Engineering)</strong>

: 
<a href="https://ghidra-sre.org/" rel="noopener noreferrer" target="_blank">
https://ghidra-sre.org/</a>

</li>

<li>

<strong>
Android Debug Bridge (ADB)</strong>

: 
<a href="https://developer.android.com/tools/adb" rel="noopener noreferrer" target="_blank">
https://developer.android.com/tools/adb</a>

</li>

<li>

<strong>
OWASP Mobile Top 10</strong>

: 
<a href="https://owasp.org/www-project-mobile-top-10/" rel="noopener noreferrer" target="_blank">
https://owasp.org/www-project-mobile-top-10/</a>

</li>

<li>

<strong>
OWASP Testing for Insecure Direct Object References (IDOR)</strong>

: 
<a href="https://owasp.org/www-project-web-security-testing-guide/v42/4-Web_Application_Security_Testing/04-Authorization_Testing/04.1-Testing_for_Insecure_Direct_Object_References" rel="noopener noreferrer" target="_blank">
https://owasp.org/www-project-web-security-testing-guide/v42/4-Web_Application_Security_Testing/04-Authorization_Testing/04.1-Testing_for_Insecure_Direct_Object_References</a>

</li>

<li>

<strong>
Flutter (UI Toolkit)</strong>

: 
<a href="https://flutter.dev/" rel="noopener noreferrer" target="_blank">
https://flutter.dev/</a>

</li>

</ul>

<p>

</p>


<p><a href="https://hackerpublicradio.org/eps/hpr4645/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4644: Response to comments on HPR4424: Newsboat...]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.

    
      Hi this is your host, Archer72 for Hacker Public Radio.
    
    
    
    
      In this episode I share some of my findings about a problem with
      the Newsboat naming of the HPR feeds, 
    
      which was brought up in comments ...]]></description>
<link>https://tsecurity.de/de/3534697/it+sicherheit/it+podcasts/hpr4644+response+to+comments+on+hpr4424+newsboat/</link>
<pubDate>Thu, 21 May 2026 02:03:03 +0200</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>

    <p>
      Hi this is your host, Archer72 for Hacker Public Radio.
    </p>
    <p>
    </p>
    <p>
      In this episode I share some of my findings about a problem with
      the Newsboat naming of the HPR feeds, </p>
    <p>
      which was brought up in comments about my Newsboat show, HPR4424.
    </p>
    <p>
    </p>
    <p>
      <a href="https://www.hackerpublicradio.org/eps/hpr4424/index.html#comment_4521" rel="noopener noreferrer" target="_blank" data-darkreader-inline-color="">
        hpr4424: How I use Newsboat for Podcasts: comment #6 :
        download-filename-format for HPR podcasts</a>
    </p>
    <p>
    </p>
    <p>
      Ken already had some findings of his own about the <code>
        ccdn.php</code> extension in the feed.
    </p>
    <p>
    </p>
    <p>
      <a href="https://www.hackerpublicradio.org/eps/hpr4424/index.html#comment_4680" rel="noopener noreferrer" target="_blank" data-darkreader-inline-color="">
        hpr4424: comment #10 : Summary of findings</a>
    </p>
    <p>
    </p>
    <p>
      I thought that this might be able to be fixed on an invididual
      basis, and set out to ask Claude.ai a few questions.
    </p>
    <p>
    </p>
    <p>
      But first, some colaboration from Dave Morriss about a good
      renaming format. This was definitely more on Dave’s side than
      mine, but came up with this. </p>
    <p>
      You can tell Dave’s handywork from the short variable names, which
      stems from his extensive experience on Unix type machines in the
      University days.
    </p>
    <h2>
    </h2>
    <h2>
      exif-rename-hpr-dave.sh
    </h2>
    <p>
    </p>
    <pre data-language="plain">#!/bin/bash

URL="$(cat /tmp/hpr-url.txt)"
echo "DEBUG URL: $URL" &gt;&gt; /tmp/hpr-debug.log

AUDIO_URL="$(curl -s "$URL" | grep -Eo 'https?://[^"]*\.(ogg|mp3)' | head -1)"
echo "DEBUG AUDIO: $AUDIO_URL" &gt;&gt; /tmp/hpr-debug.log

if [[ -z "$AUDIO_URL" ]]; then
    echo "ERROR: Could not find audio URL from: $URL" &gt;&gt; /tmp/hpr-debug.log
    exit 1
fi

# Changed destination to HPR-queue
DEST=~/podcasts/hub.hackerpublicradio.org/HPR-queue/

# Record files present before download
BEFORE="$(ls "$DEST"*.{ogg,mp3} 2&gt;/dev/null | sort)"

wget -nc --content-disposition -P "$DEST" "$AUDIO_URL"

cd "$DEST"

# Record filename just downloaded (new file not in BEFORE)
AFTER="$(ls "$DEST"*.{ogg,mp3} 2&gt;/dev/null | sort)"
DOWNLOADED="$(comm -13 &lt;(echo "$BEFORE") &lt;(echo "$AFTER"))"
echo "DEBUG DOWNLOADED: $DOWNLOADED" &gt;&gt; /tmp/hpr-debug.log

~/bin/exif-rename-hpr-dave.sh

# Find renamed file — newest file that wasn't in BEFORE
AFTER_RENAME="$(ls "$DEST"*.{ogg,mp3} 2&gt;/dev/null | sort)"
RENAMED="$(comm -13 &lt;(echo "$BEFORE") &lt;(echo "$AFTER_RENAME"))"
echo "DEBUG RENAMED: $RENAMED" &gt;&gt; /tmp/hpr-debug.log

if [[ -n "$RENAMED" ]]; then
    echo "\"$AUDIO_URL\" \"$RENAMED\" downloaded" &gt;&gt; ~/.local/share/newsboat/queue
else
    echo "WARN: Could not determine renamed file" &gt;&gt; /tmp/hpr-debug.log
    echo "\"$AUDIO_URL\" \"$DOWNLOADED\" downloaded" &gt;&gt; ~/.local/share/newsboat/queue
fi
</pre>
    <p>
    </p>
    <p>
      At first the question was about something simple. The input was a
      query on one of the lines from Kevie’s
    </p>
    <p>
    </p>
    <p>
      <a href="https://www.hackerpublicradio.org/eps/hpr4398/index.html" rel="noopener noreferrer" target="_blank" data-darkreader-inline-color="">
        hpr4398 :: Command line fun: downloading a podcast</a>
    </p>
    <p>
    </p>
    <p>
      Particularly, the section on To get the latest episode of TuxJam
    </p>
    <p>
    </p>
    <p>
      wget <code>
        curl https://tuxjam.otherside.network/feed/podcast/ | grep -o
        'https*://[^"]*ogg' | head -1</code>
    </p>
    <p>
    </p>
    <p>
      Which I re-wrote to:
    </p>
    <p>
    </p>
    <pre data-language="plain">wget -nc -P ~/podcasts/TuxJam $(curl https://tuxjam.otherside.network/feed/ogg | grep -Eo 'https*://[^"]*ogg' | sort -u | xargs | head -1)
</pre>
    <p>
    </p>
    <p>
      The reason for $() instead of backticks to enclose a command was
      that the former was being deprecated.
    </p>
    <p>
    </p>
    <p>
      <a href="https://www.gnu.org/software/bash/manual/html_node/Command-Substitution.html" rel="noopener noreferrer" target="_blank" data-darkreader-inline-color="">
        GNU Bash Reference Manual - 3.5.4 Command Substitution</a>
    </p>
    <p>
    </p>
    <p>
      -nc –no-clobber is to not re-download a podcast -P specifies
      download directory
    </p>
    <p>
    </p>
    <p>
      I went on a different direction than downloading TuxJam and asked
      to download the last 2 hpr shows, but <code>
        head -2</code> did not work as expected. This turned out to be
      an issue with the placement of <code>
        xargs</code> joining all URLs and passing them to <code>
        wget</code> all at once.
    </p>
    <p>
    </p>
    <p>
      Original:
    </p>
    <p>
    </p>
    <pre data-language="plain">wget -nc --content-disposition -P ~/podcasts/hub.hackerpublicradio.org/HPR-newsboat-test/ $(curl [http://hackerpublicradio.org/hpr\_ogg\_rss.php](http://hackerpublicradio.org/hpr_ogg_rss.php) | grep -Eo 'https\*://\[^"\]\*ogg' | sort -u | xargs | head -2)
</pre>
    <p>
    </p>
    <p>
      New:
    </p>
    <p>
    </p>
    <pre data-language="plain">curl http://hackerpublicradio.org/hpr_ogg_rss.php | grep -Eo 'https?://[^"]*\.ogg' | sort -u | head -2 | xargs wget -nc --content-disposition -P ~/podcasts/hub.hackerpublicradio.org/HPR-newsboat-test/
</pre>
    <p>
      Key fixes:
    </p>
    <p>
    </p>
    <ul>
      <li>
        Removed the premature <code>
          xargs</code> before <code>
          head -2</code>
        , so <code>
          head</code> actually limits the list to 2 URLs
      </li>
      <li>
        Moved <code>
          xargs wget ...</code> to the end, after the list is already
        trimmed
      </li>
      <li>
        Cleaned up <code>
          https*</code> → <code>
          https?</code> (the original would also match <code>
          httpssss</code>
        , etc.)
      </li>
    </ul>
    <p>
    </p>
    <p>
      Now I wanted the downloaded file to go the the queue file, located
      in <code>
        ~/.local/share/newsboat/queue</code>
    </p>
    <p>
      After several iterations in <code>
        Claude</code>
      , it was determined that the audio URL was not being expanded by
      the <code>
        %u</code> in the download macro.
    </p>
    <p>
    </p>
    <p>
      The solution was to add a /tmp file to hold the actual audio URL
    </p>
    <p>
    </p>
    <pre data-language="plain">macro d set browser "echo %u &gt; /tmp/hpr-url.txt &amp;&amp; ~/bin/download-and-rename-hpr.sh"; open-in-browser ; set browser "your-normal-browser"
</pre>
    <p>
    </p>
    <p>
      A few Claude questions later… After asking to add a function to
      the macro in order to add the resulting downloaded file to the
      queue, the file name hpr1234.ogg was being added to the queue
      instead of the renamed file.
    </p>
    <p>
    </p>
    <p>
      Two things to fix:
    </p>
    <p>
    </p>
    <ol>
      <li>
        The renamed file isn’t being found because <code>
          ls -t</code> runs before the rename has fully settled, or the
        glob isn’t matching the new filename format (which includes
        spaces and semicolons)
      </li>
      <li>
        The existing queue entries show the correct format: <code>
          "url" "path" downloaded</code> — we need to match that, with <code>
          downloaded</code> status and the full renamed path including
        extension
      </li>
    </ol>
    <h2>
    </h2>
    <h2>
      Exif rename script
    </h2>
    <p>
    </p>
    <pre data-language="plain">#!/bin/bash
# ~/bin/download-and-rename-hpr.sh

URL="$(cat /tmp/hpr-url.txt)"
echo "DEBUG URL: $URL" &gt;&gt; /tmp/hpr-debug.log

AUDIO_URL="$(curl -s "$URL" | grep -Eo 'https?://[^"]*\.(ogg|mp3)' | head -1)"
echo "DEBUG AUDIO: $AUDIO_URL" &gt;&gt; /tmp/hpr-debug.log

if [[ -z "$AUDIO_URL" ]]; then
    echo "ERROR: Could not find audio URL from: $URL" &gt;&gt; /tmp/hpr-debug.log
    exit 1
fi

DEST=~/podcasts/hub.hackerpublicradio.org/HPR-newsboat-test/

# Record files present before download
BEFORE="$(ls "$DEST"*.{ogg,mp3} 2&gt;/dev/null | sort)"

wget -nc --content-disposition -P "$DEST" "$AUDIO_URL"

cd "$DEST"

# Record filename just downloaded (new file not in BEFORE)
AFTER="$(ls "$DEST"*.{ogg,mp3} 2&gt;/dev/null | sort)"
DOWNLOADED="$(comm -13 &lt;(echo "$BEFORE") &lt;(echo "$AFTER"))"
echo "DEBUG DOWNLOADED: $DOWNLOADED" &gt;&gt; /tmp/hpr-debug.log

~/bin/exif-rename-hpr-dave.sh

# Find renamed file — newest file that wasn't in BEFORE
AFTER_RENAME="$(ls "$DEST"*.{ogg,mp3} 2&gt;/dev/null | sort)"
RENAMED="$(comm -13 &lt;(echo "$BEFORE") &lt;(echo "$AFTER_RENAME"))"
echo "DEBUG RENAMED: $RENAMED" &gt;&gt; /tmp/hpr-debug.log

if [[ -n "$RENAMED" ]]; then
    echo "\"$AUDIO_URL\" \"$RENAMED\" downloaded" &gt;&gt; ~/.local/share/newsboat/queue
else
    echo "WARN: Could not determine renamed file" &gt;&gt; /tmp/hpr-debug.log
    echo "\"$AUDIO_URL\" \"$DOWNLOADED\" downloaded" &gt;&gt; ~/.local/share/newsboat/queue
fi
</pre>
    <p>
    </p>
    <p>
      Using <code>
        comm -13</code> on sorted before/after file lists is more
      reliable than <code>
        ls -t</code> — it finds exactly which file is new regardless of
      timing. Check <code>
        /tmp/hpr-debug.log</code> after the next run to see what <code>
        DOWNLOADED</code> and <code>
        RENAMED</code> show.
    </p>
    <p>
    </p>
    <p>
      <a href="https://www.gnu.org/software/coreutils/manual/html_node/comm-invocation.html" rel="noopener noreferrer" target="_blank" data-darkreader-inline-color="">
        GNU Coreutils - Comm invocation</a>
    </p>
    <h2>
    </h2>
    <h2>
      Newsboat config snippet
    </h2>
    <h3>
    </h3>
    <h3>
      key changes
    </h3>
    <p>
    </p>
    <pre data-language="plain">download-filename-format "%t.%e" 
macro d set browser "echo %u &gt; /tmp/hpr-url.txt &amp;&amp; ~/bin/download-and-rename-hpr.sh"; open-in-browser ; set browser lynx
</pre>
    <p>
    </p><p><a href="https://hackerpublicradio.org/eps/hpr4644/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4643: HPR Beer Garden 13 - Triple IPA]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.


Dave and Kevie continue the Beer Garden series with a look at a relatively new style of IPA known as a Triple. Dave samples 
Triple Hazy Jane by Brewdog
, whilst Kevie tries out 
Glory Triple IPA
by 
Northern Monk
.














Connect wi...]]></description>
<link>https://tsecurity.de/de/3531151/it+sicherheit/it+podcasts/hpr4643+hpr+beer+garden+13+-+triple+ipa/</link>
<pubDate>Wed, 20 May 2026 02:01:48 +0200</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>

<p>
Dave and Kevie continue the Beer Garden series with a look at a relatively new style of IPA known as a Triple. Dave samples <a href="https://brewdog.com/products/triple-hazy-jane" rel="noopener noreferrer" target="_blank">
Triple Hazy Jane by Brewdog</a>
, whilst Kevie tries out <a href="https://untappd.com/b/northern-monk-glory-2024-ethereal-triple-ipa/6083378" rel="noopener noreferrer" target="_blank">
Glory Triple IPA</a>
by <a href="https://www.northernmonk.com/" rel="noopener noreferrer" target="_blank">
Northern Monk</a>
.</p>

<p>

</p>

<p>

<a href="https://hackerpublicradio.org/eps/hpr4643/hpr4643_image_1.png">
<img src="https://hackerpublicradio.org/eps/hpr4643/hpr4643_image_1_tn.png">
</a>

</p>

<p>
Connect with the guys on Untappd:</p>

<p>

</p>

<ul>

<li>

<a href="https://untappd.com/user/thelovebug" rel="noopener noreferrer" target="_blank">
Dave</a>

</li>

<li>

<a href="https://untappd.com/user/kevie49" rel="noopener noreferrer" target="_blank">
Kevie</a>

</li>

</ul>


<p><a href="https://hackerpublicradio.org/eps/hpr4643/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4642: Hackerpublic Radio New Years Eve Show 2026 Episode 7]]></title>
<description><![CDATA[This show has been flagged as Explicit by the host.



PFSense









https://www.pfsense.org/









Chromebook









https://www.google.com/chromebook/discover-chromebook/









AMD Sempron 140









https://www.techpowerup.com/cpu-specs/sempron-140.c820
...]]></description>
<link>https://tsecurity.de/de/3527509/it+sicherheit/it+podcasts/hpr4642+hackerpublic+radio+new+years+eve+show+2026+episode+7/</link>
<pubDate>Tue, 19 May 2026 02:02:56 +0200</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Explicit by the host.</p>

<p>

PFSense
</p>

<p>

</p>

<p>

<a href="https://www.pfsense.org/" rel="noopener noreferrer" target="_blank">
https://www.pfsense.org/</a>

</p>

<p>

</p>

<p>

Chromebook
</p>

<p>

</p>

<p>

<a href="https://www.google.com/chromebook/discover-chromebook/" rel="noopener noreferrer" target="_blank">
https://www.google.com/chromebook/discover-chromebook/</a>

</p>

<p>

</p>

<p>

AMD Sempron 140
</p>

<p>

</p>

<p>

<a href="https://www.techpowerup.com/cpu-specs/sempron-140.c820" rel="noopener noreferrer" target="_blank">
https://www.techpowerup.com/cpu-specs/sempron-140.c820</a>

</p>

<p>

</p>

<p>

Trinity
</p>

<p>

</p>

<p>

<a href="https://www.trinitydesktop.org/" rel="noopener noreferrer" target="_blank">
https://www.trinitydesktop.org/</a>

</p>

<p>

</p>

<p>

XFCE
</p>

<p>

</p>

<p>

<a href="https://www.xfce.org/" rel="noopener noreferrer" target="_blank">
https://www.xfce.org/</a>

</p>

<p>

</p>

<p>

</p>

<p>

Chrome OS
</p>

<p>

</p>

<p>

<a href="https://chromeos.google/" rel="noopener noreferrer" target="_blank">
https://chromeos.google/</a>

</p>

<p>

</p>

<p>

SSH
</p>

<p>

</p>

<p>

<a href="https://www.ssh.com/" rel="noopener noreferrer" target="_blank">
https://www.ssh.com/</a>

</p>

<p>

</p>

<p>

Onshape
</p>

<p>

</p>

<p>

<a href="https://www.onshape.com/en/" rel="noopener noreferrer" target="_blank">
https://www.onshape.com/en/</a>

</p>

<p>

</p>

<p>

TinkerCAD
</p>

<p>

</p>

<p>

<a href="https://www.tinkercad.com/" rel="noopener noreferrer" target="_blank">
https://www.tinkercad.com/</a>

</p>

<p>

</p>

<p>

Thorium OS
</p>

<p>

</p>

<p>

<a href="https://thorium.rocks/thoriumos" rel="noopener noreferrer" target="_blank">
https://thorium.rocks/thoriumos</a>

</p>

<p>

</p>

<p>

Tech And Coffee
</p>

<p>

</p>

<p>

<a href="https://techandcoffee.info/" rel="noopener noreferrer" target="_blank">
https://techandcoffee.info/</a>

</p>

<p>

</p>

<p>

Panera
</p>

<p>

</p>

<p>

<a href="https://www.panerabread.com/en-us/home.html" rel="noopener noreferrer" target="_blank">
https://www.panerabread.com/en-us/home.html</a>

</p>

<p>

</p>

<p>

IHOP
</p>

<p>

</p>

<p>

<a href="https://www.panerabread.com/en-us/home.html" rel="noopener noreferrer" target="_blank">
https://www.panerabread.com/en-us/home.html</a>

</p>

<p>

</p>

<p>

Waffle House
</p>

<p>

</p>

<p>

<a href="https://www.wafflehouse.com/" rel="noopener noreferrer" target="_blank">
https://www.wafflehouse.com/</a>

</p>

<p>

</p>

<p>

In And Out Burger
</p>

<p>

</p>

<p>

<a href="https://www.in-n-out.com/" rel="noopener noreferrer" target="_blank">
https://www.in-n-out.com/</a>

</p>

<p>

</p>

<p>

Economies Of Scale
</p>

<p>

</p>

<p>

<a href="https://www.investopedia.com/terms/e/economiesofscale.asp" rel="noopener noreferrer" target="_blank">
https://www.investopedia.com/terms/e/economiesofscale.asp</a>

</p>

<p>

</p>

<p>

Dunkin Donuts
</p>

<p>

</p>

<p>

<a href="https://www.dunkindonuts.com/en" rel="noopener noreferrer" target="_blank">
https://www.dunkindonuts.com/en</a>

</p>

<p>

</p>

<p>

F-Droid
</p>

<p>

</p>

<p>

<a href="https://f-droid.org/en/" rel="noopener noreferrer" target="_blank">
https://f-droid.org/en/</a>

</p>

<p>

</p>

<p>

Cheap Yellow Display
</p>

<p>

</p>

<p>

<a href="https://blog.decryption.net.au/posts/cyd-for-beginners.html" rel="noopener noreferrer" target="_blank">
https://blog.decryption.net.au/posts/cyd-for-beginners.html</a>

</p>

<p>

</p>

<p>

NTP Server
</p>

<p>

</p>

<p>

<a href="https://www.ntppool.org/en/" rel="noopener noreferrer" target="_blank">
https://www.ntppool.org/en/</a>

</p>

<p>

</p>

<p>

Beagle (Dog)
</p>

<p>

</p>

<p>

<a href="https://www.akc.org/dog-breeds/beagle/" rel="noopener noreferrer" target="_blank">
https://www.akc.org/dog-breeds/beagle/</a>

</p>

<p>

</p>

<p>

Siamese Cat
</p>

<p>

</p>

<p>

<a href="https://www.life-with-siamese-cats.com/" rel="noopener noreferrer" target="_blank">
https://www.life-with-siamese-cats.com/</a>

</p>

<p>

</p>

<p>

Bsides InfoSec Conference - Knoxville, TN
</p>

<p>

</p>

<p>

<a href="https://www.papercall.io/bsides-knoxville-2026" rel="noopener noreferrer" target="_blank">
https://www.papercall.io/bsides-knoxville-2026</a>

</p>

<p>

</p>

<p>

CI/CD Pipeline
</p>

<p>

</p>

<p>

<a href="https://circleci.com/blog/what-is-a-ci-cd-pipeline/" rel="noopener noreferrer" target="_blank">
https://circleci.com/blog/what-is-a-ci-cd-pipeline/</a>

</p>

<p>

</p>

<p>

Strace Command
</p>

<p>

</p>

<p>

<a href="https://www.geeksforgeeks.org/linux-unix/strace-command-in-linux-with-examples/" rel="noopener noreferrer" target="_blank">
https://www.geeksforgeeks.org/linux-unix/strace-command-in-linux-with-examples/</a>

</p>

<p>

</p>

<p>

High Pass Filter
</p>

<p>

</p>

<p>

<a href="https://www.izotope.com/en/learn/6-ways-to-use-a-high-pass-filter-when-mixing" rel="noopener noreferrer" target="_blank">
https://www.izotope.com/en/learn/6-ways-to-use-a-high-pass-filter-when-mixing</a>

</p>

<p>

</p>

<p>

Waters &amp; Stanton - Radio Shop
</p>

<p>

</p>

<p>

<a href="https://www.hamradiostore.co.uk/" rel="noopener noreferrer" target="_blank">
https://www.hamradiostore.co.uk/</a>

</p>

<p>

</p>

<p>

Home Assistant
</p>

<p>

</p>

<p>

<a href="https://www.home-assistant.io/" rel="noopener noreferrer" target="_blank">
https://www.home-assistant.io/</a>

</p>

<p>

</p>

<p>

ESP 32
</p>

<p>

</p>

<p>

<a href="https://www.espressif.com/en/products/socs/esp32" rel="noopener noreferrer" target="_blank">
https://www.espressif.com/en/products/socs/esp32</a>

</p>

<p>

</p>

<p>

EMF Camp
</p>

<p>

</p>

<p>

<a href="https://www.emfcamp.org/" rel="noopener noreferrer" target="_blank">
https://www.emfcamp.org/</a>

</p>

<p>

</p>

<p>

YAML
</p>

<p>

</p>

<p>

<a href="https://yaml.org/" rel="noopener noreferrer" target="_blank">
https://yaml.org/</a>

</p>

<p>

</p>

<p>

ChatGPT
</p>

<p>

</p>

<p>

<a href="https://chatgpt.com/" rel="noopener noreferrer" target="_blank">
https://chatgpt.com/</a>

</p>

<p>

</p>

<p>

TOR
</p>

<p>

</p>

<p>

<a href="https://www.torproject.org/" rel="noopener noreferrer" target="_blank">
https://www.torproject.org/</a>

</p>

<p>

</p>

<p>

IPTables
</p>

<p>

</p>

<p>

<a href="https://linux.die.net/man/8/iptables" rel="noopener noreferrer" target="_blank">
https://linux.die.net/man/8/iptables</a>

</p>

<p>

</p>

<p>

<a href="https://ccrma.stanford.edu/planetccrma/man/man8/ipchains.8.html" rel="noopener noreferrer" target="_blank">
https://ccrma.stanford.edu/planetccrma/man/man8/ipchains.8.html</a>

</p>

<p>

</p>

<p>

RSYNC
</p>

<p>

</p>

<p>

<a href="https://linux.die.net/man/1/rsync" rel="noopener noreferrer" target="_blank">
https://linux.die.net/man/1/rsync</a>

</p>

<p>

</p>

<p>

SYM Link
</p>

<p>

</p>

<p>

<a href="https://stackoverflow.com/questions/1951742/how-can-i-symlink-a-file-in-linux" rel="noopener noreferrer" target="_blank">
https://stackoverflow.com/questions/1951742/how-can-i-symlink-a-file-in-linux</a>

</p>

<p>

</p>

<p>

CDN (Content Delivery Network)
</p>

<p>

</p>

<p>

<a href="https://www.cloudflare.com/learning/cdn/what-is-a-cdn/" rel="noopener noreferrer" target="_blank">
https://www.cloudflare.com/learning/cdn/what-is-a-cdn/</a>

</p>

<p>

</p>

<p>

Mastadon
</p>

<p>

</p>

<p>

<a href="https://joinmastodon.org/" rel="noopener noreferrer" target="_blank">
https://joinmastodon.org/</a>

</p>

<p>

</p>

<p>

DuoLingo
</p>

<p>

</p>

<p>

<a href="https://www.duolingo.com/" rel="noopener noreferrer" target="_blank">
https://www.duolingo.com/</a>

</p>

<p>

</p>

<p>

Fedora
</p>

<p>

</p>

<p>

<a href="https://en.wikipedia.org/wiki/Fedora" rel="noopener noreferrer" target="_blank">
https://en.wikipedia.org/wiki/Fedora</a>

</p>

<p>

</p>

<p>

Pea Coat
</p>

<p>

</p>

<p>

<a href="https://www.artofmanliness.com/style/clothing/mans-guide-pea-coat/" rel="noopener noreferrer" target="_blank">
https://www.artofmanliness.com/style/clothing/mans-guide-pea-coat/</a>

</p>

<p>

</p>

<p>

Haiku
</p>

<p>

</p>

<p>

<a href="https://www.haiku-os.org/" rel="noopener noreferrer" target="_blank">
https://www.haiku-os.org/</a>

</p>

<p>

</p>

<p>

Hunt Brothers Pizza
</p>

<p>

</p>

<p>

<a href="https://www.huntbrotherspizza.com/" rel="noopener noreferrer" target="_blank">
https://www.huntbrotherspizza.com/</a>

</p>

<p>

</p>

<p>

Papa Johns Pizza
</p>

<p>

</p>

<p>

<a href="https://www.papajohns.com/omni/en" rel="noopener noreferrer" target="_blank">
https://www.papajohns.com/omni/en</a>

</p>

<p>

</p>

<p>

PIzza Hut
</p>

<p>

</p>

<p>

<a href="https://www.pizzahut.com/" rel="noopener noreferrer" target="_blank">
https://www.pizzahut.com/</a>

</p>

<p>

</p>

<p>

Dominos Pizza
</p>

<p>

</p>

<p>

<a href="https://www.dominos.com/" rel="noopener noreferrer" target="_blank">
https://www.dominos.com/</a>

</p>

<p>

</p>

<p>

Marcos Pizza
</p>

<p>

</p>

<p>

<a href="https://www.marcos.com/" rel="noopener noreferrer" target="_blank">
https://www.marcos.com/</a>

</p>

<p>

</p>

<p>

Little Ceasars Pizza
</p>

<p>

</p>

<p>

<a href="https://littlecaesars.com/en-us/" rel="noopener noreferrer" target="_blank">
https://littlecaesars.com/en-us/</a>

</p>

<p>

</p>

<p>

Hungry Howies Pizza
</p>

<p>

</p>

<p>

<a href="https://www.hungryhowies.com/" rel="noopener noreferrer" target="_blank">
https://www.hungryhowies.com/</a>

</p>

<p>

</p>

<p>

MOD Pizza
</p>

<p>

</p>

<p>

<a href="https://modpizza.com/" rel="noopener noreferrer" target="_blank">
https://modpizza.com/</a>

</p>

<p>

</p>

<p>

Papa Murphys Pizza
</p>

<p>

</p>

<p>

<a href="https://www.papamurphys.com/" rel="noopener noreferrer" target="_blank">
https://www.papamurphys.com/</a>

</p>

<p>

</p>

<p>

Wolfman Pizza
</p>

<p>

</p>

<p>

<a href="https://wolfmanpizza.com/" rel="noopener noreferrer" target="_blank">
https://wolfmanpizza.com/</a>

</p>

<p>

</p>

<p>

Fuel Pizza
</p>

<p>

</p>

<p>

<a href="https://www.fuelpizza.com/" rel="noopener noreferrer" target="_blank">
https://www.fuelpizza.com/</a>

</p>

<p>

</p>

<p>

Shallow Hal
</p>

<p>

</p>

<p>

<a href="https://www.rottentomatoes.com/m/shallow_hal" rel="noopener noreferrer" target="_blank">
https://www.rottentomatoes.com/m/shallow_hal</a>

</p>

<p>

</p>

<p>

South Coast Pizza
</p>

<p>

</p>

<p>

<a href="https://southcoastpizza.com/" rel="noopener noreferrer" target="_blank">
https://southcoastpizza.com/</a>

</p>

<p>

</p>

<p>

Casa Dora
</p>

<p>

</p>

<p>

<a href="https://www.casadoraitaliancusinepizzeria.com/" rel="noopener noreferrer" target="_blank">
https://www.casadoraitaliancusinepizzeria.com/</a>

</p>

<p>

</p>

<p>

National Pizza Day
</p>

<p>

</p>

<p>

<a href="https://www.nationaldaycalendar.com/national-day/national-pizza-day-february-9" rel="noopener noreferrer" target="_blank">
https://www.nationaldaycalendar.com/national-day/national-pizza-day-february-9</a>

</p>

<p>

</p>

<p>

Sagitarius
</p>

<p>

</p>

<p>

<a href="https://www.zodiacsign.com/zodiac-signs/sagittarius/" rel="noopener noreferrer" target="_blank">
https://www.zodiacsign.com/zodiac-signs/sagittarius/</a>

</p>

<p>

</p>

<p>

Alexa
</p>

<p>

</p>

<p>

<a href="https://alexa.amazon.com/userProfile?redirectTo=%2F" rel="noopener noreferrer" target="_blank">
https://alexa.amazon.com/userProfile?redirectTo=%2F</a>

</p>

<p>

</p>

<p>

Gemini
</p>

<p>

</p>

<p>

<a href="https://gemini.google.com/app" rel="noopener noreferrer" target="_blank">
https://gemini.google.com/app</a>

</p>

<p>

</p>

<p>

Netscape
</p>

<p>

</p>

<p>

<a href="https://isp.netscape.com/" rel="noopener noreferrer" target="_blank">
https://isp.netscape.com/</a>

</p>

<p>

</p>

<p>

Seamonkey
</p>

<p>

</p>

<p>

<a href="https://www.seamonkey-project.org/" rel="noopener noreferrer" target="_blank">
https://www.seamonkey-project.org/</a>

</p>

<p>

</p>

<p>

Thunderbird
</p>

<p>

</p>

<p>

<a href="https://www.thunderbird.net/en-US/" rel="noopener noreferrer" target="_blank">
https://www.thunderbird.net/en-US/</a>

</p>

<p>

</p>

<p>

ULC Minister
</p>

<p>

</p>

<p>

<a href="https://www.ulc.org/" rel="noopener noreferrer" target="_blank">
https://www.ulc.org/</a>

</p>

<p>

</p>

<p>

Church Of Spiritual Humanism
</p>

<p>

</p>

<p>

<a href="https://spiritualhumanism.org/" rel="noopener noreferrer" target="_blank">
https://spiritualhumanism.org/</a>

</p>

<p>

</p>

<p>

Oberon Zelle Ravenheart
</p>

<p>

</p>

<p>

<a href="https://en.wikipedia.org/wiki/Oberon_Zell-Ravenheart" rel="noopener noreferrer" target="_blank">
https://en.wikipedia.org/wiki/Oberon_Zell-Ravenheart</a>

</p>

<p>

</p>

<p>

Temple of Wicca 
</p>

<p>

</p>

<p>

<a href="https://www.wiccanfamilytemple.org/" rel="noopener noreferrer" target="_blank">
https://www.wiccanfamilytemple.org/</a>

</p>

<p>

</p>

<p>

Church Of All Worlds
</p>

<p>

</p>

<p>

<a href="https://caw.org/" rel="noopener noreferrer" target="_blank">
https://caw.org/</a>

</p>

<p>

</p>

<p>

Progressive Universal Life Church
</p>

<p>

</p>

<p>

<a href="https://www.thepulc.com/" rel="noopener noreferrer" target="_blank">
https://www.thepulc.com/</a>

</p>

<p>

</p>

<p>

Pine Time
</p>

<p>

</p>

<p>

<a href="https://pine64.org/devices/pinetime/" rel="noopener noreferrer" target="_blank">
https://pine64.org/devices/pinetime/</a>

</p>

<p>

</p>

<p>

AmazFit Watch
</p>

<p>

</p>

<p>

<a href="https://us.amazfit.com/" rel="noopener noreferrer" target="_blank">
https://us.amazfit.com/</a>

</p>

<p>

</p>

<p>

Zepp App 
</p>

<p>

</p>

<p>

<a href="https://play.google.com/store/apps/details?id=com.huami.watch.hmwatchmanager&amp;hl=en_US&amp;pli=1" rel="noopener noreferrer" target="_blank">
https://play.google.com/store/apps/details?id=com.huami.watch.hmwatchmanager&amp;hl=en_US&amp;pli=1</a>

</p>

<p>

</p>

<p>

Pegasus Mail
</p>

<p>

</p>

<p>

<a href="https://www.pmail.com/" rel="noopener noreferrer" target="_blank">
https://www.pmail.com/</a>

</p>

<p>

</p>

<p>

Eudora
</p>

<p>

</p>

<p>

<a href="https://en.wikipedia.org/wiki/Eudora_(email_client)" rel="noopener noreferrer" target="_blank">
https://en.wikipedia.org/wiki/Eudora_(email_client)</a>

</p>

<p>

</p>

<p>

Proton Mail
</p>

<p>

</p>

<p>

<a href="https://proton.me/mail" rel="noopener noreferrer" target="_blank">
https://proton.me/mail</a>

</p>

<p>

</p>

<p>

AOL
</p>

<p>

</p>

<p>

<a href="https://www.aol.com/" rel="noopener noreferrer" target="_blank">
https://www.aol.com/</a>

</p>

<p>

</p>

<p>

OpenSuse
</p>

<p>

</p>

<p>

<a href="https://www.opensuse.org/" rel="noopener noreferrer" target="_blank">
https://www.opensuse.org/</a>

</p>

<p>

</p>

<p>

Mandrake Linux
</p>

<p>

</p>

<p>

<a href="https://www.mandrakelinux.org/" rel="noopener noreferrer" target="_blank">
https://www.mandrakelinux.org/</a>

</p>

<p>

</p>

<p>

Virtualbox
</p>

<p>

</p>

<p>

<a href="https://www.virtualbox.org/" rel="noopener noreferrer" target="_blank">
https://www.virtualbox.org/</a>

</p>

<p>

</p>

<p>

Bitcoin
</p>

<p>

</p>

<p>

<a href="https://bitcoin.org/en/" rel="noopener noreferrer" target="_blank">
https://bitcoin.org/en/</a>

</p>

<p>

</p>

<p>

Norway
</p>

<p>

</p>

<p>

<a href="https://www.visitnorway.com/" rel="noopener noreferrer" target="_blank">
https://www.visitnorway.com/</a>

</p>

<p>

</p>

<p>

XFCE
</p>

<p>

</p>

<p>

<a href="https://www.xfce.org/" rel="noopener noreferrer" target="_blank">
https://www.xfce.org/</a>

</p>

<p>

</p>


<p><a href="https://hackerpublicradio.org/eps/hpr4642/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4641: Technical Dutch Open Source Event (T-DOSE)]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.


Technical Dutch Open Source Event (T-DOSE)






















Ken interviews Peter van Ginneken who is chair of the 
Technical Dutch Open Source Event (T-DOSE)
.


It is a free conference to promote the use and development of Open Source softw...]]></description>
<link>https://tsecurity.de/de/3524537/it+sicherheit/it+podcasts/hpr4641+technical+dutch+open+source+event+t-dose/</link>
<pubDate>Mon, 18 May 2026 02:01:47 +0200</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>

<h1>
Technical Dutch Open Source Event (T-DOSE)</h1>

<p>

</p>

<p>

<img src="https://hackerpublicradio.org/eps/hpr4641/hpr4641_image_1.png">

</p>

<p>

<img src="https://" alt="Peter van Ginneken">

</p>

<p>

</p>

<p>
Ken interviews Peter van Ginneken who is chair of the <a href="https://t-dose.org/2026/" rel="noopener noreferrer" target="_blank">
Technical Dutch Open Source Event (T-DOSE)</a>
.</p>

<p>
It is a free conference to promote the use and development of Open Source software. This event has is organized yearly since 2006 in the Brainport region, near Eindhoven, The Netherlands. During this event, Open Source projects, developers and visitors can exchange ideas and knowledge.</p>

<p>
T-DOSE wil take place on <strong>
6 and 7 June 2026</strong>
at <a href="https://t-dose.org/venue/" rel="noopener noreferrer" target="_blank">
the Weeffabriek</a>
in Geldrop (near Eindhoven). </p>

<p>

<a href="https://t-dose.org/2026/" rel="noopener noreferrer" target="_blank">
https://t-dose.org/2026/</a>

</p>

<p>

</p>

<h2>
Contact Information</h2>

<ul>

<li>

<a href="https://tube.t-dose.org/videos/browse" rel="noopener noreferrer" target="_blank">
Peertube</a>

</li>

<li>

<a href="https://libera.chat/" rel="noopener noreferrer" target="_blank">
Libera.chat</a>
IRC, #t-dose</li>

<li>

<a href="https://fosstodon.org/@tdose" rel="noopener noreferrer" target="_blank">
Mastodon</a>

</li>

<li>

<a href="https://www.linkedin.com/company/t-dose-foundation-stichting-t-dose-" rel="noopener noreferrer" target="_blank">
LinkedIn</a>

</li>

<li>

<a href="https://www.facebook.com/tdosenl" rel="noopener noreferrer" target="_blank">
Facebook</a>

</li>

<li>

<a href="https://www.instagram.com/tdose_official" rel="noopener noreferrer" target="_blank">
Instagram</a>

</li>

</ul>

<h2>

</h2>

<h2>
Travel Times</h2>

<table border="1" cellpadding="8" cellspacing="0">
  <thead>
    <tr>
      <th>Country</th>
      <th>Typical Travel Method</th>
      <th>Example Destination</th>
      <th>Approx Duration</th>
      <th>Typical Budget Cost (One Way)</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Belgium</td>
      <td>Train / Flixbus</td>
      <td>Antwerp</td>
      <td>1–1.5h</td>
      <td>€10–25</td>
    </tr>
    <tr>
      <td>Germany</td>
      <td>Train / Flixbus</td>
      <td>Cologne</td>
      <td>1.5–2h</td>
      <td>€20–40</td>
    </tr>
    <tr>
      <td>United Kingdom</td>
      <td>Ryanair flight</td>
      <td>London Stansted</td>
      <td>1h05</td>
      <td>€20–70</td>
    </tr>
    <tr>
      <td>Ireland</td>
      <td>Ryanair flight</td>
      <td>Dublin</td>
      <td>1h40</td>
      <td>€25–80</td>
    </tr>
    <tr>
      <td>Denmark</td>
      <td>Transavia flight</td>
      <td>Copenhagen</td>
      <td>1h25</td>
      <td>€40–100</td>
    </tr>
    <tr>
      <td>Austria</td>
      <td>Ryanair flight</td>
      <td>Vienna</td>
      <td>1h40</td>
      <td>€30–90</td>
    </tr>
    <tr>
      <td>Czech Republic</td>
      <td>Transavia flight</td>
      <td>Prague</td>
      <td>1h20</td>
      <td>€35–90</td>
    </tr>
    <tr>
      <td>Poland</td>
      <td>Ryanair / Wizz Air</td>
      <td>Kraków</td>
      <td>1h50</td>
      <td>€25–80</td>
    </tr>
    <tr>
      <td>Hungary</td>
      <td>Wizz Air</td>
      <td>Budapest</td>
      <td>1h55</td>
      <td>€30–90</td>
    </tr>
    <tr>
      <td>Italy</td>
      <td>Ryanair flight</td>
      <td>Milan Bergamo</td>
      <td>1h35</td>
      <td>€25–85</td>
    </tr>
    <tr>
      <td>Spain</td>
      <td>Ryanair / Transavia</td>
      <td>Barcelona</td>
      <td>2h05</td>
      <td>€35–120</td>
    </tr>
    <tr>
      <td>Portugal</td>
      <td>Ryanair / Transavia</td>
      <td>Porto</td>
      <td>2h40</td>
      <td>€45–130</td>
    </tr>
    <tr>
      <td>Croatia</td>
      <td>Ryanair flight</td>
      <td>Zagreb</td>
      <td>1h50</td>
      <td>€35–90</td>
    </tr>
    <tr>
      <td>Slovakia</td>
      <td>Ryanair flight</td>
      <td>Bratislava</td>
      <td>1h40</td>
      <td>€25–70</td>
    </tr>
    <tr>
      <td>Romania</td>
      <td>Wizz Air</td>
      <td>Cluj-Napoca</td>
      <td>2h20</td>
      <td>€40–110</td>
    </tr>
    <tr>
      <td>Bulgaria</td>
      <td>Ryanair / Wizz Air</td>
      <td>Sofia</td>
      <td>2h35</td>
      <td>€35–100</td>
    </tr>
    <tr>
      <td>Albania</td>
      <td>Ryanair / Wizz Air</td>
      <td>Tirana</td>
      <td>2h30</td>
      <td>€35–110</td>
    </tr>
  </tbody>
</table>

<p>

</p>


<p><a href="https://hackerpublicradio.org/eps/hpr4641/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4640: Robert A. Heinlein]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.
Robert A. Heinlein						
Robert A. Heinlein was the author who many people claim kicked off the Golden Age, though that can be the subject of many a barroom argument. E.E. “Doc” Smith was already an established writer by this time, and A.E. van Vog...]]></description>
<link>https://tsecurity.de/de/3518127/it+sicherheit/it+podcasts/hpr4640+robert+a+heinlein/</link>
<pubDate>Fri, 15 May 2026 02:02:56 +0200</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>
<h1>Robert A. Heinlein</h1>						
<p>Robert A. Heinlein was the author who many people claim kicked off the Golden Age, though that can be the subject of many a barroom argument. E.E. “Doc” Smith was already an established writer by this time, and A.E. van Vogt was contemporaneous with Heinlein. But Heinlein managed to outshine everyone in very short order. He was widely known as “The Dean of Science Fiction Writers,” which testifies to his stature in the community, and along with Arthur C. Clarke and Isaac Asimov he was one of the Big Three of the Golden Age. He was the first person to be named a Science Fiction Grand Master in 1974. Four of his novels won Hugo Awards (<em>Double Star</em>, <em>Starship Troopers</em>, <em>Stranger in a Strange Land</em>, and <em>The Moon is a Harsh Mistress</em>), and 7 more works were given Retro-Hugo awards, which are awarded for works that were written before the Hugos were established. He also had many more works nominated for both awards, as well as many other awards like Nebula Awards. In short, he was a big deal to the science fiction community at large, and to me personally. I was, for a short time, managing the web site for The Heinlein Society, and I have read every work of his that I am aware of.</p>
<h2>Heinlein Background</h2>
<p>Robert Anson Heinlein was born in 1907 in Butler, Missouri, and grew up in Kansas City, Missouri, which he described as the middle of the Bible Belt, and this background is reflected in some of his stories, particularly the later ones. His family tradition had it that the Heinlein’s had fought in every American war beginning with the War of Independence, and Robert and his brothers all joined the armed forces. Robert lied about his age when he was 16 in order to enlist in the Missouri National Guard, and a few years later obtained an appointment to the Naval Academy, graduating in 1929 with the equivalent of a bachelors degree in engineering (the Naval Academy did not award degrees at the time). His engineering background is very apparent in his writings. He served on several ships, rising to the rank of Lieutenant, before being discharged in 1934 due to pulmonary tuberculosis. It seems likely that if he did not contract this illness he would have continued his career in the Navy, and with World War II coming, well, who knows what might have happened. But he did get ill, and had to find things to do. He notably got involved with Upton Sinclair’s socialist organization EPIC (End Poverty in California). He ran for office unsuccessfully, running as a left-Democrat in a conservative district. And while he had a disability pension from the Navy, he turned to writing to pay off his mortgage.</p>
<h2>Heinlein’s Writing</h2>
<p>Heinlein was originally known as a “hard” science fiction writer, meaning one who puts plausible and accurate science at the heart of the story. But looking at his entire career, he was equally comfortable writing fantasy, though not the faux medieval kind that many writers. In fact, he coined the term “speculative fiction” to describe the kind of stories he wrote. And if he wanted to he was quite capable of mixing the hard science and the fantasy, particularly in his later novels. And his output was very substantial. Asimov wrote more than Heinlein, but Heinlein stuck to fiction, while Asimov wrote in a variety of fields, so Heinlein’s output in the general area of science fiction/fantasy is the greater. And he is known for works of all lengths from short stories to novels. A useful guide to his works is the book <a href="https://www.amazon.com/Robert-Heinlein-Readers-Companion/dp/0967987407" data-type="link" data-id="https://www.amazon.com/Robert-Heinlein-Readers-Companion/dp/0967987407"><em>Robert A. Heinlein: A Reader’s Companion</em>, by James Gifford</a>. This book covers all of his science fiction/fantasy works known as of 2000, and gives additional information about the writing and circumstances of the stories. But in 2003 an early work was discovered and published. It was a novel called <em><a href="https://www.amazon.com/Us-Living-Comedy-Customs/dp/074325998X/ref=tmm_hrd_swatch_0" data-type="link" data-id="https://www.amazon.com/Us-Living-Comedy-Customs/dp/074325998X/ref=tmm_hrd_swatch_0">For Us The Living</a></em>, and while you can see the germ of Heinlein’s style in this novel, it is also a very early work written in 1938 and is not one of his best. He would get a lot better than this. In any case, it was not published at the time, and is mostly of interest to Heinlein superfans or scholars.</p>
<p>Heinlein got his real start in 1939 with a short story called <em>Life-line</em>, which was published in John W. Campbell’s <em>Astounding</em> magazine. Isaac Asimov had published a few stories by this time, and his first for John W. Campbell’s <em>Astounding</em> was in the previous month, July 1939, so as you can see this was a very fertile time in the development of the genre. Heinlein’s story was about a scientist who developed a technology to predict a person’s time of death. This totally threatens the insurance industry, and one of the CEO’s put out hit on the scientist, which he of course already knows about having tested himself. This is not the best short story, but it was quite competent, and John W. Campbell immediately asked for more.</p>
<p>More short stories followed. In the November 1939 issue of Astounding the story<em> Misfit</em> appeared. It introduces the character of Andrew Jackson “Slipstick” Libby, a young man with little education but a great ability to do mathematics in his head. And his ability turns out to be just what is needed during a construction project in space when things go wrong. And in 1940 he had 9 more stories published. And at this point he faced a problem. He was becoming so prolific that for a number of reasons he had to employ pseudonyms for some of his stories. One reason was that he couldn’t have too many stories in one magazine in his name, it made the editor look bad. In any case all of the stories are now published under Heinlein’s name. And of the 9 stories, 6 were either nominated for or won Retro Hugo awards, and several also won Prometheus Hall of Fame Awards, for the best libertarian or anti-authoritarian works. So you can see that his was a talent that exploded on the scene, so that you could legitimately divide the science fiction history into pre-Heinlein and post-Heinlein periods.</p>
<p>11 more stories of various lengths followed in 1941, and 5 in 1942. There were mostly short stories, but a few novellas and novelettes appeared. But he was really a short fiction writer at this time, and there are some extraordinary stories in this group. He was the most successful writer of speculative fiction of the time, and passed along some advice to anyone who wanted to be a successful writer.</p>
<h2>Heinlein’s Rules of Writing</h2>
<p>Because he was so successful, it should come as no surprise that aspiring writers frequently wrote to him for advice, and in response he formulated his Rules of Writing. This is taken from his <a href="https://en.wikipedia.org/wiki/On_the_Writing_of_Speculative_Fiction" data-type="link" data-id="https://en.wikipedia.org/wiki/On_the_Writing_of_Speculative_Fiction">On The Writing of Speculative Fiction</a> :</p>
<ol>
<li>You must write.</li>
<li>Finish what you start.</li>
<li>You must refrain from rewriting, except to editorial order.</li>
<li>You must put your story on the market.</li>
<li>You must keep it on the market until it has sold.</li>
</ol>
<p>He goes on to say in this article : “The above five rules really have more to do with how to write speculative fiction than anything said above them. But they are amazingly hard to follow—which is why there are so few professional writers and so many aspirants, and which is why I am not afraid to give away the racket!”</p>
<p>This is very good advice, but as Heinlein points out his rules are indeed hard to follow. For example, Rule #1: You must write. Many people want to be a writer, but not as many really want to write, and there is a very distinct difference. Just as many people want to be a rock star, but don’t want to spend years dead broke playing in dive bars to get there.</p>
<p>But it is also fair to point out that Heinlein was a rare talent, and I doubt if simply following his rules would make anyone else a similar success. They are good rules, no doubt, but Heinlein was already very familiar with and well-read in the field before he started writing. </p>
<p>That finishes this particular exploration of where Heinlein came from and how be began his career. And since it all started with short fiction, I next want to focus on that. beginning with his Future History.</p>
<p>This starts our look at the works of Robert A. Heinlein, the third of the Big Three authors of the Golden Age.</p>
<h3>Links:</h3>
<ul>
<li><a href="https://en.wikipedia.org/wiki/Robert_A._Heinlein">https://en.wikipedia.org/wiki/Robert_A._Heinlein</a></li>
<li><a href="https://www.amazon.com/Robert-Heinlein-Readers-Companion/dp/0967987407">https://www.amazon.com/Robert-Heinlein-Readers-Companion/dp/0967987407</a></li>
<li><a href="https://www.amazon.com/Us-Living-Comedy-Customs/dp/074325998X/ref=tmm_hrd_swatch_0">https://www.amazon.com/Us-Living-Comedy-Customs/dp/074325998X/ref=tmm_hrd_swatch_0</a></li>
<li><a href="https://en.wikipedia.org/wiki/On_the_Writing_of_Speculative_Fiction">https://en.wikipedia.org/wiki/On_the_Writing_of_Speculative_Fiction</a></li>
<li><a href="https://www.palain.com/science-fiction/the-golden-age/robert-a-heinlein/">https://www.palain.com/science-fiction/the-golden-age/robert-a-heinlein/</a></li>
</ul><p><a href="https://hackerpublicradio.org/eps/hpr4640/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4639: NLUUG Spring Conference 2026]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.

    NLUUG Spring Conference 2026
    
    
      "NLUUG is the association of (professional) Open Source and Open
      Standards users in the Netherlands" You can follow them on 
        @nluug@nluug.social
      on Mastodon.
    
      I was par...]]></description>
<link>https://tsecurity.de/de/3515328/it+sicherheit/it+podcasts/hpr4639+nluug+spring+conference+2026/</link>
<pubDate>Thu, 14 May 2026 02:01:57 +0200</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>

    <h1>NLUUG Spring Conference 2026
    </h1>
    <p>
      "NLUUG is the association of (professional) Open Source and Open
      Standards users in the Netherlands" You can follow them on <a href="https://nluug.social/@nluug" rel="noopener noreferrer" target="_blank">
        @nluug@nluug.social</a>
      on Mastodon.</p>
    <p>
      I was particularly interested to attend their <a href="https://nluug.nl/evenementen/nluug/voorjaarsconferentie-2026/" rel="noopener noreferrer" target="_blank">
        2026 Spring Conference 2026</a>
      as our own <a href="https://hackerpublicradio.org/correspondents/0369.html" rel="noopener noreferrer" target="_blank">
        Jeroen Baten</a>
      was giving a talk on "Getting started with CI/CD using <a href="https://forgejo.org/" rel="noopener noreferrer" target="_blank">
        Forgejo</a>
      Actions and why this is important AF"</p>
    <p>
      He assures me he will post it as a show. <em>
        cough</em>
      owes me a show <em>
        cough</em>
      .</p>
    <p>
      While there the urge to record came upon me, so I was able to snag
      a few interviews.</p>
    <h2>
      Ronny Lam representing NLUUG</h2>
    <blockquote>
      NLUUG is the association for (professional) developers,
      administrators and users of UNIX/Linux, Open Source, Open Source,
      Open Systems and Open Standards in the Netherlands. The NLUUG
      community includes, system administrators, programmers and network
      specialists.</blockquote>
    <blockquote>
      If you are working as an open professional, then NLUUG is the
      excellent association where you can keep track of your technical
      knowledge, for example during our six-monthly conferences. The aim
      of NLUUG is to disseminate the application and knowledge of open
      standards and UNIX/Linux.</blockquote>
    <blockquote>
      NLUUG maintains close ties with many organizations and individuals
      who pursue the open mind.</blockquote>
    <p>
    </p>
    <p>
    </p>
    <p>
      <a href="https://hackerpublicradio.org/eps/hpr4639/hpr4639_image_1.jpeg">
        <img src="https://hackerpublicradio.org/eps/hpr4639/hpr4639_image_1_tn.jpeg">
      </a>
    </p>
    <p>
    </p>
    <ul>
      <li>
        <a href="https://nluug.nl/organisatie/personen/ronny-lam/" rel="noopener noreferrer" target="_blank">
          https://nluug.nl/organisatie/personen/ronny-lam/</a>
      </li>
      <li>
        <a href="https://nl.wikipedia.org/wiki/NLUUG" rel="noopener
          noreferrer" target="_blank">
          https://nl.wikipedia.org/wiki/NLUUG</a>
      </li>
      <li>
        <a href="https://nluug.nl/" rel="noopener noreferrer" target="_blank">
          https://nluug.nl/</a>
      </li>
    </ul>
    <h2>
      Nico Rikken representing the FSFE</h2>
    <blockquote>
      The Free Software Foundation Europe is a charity that empowers
      users to control technology. Software is deeply involved in all
      aspects of our lives. Free Software gives everybody the rights to
      use, understand, adapt, and share software. These rights help
      support other fundamental rights like freedom of speech, freedom
      of press, and privacy. <a href="https://fsfe.org/freesoftware/index.en.html" rel="noopener
        noreferrer" target="_blank">
        Learn more</a>
    </blockquote>
    <p>
      While we are no strangers to chatting with the <a href="https://fsfe.org/" rel="noopener noreferrer" target="_blank">
        Free Software Foundation Europe</a>
      (<a href="https://www.hackerpublicradio.org/eps/hpr0857/index.html" rel="noopener noreferrer" target="_blank">
        hpr857</a>
      , <a href="https://www.hackerpublicradio.org/eps/hpr1957/index.html" rel="noopener noreferrer" target="_blank">
        hpr1957</a>
      , <a href="https://www.hackerpublicradio.org/eps/hpr2223/index.html" rel="noopener noreferrer" target="_blank">
        hpr2223</a>
      , <a href="https://www.hackerpublicradio.org/eps/hpr2945/index.html" rel="noopener noreferrer" target="_blank">
        hpr2945</a>
      , <a href="https://www.hackerpublicradio.org/eps/hpr2946/index.html" rel="noopener noreferrer" target="_blank">
        hpr2946</a>
      , <a href="https://www.hackerpublicradio.org/eps/hpr3388/index.html" rel="noopener noreferrer" target="_blank">
        hpr3388</a>
      , <a href="https://www.hackerpublicradio.org/eps/hpr3407/index.html" rel="noopener noreferrer" target="_blank">
        hpr3407</a>
      , <a href="https://www.hackerpublicradio.org/eps/hpr3833/index.html" rel="noopener noreferrer" target="_blank">
        hpr3833</a>
      ), this was the first time we had a chance to interview <a href="https://nicorikken.eu/" rel="noopener noreferrer" target="_blank">
        Nico Rikken</a>
      .</p>
    <p>
      We chat about freedom and <a href="https://fsfe.org/activities/ada-zangemann/" rel="noopener
        noreferrer" target="_blank">
        Ada and Zangemann - A Tale of Software, Skateboards, and
        Raspberry Ice Cream</a>
      by <a href="https://k7r.eu/" rel="noopener noreferrer" target="_blank">
        Matthias Kirschner</a>
      and <a href="http://sandra-brandstaetter.com/" rel="noopener
        noreferrer" target="_blank">
        Sandra Brandstätter</a>
      .</p>
    <p>
    </p>
    <p>
      <a href="https://hackerpublicradio.org/eps/hpr4639/hpr4639_image_2.jpeg">
        <img src="https://hackerpublicradio.org/eps/hpr4639/hpr4639_image_2_tn.jpeg">
      </a>
    </p>
    <h2>
      Geert-Jan Meewisse representing Coalition for Fair Digital
      Education</h2>
    <blockquote>
      The Coalition for Fair Digital Education (CEDO) is a group of
      concerned parents, IT professionals, teachers, and privacy
      advocates committed to enabling fair and sovereign digital
      education. The coalition operates as a working group within
      Internet Society Netherlands (ISOC). We have drafted a manifesto
      calling for improvements in digital education.</blockquote>
    <blockquote>
      Today, children in education receive an online account from a
      foreign Big Tech company at an early age. Through this account,
      data can be collected, profiles can be built, and personal
      information can be used and exploited by these companies. This
      profiling leads to children being categorized and receiving
      tailored content that companies deem relevant—before they even
      discover things for themselves. And that’s not the only issue.
      Since schools exclusively use “standard” Big Tech solutions,
      children do not learn about alternative programs or tools. As a
      result, real digital skills and critical thinking are not
      developed, making children dependent on a company that profits
      from their data. The privacy and sovereignty of digital education
      are under severe pressure, affecting not only students but also
      teachers and parents, who are forced to use the same systems.
      Other countries are already ahead in this regard: in Denmark,
      Google products have been banned in schools in Helsingør
      municipality, and the German state of Baden-Württemberg has
      prohibited Microsoft 365.</blockquote>
    <blockquote>
      We advocate for the development of an open-source digital
      infrastructure for learning and educational tools, based on public
      values such as autonomy, equality, sovereignty, democracy,
      transparency, accessibility, academic freedom, and
      privacy-by-design.</blockquote>
    <blockquote>
      To achieve this, raising awareness among students, parents,
      teachers, and school boards is crucial. Additionally, we aim to
      involve policymakers by presenting our manifesto.</blockquote>
    <p>
      <a href="https://eerlijkdigitaalonderwijs.nl/english/" rel="noopener noreferrer" target="_blank">
        https://eerlijkdigitaalonderwijs.nl/english/</a>
    </p>
    <p>
      A working group of the <a href="https://www.internetsociety.org/" rel="noopener noreferrer" target="_blank">
        Internet Society</a>
      , Nico was here to tell us of their work to build a FLOSS
      alternative for Education.</p>
    <p>
      You can get in touch with him at <em>
        gj -at- eerlijkdigitaalonderwijs .nl</em>
      , or <em>
        @geert-jan:matrix.org</em>
    </p>
    <p>
    </p>
    <p>
    </p>
    <p>
      <a href="https://hackerpublicradio.org/eps/hpr4639/hpr4639_image_3.jpeg">
        <img src="https://hackerpublicradio.org/eps/hpr4639/hpr4639_image_3_tn.jpeg">
      </a>
    </p>
    <p>
      <br>
    </p>
    <h2>
      Conclusion</h2>
    <p>
      I had great conversations with the sponsors who were a little shy
      about doing an interview. They do have a range of jobs available
      for those of us with Dutch nationality, and have lived in the
      Netherlands for the last 10 years.</p>
    <p>
      The event was fantastic, professional, held in a great venue, and
      the closest thing to real life <a href="https://xkcd.com/806/" rel="noopener noreferrer" target="_blank">
        xkcd: Shibboleet</a>
      as you are likely to get.</p>
    <p>
      I would like to thank the NLUUG team, volunteers, venue staff and
      of course the attendees for a wonderful day. With any luck this
      will not be the last time you hear about this team on HPR.</p>
    <p>
      The recordings will be available on the <a href="https://ftp.nluug.nl/video/nluug/2026-05-07-vj26/" rel="noopener noreferrer" target="_blank">
        NLUUG FTP Server</a>
    </p><p><a href="https://hackerpublicradio.org/eps/hpr4639/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4638: Simple Podcasting - Episode 3 - Analyzing and Filtering]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.


01


This is the third in a four part series on simple podcasting.






02


In this episode we will cover the following topics:


Analysis of audio noise problems and filtering methods used to deal with specific problems that we may find....]]></description>
<link>https://tsecurity.de/de/3512130/it+sicherheit/it+podcasts/hpr4638+simple+podcasting+-+episode+3+-+analyzing+and+filtering/</link>
<pubDate>Wed, 13 May 2026 02:03:13 +0200</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>

<p>
01</p>

<p>
This is the third in a four part series on simple podcasting.</p>

<p>

</p>

<p>
02</p>

<p>
In this episode we will cover the following topics:</p>

<p>
Analysis of audio noise problems and filtering methods used to deal with specific problems that we may find.</p>

<p>
Command line recording.</p>

<p>
Command line playback.</p>

<p>
Getting information about an audio recording.</p>

<p>

</p>

<p>
03 Introduction</p>

<p>
When I did my first couple of podcasts I didn't notice that there was a quiet high pitched whine or buzz in the background.</p>

<p>
Nobody complained about it, but I thought I could do better in subsequent episodes.</p>

<p>

</p>

<p>
04 Creating an Audio Sample</p>

<p>
If you have a similar problem, the first step is to find out where it is coming from.</p>

<p>
If there is no audible noise where you are recording, there is a good chance the problem is in the microphone or another part of the audio system.</p>

<p>
Plug in your microphone and record 2 or 3 seconds of quiet audio where you do not speak into the microphone or make other noise.</p>

<p>

</p>

<p>
05</p>

<p>
You will need a minimum amount of data in order to analyze it.</p>

<p>
For a flac file sampled at 44.1 kHz, 2 to 3 seconds of data should be enough.</p>

<p>
To get a sample of just electronic noise you can put the microphone in a drawer or somewhere like that if you want to be sure of getting a quiet signal.</p>

<p>
Any sound recorded in this way should be mainly from the microphone or other electronic elements in the analogue pathway. </p>

<p>
To get a sample of possible ambient noise, such as fans, make sure the microphone is in the open air in an area which is representative of where it will be when you are recording.</p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>
06 Analyzing using Fourier Transforms</p>

<p>
Next you need to look at the wave form. </p>

<p>
At this point I will describe this using Audacity. </p>

<p>
I will show other ways later, but Audacity is actually the easiest if you are starting from nothing.</p>

<p>
You don't need to become an expert in Audacity to use it, just follow the steps I will describe.</p>

<p>
I myself don't know how to use Audacity beyond using this one feature. </p>

<p>

</p>

<p>
07</p>

<p>
We are going to analyze the sound spectrum in our sample. </p>

<p>
The technique being used is a Fourier Transform.</p>

<p>
A Fourier transform, often called an "FFT" for fast fourier transform, is a mathematical method of showing a signal in terms of frequency along the x axis instead of time.</p>

<p>
This allows us to spot troublesome noise frequencies which appear when we don't want them to.</p>

<p>
The FFT is a very common mathematical technique which is widely used in signal processing, not just in audio. </p>

<p>

</p>

<p>
08</p>

<p>
There is software which will create pretty coloured animations of sound waves, but this is not what you want. These are simply decorative patterns and won't tell us what we want to know. </p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>
09 Using Audacity</p>

<p>
Install Audacity if you haven't already.</p>

<p>

</p>

<p>
Start Audacity.</p>

<p>
Select file &gt; import &gt; audio,</p>

<p>
then navigate to your sample and select "open".</p>

<p>
The file should load.</p>

<p>

</p>

<p>
10</p>

<p>
In the wave form part of the window, click anywhere and then type Ctrl-S to select all data points.</p>

<p>
The chart should turn a slightly darker colour.</p>

<p>
From the menu, select Analyze &gt; Plot Spectrum.</p>

<p>
A new window will open, showing magnitude in db on the Y axis, and frequency in hertz on the x axis.</p>

<p>
For "algorithm" be sure it is set to "spectrum"</p>

<p>

</p>

<p>
11</p>

<p>
There are now two settings that we need to play with while we look for problems.</p>

<p>

</p>

<p>
One is "size"</p>

<p>
The default for this is 1024. </p>

<p>
The other is "axis".</p>

<p>
The default for this is "log frequency".</p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>
12 What to Look For</p>

<p>
What we are looking for are large obvious spikes that stand out in the data.</p>

<p>
Since our test signal has very little to no actual audio data, any spikes should represent electrical or other noise that doesn't belong there.</p>

<p>

</p>

<p>
13</p>

<p>
I have found two combinations of settings to be most helpful in finding problems.</p>

<p>
These are</p>

<p>
Size 2048, axis linear frequency.</p>

<p>
Size 32768, axis log frequency.</p>

<p>

</p>

<p>
14</p>

<p>
A small size value can help very narrow spikes stand out from the background more, while a large size value can help separate spikes from surrounding noise. </p>

<p>

</p>

<p>
A linear frequency axis can help with seeing all spikes across the full frequency range, while a log frequency axis can help to better see what is happening in the often very crowded lowest frequency range.</p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>
15 A Real Example of an Audio Problem</p>

<p>
If you have good audio equipment you may find nothing obvious. If you cannot hear any noise in the signal, there may be none of any consequence and there is nothing for you to do.</p>

<p>

</p>

<p>
16</p>

<p>
However, in my case I found two main problems and one lesser one. </p>

<p>
One problem was a spike at 60 Hz, which is the AC line frequency.</p>

<p>
There is also a lesser problem of a collection of a broad frequency range of noise below 60Hz. </p>

<p>
Both of these however will be taken care of by the basic filtering that we looked at earlier so we do not need to worry about them here.</p>

<p>

</p>

<p>
17</p>

<p>
The other main problem is I had a large spike at every 1 kHz interval from 1 kHz to 19 KHz.</p>

<p>
This was noise generated within the head set electronics, or the result of noise on the USB power supply.</p>

<p>
This is the product of a cheap headset. </p>

<p>

</p>

<p>
18</p>

<p>
These spikes are not very large compared to the volume of my voice, but if I do the same sort of analysis of samples where I am speaking, they appear in the intervals between words. </p>

<p>
This results in a high pitched whine or buzz. </p>

<p>
This was the source of the background noise or buzz in my first two podcast episodes. </p>

<p>
I need to get rid of this.</p>

<p>

</p>

<p>
19</p>

<p>
One option would be to get a better microphone, but, well, that wouldn't be any fun would it. It would also cost money and I don't want to spend any of that if I don't have to.</p>

<p>

</p>

<p>
If you analyze your own signal, you may find a different pattern, or even no noise at all. </p>

<p>

</p>

<p>
If you did not find anything when shielding your microphone from ambient audio noise, repeat the same test but with the microphone exposed to acoustic noise in the room. </p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>
20 Advanced Filtering</p>

<p>

</p>

<p>
The next step is to figure out how to get rid of this noise.</p>

<p>

</p>

<p>
I have called this section "advanced filtering", but we are actually just making use of a technique that was already covered in basic filtering.</p>

<p>

</p>

<p>
21</p>

<p>
To deal with the remaining spikes we can use additional "band reject" filters, each of which removes a specific frequency at 1 kHz intervals from 1 kHz to 12 kHz. </p>

<p>
We will use this in combination with the filtering that we have already done previously, so we don't need to worry about anything above 12 kHz as we already remove that with a low pass filter.</p>

<p>

</p>

<p>
After a small amount of experimenting I came up with the following. </p>

<p>

</p>

<p>
22</p>

<p>
Because I am applying a total of 16 filters, 4 for basic filtering and 12 to deal with the specific microphone problems that I have, I have broken up the filters into separate strings. </p>

<p>
I then generate the 12 new band reject filters from a template.</p>

<p>

</p>

<p>
Note that I don't show the "de-esser" filter here. </p>

<p>
I would recommend adding it as a separate step after doing the sort of filtering we are talking about here.</p>

<p>

</p>

<p>
23</p>

<p>
Rather than reading out multiple lines of bash script, I will post them in the show notes.</p>

<p>
I will give a brief description of them here which you can refer to when reading the show notes.</p>

<p>
The FFMPEG and Sox versions are very similar in concept so I don't need to go over the Sox version in detail. See the show notes for it.</p>

<p>

</p>

<p>

</p>

<p>
FFMPEG Version</p>

<p>
Here's the FFMPEG version.</p>

<p>

</p>

<p>
	# The high and low pass filters.</p>

<p>
	hlpfil="highpass=f=80, lowpass=f=12000"</p>

<p>

</p>

<p>
	# Band reject filters filter for 60Hz and another for 50Hz.</p>

<p>
	linefil="bandreject=f=60:width_type=h:w=20, bandreject=f=50:width_type=h:w=20"</p>

<p>

</p>

<p>
	# Create a series of band reject filters, from 1 kHz to 12 kHz.</p>

<p>
	# Change or remove this part if your recording hardware does not require it.</p>

<p>
	ftemplate="bandreject=f=%s000:width_type=h:w=100"</p>

<p>
	kilospikefil=$( seq 1 12 | xargs printf "$ftemplate," )</p>

<p>

</p>

<p>
	# Using ffmpeg</p>

<p>
	ffmpeg -i input.flac -af "$hlpfil, $linefil, $kilospikefil" output.flac</p>

<p>

</p>

<p>
24</p>

<p>
There are a total of 5 lines of bash script.</p>

<p>

</p>

<p>
In the first line, we create a string called "hlpfil" which is just the high and low pass filters copied from our previous discussion on basic filtering.</p>

<p>

</p>

<p>
In the second line, we create a string called "linefil" which is just the simple bandreject filters to cover 50 and 60 hertz AC line noise filters also from basic filtering.</p>

<p>

</p>

<p>
25</p>

<p>
In the third and fourth lines, we create a string called "kilospikefil" containing the new filters.</p>

<p>
The "f" parameter represents the frequency we are targeting.</p>

<p>
The "w" parameter represents the "width" of the frequency range we are filtering in terms of hertz.</p>

<p>
The filter is applied gradually rather than with a sharp cut-off, so to get more filtering action we need to have larger width. In this case I decided to hammer the spike quite aggressively and so used a relatively wide width of 100 hertz. Testing with a voice file did not show any noticeable distortion, so it's an acceptable solution. </p>

<p>

</p>

<p>
26</p>

<p>
For this filter we need to create a dozen filter command so we use the shell "seq" command to generate a sequence of numbers from 1 to 12.</p>

<p>
We then pipe that into the xargs command which applies each number to the next command.</p>

<p>
The next command is "printf", which takes the number it gets from xargs and applies it to the "ftemplate" string template in a manner very similar to C programming printf string templates.</p>

<p>

</p>

<p>
27</p>

<p>
We also have a comma in there to separate each of the individual filters.</p>

<p>
We then surround this with a $ and () so we can run the command and capture the output into a variable.</p>

<p>
Then we call ffmpeg and pass it the filters we created by putting the variable names inside a double quoted string, separated by commas.</p>

<p>
All of this will be in the show notes, so don't worry about trying to get the exact details right now. </p>

<p>

</p>

<p>

</p>

<p>
Sox Version</p>

<p>
Here's the Sox version.</p>

<p>

</p>

<p>
	# The high and low pass filters.</p>

<p>
	sxhlpfil="highpass 80 lowpass 12000"</p>

<p>

</p>

<p>
	# Band reject filters filter for 60Hz and another for 50Hz.</p>

<p>
	sxfilter="$sxhlpfil $sxkilospikefil bandreject 60 20 bandreject 50 20"</p>

<p>

</p>

<p>
	# Create a series of reject filters filters, from 1 kHz to 12 kHz.</p>

<p>
	sxftemplate="bandreject %s000 100"</p>

<p>
	sxkilospikefil=$( seq 1 12 | xargs printf "$sxftemplate " )</p>

<p>

</p>

<p>
	# Using SOX.</p>

<p>
	sox input.flac output.flac $sxhlpfil $sxfilter $sxkilospikefil</p>

<p>

</p>

<p>
28</p>

<p>
The Sox version is very similar with the exception that the command arguments representing the filters must not be in quoted strings as Sox wants to see them as separate arguments instead of parsing a string.</p>

<p>

</p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>
29 Confirming the Effect</p>

<p>

</p>

<p>
If we apply the above filters and look at this headset noise output file in the Audacity spectrum analyzer we will now see that these noise spikes are almost completely gone.</p>

<p>

</p>

<p>
We can now confirm how well this works by using a test audio file. Any normal short voice audio file will do for this. Just talk into the microphone normally and create a voice sample file that is 5 or 10 seconds long, or whatever you feel comfortable with. </p>

<p>

</p>

<p>
30</p>

<p>
With the original unfiltered voice audio I can hear a distinct high pitched whine overlaying the voice.</p>

<p>
With the filtered audio that whine or hum is not detectable.</p>

<p>

</p>

<p>
If we then look at the voice file in the Audacity spectrum analyzer, we can see distinct "notches" at the 50 Hz and 60 Hz frequencies, and at every 1 kHz from 1 kHz to 12 kHz. </p>

<p>

</p>

<p>
These notches are narrow enough that they won't cause a noticeable problem with voice signals.</p>

<p>
If we apply this filter to voice samples, the buzz or whine is gone and the voice signal sounds fine.</p>

<p>

</p>

<p>
Despite using a very cheap microphone, I now have acceptable quality audio for a podcast.</p>

<p>

</p>

<p>
31</p>

<p>
Again I want to emphasize that in this instance I am dealing with deficiencies with my hardware instead of buying a better microphone. </p>

<p>
These additional filters are intended to deal with the specific hardware problem I am facing.</p>

<p>
You don't need these additional filters if you cannot detect an audible problem.</p>

<p>
On the other hand, if you have a different problem you may wish to deal with a different set of frequencies.</p>

<p>
Finding these problems is the reason for using a spectrum analyzer. </p>

<p>

</p>

<p>
32</p>

<p>
FFMPEG has other filtering methods as well.</p>

<p>
However, as I didn't end up using them I can't really do an adequate job of describing them.</p>

<p>
If anyone has used them successfully, they are welcome to make a podcast on the subject. </p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>
33 Completing the Process</p>

<p>
With these new filters added into the middle of the processing steps, you can now complete the processing by doing the de-essing, normalizing, and review steps as described in the previous episode.</p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>
34 Command Line Recording</p>

<p>
I will now cover a separate topic, which is recording using command line programs. </p>

<p>
I am covering it in this episode as it is a short topic and it is convenient to talk about it here.</p>

<p>

</p>

<p>

</p>

<p>
35</p>

<p>
As well as using GUI based recording programs such as Gnome Sound Recorder, it is possible to record podcast episodes using command line tools such as FFMPEG.</p>

<p>

</p>

<p>
As for why you may wish to use command line tools to record audio, there are several reasons.</p>

<p>
One is that you may simply prefer to do it this way because it pleases you to do so.</p>

<p>
Another is that it allows the recording step to be included in a script that encompasses other parts of the process, automating what may have otherwise been separate manual steps.</p>

<p>

</p>

<p>
36</p>

<p>
However, if you don't find these arguments particularly compelling, then I'm not going to attempt to persuade you to use the command line to record audio. I am doing this part of this episode out of a desire to have a bit of fun and I probably won't be using it much myself. </p>

<p>

</p>

<p>
I will however use one of these methods to record this part of this episode.</p>

<p>

</p>

<p>
37 Recording with FFMPEG - The Basics</p>

<p>
One of the common command line tools you can use is FFMPEG, a package which I have previously mentioned with respect to filtering audio files. </p>

<p>

</p>

<p>
Here is an example of how to record using FFMPEG. We call FFMPEG specifying the audio input system as the FFMPEG input, and then specify a file to output to.</p>

<p>

</p>

<p>
38</p>

<p>
# Record audio.</p>

<p>
ffmpeg -f pulse -i default ff.flac</p>

<p>

</p>

<p>
39</p>

<p>
Press 'q' to stop.</p>

<p>

</p>

<p>
This uses pulse audio on Linux for input "-f pulse",</p>

<p>
and the default input "-i default".</p>

<p>

</p>

<p>
However, this does not specify the the sample rate or mono recording. To do that we need to add a few more parameters as in the following </p>

<p>

</p>

<p>
40</p>

<p>
ffmpeg -f pulse -i default   -ac 1 -ar 44100 ff.flac</p>

<p>

</p>

<p>
41</p>

<p>
"-ac 1" specifies mono output</p>

<p>
"-ar 44100" specifies 44.1 khz bit rate.</p>

<p>

</p>

<p>

</p>

<p>
42 Playback with FFMPEG - The Basics</p>

<p>

</p>

<p>
FFMPEG can also play back music. In this case however we need to call the "ffplay" program rather than FFMPEG itself.</p>

<p>

</p>

<p>
To play an audio file, simply call ffplay and give it the name of the audio file as an argument to the command.</p>

<p>

</p>

<p>
For example:</p>

<p>

</p>

<p>
43</p>

<p>
# Play an audio file.</p>

<p>
ffplay podcast.flac</p>

<p>

</p>

<p>
44</p>

<p>
We can also call it with the "autoexit" option, which tells ffplay to automatically exit when the audio file has finished playing.</p>

<p>

</p>

<p>
ffplay -autoexit ff.flac</p>

<p>

</p>

<p>
45</p>

<p>
-autoexit  means Exit when the audio file is done playing.</p>

<p>

</p>

<p>
46</p>

<p>
To exit in the middle of the recording, press "q' or ESC.</p>

<p>
To pause the playback, press "p" or space bar.</p>

<p>
To decrease the volume press "9" or "/".</p>

<p>
To increase the volume press "0" or "*".</p>

<p>

</p>

<p>
47</p>

<p>
To seek forward 10 seconds, press the right cursor button.</p>

<p>
To seek backward 10 seconds, press the left cursor button.</p>

<p>
To seek forward 1 minute, press the up cursor button.</p>

<p>
To seek backward 1 minute, press the down cursor button.</p>

<p>

</p>

<p>
48</p>

<p>
The "0" and "9" keys mentioned above are those on the top row of the keyboard, not the ones on the separate numeric pad. </p>

<p>

</p>

<p>
49</p>

<p>
While the recording is playing, a graphical window will open which shows a cascading waveform based on the current content. This is purely decorative and does not serve any particularly useful purpose. </p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>
#!/bin/bash</p>

<p>

</p>

<p>
# Record a podcast episode segment.</p>

<p>

</p>

<p>
# Get the next file name.</p>

<p>
# First we check if any matching file patterns exist. If they don't,</p>

<p>
# then we create the first one starting counting at 1. </p>

<p>
fcount=$( ls [0-9][0-9].flac 2&gt;/dev/null | wc -l )</p>

<p>
if (( $fcount &lt; 1 )); then</p>

<p>
	fname="01.flac"</p>

<p>
else</p>

<p>
	# If there are any matching file patterns, we find the highest number</p>

<p>
	# and increment it by 1.</p>

<p>
	filenum=$( ls [0-9][0-9].flac 2&gt;&amp;1 | cut -d. -f1 | sort | tail -1 )</p>

<p>
	newfilecount=$(( 10#$filenum + 1 ))</p>

<p>
	fname=$( printf "%02d.flac" $newfilecount )</p>

<p>
fi</p>

<p>

</p>

<p>
echo "Recording to: $fname"</p>

<p>

</p>

<p>
# Record using ffmpeg. </p>

<p>
# This makes use of pulse audio and the input is the default audio input.</p>

<p>
# The sample rate is set to 44.1 kHz, and it is recorded as mono (1 channel). </p>

<p>
ffmpeg -f pulse -i default -ar 44100 -ac 1 $fname</p>

<p>

</p>

<p>
echo "Recorded audio to: $fname"</p>

<p>

</p>

<p>
# Report on basic information about the audio file that was just recorded.</p>

<p>
ffprobe -hide_banner $fname</p>

<p>

</p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>
50 Sox - Not so Good</p>

<p>
I did not find the recording or playback features of Sox to be as useful as those of FFMPEG, so I won't bother to cover them here.</p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>
51 Getting Information About an Audio Recording</p>

<p>

</p>

<p>
There are also command line tools which can be used to retrieve information about audio recordings.</p>

<p>

</p>

<p>
52 FFMPEG Version</p>

<p>

</p>

<p>
With FFMPEG this is called "ffprobe". For example:</p>

<p>

</p>

<p>
53</p>

<p>
ffprobe hpr4566.mp3</p>

<p>

</p>

<p>
54</p>

<p>
This will print out a lot of information about FFMPEG itself. To skip that use the hide_banner option.</p>

<p>

</p>

<p>
55</p>

<p>
ffprobe -hide_banner hpr4566.mp3</p>

<p>

</p>

<p>
56</p>

<p>
This will print out information about the audio recording. This will include things like the duration, bit rate, sample rate, stereo or mono, etc.</p>

<p>

</p>

<p>
If the author added metadata tags to the file, it will also show those. HPR add things like the title, author, copyright license, comment, etc. You can extract the ones you want using something like grep and cut.</p>

<p>

</p>

<p>
57 Sox Version</p>

<p>

</p>

<p>
Sox has a similar feature, called "soxi".</p>

<p>

</p>

<p>
58</p>

<p>
soxi ff.flac</p>

<p>

</p>

<p>
59</p>

<p>
However, it may not work on mp3 files if you do not have an mp3 handler for it installed. </p>

<p>

</p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>

</p>

<p>
60 Conclusion</p>

<p>
In this episode we took a brief look at an example of how to solve an audio problem through filtering. </p>

<p>
We looked at how to use Audacity to find where the problems were.</p>

<p>
We then looked at how to apply filters to remove these sources of noise.</p>

<p>
We also looked at how to record podcasts and get information about audio files using command line tools. </p>

<p>

</p>

<p>
61</p>

<p>
In the next episode we will look at alternatives to Audacity for analyzing audio. While Audacity works just fine, this is an opportunity to have a bit fun with some gratuitous hackery. </p>

<p>

</p>

<p>
62</p>

<p>
This has been the third episode in a four part series on simple podcasting.</p>

<p>

</p>

<p>
--------------------</p>

<p>
--------------------</p>

<p>

</p>

<p>
Full Audio Processing Pipeline</p>

<p>
This version includes the special filters used to fix my headset problems.</p>

<p>
Use the version from the previous episode if you do not have the same</p>

<p>
audio hardware problems.</p>

<p>

</p>

<p>

</p>

<p>
#!/bin/bash</p>

<p>

</p>

<p>
# Full processing pipeline for making simple podcasts.</p>

<p>

</p>

<p>
# ======================================================================</p>

<p>
# Concatenate multiple flac files into a single flac file.</p>

<p>
# This is used to combine podcast recorded segments into a single</p>

<p>
# flac file for uploading to HPR.</p>

<p>

</p>

<p>
concataudio ()</p>

<p>
{</p>

<p>
	outputname="$1"</p>

<p>

</p>

<p>
	# First create the list file.</p>

<p>
	printf "file '%s'\n" [0-9][0-9].flac &gt; podseglist.txt</p>

<p>

</p>

<p>
	# Now concatenate them</p>

<p>
	ffmpeg -f concat -safe 0 -i podseglist.txt "$outputname"</p>

<p>

</p>

<p>
	rm podseglist.txt</p>

<p>
}</p>

<p>

</p>

<p>
# ======================================================================</p>

<p>

</p>

<p>
# Basic and advanced filters.</p>

<p>
filter ()</p>

<p>
{</p>

<p>
	inputfile=$1</p>

<p>
	outputname=$2</p>

<p>

</p>

<p>
	# Using ffmpeg.</p>

<p>

</p>

<p>
	# The high and low pass filters.</p>

<p>
	hlpfil="highpass=f=80, lowpass=f=12000"</p>

<p>

</p>

<p>
	# Band reject filters filter for 60Hz and another for 50Hz.</p>

<p>
	linefil="bandreject=f=60:width_type=h:w=20, bandreject=f=50:width_type=h:w=20"</p>

<p>

</p>

<p>
	# Create a series of band reject filters, from 1 kHz to 11 kHz.</p>

<p>
	ftemplate="bandreject=f=%s000:width_type=h:w=100"</p>

<p>
	kilospikefil=$( seq 1 11 | xargs printf "$ftemplate," )</p>

<p>

</p>

<p>

</p>

<p>
	# Using ffmpeg</p>

<p>
	ffmpeg -i $inputfile -af "$hlpfil, $linefil, $kilospikefil" $outputname</p>

<p>
}</p>

<p>

</p>

<p>
# ======================================================================</p>

<p>

</p>

<p>
# De-Essing.</p>

<p>
deessing ()</p>

<p>
{</p>

<p>
	inputfile=$1</p>

<p>
	outputname=$2</p>

<p>
	option=$3</p>

<p>

</p>

<p>
	# De-essing filter.</p>

<p>
	ffmpeg -i $inputfile -filter_complex "deesser=i=0.5:m=0.5:f=0.5:s=$option" -b:a 336k -sample_fmt s16 $outputname</p>

<p>

</p>

<p>
}</p>

<p>

</p>

<p>
# ======================================================================</p>

<p>
# Normalizing the audio to EBU R128 standard for review using ffmpeg.</p>

<p>
normffmpeg ()</p>

<p>
{</p>

<p>
	inputfile=$1</p>

<p>
	outputname=$2</p>

<p>

</p>

<p>
	# Normalize to EBU R128 standard.</p>

<p>
	ffmpeg -i $inputfile -af loudnorm=I=-17:TP=-2.0:LRA=4.0 -ar 44.1k $outputname</p>

<p>

</p>

<p>
}</p>

<p>

</p>

<p>
# ======================================================================</p>

<p>

</p>

<p>
# Output an MP3 version to help with reviewing.</p>

<p>
mp3convert ()</p>

<p>
{</p>

<p>
	inputfile=$1</p>

<p>

</p>

<p>
	# Get the name of the file and then create the output file name.</p>

<p>
	j=$( basename $inputfile ".flac" )</p>

<p>
	outputname="$j"".mp3"</p>

<p>

</p>

<p>
	# Convert to MP3.</p>

<p>
	ffmpeg -i $inputfile $outputname</p>

<p>
}</p>

<p>

</p>

<p>
# ======================================================================</p>

<p>

</p>

<p>
# Concatenate the separate audio files.</p>

<p>
concataudio fullpod-unfiltered.flac</p>

<p>

</p>

<p>
# Basic filtering.</p>

<p>
filter fullpod-unfiltered.flac filtered.flac</p>

<p>

</p>

<p>
# De-essing. This is the version to send for publishing.</p>

<p>
# The third argument should be "o" for de-essing, or "i" for pass through without de-essing.</p>

<p>
deessing filtered.flac fullpod.flac o</p>

<p>

</p>

<p>
# Normalized for review.</p>

<p>
normffmpeg fullpod.flac fullpod-norm.flac</p>

<p>

</p>

<p>
# Output an MP3 copy for review.</p>

<p>
mp3convert fullpod-norm.flac</p>

<p>

</p>

<p>

</p>

<p>
--------------------</p>

<p>
--------------------</p>

<p>

</p>


<p><a href="https://hackerpublicradio.org/eps/hpr4638/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4637: UNIX Curio #6 - at and batch]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.


This series is dedicated to exploring little-known—and occasionally useful—trinkets lurking in the dusty corners of UNIX-like operating systems.


I would imagine that most users of UNIX-like systems have heard of 
cron
—certainly any system adm...]]></description>
<link>https://tsecurity.de/de/3508620/it+sicherheit/it+podcasts/hpr4637+unix+curio+6+-+at+and+batch/</link>
<pubDate>Tue, 12 May 2026 02:03:21 +0200</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>

<blockquote>
This series is dedicated to exploring little-known—and occasionally useful—trinkets lurking in the dusty corners of UNIX-like operating systems.</blockquote>

<p>
I would imagine that most users of UNIX-like systems have heard of <code>
cron</code>
—certainly any system administrator should have. Briefly, <code>
cron</code>
 is a way of running a job repeatedly based on the time and date; for example, a job could run every hour, at 5:00am every Tuesday, or the 3rd of every month. It is commonly used for administrative or maintenance tasks that should be done on a regular schedule, such as checking for software updates, rotating log files, or updating the database for the <code>
locate</code>
 command.</p>

<p>
As well-known as <code>
cron</code>
 is, there is a similar utility that very few seem to be aware of: <code>
at</code>
. This is the word "at", and has nothing to do with the at symbol "@". An <code>
at</code>
 job is very much like a <code>
cron</code>
 job, except that an <code>
at</code>
 job only runs one time. A job is submitted by running <code>

<a href="https://pubs.opengroup.org/onlinepubs/009695399/utilities/at.html" rel="noopener noreferrer" target="_blank">
at </a>

<em>

<a href="https://pubs.opengroup.org/onlinepubs/009695399/utilities/at.html" rel="noopener noreferrer" target="_blank">
timespec</a>

</em>

</code>

<sup>
1</sup>
, where <em>
timespec</em>
 is the time and date the job is to be run. The linked POSIX specification page describes acceptable formats for <em>
timespec</em>
; some examples are "<code>
now</code>
", "<code>
14:00</code>
", "<code>
noon tomorrow</code>
", "<code>
14:00 + 3 months</code>
", and "<code>
14:00 January 19, 2038</code>
". The utility then waits on standard input for you to enter a set of commands to be run in the job. You end input by typing <code>
Control-D</code>
 to mark the end of text. (As an alternative to typing in the job, you could instead use the "&lt;" symbol to redirect standard input to come from a file containing the commands you want to run.)</p>

<p>
When the specified time arrives, the job will be run. That is the theory, anyway, but some things may interfere. The normal configuration for some implementations only checks for due <code>
at</code>
 jobs every five minutes, so there can be a delay before a job is actually run. Also, if the system isn't running, obviously it can't execute any jobs. When it comes back up, typically it will check for any pending <code>
at</code>
 jobs that are currently or past due and run those. It is best to think about an <code>
at</code>
 job being run no earlier than the time it was scheduled for, and probably soon after, provided the system is up. The POSIX standard doesn't specify anything about when jobs are actually run, just that they are <em>
scheduled</em>
 for a particular date and time.</p>

<p>
The user does <em>
not</em>
 need to be logged in for a job to run—if the job outputs anything to standard output or standard error, that text will be e-mailed to the user, presuming the system is set up to send mail. This is often true for a server, which might be running a Mail Transfer Agent like <code>
sendmail</code>
, <code>
postfix</code>
, or <code>
exim</code>
, but many desktops are not. If nothing is output to standard output or standard error, or if that output is redirected to a file, then mail will not be sent on job completion. This behavior can be changed with the <code>
-m</code>
 option; in that case, mail will always be sent when the job finishes whether or not there is any output.</p>

<p>
The <code>

<a href="https://pubs.opengroup.org/onlinepubs/009695399/utilities/batch.html" rel="noopener noreferrer" target="_blank">
batch</a>

</code>

<a href="https://pubs.opengroup.org/onlinepubs/009695399/utilities/batch.html" rel="noopener noreferrer" target="_blank">
 command is very similar</a>

<sup>
2</sup>
—POSIX specifies it as being equivalent to <code>
at now</code>
 with two differences. First, jobs are put into a different queue, and second, mail is always sent when a job completes as if the <code>
-m</code>
 option was used with <code>
at</code>
. In practice, however, certain aspects of the behavior of <code>
batch</code>
 depend on the implementation.</p>

<p>
On the large majority of systems I investigated<sup>
3,4,5,6,7,8</sup>
, but not all<sup>
9</sup>
, <code>
batch</code>
 jobs will only be run when the system load level drops below a certain point. This can typically be configured by the administrator but has a default value—the manual pages for a couple systems don't actually list a default value and just say <code>
batch</code>
 jobs will run "when system load levels permit". Basing execution on the load level makes sense if the <code>
batch</code>
 utility is seen as a way of running potentially resource-intensive jobs when the system is not being heavily used. However, this behavior is not required by POSIX.</p>

<p>
Another question that the standard leaves unanswered is how queues behave. From the normal understanding of the word "queue", you might expect that each successive job is run one at a time once the previous job completes. However, this is not stated in POSIX, and some implementations explicitly allow a configurable number of jobs to run simultaneously. Manual pages for other systems simply don't mention the subject. (I researched this episode by looking at documentation for a number of BSD, Linux, and commercial UNIX systems, but didn't actually test out how they behave.) POSIX only requires systems to have two queues, one named "a" for <code>
at</code>
 jobs and one named "b" for <code>
batch</code>
 jobs, but allows implementations to have more. It says nothing about how different queues compete for resources—one implementation assigns a higher <code>
nice</code>
 value to jobs in a queue whose name comes later in the alphabet, giving them a lower priority in the process scheduler.</p>

<p>
So what good are <code>
at</code>
 and <code>
batch</code>
? While I think they certainly meet the "obscure" requirement for a UNIX Curio, I have to admit they aren't particularly useful today. They were designed for an era where a typical UNIX-like system would run around the clock and had multiple users who might log in at various times of the day but weren't connected 24/7. In that context, using <code>
batch</code>
 to run a job when the system is lightly loaded might be useful; nowadays, you can just run it whenever you like on your own machine. I have never actually used <code>
batch</code>
 myself. On a machine where there is serious competition for resources among users, <code>
batch</code>
 is probably not a sophisticated enough tool to manage their jobs—the NetBSD and Debian manual pages explicitly suggest using something different<sup>
3,6</sup>
. Supercomputing environments have even more complex requirements and a number of specialized solutions exist for scheduling jobs there.</p>

<p>
I <em>
have</em>
 used <code>
at</code>
 a couple of times. One example was for an organization I was part of that had paid for its domain name registration several years into the future. On the organization's server, I set an <code>
at</code>
 job to e-mail the administrator a reminder to renew it a few months before the domain was due to expire. It was useful in that case because I didn't know whether I would even continue to be involved then, so a personal reminder for myself wouldn't necessarily help. But in my experience, administrative tasks don't tend to be one-off events. Instead, they repeat, making <code>
cron</code>
 the right tool to use. For reminders, a calendar app is probably a better solution in most cases.</p>

<p>
While you might never have a use for <code>
at</code>
 and <code>
batch</code>
, I still think it's good to know that they exist. Just be aware that you'll probably need to read the manual page on your system to fully understand how they will behave.</p>

<p>
References:</p>

<ol>

<li>

<a href="https://pubs.opengroup.org/onlinepubs/009695399/utilities/at.html" rel="noopener noreferrer" target="_blank">
At specification</a>
 https://pubs.opengroup.org/onlinepubs/009695399/utilities/at.html</li>

<li>

<a href="https://pubs.opengroup.org/onlinepubs/009695399/utilities/batch.html" rel="noopener noreferrer" target="_blank">
Batch specification</a>
 https://pubs.opengroup.org/onlinepubs/009695399/utilities/batch.html</li>

<li>

<a href="https://man.netbsd.org/NetBSD-10.0/at.1" rel="noopener noreferrer" target="_blank">
NetBSD 10.0 at manual page</a>
 https://man.netbsd.org/NetBSD-10.0/at.1</li>

<li>

<a href="https://man.freebsd.org/cgi/man.cgi?query=at&amp;sektion=1&amp;manpath=FreeBSD+15.0-RELEASE+and+Ports" rel="noopener noreferrer" target="_blank">
FreeBSD 15.0 at manual page</a>
 https://man.freebsd.org/cgi/man.cgi?query=at&amp;sektion=1&amp;manpath=FreeBSD+15.0-RELEASE+and+Ports</li>

<li>

<a href="https://man.openbsd.org/OpenBSD-7.8/at.1" rel="noopener noreferrer" target="_blank">
OpenBSD 7.8 at manual page</a>
 https://man.openbsd.org/OpenBSD-7.8/at.1</li>

<li>

<a href="https://manpages.debian.org/trixie/at/at.1.en.html" rel="noopener noreferrer" target="_blank">
Debian 13 at manual page</a>
 https://manpages.debian.org/trixie/at/at.1.en.html</li>

<li>

<a href="https://man.freebsd.org/cgi/man.cgi?query=at&amp;sektion=1&amp;manpath=openSUSE+42.3" rel="noopener noreferrer" target="_blank">
openSUSE 42.3 at manual page</a>
 https://man.freebsd.org/cgi/man.cgi?query=at&amp;sektion=1&amp;manpath=openSUSE+42.3</li>

<li>

<a href="https://support.hpe.com/hpesc/public/docDisplay?docId=c01922490&amp;docLocale=en_US" rel="noopener noreferrer" target="_blank">
HP-UX Reference (11i v3 07/02) - 1 User Commands A-M (vol 1)</a>
 https://support.hpe.com/hpesc/public/docDisplay?docId=c01922490&amp;docLocale=en_US</li>

<li>

<a href="https://man.freebsd.org/cgi/man.cgi?query=at&amp;sektion=1&amp;manpath=OpenSolaris+2010.03" rel="noopener noreferrer" target="_blank">
OpenSolaris 2010.03 at manual page</a>
 https://man.freebsd.org/cgi/man.cgi?query=at&amp;sektion=1&amp;manpath=OpenSolaris+2010.03</li>

</ol>

<p>

<em>
Apologies for the "tapping" sound that occurs in parts of this episode. I think my microphone must have picked up some electromagnetic interference.</em>

</p>


<p><a href="https://hackerpublicradio.org/eps/hpr4637/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4636: 7 seconds memory]]></title>
<description><![CDATA[This show has been flagged as Explicit by the host.


There are two themes of the human experience that influence greatly our feelings and our behaviours: the memory, and the pain.


Today we are going to talk about the first.


Clive Wearing was a conductor, a musician, that lost a part of his...]]></description>
<link>https://tsecurity.de/de/3505493/it+sicherheit/it+podcasts/hpr4636+7+seconds+memory/</link>
<pubDate>Mon, 11 May 2026 02:03:06 +0200</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Explicit by the host.</p>

<p>
There are two themes of the human experience that influence greatly our feelings and our behaviours: the memory, and the pain.</p>

<p>
Today we are going to talk about the first.</p>

<p>
Clive Wearing was a conductor, a musician, that lost a part of his brain. A virus, herpes simplex, that causes fever, in his case trespassed the barrier between blood and brain and caused an inflammation that damaged permanently the hypothalamus, responsible for memory.</p>

<p>
Immediately — after being cured of the infection by antiviral medicine —, he was a man with no memory. He couldn’t recognize his children — who, later, recognized they kind of abandoned the father, ceased the visits to him, because that condition was too sad for them.</p>

<p>
In the first moments, Clive was too angry, “I can’t think” was a constant. “Prisoner of the consciousness”, is the title of the TV documentary produced on him soon after the event.</p>

<p>
His wife — the second, not the mother of his two sons and one daughter — was his fullest “item” of memory — if we could picture memory as drawings in a piece of furniture, what of course is inexact, to say the minimum. He could still know, ever, that she, Deborah, was his wife; and, apart from his own’s, Deborah’s name was the only one he still knew.</p>

<p>

</p>

<p>
His angriness was surplice by a calm and gentle and gistful personality. Like, apart from the loss of memory, he kept two thirds of this personality: he definitely was Clive. (That observation is from one of his sons, in the documentary made 20 years after the first, called “7 seconds memory”). That is why Deborah, after divorcing him, and couldn’t having find another love (she was searching for Clive in other experiences, which she couldn’t find), later renewed the wedding vows with her husband; even though they couldn’t live together because of his need of constant supervision.</p>

<p>
The doctors — as the 2nd documentary, that is the line for this program, says — could not explain how he became more peaceful. I have a guess. Clive lost memory of events, he could not live in his mind any happenings. He knew her wife was his wife, but had no memory of the wedding; remembered having worked for BBC, but not one thing, not one activity, that he has done or participated. Maybe he have retained a little bit of what we could call (and I lack any technical precision here) descriptive memory. He could retain the old relations of a name with a characteristic, a face with the level of proximity he had with the person, as long as they (these relations) were verbalized in his understanding. Because he could not evoke any fact, he lost the (other term with precision) narrative memory — but words still made sense to him. So, in living the same day every day, with no time, no continuity, maybe some perception could have been engraved in his mind, unconsciously or not, even with the damaged memory, in the direction of going on <em>
(letting go)</em>
 without despair. This is only a guess.</p>

<p>
Thank you.</p>

<p>

</p>


<p><a href="https://hackerpublicradio.org/eps/hpr4636/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4635: What did I do at work today? Part 3 Section 1]]></title>
<description><![CDATA[This show has been flagged as Explicit by the host.


This is part of the documentation of an API class, documenting a particular a feature:-






**Field:** actions

**Value:** Create extra relationships

e.g. set the type to 'contact'

```
{ "trigger": "update", "action": "add", "rel...]]></description>
<link>https://tsecurity.de/de/3497599/it+sicherheit/it+podcasts/hpr4635+what+did+i+do+at+work+today+part+3+section+1/</link>
<pubDate>Fri, 08 May 2026 02:03:38 +0200</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Explicit by the host.</p>

<p>
This is part of the documentation of an API class, documenting a particular a feature:-</p>

<p>

</p>

<pre data-language="plain">
**Field:** actions

**Value:** Create extra relationships

e.g. set the type to 'contact'

```
{ "trigger": "update", "action": "add", "relationship": "7024", "child": "2085"}
```

*Currently "update" is the only trigger and "add" is the only action.*
</pre>

<p>

</p>

<p>

<u>
Tools</u>

</p>

<p>

</p>

<p>

<strong>
Joplin</strong>
 - Joplin is an open source, cross platform note-taking app. - <a href="https://joplinapp.org/" rel="noopener noreferrer" target="_blank">
https://joplinapp.org/</a>

</p>

<p>

</p>

<p>

<strong>
PHP</strong>
 - A popular general-purpose scripting language that is especially suited to web development. Fast, flexible and pragmatic, PHP powers everything from your blog to the most popular websites in the world. - <a href="https://www.php.net/" rel="noopener noreferrer" target="_blank">
https://www.php.net/</a>

</p>

<p>

</p>

<p>

<strong>
MySQL</strong>
 - MySQL is an open-source relational database management system. MariaDB is community driven fork of MySQL, often installing the MySQL package on a Linux distribution will actually install MariaDB. - <a href="https://en.wikipedia.org/wiki/MySQL" rel="noopener noreferrer" target="_blank">
https://en.wikipedia.org/wiki/MySQL</a>
 - <a href="https://mariadb.org/" rel="noopener noreferrer" target="_blank">
https://mariadb.org/</a>
 - <a href="https://www.mysql.com/" rel="noopener noreferrer" target="_blank">
https://www.mysql.com/</a>

</p>

<p>

</p>

<p>

<strong>
Sublime Text</strong>
 - Cross platform text editor - <a href="https://www.sublimetext.com/" rel="noopener noreferrer" target="_blank">
https://www.sublimetext.com/</a>

</p>

<p>

</p>

<p>
Typora - A simple yet powerful markdown reader - https://typora.io/</p>

<p>

</p>

<p>

<strong>
Ubuntu / KUbuntu</strong>
 - <a href="https://en.wikipedia.org/wiki/Ubuntu" rel="noopener noreferrer" target="_blank">
https://en.wikipedia.org/wiki/Ubuntu</a>

</p>

<p>

</p>

<p>

<strong>
Google Drive / Google Docs</strong>
 - Cloud based workspace, storage and office tools. - <a href="https://en.wikipedia.org/wiki/Google_Drive" rel="noopener noreferrer" target="_blank">
https://en.wikipedia.org/wiki/Google_Drive</a>
 - <a href="https://en.wikipedia.org/wiki/Google_Docs" rel="noopener noreferrer" target="_blank">
https://en.wikipedia.org/wiki/Google_Docs</a>

</p>

<p>

</p>

<p>

<strong>
Graph databases</strong>
 - A graph database is a database that uses graph structures for semantic queries with nodes, edges, and properties to represent and store data. A key concept of the system is the graph (or edge or relationship). The graph relates the data items in the store to a collection of nodes and edges, the edges representing the relationships between the nodes. - <a href="https://en.wikipedia.org/wiki/Graph_database" rel="noopener noreferrer" target="_blank">
https://en.wikipedia.org/wiki/Graph_database</a>

</p>

<p>

</p>

<p>

<strong>
Autojump</strong>
 - autojump is a faster way to navigate your filesystem. It works by maintaining a database of the directories you use the most from the command line - <a href="https://github.com/wting/autojump" rel="noopener noreferrer" target="_blank">
https://github.com/wting/autojump</a>

</p>

<p>

</p>

<p>

<strong>
Object Oriented Programming</strong>
 - a programming paradigm based on the concept of objects. Objects can contain data (called fields, attributes or properties) and have actions they can perform (called procedures or methods and implemented in code). - <a href="https://en.wikipedia.org/wiki/Object-oriented_programming" rel="noopener noreferrer" target="_blank">
https://en.wikipedia.org/wiki/Object-oriented_programming</a>

</p>

<p>

</p>

<p>

<strong>
Grep, Silver Searcher &amp; RipGrep</strong>
 - grep is a command-line utility for searching plaintext datasets for lines that match a regular expression. The Silver Searcher is a code searching tool similar to ack, with a focus on speed. ripgrep is a line-oriented search tool that recursively searches the current directory for a regex pattern. - <a href="https://github.com/ggreer/the_silver_searcher" rel="noopener noreferrer" target="_blank">
https://github.com/ggreer/the_silver_searcher</a>
 - <a href="https://github.com/BurntSushi/ripgrep" rel="noopener noreferrer" target="_blank">
https://github.com/BurntSushi/ripgrep</a>

</p>

<p>

</p>

<p>

<strong>
Swagger &amp; OpenAPI</strong>
 - The OpenAPI Specification defines a standard, language-agnostic interface to HTTP APIs which allows both humans and computers to discover and understand the capabilities of the service. - <a href="https://swagger.io/specification/" rel="noopener noreferrer" target="_blank">
https://swagger.io/specification/</a>

</p>

<p>

</p>

<p>

<strong>
Zeal</strong>
 - an offline documentation browser for software developers. - <a href="https://zealdocs.org/" rel="noopener noreferrer" target="_blank">
https://zealdocs.org/</a>

</p>

<p>

</p>

<p>

<strong>
Ollama</strong>
 - a tool to get up and running with large language models, especially allowing installation on a local machine. - <a href="https://ollama.com/" rel="noopener noreferrer" target="_blank">
https://ollama.com/</a>

</p>

<p>

</p>

<p>

<strong>
SSH Config</strong>
 - A file typically with the path <em>
'~/.ssh/config'</em>
 used for setting options of the secure shell client that connects the terminal to remote computers. - <a href="https://man7.org/linux/man-pages/man5/ssh_config.5.html" rel="noopener noreferrer" target="_blank">
https://man7.org/linux/man-pages/man5/ssh_config.5.html</a>

</p>


<p><a href="https://hackerpublicradio.org/eps/hpr4635/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4634: Upgrade Failsause]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.


https://rufus.ie/en/










Kasa Smart Plug Mini with Energy Monitoring, Smart Home Wi-Fi Outlet Works with Alexa, Google Home & IFTTT, Wi-Fi Simple Setup, No Hub Required (KP115), White






 INIT STUFF






Sudoers


Apps


ap...]]></description>
<link>https://tsecurity.de/de/3494257/it+sicherheit/it+podcasts/hpr4634+upgrade+failsause/</link>
<pubDate>Thu, 07 May 2026 02:04:19 +0200</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>

<p>
https://rufus.ie/en/</p>

<p>

</p>

<p>

</p>

<p>
Kasa Smart Plug Mini with Energy Monitoring, Smart Home Wi-Fi Outlet Works with Alexa, Google Home &amp; IFTTT, Wi-Fi Simple Setup, No Hub Required (KP115), White</p>

<p>

</p>

<p>
 INIT STUFF</p>

<p>

</p>

<p>
Sudoers</p>

<p>
Apps</p>

<p>
apt update &amp;&amp; apt install -y psmisc screen net-tools snapd pipx xbindkeys xbindkeys-config git nmap mono-runtime etherwake cloudflare-ddns mlocate samba</p>

<p>

</p>

<p>
# python pipx gahh</p>

<p>
su plex -</p>

<p>
pipx install python-kasa</p>

<p>

</p>

<p>
# sudo</p>

<p>
mkdir /root/PYTHONVENV/</p>

<p>
python3 -m venv /root/PYTHONVENV/</p>

<p>
pipx install python-kasa</p>

<p>
pipx ensurepath</p>

<p>

</p>

<p>
# update db</p>

<p>
mount -a</p>

<p>
sed 's/\/media//g' -i.bak /etc/updatedb.conf</p>

<p>
updatedb</p>

<p>

</p>

<p>

</p>

<p>
Contab</p>

<p>
0 0 * * * /usr/local/bin/cloudflare-ddns --update-now</p>

<p>
0 7 * * * /usr/local/bin/etherwake -i enp1s0 -D "d8:bb:c1:a2:2c:0b"</p>

<p>
0 3 * * * /usr/bin/veracrypt -d</p>

<p>
0 0 5 * * /usr/local/sbin/BSA.sh</p>

<p>
Mounts</p>

<p>

</p>

<p>
cat /etc/fstab</p>

<p>
UUID=2317187b-c592-46a7-8d8e-45c7d1eae7fc /        ext4  errors=remount-ro 0    1</p>

<p>
UUID=61A0-586A /boot/efi    vfat  umask=0077   0    1</p>

<p>
UUID=db166a45-1afb-47dc-85cd-cbfcb06a9766 none      swap  sw       0    0</p>

<p>

</p>

<p>
# data</p>

<p>
UUID=dbb20dc6-9487-4510-9ab1-c7bbc3014cdb /media/data ext4 defaults,nofail,noatime 0 2</p>

<p>

</p>

<p>
# moredata</p>

<p>
UUID=5df24408-36ae-4205-8ecb-9d523dc4d820 /media/moredata ext4 defaults,nofail,noatime 0 2</p>

<p>

</p>

<p>
# backup</p>

<p>
UUID=c1aac0d2-73ca-4d95-883f-5e1f43b5cd13 /media/backup ext4 defaults,nofail,noatime 0 2</p>

<p>

</p>

<p>
Tunefs</p>

<p>

</p>

<p>
sudo tune2fs -c 5 -i 7d -C 1 /dev/sdd2</p>

<p>
sudo tune2fs -c 5 -i 7d -C 1 /dev/sdb1</p>

<p>
sudo tune2fs -c 5 -i 7d -C 1 /dev/sda1</p>

<p>
sudo tune2fs -c 5 -i 7d -C 1 /dev/sdc1</p>

<p>

</p>

<p>

</p>

<p>

</p>

<p>
XFCE</p>

<p>
Autologin</p>

<p>
# /etc/lightdm/lightdm.conf</p>

<p>
[Seat:*]</p>

<p>
autologin-user=plex</p>

<p>
autologin-user-timeout=0</p>

<p>

</p>

<p>
# Enable service</p>

<p>
systemctl enable lightdm</p>

<p>

</p>

<p>

</p>

<p>
UPower ( do not run pwrstatd )</p>

<p>
cat ./UPower/UPower.conf</p>

<p>
 </p>

<p>

</p>

<p>
[UPower]</p>

<p>
EnableWattsUpPro=false</p>

<p>
NoPollBatteries=false</p>

<p>
IgnoreLid=false</p>

<p>
UsePercentageForPolicy=true</p>

<p>
PercentageLow=10</p>

<p>
PercentageCritical=3</p>

<p>
PercentageAction=2</p>

<p>
TimeLow=1200</p>

<p>
TimeCritical=300</p>

<p>
TimeAction=120</p>

<p>
CriticalPowerAction=HybridSleep</p>

<p>

</p>

<p>
PLEX</p>

<p>
RESTORE/BACKUP</p>

<p>
/home/plex/Library</p>

<p>
/media/moredata/_PLEX/usr/lib/plexmediaserver/</p>

<p>
Backup ?</p>

<p>

</p>

<p>
https://github.com/sinicide/ansible-vm/blob/master/roles/plex/files/pms-backup.sh</p>

<p>

</p>

<p>
Autostart Plex</p>

<p>
/home/plex/.config/autostart# cat PLEX_STARTUP.desktop</p>

<p>
[Desktop Entry]</p>

<p>
Encoding=UTF-8</p>

<p>
Version=0.9.4</p>

<p>
Type=Application</p>

<p>
Name=KODI_STARTUP</p>

<p>
Comment=KODI_STARTUP</p>

<p>
Exec=/home/plex/.local/bin/Plex.sh</p>

<p>
OnlyShowIn=XFCE;</p>

<p>
StartupNotify=false</p>

<p>
Terminal=false</p>

<p>
Hidden=false</p>

<p>
RunHook=0</p>

<p>

</p>

<p>

</p>

<p>
OMBI</p>

<p>
Sabnsbd+</p>

<p>
IDK ... ?!!?!?!?</p>

<p>

</p>

<p>
251 pipx install git+https://github.com/sabnzbd/sabnzbd.git</p>

<p>
 252 pipx install sabnzbd</p>

<p>
 253 pipx inject sabnzbd feedparser configobj cherrypy portend chardet cheetah3 puremagic guessit babelfish tmdbsimple</p>

<p>
 254 pipx install sabnzbd</p>

<p>
 255 python3 -m venv venv</p>

<p>
 256 source venv/bin/activate</p>

<p>
 257 pip install -r requirements.txt</p>

<p>
 258 cat &gt; ~/sabnzbd/sabnzbd-wrapper.sh &lt;&lt; 'EOF'</p>

<p>
 259 #!/bin/bash</p>

<p>
 260 cd ~/sabnzbd</p>

<p>
 261 source venv/bin/activate</p>

<p>
 262 python3 SABnzbd.py "$@"</p>

<p>
 263 EOF</p>

<p>
 264 chmod +x ~/sabnzbd/sabnzbd-wrapper.sh</p>

<p>
 265 sudo ln -s ~/sabnzbd/sabnzbd-wrapper.sh /usr/local/bin/sabnzbd</p>

<p>
 266 sudo apt install unrar par2 unzip p7zip-full</p>

<p>
 267 sudo apt install par2 unzip p7zip-full</p>

<p>
 268 sudo apt install unrar par2 unzip p7zip-full</p>

<p>
 269 which sabnsbd</p>

<p>
 270 /usr/local/bin/sabnzbd</p>

<p>
 271 apt-cache search unrar</p>

<p>
 272 apt install unrar-free</p>

<p>
 273 sudo unrar-free</p>

<p>
 274 sudo apt install unrar-free</p>

<p>
 275 /usr/local/bin/sabnzbd</p>

<p>

</p>

<p>
cat &gt; ~/sabnzbd/sabnzbd-wrapper.sh &lt;&lt; 'EOF'</p>

<p>
#!/bin/bash</p>

<p>
cd ~/sabnzbd</p>

<p>
source venv/bin/activate</p>

<p>
python3 SABnzbd.py "$@"</p>

<p>
EOF</p>

<p>

</p>

<p>

</p>

<p>
Sonarr</p>

<p>
Radarr</p>

<p>
Scripts</p>

<p>
Lights</p>

<p>
WatchDog</p>

<p>
# see kasa stuff ...</p>

<p>
/root/.local/pipx/venvs/python-kasa/bin/kasa --host WATCHDOG.localdomain off</p>

<p>

</p>

<p>

</p>

<p>

</p>

<p>
Sunshine/Moonlight</p>

<p>
# client</p>

<p>
snap install moonlight</p>

<p>
Plex HTPC (Snapd)</p>

<p>
snap install snapd</p>

<p>
snap refresh snapd</p>

<p>
snap install plex-htpc</p>

<p>

</p>

<p>
SMB/NFS</p>

<p>
 apt install samba</p>

<p>
/etc/samba/smb.conf</p>

<p>
systemctl restart samba</p>

<p>

</p>

<p>

</p>

<p>

</p>

<p>

</p>

<p>
VeraCrypt</p>

<p>
BlueTooth (Xbox)</p>

<p>

</p>

<p>
apt install bluetooth bluez bluez-tools rfkill</p>

<p>
bluetoothctl</p>

<p>

</p>

<p>
# hold little button on top ...then type scan on to turn scanning on </p>

<p>
# devices to list connected devices</p>

<p>

</p>

<p>
#1 under the batt cover </p>

<p>
remove 40:8E:2C:3A:9F:DA</p>

<p>
pair 40:8E:2C:3A:9F:DA</p>

<p>
trust 40:8E:2C:3A:9F:DA</p>

<p>
connect 40:8E:2C:3A:9F:DA</p>

<p>

</p>

<p>
 </p>

<p>
remove 40:8E:2C:3A:A4:2F </p>

<p>
pair 40:8E:2C:3A:A4:2F </p>

<p>
trust 40:8E:2C:3A:A4:2F </p>

<p>
connect 40:8E:2C:3A:A4:2F </p>

<p>

</p>

<p>

</p>

<p>

</p>


<p><a href="https://hackerpublicradio.org/eps/hpr4634/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4633: Ham Radio Licence]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.


"The Foundation licence is your gateway to the world of amateur radio


The course and exam that leads to the licence provides you with an exciting introduction to the hobby while ensuring you can operate safely and without causing issues to oth...]]></description>
<link>https://tsecurity.de/de/3491072/it+sicherheit/it+podcasts/hpr4633+ham+radio+licence/</link>
<pubDate>Wed, 06 May 2026 02:03:21 +0200</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>

<h4>
"The Foundation licence is your gateway to the world of amateur radio</h4>

<p>
The course and exam that leads to the licence provides you with an exciting introduction to the hobby while ensuring you can operate safely and without causing issues to other radio users. The licence entitles you to a unique call sign which you use to identify yourself when transmitting.</p>

<p>
Foundation licences are issued by Ofcom, the UK’s communications regulator."</p>

<p>
From: <a href="https://rsgb.org/main/clubs-training/for-students/foundation/" rel="noopener noreferrer" target="_blank">
https://rsgb.org/main/clubs-training/for-students/foundation/</a>

</p>


<p><a href="https://hackerpublicradio.org/eps/hpr4633/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[174: Pacific Rim]]></title>
<description><![CDATA[For six years, Sophos fought a secret cyber war against a state-backed hacking group targeting its firewalls. This forced Sophos to drastically change tactics to properly secure their firewalls.Was it ethical? Was it effective? They disrupted nine zero-day attacks, exposed who was hacking them, a...]]></description>
<link>https://tsecurity.de/de/3488573/it+sicherheit/it+podcasts/174+pacific+rim/</link>
<pubDate>Tue, 05 May 2026 09:04:04 +0200</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>For six years, Sophos fought a secret cyber war against a state-backed hacking group targeting its firewalls. This forced Sophos to drastically change tactics to properly secure their firewalls.</p><p>Was it ethical? Was it effective? They disrupted nine zero-day attacks, exposed who was hacking them, and forced the hackers to change tactics. But at what cost?</p><p>You have to listen to one of the most audacious corporate cyber defenses ever conducted.</p><h3>Sponsors</h3><p>Support for this show comes from <a href="https://www.threatlocker.com/"><strong>ThreatLocker®</strong></a>. ThreatLocker® is a Zero Trust Endpoint Protection Platform that strengthens your infrastructure from the ground up. With ThreatLocker® Allowlisting and Ringfencing™, you gain a more secure approach to blocking exploits of known and unknown vulnerabilities. ThreatLocker® provides Zero Trust control at the kernel level that enables you to allow everything you need and block everything else, including ransomware! Learn more at <a href="https://www.threatlocker.com/"><strong>www.threatlocker.com</strong></a>.</p><p>This show is sponsored by <a href="https://www.meter.com/"><strong>Meter</strong></a>, the company building networks from the ground up. Meter delivers a complete networking stack - wired, wireless, and cellular - in one solution that’s built for performance and scale. Alongside their partners, Meter designs the hardware, writes the firmware, builds the software, manages deployments, and runs support. Learn more at <a href="https://www.meter.com/"><strong>meter.com</strong></a>.</p><p>Support for this show comes from <a href="https://drata.com/darknetdiaries"><strong>Drata</strong></a>. Drata is the trust management platform that uses AI-driven automation to modernize governance, risk, and compliance, helping thousands of businesses stay audit-ready and scale securely. Learn more at <a href="https://drata.com/darknetdiaries"><strong>drata.com/darknetdiaries</strong></a>.</p><h3>Sources</h3><ul>
<li><a href="https://news.sophos.com/en-us/2024/10/31/pacific-rim-timeline/"><strong>https://news.sophos.com/en-us/2024/10/31/pacific-rim-timeline/</strong></a></li>
<li><a href="https://www.justice.gov/archives/opa/pr/seven-hackers-associated-chinese-government-charged-computer-intrusions-targeting-perceived"><strong>https://www.justice.gov/archives/opa/pr/seven-hackers-associated-chinese-government-charged-computer-intrusions-targeting-perceived</strong></a></li>
<li><a href="https://www.fbi.gov/wanted/cyber/guan-tianfeng"><strong>https://www.fbi.gov/wanted/cyber/guan-tianfeng</strong></a></li>
</ul>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4632: Hackerpublic Radio New Years Eve Show 2026 Episode 6]]></title>
<description><![CDATA[This show has been flagged as Explicit by the host.







Sauced





https://www.urbandictionary.com/define.php?term=sauced









Chevrolet Vega





https://en.wikipedia.org/wiki/Chevrolet_Vega









Chevrolet small-block engine (first- and second-generation)





h...]]></description>
<link>https://tsecurity.de/de/3487735/it+sicherheit/it+podcasts/hpr4632+hackerpublic+radio+new+years+eve+show+2026+episode+6/</link>
<pubDate>Tue, 05 May 2026 02:06:11 +0200</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Explicit by the host.</p>

<p>

</p>

<p>

Sauced
</p>

<p>

<a href="https://www.urbandictionary.com/define.php?term=sauced" rel="noopener noreferrer" target="_blank">
https://www.urbandictionary.com/define.php?term=sauced</a>

</p>

<p>

</p>

<p>

Chevrolet Vega
</p>

<p>

<a href="https://en.wikipedia.org/wiki/Chevrolet_Vega" rel="noopener noreferrer" target="_blank">
https://en.wikipedia.org/wiki/Chevrolet_Vega</a>

</p>

<p>

</p>

<p>

Chevrolet small-block engine (first- and second-generation)
</p>

<p>

<a href="https://en.wikipedia.org/wiki/Chevrolet_small-block_engine_(first-_and_second-generation)" rel="noopener noreferrer" target="_blank">
https://en.wikipedia.org/wiki/Chevrolet_small-block_engine_(first-_and_second-generation)</a>

</p>

<p>

<a href="https://www.chevrolet.com/performance-parts/crate-engines/small-block-engines/350-engine" rel="noopener noreferrer" target="_blank">
https://www.chevrolet.com/performance-parts/crate-engines/small-block-engines/350-engine</a>

</p>

<p>

</p>

<p>

Straight-six engine
</p>

<p>

<a href="https://en.wikipedia.org/wiki/Straight-six_engine" rel="noopener noreferrer" target="_blank">
https://en.wikipedia.org/wiki/Straight-six_engine</a>

</p>

<p>

</p>

<p>

Half marathon
</p>

<p>

<a href="https://en.wikipedia.org/wiki/Half_marathon" rel="noopener noreferrer" target="_blank">
https://en.wikipedia.org/wiki/Half_marathon</a>

</p>

<p>

</p>

<p>

Mammoth March
</p>

<p>

<a href="https://www.mammothmarch.com/" rel="noopener noreferrer" target="_blank">
https://www.mammothmarch.com/</a>

</p>

<p>

</p>

<p>

What Is Sleep Apnea?
</p>

<p>

<a href="https://www.nhlbi.nih.gov/health/sleep-apnea" rel="noopener noreferrer" target="_blank">
https://www.nhlbi.nih.gov/health/sleep-apnea</a>

</p>

<p>

<a href="https://en.wikipedia.org/wiki/Apnea" rel="noopener noreferrer" target="_blank">
https://en.wikipedia.org/wiki/Apnea</a>

</p>

<p>

</p>

<p>

Spaceballs
</p>

<p>

<a href="https://en.wikipedia.org/wiki/Spaceballs" rel="noopener noreferrer" target="_blank">
https://en.wikipedia.org/wiki/Spaceballs</a>

</p>

<p>

<a href="https://www.imdb.com/title/tt0094012/" rel="noopener noreferrer" target="_blank">
https://www.imdb.com/title/tt0094012/</a>

</p>

<p>

</p>

<p>

Ale 8 One Special Edition Cherry Zero Sugar
</p>

<p>

<a href="https://ale8one.com/varieties/" rel="noopener noreferrer" target="_blank">
https://ale8one.com/varieties/</a>

</p>

<p>

<a href="https://www.amazon.com/Ale-One-Special-Bottles-Kentucky/dp/B09JBBDKM1" rel="noopener noreferrer" target="_blank">
https://www.amazon.com/Ale-One-Special-Bottles-Kentucky/dp/B09JBBDKM1</a>

</p>

<p>

<a href="https://www.kroger.com/p/ale-8-one-zero-sugar-cherry-soda-bottles/0007227546202" rel="noopener noreferrer" target="_blank">
https://www.kroger.com/p/ale-8-one-zero-sugar-cherry-soda-bottles/0007227546202</a>

</p>

<p>

</p>

<p>

Alcoholism
</p>

<p>

<a href="https://en.wikipedia.org/wiki/Alcoholism" rel="noopener noreferrer" target="_blank">
https://en.wikipedia.org/wiki/Alcoholism</a>

</p>

<p>

<a href="https://www.cdc.gov/nchs/fastats/alcohol.htm" rel="noopener noreferrer" target="_blank">
https://www.cdc.gov/nchs/fastats/alcohol.htm</a>

</p>

<p>

</p>

<p>

Jitsi
</p>

<p>

<a href="https://jitsi.org/" rel="noopener noreferrer" target="_blank">
https://jitsi.org/</a>

</p>

<p>

<a href="https://en.wikipedia.org/wiki/Jitsi" rel="noopener noreferrer" target="_blank">
https://en.wikipedia.org/wiki/Jitsi</a>

</p>

<p>

</p>

<p>

Surface Pro 6
</p>

<p>

<a href="https://support.microsoft.com/en-us/surface/surface-pro-6-specs-and-features-ade5cfc2-e99a-6fd1-abbe-c0e8a8a3942d" rel="noopener noreferrer" target="_blank">
https://support.microsoft.com/en-us/surface/surface-pro-6-specs-and-features-ade5cfc2-e99a-6fd1-abbe-c0e8a8a3942d</a>

</p>

<p>

</p>

<p>

Xfce Desktop Environment
</p>

<p>

<a href="https://www.xfce.org/" rel="noopener noreferrer" target="_blank">
https://www.xfce.org/</a>

</p>

<p>

<a href="https://en.wikipedia.org/wiki/Xfce" rel="noopener noreferrer" target="_blank">
https://en.wikipedia.org/wiki/Xfce</a>

</p>

<p>

</p>

<p>

Trinity Desktop Environment
</p>

<p>

<a href="https://www.trinitydesktop.org/" rel="noopener noreferrer" target="_blank">
https://www.trinitydesktop.org/</a>

</p>

<p>

<a href="https://en.wikipedia.org/wiki/Trinity_Desktop_Environment" rel="noopener noreferrer" target="_blank">
https://en.wikipedia.org/wiki/Trinity_Desktop_Environment</a>

</p>

<p>

</p>

<p>

Cheese
</p>

<p>

<a href="https://wiki.gnome.org/Apps/Cheese" rel="noopener noreferrer" target="_blank">
https://wiki.gnome.org/Apps/Cheese</a>

</p>

<p>

</p>

<p>

Altered
</p>

<p>

<a href="https://www.imdb.com/title/tt32123395/" rel="noopener noreferrer" target="_blank">
https://www.imdb.com/title/tt32123395/</a>

</p>

<p>

</p>

<p>

Final fireworks sales take off with a bang as countdown begins.
</p>

<p>

<a href="https://www.dutchnews.nl/2025/12/final-fireworks-sales-take-off-with-a-bang-as-countdown-begins/" rel="noopener noreferrer" target="_blank">
https://www.dutchnews.nl/2025/12/final-fireworks-sales-take-off-with-a-bang-as-countdown-begins/</a>

</p>

<p>

<a href="https://www.theguardian.com/world/2026/jan/09/dutch-netherlands-fireworks-ban-new-years-eve" rel="noopener noreferrer" target="_blank">
https://www.theguardian.com/world/2026/jan/09/dutch-netherlands-fireworks-ban-new-years-eve</a>

</p>

<p>

</p>

<p>

Fireworks policy in the Netherlands
</p>

<p>

<a href="https://en.wikipedia.org/wiki/Fireworks_policy_in_the_Netherlands" rel="noopener noreferrer" target="_blank">
https://en.wikipedia.org/wiki/Fireworks_policy_in_the_Netherlands</a>

</p>

<p>

</p>

<p>

Quarter of idiom
</p>

<p>

<a href="https://www.merriam-webster.com/dictionary/%28a%29%20quarter%20of" rel="noopener noreferrer" target="_blank">
https://www.merriam-webster.com/dictionary/%28a%29%20quarter%20of</a>

</p>

<p>

</p>

<p>

LinuxLugCast
</p>

<p>

<a href="https://linuxlugcast.com/" rel="noopener noreferrer" target="_blank">
https://linuxlugcast.com/</a>

</p>

<p>

</p>

<p>

Needs must idiom
</p>

<p>

<a href="https://www.phrases.org.uk/meanings/needs-must.html" rel="noopener noreferrer" target="_blank">
https://www.phrases.org.uk/meanings/needs-must.html</a>

</p>

<p>

</p>

<p>

Tech and Coffee.
</p>

<p>

<a href="https://techandcoffee.info/" rel="noopener noreferrer" target="_blank">
https://techandcoffee.info/</a>

</p>

<p>

</p>

<p>

January 6 United States Capitol attack
</p>

<p>

<a href="https://en.wikipedia.org/wiki/January_6_United_States_Capitol_attack" rel="noopener noreferrer" target="_blank">
https://en.wikipedia.org/wiki/January_6_United_States_Capitol_attack</a>

</p>

<p>

</p>

<p>

OggCamp 2026
</p>

<p>

<a href="https://www.oggcamp.org/" rel="noopener noreferrer" target="_blank">
https://www.oggcamp.org/</a>

</p>

<p>

</p>

<p>

List of benchmarking methods and software tools
</p>

<p>

<a href="https://en.wikipedia.org/wiki/List_of_benchmarking_methods_and_software_tools" rel="noopener noreferrer" target="_blank">
https://en.wikipedia.org/wiki/List_of_benchmarking_methods_and_software_tools</a>

</p>

<p>

</p>

<p>

Watchhouse
</p>

<p>

<a href="https://watchhouseband.com/" rel="noopener noreferrer" target="_blank">
https://watchhouseband.com/</a>

</p>

<p>

</p>

<p>

Proper feline supervision (Just because)
</p>

<p>

<a href="https://blog.catbandit.com/why-does-my-cat-always-watch-me-exploring-the-reasons-behind-feline-observation/" rel="noopener noreferrer" target="_blank">
https://blog.catbandit.com/why-does-my-cat-always-watch-me-exploring-the-reasons-behind-feline-observation/</a>

</p>

<p>

<a href="https://www.cats.org.uk/cats-blog/why-does-my-cat-stare-at-me" rel="noopener noreferrer" target="_blank">
https://www.cats.org.uk/cats-blog/why-does-my-cat-stare-at-me</a>

</p>

<p>

<a href="https://thepurrfectguide.com/cat-supervised-introduction-guide/" rel="noopener noreferrer" target="_blank">
https://thepurrfectguide.com/cat-supervised-introduction-guide/</a>

</p>

<p>

<a href="https://catvets.com/clinical-resources/practice-guidelines/" rel="noopener noreferrer" target="_blank">
https://catvets.com/clinical-resources/practice-guidelines/</a>

</p>

<p>

</p>

<p>

WYSIWYG
</p>

<p>

<a href="https://pl.wikipedia.org/wiki/WYSIWYG" rel="noopener noreferrer" target="_blank">
https://pl.wikipedia.org/wiki/WYSIWYG</a>

</p>

<p>

</p>

<p>

Pandoc a universal document converter
</p>

<p>

<a href="https://pandoc.org/" rel="noopener noreferrer" target="_blank">
https://pandoc.org/</a>

</p>

<p>

</p>

<p>

Rendering on the Web
</p>

<p>

<a href="https://web.dev/articles/rendering-on-the-web" rel="noopener noreferrer" target="_blank">
https://web.dev/articles/rendering-on-the-web</a>

</p>

<p>

</p>

<p>

F-Droid
</p>

<p>

<a href="https://en.wikipedia.org/wiki/F-Droid" rel="noopener noreferrer" target="_blank">
https://en.wikipedia.org/wiki/F-Droid</a>

</p>

<p>

<a href="https://f-droid.org/en/" rel="noopener noreferrer" target="_blank">
https://f-droid.org/en/</a>

</p>

<p>

</p>

<p>

Get UTC time in seconds
</p>

<p>

<a href="https://stackoverflow.com/questions/24547655/get-utc-time-in-seconds" rel="noopener noreferrer" target="_blank">
https://stackoverflow.com/questions/24547655/get-utc-time-in-seconds</a>

</p>

<p>

</p>

<p>

Content delivery network
</p>

<p>

<a href="https://en.wikipedia.org/wiki/Content_delivery_network" rel="noopener noreferrer" target="_blank">
https://en.wikipedia.org/wiki/Content_delivery_network</a>

</p>

<p>

</p>

<p>

Audio feedback
</p>

<p>

<a href="https://en.wikipedia.org/wiki/Audio_feedback" rel="noopener noreferrer" target="_blank">
https://en.wikipedia.org/wiki/Audio_feedback</a>

</p>

<p>

</p>

<p>

Loopback
</p>

<p>

<a href="https://en.wikipedia.org/wiki/Loopback" rel="noopener noreferrer" target="_blank">
https://en.wikipedia.org/wiki/Loopback</a>

</p>

<p>

</p>

<p>

List of conspiracy theories
</p>

<p>

<a href="https://en.wikipedia.org/wiki/List_of_conspiracy_theories" rel="noopener noreferrer" target="_blank">
https://en.wikipedia.org/wiki/List_of_conspiracy_theories</a>

</p>

<p>

</p>

<p>

Jason Scott
</p>

<p>

<a href="https://en.wikipedia.org/wiki/Jason_Scott" rel="noopener noreferrer" target="_blank">
https://en.wikipedia.org/wiki/Jason_Scott</a>

</p>

<p>

</p>

<p>

Bug vs Feature
</p>

<p>

<a href="https://devrev.ai/blog/bug-vs-feature-request-a-distinction-without-a-difference" rel="noopener noreferrer" target="_blank">
https://devrev.ai/blog/bug-vs-feature-request-a-distinction-without-a-difference</a>

</p>

<p>

<a href="https://blog.codinghorror.com/thats-not-a-bug-its-a-feature-request/" rel="noopener noreferrer" target="_blank">
https://blog.codinghorror.com/thats-not-a-bug-its-a-feature-request/</a>

</p>

<p>

</p>

<p>

chronic dehydration
</p>

<p>

<a href="https://en.wikipedia.org/wiki/Dehydration" rel="noopener noreferrer" target="_blank">
https://en.wikipedia.org/wiki/Dehydration</a>

</p>

<p>

<a href="https://www.nhs.uk/conditions/dehydration/" rel="noopener noreferrer" target="_blank">
https://www.nhs.uk/conditions/dehydration/</a>

</p>

<p>

<a href="https://medlineplus.gov/dehydration.html" rel="noopener noreferrer" target="_blank">
https://medlineplus.gov/dehydration.html</a>

</p>

<p>

<a href="https://www.healthline.com/health/chronic-dehydration" rel="noopener noreferrer" target="_blank">
https://www.healthline.com/health/chronic-dehydration</a>

</p>

<p>

</p>

<p>

Atlantic Highly Migratory Species Fishery Compliance Guides
</p>

<p>

<a href="https://www.fisheries.noaa.gov/atlantic-highly-migratory-species/atlantic-highly-migratory-species-fishery-compliance-guides" rel="noopener noreferrer" target="_blank">
https://www.fisheries.noaa.gov/atlantic-highly-migratory-species/atlantic-highly-migratory-species-fishery-compliance-guides</a>

</p>

<p>

<a href="https://www.fisheries.noaa.gov/highly-migratory-species" rel="noopener noreferrer" target="_blank">
https://www.fisheries.noaa.gov/highly-migratory-species</a>

</p>

<p>

<a href="https://www.ecfr.gov/current/title-50/chapter-VI/part-635" rel="noopener noreferrer" target="_blank">
https://www.ecfr.gov/current/title-50/chapter-VI/part-635</a>

</p>

<p>

</p>

<p>

Federal Bridge Gross Weight Formula
</p>

<p>

<a href="https://en.wikipedia.org/wiki/Federal_Bridge_Gross_Weight_Formula" rel="noopener noreferrer" target="_blank">
https://en.wikipedia.org/wiki/Federal_Bridge_Gross_Weight_Formula</a>

</p>

<p>

<a href="https://ops.fhwa.dot.gov/FREIGHT/publications/brdg_frm_wghts/index.htm" rel="noopener noreferrer" target="_blank">
https://ops.fhwa.dot.gov/FREIGHT/publications/brdg_frm_wghts/index.htm</a>

</p>

<p>

</p>

<p>

Convenience store
</p>

<p>

<a href="https://en.wikipedia.org/wiki/Convenience_store" rel="noopener noreferrer" target="_blank">
https://en.wikipedia.org/wiki/Convenience_store</a>

</p>

<p>

</p>

<p>

Listing Linux Users and Groups: A Comprehensive Guide
</p>

<p>

<a href="https://linuxvox.com/blog/list-linux-users-and-groups/" rel="noopener noreferrer" target="_blank">
https://linuxvox.com/blog/list-linux-users-and-groups/</a>

</p>

<p>

</p>

<p>

Plugable 250x Digital USB Microscope with Observation Stand
</p>

<p>

<a href="https://plugable.com/products/usb2-micro-250x" rel="noopener noreferrer" target="_blank">
https://plugable.com/products/usb2-micro-250x</a>

</p>

<p>

</p>

<p>

What’s the difference between Medicare and Medicaid?
</p>

<p>

<a href="https://www.hhs.gov/answers/medicare-and-medicaid/what-is-the-difference-between-medicare-medicaid/index.html" rel="noopener noreferrer" target="_blank">
https://www.hhs.gov/answers/medicare-and-medicaid/what-is-the-difference-between-medicare-medicaid/index.html</a>

</p>

<p>

<a href="https://www.medicare.gov/basics/costs/help/medicaid" rel="noopener noreferrer" target="_blank">
https://www.medicare.gov/basics/costs/help/medicaid</a>

</p>

<p>

</p>


<p><a href="https://hackerpublicradio.org/eps/hpr4632/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4631: HPR Community News for April 2026]]></title>
<description><![CDATA[This show has been flagged as Explicit by the host.
New hosts

There were no new hosts this month.


Last Month's Shows



Id
Day
Date
Title
Host


4608
Wed
2026-04-01
Simple Podcasting - Episode 1 - Preparation and Recording
Whiskeyjack


4609
Thu
2026-04-02
Proper Date Format
Ahuka


4610
Fri
2...]]></description>
<link>https://tsecurity.de/de/3484552/it+sicherheit/it+podcasts/hpr4631+hpr+community+news+for+april+2026/</link>
<pubDate>Mon, 04 May 2026 02:02:33 +0200</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Explicit by the host.</p>
<h2>New hosts</h2>
<p>
There were no new hosts this month.
</p>

<h2>Last Month's Shows</h2>

<table>
<tr>
<th>Id</th>
<th>Day</th>
<th>Date</th>
<th>Title</th>
<th>Host</th>
</tr>
<tr>
<td><strong><a href="https://hackerpublicradio.org/eps/hpr4608/index.html" target="_blank">4608</a></strong></td>
<td>Wed</td>
<td class="shrink">2026-04-01</td>
<td><a href="https://hackerpublicradio.org/eps/hpr4608/index.html" target="_blank">Simple Podcasting - Episode 1 - Preparation and Recording</a></td>
<td><a href="https://hackerpublicradio.org/correspondents/0455.html" target="_blank">Whiskeyjack</a></td>
</tr>
<tr>
<td><strong><a href="https://hackerpublicradio.org/eps/hpr4609/index.html" target="_blank">4609</a></strong></td>
<td>Thu</td>
<td class="shrink">2026-04-02</td>
<td><a href="https://hackerpublicradio.org/eps/hpr4609/index.html" target="_blank">Proper Date Format</a></td>
<td><a href="https://hackerpublicradio.org/correspondents/0198.html" target="_blank">Ahuka</a></td>
</tr>
<tr>
<td><strong><a href="https://hackerpublicradio.org/eps/hpr4610/index.html" target="_blank">4610</a></strong></td>
<td>Fri</td>
<td class="shrink">2026-04-03</td>
<td><a href="https://hackerpublicradio.org/eps/hpr4610/index.html" target="_blank">Playing Civilization V, Part 10</a></td>
<td><a href="https://hackerpublicradio.org/correspondents/0198.html" target="_blank">Ahuka</a></td>
</tr>
<tr>
<td><strong><a href="https://hackerpublicradio.org/eps/hpr4611/index.html" target="_blank">4611</a></strong></td>
<td>Mon</td>
<td class="shrink">2026-04-06</td>
<td><a href="https://hackerpublicradio.org/eps/hpr4611/index.html" target="_blank">HPR Community News for March 2026</a></td>
<td><a href="https://hackerpublicradio.org/correspondents/0159.html" target="_blank">HPR Volunteers</a></td>
</tr>
<tr>
<td><strong><a href="https://hackerpublicradio.org/eps/hpr4612/index.html" target="_blank">4612</a></strong></td>
<td>Tue</td>
<td class="shrink">2026-04-07</td>
<td><a href="https://hackerpublicradio.org/eps/hpr4612/index.html" target="_blank">Hackerpublic Radio New Years Eve Show 2026 Episode 4</a></td>
<td><a href="https://hackerpublicradio.org/correspondents/0269.html" target="_blank">Honkeymagoo</a></td>
</tr>
<tr>
<td><strong><a href="https://hackerpublicradio.org/eps/hpr4613/index.html" target="_blank">4613</a></strong></td>
<td>Wed</td>
<td class="shrink">2026-04-08</td>
<td><a href="https://hackerpublicradio.org/eps/hpr4613/index.html" target="_blank">Adding functionality to an Odoo installation</a></td>
<td><a href="https://hackerpublicradio.org/correspondents/0369.html" target="_blank">Jeroen Baten</a></td>
</tr>
<tr>
<td><strong><a href="https://hackerpublicradio.org/eps/hpr4614/index.html" target="_blank">4614</a></strong></td>
<td>Thu</td>
<td class="shrink">2026-04-09</td>
<td><a href="https://hackerpublicradio.org/eps/hpr4614/index.html" target="_blank">Dauug|18: Faster Than a '286, but Inspectable Like a Soroban</a></td>
<td><a href="https://hackerpublicradio.org/correspondents/0443.html" target="_blank">Marc W. Abel</a></td>
</tr>
<tr>
<td><strong><a href="https://hackerpublicradio.org/eps/hpr4615/index.html" target="_blank">4615</a></strong></td>
<td>Fri</td>
<td class="shrink">2026-04-10</td>
<td><a href="https://hackerpublicradio.org/eps/hpr4615/index.html" target="_blank">Clicking through an audit</a></td>
<td><a href="https://hackerpublicradio.org/correspondents/0403.html" target="_blank">Lee</a></td>
</tr>
<tr>
<td><strong><a href="https://hackerpublicradio.org/eps/hpr4616/index.html" target="_blank">4616</a></strong></td>
<td>Mon</td>
<td class="shrink">2026-04-13</td>
<td><a href="https://hackerpublicradio.org/eps/hpr4616/index.html" target="_blank">Thoughts about age control and further suggestions</a></td>
<td><a href="https://hackerpublicradio.org/correspondents/0433.html" target="_blank">Trollercoaster</a></td>
</tr>
<tr>
<td><strong><a href="https://hackerpublicradio.org/eps/hpr4617/index.html" target="_blank">4617</a></strong></td>
<td>Tue</td>
<td class="shrink">2026-04-14</td>
<td><a href="https://hackerpublicradio.org/eps/hpr4617/index.html" target="_blank">UNIX Curio #4 - Archiving Files</a></td>
<td><a href="https://hackerpublicradio.org/correspondents/0459.html" target="_blank">Vance</a></td>
</tr>
<tr>
<td><strong><a href="https://hackerpublicradio.org/eps/hpr4618/index.html" target="_blank">4618</a></strong></td>
<td>Wed</td>
<td class="shrink">2026-04-15</td>
<td><a href="https://hackerpublicradio.org/eps/hpr4618/index.html" target="_blank">Simple Podcasting - Episode 2 - Basic Filtering</a></td>
<td><a href="https://hackerpublicradio.org/correspondents/0455.html" target="_blank">Whiskeyjack</a></td>
</tr>
<tr>
<td><strong><a href="https://hackerpublicradio.org/eps/hpr4619/index.html" target="_blank">4619</a></strong></td>
<td>Thu</td>
<td class="shrink">2026-04-16</td>
<td><a href="https://hackerpublicradio.org/eps/hpr4619/index.html" target="_blank">HPR Beer Garden 12 - Baltic Porter</a></td>
<td><a href="https://hackerpublicradio.org/correspondents/0296.html" target="_blank">Kevie</a></td>
</tr>
<tr>
<td><strong><a href="https://hackerpublicradio.org/eps/hpr4620/index.html" target="_blank">4620</a></strong></td>
<td>Fri</td>
<td class="shrink">2026-04-17</td>
<td><a href="https://hackerpublicradio.org/eps/hpr4620/index.html" target="_blank">The Second Doctor, Part 1</a></td>
<td><a href="https://hackerpublicradio.org/correspondents/0198.html" target="_blank">Ahuka</a></td>
</tr>
<tr>
<td><strong><a href="https://hackerpublicradio.org/eps/hpr4621/index.html" target="_blank">4621</a></strong></td>
<td>Mon</td>
<td class="shrink">2026-04-20</td>
<td><a href="https://hackerpublicradio.org/eps/hpr4621/index.html" target="_blank">Android volume control help</a></td>
<td><a href="https://hackerpublicradio.org/correspondents/0036.html" target="_blank">operat0r</a></td>
</tr>
<tr>
<td><strong><a href="https://hackerpublicradio.org/eps/hpr4622/index.html" target="_blank">4622</a></strong></td>
<td>Tue</td>
<td class="shrink">2026-04-21</td>
<td><a href="https://hackerpublicradio.org/eps/hpr4622/index.html" target="_blank">Hackerpublic Radio New Years Eve Show 2026 Episode 5</a></td>
<td><a href="https://hackerpublicradio.org/correspondents/0269.html" target="_blank">Honkeymagoo</a></td>
</tr>
<tr>
<td><strong><a href="https://hackerpublicradio.org/eps/hpr4623/index.html" target="_blank">4623</a></strong></td>
<td>Wed</td>
<td class="shrink">2026-04-22</td>
<td><a href="https://hackerpublicradio.org/eps/hpr4623/index.html" target="_blank">A brief infodump on the Broadcast Address and Routing</a></td>
<td><a href="https://hackerpublicradio.org/correspondents/0439.html" target="_blank">Jon The Nice Guy</a></td>
</tr>
<tr>
<td><strong><a href="https://hackerpublicradio.org/eps/hpr4624/index.html" target="_blank">4624</a></strong></td>
<td>Thu</td>
<td class="shrink">2026-04-23</td>
<td><a href="https://hackerpublicradio.org/eps/hpr4624/index.html" target="_blank">Cheap Yellow Display Project Part 7: GUI Trying a Simple Hello World </a></td>
<td><a href="https://hackerpublicradio.org/correspondents/0394.html" target="_blank">Trey</a></td>
</tr>
<tr>
<td><strong><a href="https://hackerpublicradio.org/eps/hpr4625/index.html" target="_blank">4625</a></strong></td>
<td>Fri</td>
<td class="shrink">2026-04-24</td>
<td><a href="https://hackerpublicradio.org/eps/hpr4625/index.html" target="_blank">Site Specific Browsers</a></td>
<td><a href="https://hackerpublicradio.org/correspondents/0403.html" target="_blank">Lee</a></td>
</tr>
<tr>
<td><strong><a href="https://hackerpublicradio.org/eps/hpr4626/index.html" target="_blank">4626</a></strong></td>
<td>Mon</td>
<td class="shrink">2026-04-27</td>
<td><a href="https://hackerpublicradio.org/eps/hpr4626/index.html" target="_blank">Cable Management / PC Speakers </a></td>
<td><a href="https://hackerpublicradio.org/correspondents/0036.html" target="_blank">operat0r</a></td>
</tr>
<tr>
<td><strong><a href="https://hackerpublicradio.org/eps/hpr4627/index.html" target="_blank">4627</a></strong></td>
<td>Tue</td>
<td class="shrink">2026-04-28</td>
<td><a href="https://hackerpublicradio.org/eps/hpr4627/index.html" target="_blank">UNIX Curio #5 - Faster, Pussycat! Kill! Kill!</a></td>
<td><a href="https://hackerpublicradio.org/correspondents/0459.html" target="_blank">Vance</a></td>
</tr>
<tr>
<td><strong><a href="https://hackerpublicradio.org/eps/hpr4628/index.html" target="_blank">4628</a></strong></td>
<td>Wed</td>
<td class="shrink">2026-04-29</td>
<td><a href="https://hackerpublicradio.org/eps/hpr4628/index.html" target="_blank">Nuclear Power Technology Follow Up</a></td>
<td><a href="https://hackerpublicradio.org/correspondents/0455.html" target="_blank">Whiskeyjack</a></td>
</tr>
<tr>
<td><strong><a href="https://hackerpublicradio.org/eps/hpr4629/index.html" target="_blank">4629</a></strong></td>
<td>Thu</td>
<td class="shrink">2026-04-30</td>
<td><a href="https://hackerpublicradio.org/eps/hpr4629/index.html" target="_blank">What did I do at work today? Part 2</a></td>
<td><a href="https://hackerpublicradio.org/correspondents/0403.html" target="_blank">Lee</a></td>
</tr>
</table>

<h2>Comments this month</h2>

<h3>Past shows</h3>
<ul>
<li><strong><a href="https://hackerpublicradio.org/eps/hpr4424/index.html#comments" target="_blank">hpr4424</a></strong> (2025-07-17) "<em>How I use Newsboat for Podcasts and Reddit</em>" by <a href="https://hackerpublicradio.org/correspondents/0318.html" target="_blank">Archer72</a>.<br></li>
<ul>
<li><strong>Ken Fallon</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4424/index.html#comment_4680" target="_blank">Summary of findings</a></em>" (2026-04-05 14:09:24)<br></li>
<li><strong>Archer72</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4424/index.html#comment_4702" target="_blank">Not fixed from أحمد المحمودي</a></em>" (2026-04-25 11:02:26)<br></li>
</ul>
<li><strong><a href="https://hackerpublicradio.org/eps/hpr4569/index.html#comments" target="_blank">hpr4569</a></strong> (2026-02-05) "<em>Kiosk with guest mode on Linux</em>" by <a href="https://hackerpublicradio.org/correspondents/0078.html" target="_blank">Klaatu</a>.<br></li>
<ul>
<li><strong>0xf10e</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4569/index.html#comment_4692" target="_blank">Preconfiguring browsers profiles? and re-replies ;)</a></em>" (2026-04-17 09:56:49)<br></li>
</ul>
<li><strong><a href="https://hackerpublicradio.org/eps/hpr4585/index.html#comments" target="_blank">hpr4585</a></strong> (2026-02-27) "<em>mpv util scripts</em>" by <a href="https://hackerpublicradio.org/correspondents/0454.html" target="_blank">candycanearter</a>.<br></li>
<ul>
<li><strong>candycanearter07</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4585/index.html#comment_4691" target="_blank">perpetually updated script(s)</a></em>" (2026-04-14 20:41:28)<br></li>
</ul>
<li><strong><a href="https://hackerpublicradio.org/eps/hpr4596/index.html#comments" target="_blank">hpr4596</a></strong> (2026-03-16) "<em>Adding voice-over audio track created using text to speech on the movie subtitles</em>" by <a href="https://hackerpublicradio.org/correspondents/0030.html" target="_blank">Ken Fallon</a>.<br></li>
<ul>
<li><strong>Windigo</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4596/index.html#comment_4701" target="_blank">Great usability win</a></em>" (2026-04-24 19:33:03)<br></li>
</ul>
<li><strong><a href="https://hackerpublicradio.org/eps/hpr4600/index.html#comments" target="_blank">hpr4600</a></strong> (2026-03-20) "<em>The First Doctor, Part 5</em>" by <a href="https://hackerpublicradio.org/correspondents/0198.html" target="_blank">Ahuka</a>.<br></li>
<ul>
<li><strong>Kevin O'Brien</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4600/index.html#comment_4689" target="_blank">Maybe I will</a></em>" (2026-04-12 16:16:00)<br></li>
</ul>
<li><strong><a href="https://hackerpublicradio.org/eps/hpr4603/index.html#comments" target="_blank">hpr4603</a></strong> (2026-03-25) "<em>On the Erosion of Freedom in Open Source Software</em>" by <a href="https://hackerpublicradio.org/correspondents/0420.html" target="_blank">HopperMCS</a>.<br></li>
<ul>
<li><strong>Trollercoaster</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4603/index.html#comment_4687" target="_blank">Hopper did time traveling!</a></em>" (2026-04-09 05:46:52)<br></li>
</ul>
<li><strong><a href="https://hackerpublicradio.org/eps/hpr4605/index.html#comments" target="_blank">hpr4605</a></strong> (2026-03-27) "<em>Lee locks down his wifey poo</em>" by <a href="https://hackerpublicradio.org/correspondents/0446.html" target="_blank">Elsbeth</a>.<br></li>
<ul>
<li><strong>Lee</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4605/index.html#comment_4681" target="_blank">Quotation</a></em>" (2026-04-05 15:59:54)<br></li>
<li><strong>Paulj</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4605/index.html#comment_4686" target="_blank">Thanks!</a></em>" (2026-04-06 16:44:28)<br></li>
</ul>
<li><strong><a href="https://hackerpublicradio.org/eps/hpr4606/index.html#comments" target="_blank">hpr4606</a></strong> (2026-03-30) "<em>My Nerdy Childhood: From Floppy Disks to Dial-Up Dreams</em>" by <a href="https://hackerpublicradio.org/correspondents/0433.html" target="_blank">Trollercoaster</a>.<br></li>
<ul>
<li><strong>Trollercoaster</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4606/index.html#comment_4685" target="_blank">Damn you Nerdy Nostaliga!</a></em>" (2026-04-06 15:28:34)<br></li>
</ul>
</ul>
<h3>This month's shows</h3>
<ul>
<li><strong><a href="https://hackerpublicradio.org/eps/hpr4608/index.html#comments" target="_blank">hpr4608</a></strong> (2026-04-01) "<em>Simple Podcasting - Episode 1 - Preparation and Recording</em>" by <a href="https://hackerpublicradio.org/correspondents/0455.html" target="_blank">Whiskeyjack</a>.<br></li>
<ul>
<li><strong>Archer72</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4608/index.html#comment_4672" target="_blank">Listening ahead</a></em>" (2026-04-01 10:06:46)<br></li>
<li><strong>Whiskeyjack</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4608/index.html#comment_4673" target="_blank">Reply to Archer72 on HPR4608</a></em>" (2026-04-01 12:27:46)<br></li>
<li><strong>Reto</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4608/index.html#comment_4674" target="_blank">It reminds me about Solocast</a></em>" (2026-04-03 07:49:58)<br></li>
<li><strong>Whiskeyjack</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4608/index.html#comment_4677" target="_blank">Response to Reto comment on HPR4608</a></em>" (2026-04-04 18:19:25)<br></li>
<li><strong>Whiskeyjack</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4608/index.html#comment_4679" target="_blank">Further response to Reto comment on HPR4608</a></em>" (2026-04-04 22:21:38)<br></li>
</ul>
<li><strong><a href="https://hackerpublicradio.org/eps/hpr4609/index.html#comments" target="_blank">hpr4609</a></strong> (2026-04-02) "<em>Proper Date Format</em>" by <a href="https://hackerpublicradio.org/correspondents/0198.html" target="_blank">Ahuka</a>.<br></li>
<ul>
<li><strong>Jim DeVore</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4609/index.html#comment_4676" target="_blank">It is the only proper date format</a></em>" (2026-04-04 14:19:15)<br></li>
<li><strong>candycanearter07</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4609/index.html#comment_4683" target="_blank">sensical date format</a></em>" (2026-04-06 09:37:47)<br></li>
</ul>
<li><strong><a href="https://hackerpublicradio.org/eps/hpr4611/index.html#comments" target="_blank">hpr4611</a></strong> (2026-04-06) "<em>HPR Community News for March 2026</em>" by <a href="https://hackerpublicradio.org/correspondents/0159.html" target="_blank">HPR Volunteers</a>.<br></li>
<ul>
<li><strong>candycanearter07</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4611/index.html#comment_4682" target="_blank">misattributed comment</a></em>" (2026-04-06 03:24:30)<br></li>
<li><strong>Ken Fallon</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4611/index.html#comment_4684" target="_blank">Fixed</a></em>" (2026-04-06 13:50:17)<br></li>
</ul>
<li><strong><a href="https://hackerpublicradio.org/eps/hpr4614/index.html#comments" target="_blank">hpr4614</a></strong> (2026-04-09) "<em>Dauug|18: Faster Than a '286, but Inspectable Like a Soroban</em>" by <a href="https://hackerpublicradio.org/correspondents/0443.html" target="_blank">Marc W. Abel</a>.<br></li>
<ul>
<li><strong>Jim DeVore</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4614/index.html#comment_4688" target="_blank">Is this the best approach for privacy?</a></em>" (2026-04-12 03:15:44)<br></li>
<li><strong>candycanearter07</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4614/index.html#comment_4690" target="_blank">interesting!</a></em>" (2026-04-13 16:43:22)<br></li>
</ul>
<li><strong><a href="https://hackerpublicradio.org/eps/hpr4616/index.html#comments" target="_blank">hpr4616</a></strong> (2026-04-13) "<em>Thoughts about age control and further suggestions</em>" by <a href="https://hackerpublicradio.org/correspondents/0433.html" target="_blank">Trollercoaster</a>.<br></li>
<ul>
<li><strong>Antoine</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4616/index.html#comment_4694" target="_blank">'Jus'do the age verification'</a></em>" (2026-04-20 01:37:33)<br></li>
<li><strong>candycanearter07</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4616/index.html#comment_4697" target="_blank">good strategy</a></em>" (2026-04-22 13:24:48)<br></li>
<li><strong>Trollercoaster</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4616/index.html#comment_4704" target="_blank">Looking forward at next steps</a></em>" (2026-04-25 15:37:22)<br></li>
<li><strong>Antoine</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4616/index.html#comment_4705" target="_blank">Our State. The Invitation.</a></em>" (2026-04-26 23:55:45)<br></li>
</ul>
<li><strong><a href="https://hackerpublicradio.org/eps/hpr4618/index.html#comments" target="_blank">hpr4618</a></strong> (2026-04-15) "<em>Simple Podcasting - Episode 2 - Basic Filtering</em>" by <a href="https://hackerpublicradio.org/correspondents/0455.html" target="_blank">Whiskeyjack</a>.<br></li>
<ul>
<li><strong>Antoine</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4618/index.html#comment_4695" target="_blank">Applying filters - exp. with declicking - Compression?</a></em>" (2026-04-20 12:50:09)<br></li>
<li><strong>Whiskeyjack</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4618/index.html#comment_4698" target="_blank">Response to Antoine on de-essing in HPR 4618</a></em>" (2026-04-22 15:59:57)<br></li>
<li><strong>Vance</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4618/index.html#comment_4703" target="_blank">Click removal</a></em>" (2026-04-25 14:31:40)<br></li>
<li><strong>Whiskeyjack</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4618/index.html#comment_4706" target="_blank">Reply to Vance in HPR4618 - Click Removal</a></em>" (2026-04-27 00:48:11)<br></li>
<li><strong>Vance</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4618/index.html#comment_4707" target="_blank">To Whiskeyjack - Click Removal</a></em>" (2026-04-28 00:43:11)<br></li>
<li><strong>Whiskeyjack</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4618/index.html#comment_4708" target="_blank">Reply to Vance on Click Removal in HPR4618</a></em>" (2026-04-28 17:16:54)<br></li>
</ul>
<li><strong><a href="https://hackerpublicradio.org/eps/hpr4619/index.html#comments" target="_blank">hpr4619</a></strong> (2026-04-16) "<em>HPR Beer Garden 12 - Baltic Porter</em>" by <a href="https://hackerpublicradio.org/correspondents/0296.html" target="_blank">Kevie</a>.<br></li>
<ul>
<li><strong>Gan Ainm</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4619/index.html#comment_4693" target="_blank">Störtebeker - again</a></em>" (2026-04-17 16:37:29)<br></li>
</ul>
<li><strong><a href="https://hackerpublicradio.org/eps/hpr4621/index.html#comments" target="_blank">hpr4621</a></strong> (2026-04-20) "<em>Android volume control help</em>" by <a href="https://hackerpublicradio.org/correspondents/0036.html" target="_blank">operat0r</a>.<br></li>
<ul>
<li><strong>candycanearter07</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4621/index.html#comment_4696" target="_blank">intended double entendre?</a></em>" (2026-04-21 18:58:54)<br></li>
</ul>
<li><strong><a href="https://hackerpublicradio.org/eps/hpr4624/index.html#comments" target="_blank">hpr4624</a></strong> (2026-04-23) "<em>Cheap Yellow Display Project Part 7: GUI Trying a Simple Hello World </em>" by <a href="https://hackerpublicradio.org/correspondents/0394.html" target="_blank">Trey</a>.<br></li>
<ul>
<li><strong>Ken Fallon</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4624/index.html#comment_4699" target="_blank">Great to hear your success</a></em>" (2026-04-23 08:36:28)<br></li>
</ul>
<li><strong><a href="https://hackerpublicradio.org/eps/hpr4625/index.html#comments" target="_blank">hpr4625</a></strong> (2026-04-24) "<em>Site Specific Browsers</em>" by <a href="https://hackerpublicradio.org/correspondents/0403.html" target="_blank">Lee</a>.<br></li>
<ul>
<li><strong>candycanearter07</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4625/index.html#comment_4700" target="_blank">electron charged opinion</a></em>" (2026-04-24 03:38:13)<br></li>
</ul>
<li><strong><a href="https://hackerpublicradio.org/eps/hpr4627/index.html#comments" target="_blank">hpr4627</a></strong> (2026-04-28) "<em>UNIX Curio #5 - Faster, Pussycat! Kill! Kill!</em>" by <a href="https://hackerpublicradio.org/correspondents/0459.html" target="_blank">Vance</a>.<br></li>
<ul>
<li><strong>Antoine</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4627/index.html#comment_4709" target="_blank">kill and killall</a></em>" (2026-04-29 11:57:27)<br></li>
<li><strong>candycanearter07</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4627/index.html#comment_4710" target="_blank">killer episode</a></em>" (2026-04-29 15:14:31)<br></li>
<li><strong>Vance</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4627/index.html#comment_4711" target="_blank">Glad you enjoyed it</a></em>" (2026-04-29 20:58:44)<br></li>
<li><strong>candycanearter07</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4627/index.html#comment_4712" target="_blank">Re: Glad you enjoyed it</a></em>" (2026-04-30 18:58:50)<br></li>
</ul>
</ul>
<h2>Mailing List discussions</h2>
<p>Policy decisions surrounding HPR are taken by the community as a whole. This
discussion takes place on the <a href="https://lists.hackerpublicradio.com/mailman/listinfo/hpr" target="_blank">Mailing List</a>
which is open to all HPR listeners and contributors. The discussions are open
and available on the HPR server under <a href="https://lists.hackerpublicradio.com/pipermail/hpr">Mailman</a>.
</p>
<p>The threaded discussions this month can be found here:</p>
<a href="https://lists.hackerpublicradio.com/pipermail/hpr/2026-April/thread.html" target="_blank">https://lists.hackerpublicradio.com/pipermail/hpr/2026-April/thread.html</a>

<h2>Events Calendar</h2>
<p>With the kind permission of <strong>LWN.net</strong> we are linking to
<a href="https://lwn.net/Calendar/" target="_blank">The LWN.net Community Calendar</a>.</p>
<p>Quoting the site:</p>
<blockquote>This is the LWN.net community event calendar, where we track
events of interest to people using and developing Linux and free software.
Clicking on individual events will take you to the appropriate web
page.</blockquote>
<!-- HPRCN:month=2026-04,latest_comment=4712,latest_host=460,latest_episode=4629 -->
<p><a href="https://hackerpublicradio.org/eps/hpr4631/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4630: Playing Civilization V, Part 11]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.
In our final look at the game mechanics for Civilization V we look at all of the players and their unique attributes. This helps you to see that certain Empires can be better suited for particular victory strategies.
Playing Civilization V, Part 11...]]></description>
<link>https://tsecurity.de/de/3479158/it+sicherheit/it+podcasts/hpr4630+playing+civilization+v+part+11/</link>
<pubDate>Fri, 01 May 2026 02:03:09 +0200</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>
<p>In our final look at the game mechanics for Civilization V we look at all of the players and their unique attributes. This helps you to see that certain Empires can be better suited for particular victory strategies.</p>
<h1>Playing Civilization V, Part 11</h1>
<h2>The Players</h2>
<p>By the time you got to the last expansion and all of the DLC, there are 43 possible Empires you can play as. But they are not all alike. Each Empire has a particular Leader, a Unique Ability, and a Unique Unit. In addition most of them have some kind of Starting Bias, and many have a Unique Building or a Unique Improvement. Understanding how to make use of these is important to your strategy. If you let random chance assign you to an Empire, you need to know what kind of strategy will work with that Empire. And if you want to pursue a particular strategy you will want to know how to pick an appropriate Empire to fit strategy. There is a chart that lists all 43 Empires with all of their parameters at the <a href="https://civilization.fandom.com/wiki/Civilizations_(Civ5)" target="_blank" rel="noreferrer noopener">Civilization Fandom Wiki</a> and you might want to bookmark that page for future reference. Also, you want to know what to expect concerning your opponents in a game.</p>
<h3>Leader</h3>
<p>You don’t have a choice of leaders. When you choose a particular Empire you get the Leader that comes with it. But these leaders are distinct in various ways. To see what I mean, go to the Leader page for one by clicking on the link under the Leader picture. You will see a long list of AI Traits. These describe in numerical terms how competitive the Leader is various ways, how prone to war, which kinds of units it will build, and so on. It is a long list, so your eyes may glaze over, but the significance is that it may give you some insight if this Leader is one of your opponents in a game. This list is how the AI is programmed. There is also more approachable summary under Personality and Behavior, and here is what it says about Pedro II of Brazil:</p>
<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>“Pedro will most commonly try for a cultural victory. If he pursues a different victory condition, he is likely to choose a diplomatic one over a scientific or domination victory.</p>
<p>Pedro is exceptionally friendly and loyal, and will readily befriend anyone but the most warlike leaders. He is more willing to denounce than to wage war himself, but will maintain a defensive militia comprised of a variety of units. He also has a habit of building a fairly large navy.</p>
<p>Fittingly, Pedro’s highest priority is the <a href="https://civilization.fandom.com/wiki/Happiness_(Civ5)"></a> Happiness of his people, followed by the development of his lands and <a href="https://civilization.fandom.com/wiki/Culture_(Civ5)"></a> Cultur<a href="https://civilization.fandom.com/wiki/Culture_(Civ5)">e</a>. He will not claim a large territory, but his cities will be highly populated and the land and water around them will be full of improvements. He will sometimes try to build wonders that enhance his <a href="https://civilization.fandom.com/wiki/Culture_(Civ5)"></a> Culture and <a href="https://civilization.fandom.com/wiki/Tourism_(Civ5)"></a> Tourism output.</p>
<p>Pedro is friendly toward city-states in his sphere of influence and will often pledge to protect them. He will hardly ever attack or bully them.”</p>
</blockquote>
<p>Now, the point is that this describes your AI opponent. If you choose to play as Pedro II of Brazil, you can make entirely different decisions from what the AI would do</p>
<h3>Starting Bias</h3>
<p>Each Empire will spawn on the map in ways that reflect their Starting Bias, if any.  Some Empires (e.g. China, France, etc.) have no Starting Bias at all, which means they can spawn anywhere on the map, though there is programming to ensure that the location is not a disaster, like all Tundra and Ice, or the middle of the ocean. So it will certainly be playable. Still some players like to try 2,3, or 4 times to spawn to see if they can get a good place to start.. For the Empires with a Starting Bias, it can be either positive or negative. For example, the Mongolian Empire has a bias towards starting on plains, which makes sense historically since they came from the plains of Central Asia. The Russian Empire has a bias to start in Tundra, which again seems to fit. The Songhai Empire has a negative Starting Bias, which is to avoid Tundra. The Songhai Empire historically was an empire in sub-Saharan Africa, so this makes sense. And the Siamese Empire avoids Forests. The Roman and Shoshone Empires have no Starting Bias at all, so they could spawn anywhere. This Starting Bias will apply to whichever Empire you choose to play, so if you would prefer to not play with a lot of Tundra, you would de well to not choose Russia. But Russia can do more with Tundra than some other Empire might, so it all balances out.</p>
<h3>Unique Ability</h3>
<p>Generally speaking each Empire will have a Unique Ability. For example, the Austrian Empire has the Unique Ability called Diplomatic Marriage, which allows them to spend Gold to annex or puppet any City-State that they have been allied to for at least 5 turns. If the City-State is annexed, it becomes part of the Austrian Empire, but if it is puppeted the City-State technically remains separate but is under the control in some ways of the Austrian Empire. India has a Unique Ability called Population Growth. This doubles the unhappiness caused by more cities, but reduces by 50% the unhappiness caused by increased population. So if you were playing India it is even more important to build Tall rather than Wide.</p>
<h3>Unique Units</h3>
<p>Every Empire has at least one, and sometimes two Unique Units. These units replace a normal unit, but are a little better in some respect. They are worth having, but some are more useful than others. And a key factor is when they are available to you. For example, the Celtic Empire gets the Pictish Warrior, which replaces the Spearman. Since the Spearman is generally the first unit you learn to build, it comes very early in the game. So if you were interested in a strategy of early warfare, this might matter to you. The Pictish Warrior is actually weaker than the Spearman in one respect, though, in that it gets no bonus against mounted units. So if you are the Celts, and you are facing the Mongols, you will have a problem. But the Pictish Warrior can pillage without any movement cost. Normally when you use a unit to pillage it ends your turn, but the Pictish Warrior could pillage and then move if it still had movement left. And the Pictish Warrior also has the Foreign Lands Bonus, which gives it a 20% bonus when fighting outside of Celtic territory. And finally the Pictish Warrior gets a Faith bonus when it kills an enemy unit, equal to 50% of the killed unit’s strength.</p>
<p>The American Empire is one that has 2 Unique Units. One is the B-17 bomber, which replaces the regular Bomber. It comes with 2 promotions (Siege I, and Evasion), and is slightly stronger (70 vs. 65). The problem with this is that it comes so late in the game that it is hard to see what good it will do you. If you are pursuing a Domination strategy you should have already gone most of the way to conquering the world before you actually get the B17. The other Unique Unit the Americans get is the Minuteman, which replaces the Musketman. It comes with a Drill I Promotion, ignores Terrain restrictions, and earns points towards a Golden Age. This is more useful than the B17, but not useful enough to push you towards a Domination victory. But since you need good units for any strategy, if only for defense, it is worth having. Personally, if I was playing as the Americans I would rather go for a Science victory.</p>
<h3>Unique Buildings/Improvements</h3>
<p>The last parameter for these Empires is the possible Unique Building or Unique Improvement. Some Empires, such as the Byzantines or the Japanese, do not have one, but they can be useful. For example, the Portuguese Empire has a unique building called the Feitoria which has the interesting property of being built outside of Portugal’s territory. The Feitoria, which becomes available once you discover Navigation, can be built  in the territory of a Coastal City-State on a Coastal Land tile that has no resources on it. It has three properties:</p>
<ul>
<li>Portugal gets one copy of each Luxury Resource the City-State has. This is great for either increasing Happiness or as something that can be traded with other Empires.</li>
<li>+50% defensive strength for any combat units on the tile.</li>
<li>Pillaging the Freitoria constitutes an Act of War against Portugal, which means Portugal gets no penalties for going to war.</li>
</ul>
<p>Another example is the Dutch Polder, which can be built on any Marsh or Flood Plain tile. It gives +3 Food, and once you discover Economics it will also yield +1 Production and +1 Gold.</p>
<h3>Summary</h3>
<p>Studying the chart of the Empires can help you in picking strategies for the Empire you are playing, or help you to pick an Empire that is well suited to the strategy you want to try. And knowing how the AI is programmed for other Empires helps you to know what to expect in your game. But here are some suggestions. Note that you can win with any Civ, but these are ones that lend themselves to a particular strategy. That said, I usually let the game give me a random choice and then formulate my strategy when I see what I get.</p>
<h4>Domination</h4>
<ul>
<li>Germany</li>
<li>Japan</li>
<li>Rome</li>
<li>Songhai</li>
<li>Mongols</li>
</ul>
<h4>Science</h4>
<ul>
<li>Babylon</li>
<li>Korea</li>
<li>Poland</li>
<li>America</li>
</ul>
<h4>Culture</h4>
<ul>
<li>Brazil</li>
<li>Polynesia</li>
<li>Poland</li>
<li>France</li>
</ul>
<h4>Diplomatic</h4>
<ul>
<li>Greece</li>
<li>Arabia</li>
<li>Portugal</li>
</ul>


<h3>Links:</h3>


<ul>
<li><a href="https://civilization.fandom.com/wiki/Civilizations_(Civ5)">https://civilization.fandom.com/wiki/Civilizations_(Civ5)</a></li>
<li><a href="https://www.palain.com/gaming/civilization-v/playing-civilization-v-part-11/">https://www.palain.com/gaming/civilization-v/playing-civilization-v-part-11/</a></li>
</ul>
<p><a href="https://hackerpublicradio.org/eps/hpr4630/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4629: What did I do at work today? Part 2]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.


This show is about developing features for a web application. The technology used is 
ASP.Net WebForms
, the programming language is 
Visual Basic .Net
along with HTML and CSS and the development environment is Windows 11 running under a virtual ...]]></description>
<link>https://tsecurity.de/de/3476021/it+sicherheit/it+podcasts/hpr4629+what+did+i+do+at+work+today+part+2/</link>
<pubDate>Thu, 30 Apr 2026 02:02:41 +0200</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>

<p>
This show is about developing features for a web application. The technology used is <a href="https://learn.microsoft.com/en-us/aspnet/web-forms/" rel="noopener noreferrer" target="_blank">
ASP.Net WebForms</a>
, the programming language is <a href="https://learn.microsoft.com/en-us/dotnet/visual-basic/" rel="noopener noreferrer" target="_blank">
Visual Basic .Net</a>
along with HTML and CSS and the development environment is Windows 11 running under a virtual machine in Linux, with <a href="https://visualstudio.microsoft.com/" rel="noopener noreferrer" target="_blank">
Visual Studio</a>
and <a href="https://www.microsoft.com/en-gb/sql-server/sql-server-2022" rel="noopener noreferrer" target="_blank">
SQL Server</a>
as the database. Other tools used are <a href="https://git-scm.com/" rel="noopener noreferrer" target="_blank">
Git</a>
, <a href="https://github.com/" rel="noopener noreferrer" target="_blank">
Github</a>
, <a href="https://joplinapp.org/" rel="noopener noreferrer" target="_blank">
Joplin</a>
and <a href="https://www.dropbox.com/" rel="noopener noreferrer" target="_blank">
Dropbox</a>
, <a href="https://gemini.google.com/app" rel="noopener noreferrer" target="_blank">
Google Gemini</a>
and a tool called <a href="https://www.scootersoftware.com/" rel="noopener noreferrer" target="_blank">
Beyond Compare</a>
.</p>

<p>

</p>

<p>

<strong>
ResourceRowControl.ascx.vb</strong>

</p>

<pre data-language="plain">
Public WriteOnly Property ResourceObject As Resource
Set(obj As Resource)
If obj IsNot Nothing Then
HiddenResourceID.Value = CStr(obj.ResourceID)
HiddenResourceTypeID.Value = CStr(obj.ResourceTypeID)
Resource.Text = obj.ResourceName
Type.Text = obj.ResourceTypeName
Available.Checked = obj.ResourceAvailable
End If
End Set
End Property

Private Sub Available_CheckedChanged(sender As Object, e As EventArgs) Handles Available.CheckedChanged
Dim objResource As New Resource
With objResource
.ResourceID = ResourceID
.ResourceName = Resource.Text
.ResourceTypeID = ResourceTypeID
.ResourceAvailable = Available.Checked
End With
objResource.Add()
End Sub
</pre>

<p>

</p>

<p>

<strong>
ResourceRowControl.ascx</strong>

</p>

<pre data-language="plain">
&lt;tr&gt;
&lt;td&gt;
&lt;asp:Label runat="server" ID="Resource"&gt;&lt;/asp:Label&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;asp:Label runat="server" ID="Type"&gt;&lt;/asp:Label&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;asp:Button runat="server" ID="Edit" CssClass="Pointer fa" BackColor="White" ForeColor="#741E43" BorderStyle="None" Text="&amp;#xf044;" /&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;asp:Button runat="server" ID="Delete" CssClass="Pointer fa" BackColor="White" ForeColor="#741E43" BorderStyle="None" Text="&amp;#xf1f8;"
OnClientClick="return DeleteResourceRow(this.id)" /&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;label class="toggle-checkbox"&gt;
&lt;asp:CheckBox runat="server" ID="Available" AutoPostBack="true" /&gt;
&lt;span class="slider"&gt;&lt;/span&gt;
&lt;/label&gt;
&lt;/td&gt;
&lt;/tr&gt;
</pre>

<p>

</p>

<p>

<a href="https://hackerpublicradio.org/eps/hpr4629/hpr4629_image_1.png">
<img src="https://hackerpublicradio.org/eps/hpr4629/hpr4629_image_1_tn.png">
</a>

</p>


<p><a href="https://hackerpublicradio.org/eps/hpr4629/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4628: Nuclear Power Technology Follow Up]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.


--------------------






01 Introduction






This is a follow up to my 8 part series on nuclear power.


In this episode I will answer questions posed by listeners in the comments to the series.


I would like to start by thanking the...]]></description>
<link>https://tsecurity.de/de/3472851/it+sicherheit/it+podcasts/hpr4628+nuclear+power+technology+follow+up/</link>
<pubDate>Wed, 29 Apr 2026 02:02:01 +0200</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>

<p>
--------------------</p>

<p>

</p>

<p>
01 Introduction</p>

<p>

</p>

<p>
This is a follow up to my 8 part series on nuclear power.</p>

<p>
In this episode I will answer questions posed by listeners in the comments to the series.</p>

<p>
I would like to start by thanking these people for taking the time to submit interesting questions.</p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>
Costs of Small Versus Large Reactors</p>

<p>

</p>

<p>
02</p>

<p>
brian-in-ohio asked two questions </p>

<p>

</p>

<p>
The first was for a cost comparison between large and small reactors.</p>

<p>
The second was for nuclear plant safety compared to conventional power plants.</p>

<p>

</p>

<p>

</p>

<p>
03 Answer</p>

<p>
I think that any answer to the second question is going to be perceived by some people as politically controversial, so it's probably not a good topic for HPR to address. </p>

<p>

</p>

<p>
04</p>

<p>
The first question though about cost of small versus large reactors is an interesting one, although not one that is easy to give an answer to.</p>

<p>
I will restrict the answer to just grid scale electric power production and ignore use cases such as industrial process heat or power for remote mines and communities.</p>

<p>

</p>

<p>
05</p>

<p>
This question comes down to economies of scale versus economies of replication. </p>

<p>
Economies of scale centre around increased efficiencies of use of materials and labour when making something bigger.</p>

<p>
For example, the amount of steel used by a pipe increases linearly with its diameter, but the amount of fluid that it transports increases with the square. </p>

<p>

</p>

<p>
06</p>

<p>
Economies of replication come from increasing efficiencies which result from serial production. As you repeat the same design over and over again, you learn how to do things better and make fewer mistakes.</p>

<p>

</p>

<p>
07</p>

<p>
The exact same principles apply to shipbuilding. </p>

<p>
Indeed, a lot of the inspiration for Small Modular Reactors comes from the shipbuilding industry.</p>

<p>
If you build a series of identical ships, then each subsequent ship will cost less and be built faster.</p>

<p>
There are of course diminishing returns to this process, so the improvements are less with each additional unit and after a sufficient number of units the cost and time reductions level off.</p>

<p>

</p>

<p>
08</p>

<p>
However, this doesn't discount the benefits of economies of scale. </p>

<p>
What it does mean is that there are two ways of approaching the problem, and which way works in any given scenario depends on such conditions as </p>

<p>
how big the local electricity market is</p>

<p>
how fast the demand for electricity is growing, </p>

<p>
the ownership and financing structure of the electricity market, and</p>

<p>
the geography of the area, which may pose limits on the number of sites.</p>

<p>

</p>

<p>
09</p>

<p>
According to the finance people who have crunched the numbers, there are two sizes of reactor which make the most sense in the above context.</p>

<p>
These are 300 MW and 1000 MW.</p>

<p>
However, take those as very rough numbers rather than immutable laws of nature and other sizes may work as well.</p>

<p>

</p>

<p>
10</p>

<p>
The key point is that there are cases to be made for both small and large reactors, with the large reactor being several times the size of the small one.</p>

<p>

</p>

<p>
11</p>

<p>
An additional factor is that building only one reactor does not reap the benefits of efficiency of replication.</p>

<p>
You need to build a series of them on the same site.</p>

<p>
So if you are building a power plant, you don't build a power plant that has just one reactor unless you are in a small market which can only use that much power.</p>

<p>
Instead, you should build between 4 and 6 reactors in sequence next to one another.</p>

<p>

</p>

<p>
12</p>

<p>
If you are supply a large population with a growing demand for electricity, then 4 or 6 large 1000 MW reactors gains both economies of scale and economies of replication.</p>

<p>
If you are supplying a smaller population with slow growth in demand for electricity, then 4 or 6 300 MW reactors at least gets you economies of replication.</p>

<p>

</p>

<p>
13</p>

<p>
There is what could be viewed as an interesting example in terms of the above taking place just east of Toronto.</p>

<p>
There they are building four 300 MW SMRs on a site next to an existing nuclear power plant.</p>

<p>

</p>

<p>
14</p>

<p>
Here are the cost estimates from the Government of Ontario.</p>

<p>
All costs are in Canadian dollars.</p>

<p>
Unit 1 is $6.1 billion, plus $1.6 billion in costs which are shared by all four unit.s</p>

<p>
Unit 2 is $4.9 billion.</p>

<p>
Unit 3 is $4.2 billion.</p>

<p>
Unit 4 is $4.1 billion.</p>

<p>

</p>

<p>
15</p>

<p>
As you can see, building a series of reactors sequentially on the same site results in declining overall costs.</p>

<p>
They are very confident in these costs as they used data from a series of major nuclear power plant refurbishment projects in Ontario which have been coming in on time and on budget.</p>

<p>

</p>

<p>
16</p>

<p>
Construction began last year and the plant is expected to have a 65 year operating life.</p>

<p>

</p>

<p>
17</p>

<p>
However, the province of Ontario also has plans for expansion of electrical generation by about 15,000 MW by 2050 in order to meet net zero targets. </p>

<p>

</p>

<p>
18</p>

<p>
Given the heavy concentration of population in the Toronto region, </p>

<p>
and the very high cost and difficulty of building long distance transmission lines,</p>

<p>
and the limited number of sites which could host new power generation facilities of any sort,</p>

<p>
I suspect it is quite likely that subsequent reactors will be large 1,000 MW ones rather than SMRs.</p>

<p>

</p>

<p>
19</p>

<p>
The Wesleyville site (which is further east of Toronto) is tentatively scheduled for a 10,000 MW nuclear power plant. </p>

<p>
That would seem to make ten 1,000 MW reactors more likely than 34 300 MW reactors.</p>

<p>

</p>

<p>
20</p>

<p>
I don't have a comparable set of numbers for building large reactors to give an exact apples to apples comparison of costs. </p>

<p>
Different countries use different accounting and financing systems, and finance makes a huge difference to overall costs for nuclear power as operating costs are a relatively small share of the total. </p>

<p>

</p>

<p>
21</p>

<p>
Now to look at another side of this equation, the provinces of Saskatchewan and New Brunswick wish to replace their coal fired power plants with nuclear power plants.</p>

<p>
The populations of these provinces are too small to absorb a large new power plant into their grids, and studies assuming large reactors have foundered on this issue.</p>

<p>

</p>

<p>
22</p>

<p>
New Brunswick already have a nuclear power plant, but it was build in the days when reactors were much smaller.</p>

<p>
Both provinces however are very interested in small reactors, even individual ones, in order to replace the coal fired plants that are of similar size.</p>

<p>

</p>

<p>
23</p>

<p>
I think this covers the cost versus size issue.</p>

<p>
The more I look into it, the more it becomes apparent that there is no simple one size fits all answer but rather there are a series of trade-offs which must be taken in light of local circumstances. </p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>
MOX Fuel in the USA</p>

<p>

</p>

<p>
24</p>

<p>
The next question comes from mnw who asked about the use of MOX fuel in the USA.</p>

<p>

</p>

<p>
25</p>

<p>
mnw asked</p>

<p>
I am enjoying and look forward to the rest of the series. Do you think the US will ever wake up and start recycling its spent fuel? It seems like such a huge waste just to try and keep a small amount of fuel away from"the bad guys" or whatever they are imagining. </p>

<p>

</p>

<p>

</p>

<p>
Answer</p>

<p>
26</p>

<p>
My answer to this is as follows.</p>

<p>
I think I've addressed this in the original series, although not directly with respect to the US so I can provide some more detail on that aspect of it. </p>

<p>

</p>

<p>
27</p>

<p>
First though I will review what plutonium-uranium mixed oxide (MOX) fuel is.</p>

<p>
As mentioned in previous episodes, military grade plutonium is not the same as the plutonium which comes out of commercial power reactors.</p>

<p>
Just as military grade uranium requires nearly pure U-235 isotope, military grade plutonium requires nearly pure Pu-239 isotope.</p>

<p>

</p>

<p>
28</p>

<p>
What comes out of a commercial power reactor as spent fuel is not usable for weapons purposes as the proportion of Pu-239 is much too low.</p>

<p>
However, plutonium recovered from spent fuel can be used as fuel for nuclear reactors in place of uranium 235 when mixed with uranium 238 either left over from enrichment or extracted from spent fuel.</p>

<p>
This is what is known as MOX fuel.</p>

<p>

</p>

<p>

</p>

<p>
29</p>

<p>
To look at the US history of this however, here's the sequence of events.</p>

<p>
The US banned fuel reprocessing in 1976.</p>

<p>
However, this ban was repealed in 1981.</p>

<p>

</p>

<p>
30</p>

<p>
In 2005, the US began building a mixed-oxide (MOX) fuel plant at Savannah River in the state of South Carolina.</p>

<p>
However, this plant was not intended as a normal commercial operation and it was not intended to recycle commercial nuclear power plant fuel.</p>

<p>
It was instead intended to convert surplus military grade plutonium into commercial fuel in order to get rid of it as part of an arms control program. </p>

<p>

</p>

<p>
31</p>

<p>
The program was suspended in 2018.</p>

<p>
There were apparently many complex political issues involved in these on-again off-again decisions and I won't pretend to have the time or interest to explore all the details nor do I think most listeners would be interested in hearing abou them. </p>

<p>

</p>

<p>
32</p>

<p>
As of March 2026, the US are looking at reviving part of the Savannah River plant to produce limited amounts of fuel for testing of advanced reactors.</p>

<p>
The issue driving this is the shortage of uranium enriched to just below 20%. </p>

<p>
This fuel is used in certain types of small SMR. </p>

<p>

</p>

<p>
33</p>

<p>
The main commercial supplier of this material was a plant in Russia, but "certain events in Europe in recent years" shall we say, have resulted in that supply no longer being available to commercial operations in the US. </p>

<p>
MOX fuel based on surplus weapons grade plutonium is intended as a short term quick fix for that problem. </p>

<p>

</p>

<p>
34</p>

<p>
Another driving force is legal requirements following from domestic commitments for the US government to dispose of certain stockpiles of weapons grade plutonium from certain sites in the US where it is "temporarily" stored, and the solution to that is seen as burning it up in power reactors. </p>

<p>

</p>

<p>
35</p>

<p>
So the history is the US banned fuel reprocessing.</p>

<p>
Then a few years later they un-banned it.</p>

<p>
Then the US government started building a MOX plant which was intended to get rid of surplus weapons grade material by burning it up in power reactors.</p>

<p>
Then they decided they didn't want to do that.</p>

<p>
Then they decided they may want to make MOX fuel after all to replace supplies of special grades of fuel for experimental or prototype reactors.</p>

<p>

</p>

<p>
36</p>

<p>
What is missing from the above history is any actual interest from the US commercial nuclear industry in MOX fuel.</p>

<p>
The reason for this is, as mentioned in the previous episodes, uranium is so cheap and abundant that fuel made from fresh uranium is cheaper than MOX fuel.</p>

<p>

</p>

<p>
37</p>

<p>
Some countries such as France wish to recycle spent fuel to reduce their dependence upon imports. </p>

<p>
Recall that France's drive to build nuclear power plants was in response to the 1970s era energy crisis when oil imports from the Middle East were suddenly cut off.</p>

<p>
However, the US are not concerned about this issue and so do not make it national security policy as France did.</p>

<p>

</p>

<p>
38</p>

<p>
As a result, US commercial demand is for cheaper fuel made from fresh uranium rather than for MOX fuel.</p>

<p>
Until such time as fresh uranium greatly increases in price there is little economic incentive for the use of MOX fuel in the US.</p>

<p>

</p>

<p>
39</p>

<p>
However, there is another aspect to this.</p>

<p>
If you recall in previous episodes I described molten salt reactors which used dissolved uranium fuel.</p>

<p>
These reactors inherently reprocess fuel as part of their normal operation.</p>

<p>
They just do it as part of maintaining the molten salt chemistry at the correct values rather than doing it as a separate process.</p>

<p>

</p>

<p>
40</p>

<p>
If these types of reactors become widely used then they would be achieving the same thing as creating MOX fuel, but without an explicit separate step.</p>

<p>

</p>

<p>
41</p>

<p>
As a final footnote to the above, the US has almost exclusively use enriched uranium light water reactors.</p>

<p>
As mentioned in previous episodes, there are ways of recycling spent fuel from light water reactors which do not involve chemically reprocessing it to make MOX fuel.</p>

<p>

</p>

<p>
42</p>

<p>
Experiments have been done involving South Korea, China, and Canada which take spent fuel from light water reactors and repackage it to fit it into natural uranium heavy water reactors. </p>

<p>
What is used up or "spent" fuel for a light water reactor is high grade fuel to a natural uranium reactor.</p>

<p>
However, the US has, for whatever reason, never built commercial natural uranium reactors such as are used in a number of other countries around the world.</p>

<p>

</p>

<p>
43</p>

<p>
If they were to do so, then nuclear fuel could be used twice, once in a light water reactor, and again in a natural uranium reactor, all without having to turn it into MOX fuel in a separate reprocessing step.</p>

<p>
However, this particular alternative would likely face the same issue in the sense that fresh fuel would still be cheaper than reusing spent fuel.</p>

<p>

</p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>
A Variety of Questions from Clinton</p>

<p>

</p>

<p>
44</p>

<p>
Next we have a variety of questions from Clinton.</p>

<p>

</p>

<p>
Clinton asked</p>

<p>

</p>

<p>
I would like some commentary in the current situation, </p>

<p>
why has hinkley gone off the rails, </p>

<p>
the new american approach, </p>

<p>
the odd things done after fukushima, </p>

<p>
the new radiation rules in the states.</p>

<p>

</p>

<p>

</p>

<p>
45 Question 1</p>

<p>
why has hinkley gone off the rails, </p>

<p>

</p>

<p>
46 Answer</p>

<p>
The question refers to cost overruns at the Hinkley Point nuclear power project in the UK.</p>

<p>

</p>

<p>
The UK government looked into this issue in a more general sense in 2025.</p>

<p>
They published a report on it titled</p>

<p>

</p>

<p>
Nuclear Regulatory Review 2025</p>

<p>
Enabling nuclear delivery through regulatory reform</p>

<p>
John Fingleton</p>

<p>

</p>

<p>
There is a link to the report in the show notes.</p>

<p>
https://assets.publishing.service.gov.uk/media/692080f75c394e481336ab89/nuclear-regulatory-review-2025.pdf</p>

<p>

</p>

<p>
47</p>

<p>
As the report is 162 pages long, I won't try to cover it all in this answer. I will however give a few simple examples.</p>

<p>

</p>

<p>
The report focuses on civilian nuclear power and the defence nuclear industry as well. </p>

<p>
However it also draws examples from outside the nuclear industry to show that the problem is not limited to nuclear.</p>

<p>
It shows that the same problems exist in the offshore wind industry, and in the HS2 High Speed Rail project.</p>

<p>

</p>

<p>
48</p>

<p>
In the view of the authors of the report, the essence of the problem seems to be a lack of any degree of proportionality in terms of mitigating negative effects from any project.</p>

<p>
Big nuclear projects make the headlines because they are inherently big projects, but as I have just mentioned, they affect things like wind power development and rail transport as well.</p>

<p>

</p>

<p>
49</p>

<p>
I will pick one example from Hinkley Point specifically.</p>

<p>
This is "Case Study: Hinkley Point C Fish Protection"</p>

<p>
A summary of this is that they spent £700 million of additional money on the cooling water intakes to protect an estimated 0.083 salmon per year, along with 0.028 sea trout, 6 river lamprey, 18 Allis shad, and somewhere between 100 and 528 twaite shad. </p>

<p>
The report points out that there are ways to protect far more fish for far less money by spending it in other areas, and gives some examples.</p>

<p>

</p>

<p>
Again, this problem is not limited to nuclear power, and they give similar examples connected with offshore wind development and HS2 High Speed Rail.</p>

<p>

</p>

<p>
50</p>

<p>
I would like to emphasize that I am not expressing an opinion on whether or not any of these decisions were good or bad ones or whether the money was well spent.</p>

<p>
I am just summarizing the report's explanation of why large projects of all sorts initiated and approved by the UK parliament were not turning out as initially expected.</p>

<p>

</p>

<p>
I will leave it up to people in the UK to decide whether or not they are satisfied with the current situation.</p>

<p>

</p>

<p>
51 Question 2</p>

<p>
the new american approach, </p>

<p>

</p>

<p>
52 Answer</p>

<p>

</p>

<p>
The US have apparently announced changes to their regulatory system.</p>

<p>
I don't know enough about the subject to really judge the practical effects of regulation within the US.</p>

<p>
However, I have read and listened to many interviews of people from both the industry and the regulatory side of things who are from outside the US but are familiar with it.</p>

<p>
They generally contrast two different approaches to regulation.</p>

<p>
On the one hand there is the US approach, which they see as being more of a box ticking exercise than an in depth safety review.</p>

<p>
This makes it very hard to get a design other than a traditional PWR or BWR approved in the US.</p>

<p>

</p>

<p>
53</p>

<p>
It has the advantage from the regulator side of things though in that it reduces the amount of work required as it primarily requires just following a set of defined procedures. </p>

<p>
These people then contrast that approach with the one used in the UK and in Canada, both of which they see as being very similar to one another.</p>

<p>
In those two countries, regulators work with industry to review designs from basic principles rather than just seeing if it meets a pre-defined list of criteria. </p>

<p>
This is a results oriented system rather than a process oriented system as used in the US.</p>

<p>

</p>

<p>
54</p>

<p>
As a result of this, designers of new nuclear reactors are going to the UK and Canada first to go through preliminary review there, and only going to the US later.</p>

<p>
What designers are looking for is feedback on their design as they go along in order to align the design with what safety regulators see as being required from their standpoint. </p>

<p>
They want to go into a review process before the design is finalized so they can get guidance on how they should approach things rather than trying to add safety as additional features on top of a finished design.</p>

<p>

</p>

<p>
55</p>

<p>
It would take someone with deep familiarity with nuclear regulation systems to understand the practical effects of recent changes in US regulatory systems, but it is quite possible that people within the regulatory structure in the US have been taking the above on board and trying to adapt to current circumstances.</p>

<p>
However, I can only speculate on that. </p>

<p>
This is about the best answer that I can give.</p>

<p>

</p>

<p>

</p>

<p>
56 Question 3</p>

<p>
the odd things done after fukushima, </p>

<p>

</p>

<p>
57 Answer</p>

<p>

</p>

<p>
This covers a lot of topics, some of which are probably political and so are not suited to HPR.</p>

<p>
I will try to list a few events however.</p>

<p>
As a brief summary if the Fukushima events go however, a historic scale earthquake and tsunami in Japan in 2011 caused huge loss of life and widespread damage.</p>

<p>
About 20,000 people were killed by the earthquake and tsunami.</p>

<p>

</p>

<p>
Three nuclear reactors based on 1960s era GE BWR designs were seriously damaged by hydrogen explosions caused by loss of power to backup generators when they were flooded by the tsunami.</p>

<p>
However, there were no radiation related deaths or cases of radiation sickness.</p>

<p>

</p>

<p>
58</p>

<p>
Following events in Japan was a general review of designs around the world, with various improvements made in some areas, particularly backup generators and hydrogen management.</p>

<p>

</p>

<p>
It seems to be conventional wisdom that the Fukushima event caused a number of countries to decide to phase out nuclear power.</p>

<p>

</p>

<p>
59</p>

<p>
However, when I tried to make a list of such countries for this episode I found things were not as is often heard.</p>

<p>
The countries which decided to get rid of nuclear power had largely started down that road at least a decade before then and generally for reasons unrelated to any specific events outside of their own country.</p>

<p>
In other cases they reversed that decision or are in the process of doing so.</p>

<p>
Japan itself has restarted many of their nuclear power plants and plant to replace decommissioned nuclear power plants with new ones, although many of the older and smaller ones were considered not economically worth upgrading at this point in their life to restart them. </p>

<p>

</p>

<p>
60</p>

<p>
The one possible exception to this may be Taiwan which decided to phase out nuclear power in 2016.</p>

<p>
However, I don't know enough about Taiwanese politics to state with any confidence that their decision in 2016 was based on anything related to events in Japan, or whether in fact they were a byproduct of other political changes within Taiwan and the shut down of nuclear plants happened to be carried along with those.</p>

<p>
Currently Taiwan get their electricity primarily from natural gas and coal. </p>

<p>

</p>

<p>
61</p>

<p>
Meanwhile across mainland Asia from Turkey to China, large numbers of nuclear power plants were  built or are under construction.</p>

<p>
Taken together on a global scale, did anything really change after Fukushima, or did the countries which had already decided to close down their nuclear power plants simply continue to do so, and those countries who decided they wanted more of them continue to build them?</p>

<p>
That's a good question for which I don't think anyone has the perspective to answer at this point. </p>

<p>

</p>

<p>
62</p>

<p>
Another side of this which is hard to disentangle from it though is the increased use of natural gas for electric power generation which was happening at around the same time. </p>

<p>
Increased use of fracking in a number of countries, plus increased supplies from Russia and LNG from the Middle East and other places resulted in falls in natural gas prices in many places.</p>

<p>
Since combined cycle natural gas turbines form the main competitor to nuclear power, anything which improves the economics of natural gas will act to reduce demand for nuclear power.</p>

<p>
This makes it hard to decide to what degree the reduction in the number of reactors being built was due to the political effects of the earthquake and tsunami and to what degree it was due to cheaper natural gas through fracking and other means.</p>

<p>

</p>

<p>
I'll leave that question at that.</p>

<p>

</p>

<p>
63 Question 4</p>

<p>
the new radiation rules in the states.</p>

<p>

</p>

<p>
64 Answer</p>

<p>

</p>

<p>
I'm not deeply familiar with US radiation rules, but I will attempt to answer the question.</p>

<p>

</p>

<p>
Apparently there are wide variety of different things being addressed, only some of which have any relevance to the nuclear power industry.</p>

<p>
One of these is an epidemiological study on the current exposure limits for workers in the nuclear industry.</p>

<p>
This study will take place over about 5 years.</p>

<p>

</p>

<p>
In the end it may not result in any changes. </p>

<p>
This is for a number of reasons.</p>

<p>

</p>

<p>
65</p>

<p>
One is that US exposure thresholds for workers are currently aligned with international standards.</p>

<p>
It would be difficult for the US industry to operate on a different basis than the rest of the world when supply chains are global and kit is designed to meet currently recognized standards.</p>

<p>

</p>

<p>
Another is that apparently the nuclear industry are not, so far as I can discern, asking for any changes to limits.</p>

<p>
They instead are looking for changes to how some of the details are being applied, such as for example the criteria for deciding when respirators are required in low risk environments.</p>

<p>

</p>

<p>
66</p>

<p>
Some point to recent changes in UK regulations as an example of what they are looking for.</p>

<p>
I will post a link to the new (November of 2025) UK regulations in the show notes.</p>

<p>
https://www.gov.uk/government/publications/nuclear-industry-principles-to-guide-the-application-of-as-low-as-reasonably-practicable-alarp-and-best-available-techniques-bat/ways-of-working-principles-to-guide-the-application-of-alarp-and-bat-in-the-nuclear-industry-accessible-webpage</p>

<p>

</p>

<p>
This is about as much detail as I think I can comment on when it comes to this question, as I think it is a subject that requires a fair bit more practical knowledge of than I have in order to give a thorough and balanced answer. </p>

<p>

</p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>
67 Question from Antoine</p>

<p>

</p>

<p>
Were/are the designs patented?</p>

<p>

</p>

<p>
Hi, Whiskeyjack.</p>

<p>
Nice ep.</p>

<p>
You said AGR, based on Magnox, was a nuclear reactor type that did not sell well outside the UK. I then started thinking if it were (is) possible to another countries to develop by themselves based on that project, or if it had (has) a commercial restriction for exploration of the technology.</p>

<p>
I have yet to listen to the following episodes (doing little by little) and may learn better on the choices, but I felt free to present the question by now...</p>

<p>
Thanks!</p>

<p>

</p>

<p>
68 Answer</p>

<p>
This is a very good question because it offers the opportunity to talk about a number of interesting things that haven't been touched on yet.</p>

<p>

</p>

<p>
Let's cover a bit of background first.</p>

<p>

</p>

<p>
69</p>

<p>
A patent is a time limited right to exploit a defined bit of valuable technical knowledge. </p>

<p>
Patents were involved from the very earliest days of commercial nuclear power, and I will give an example of this later.</p>

<p>
A key point to keep in mind though is that the nuclear power field moves very slowly and it takes a long time for new knowledge to make it from the lab to commercial application.</p>

<p>
Patents will often expire before they reach the point where they can be used.</p>

<p>

</p>

<p>
70</p>

<p>
Contracts on the other hand are legally enforceable agreements between two parties.</p>

<p>
A contract may have a time limited life, but that is an arrangement between the parties.</p>

<p>
A commercial nuclear power plant is a very large and complex bit of kit and not easily copied in detail.</p>

<p>
It can be far more effective to cover designs under contracts and licenses than to rely on patents.</p>

<p>
If a country wished to build their own nuclear power plants rather than buying them from someone else, there are a large number of companies who have commercial designs they are willing to license to third parties for them to build themselves.</p>

<p>
Indeed a number of these companies base their business around licensing of designs or have other reasons for wishing to do so.</p>

<p>

</p>

<p>
71</p>

<p>
From a licensee perspective, it could take decades of work and  hundreds of millions or even billions of dollars to take a design from first principle to the ready to build state, wheras licensing a design give you a proven design right away.</p>

<p>

</p>

<p>
As mentioned in previous episodes, there many types of reactor in the world.</p>

<p>
The selection of what sort of reactor a country decides to buy often depends more on commercial considerations revolving around licensing terms and conditions than it does with respect to any technical considerations. </p>

<p>

</p>

<p>
Here's an example which shows how South Korea decided to license a design, build it for themselves, and then export it to other countries. </p>

<p>

</p>

<p>
72</p>

<p>
KunMo Chung - Professor at the Korea Advanced Institute of Science and Technology, stated in an interview in 2019 that South Korea wanted to standardize on a single reactor technology in the early 1980s. </p>

<p>

</p>

<p>
They had reactors from multiple different vendors, but wanted to license an existing successful design to produce for themselves and for the export market. One of the major factors in deciding to standardize was to allow them to improve operator training by focusing on one design. </p>

<p>

</p>

<p>
Professor Chung stated that one of the key factors in selecting a design from ABB-Combustion Engineering was that he personally knew and had a good relationship with the Chief Technical Officer of ABB-Combustion Engineering going back to a time when Professor Chung had been studying and working in the USA. </p>

<p>

</p>

<p>
73</p>

<p>
On their side, ABB-Combustion Engineering were having financial problems and they needed a partner to help further develop their new PWR design. Also they stood to gain revenue from this partnership as well.</p>

<p>

</p>

<p>
Based on this relationship, the two sides came to a business agreement and South Korea began producing reactors based on this design, while also continuing to develop and improve it further. </p>

<p>

</p>

<p>

</p>

<p>
74</p>

<p>
Here's an example of a case where the developers of a promising technology decided that they had more to gain by not patenting their technology.</p>

<p>
Instead they decided to freely share their information in order to get other researchers elsewhere to help to advance the technology so that all could benefit from it.</p>

<p>

</p>

<p>
75</p>

<p>
In an interview Wacław Gudowski - Prof. Emeritus, Royal Institute of Technology KTH Stockholm</p>

<p>
stated that the Soviets and later the Russian were the leaders in lead-bismuth cooled reactors.</p>

<p>
These reactors use lead-bismuth liquid metal alloy as a coolant.</p>

<p>
In the 1990s the Russian institute working on commercializing this technology were working with Western partners on nuclear technology in general.</p>

<p>
They considered patenting this technology, but in the end decided to simply publish it openly.</p>

<p>
76</p>

<p>
Professor Gudowski had even smuggled $60,000 in cash into Russia to finance the patent application in order to get the Russian institute to publish their technology, but the money was not needed. </p>

<p>
They based this decision on the judgment that it would take 20 years of R&amp;D before the technology was ready for the commercial market, so they wouldn't see a penny on any  patents anyway.</p>

<p>
They were right on this, as it was another 20 years of R&amp;D in Europe, Russia, China, and Korea before lead-bismuth technology was ready for commercial use. </p>

<p>
77</p>

<p>
It had already seen use in submarine reactors, but the commercial market demanded a more thoroughly developed technology to satisfy commercial needs. </p>

<p>
By deciding to not patent the technology, the original developers gained from shared R&amp;D rather than chasing the illusary gains from patent licenses on technology that was not ready for the commercial market anyway.</p>

<p>

</p>

<p>

</p>

<p>
78</p>

<p>
I said that patents were involved in nuclear technology from the very earliest days, and I will now turn to that story.</p>

<p>
When I say the earliest days, I mean probably earlier than you are imaging. </p>

<p>
I am talking about before WWII.</p>

<p>

</p>

<p>
79</p>

<p>
First though I need to give some background information.</p>

<p>
France and Britain were working on nuclear weapons from the very earliest days of WWII.</p>

<p>
In Britain's case this was called Tube Alloys.</p>

<p>
Canada also was conducting nuclear experiments, including building an "atomic pile", but it's not clear if this had any clear practical goals or was done to understand the physics better.</p>

<p>

</p>

<p>
80</p>

<p>
If you read the Wikipedia version of history, it states that Tube Alloys was merged into the Manhattan Project.</p>

<p>
However, participants have stated in interviews that this was not the case, and the Quebec Agreement which supposedly merged them makes no such mention of any merger of the projects, just the setting up of a board to coordinate efforts between the three countries, that is the US, UK, and Canada.</p>

<p>
In fact the two projects didn't get along that well, and as we shall see below, a big part of that was disputes over patents.</p>

<p>

</p>

<p>

</p>

<p>
###</p>

<p>

</p>

<p>
81</p>

<p>
The following is based on a paper written by Bertrand Goldschmidt, a French nuclear scientist. </p>

<p>
Two of his colleagues, Hans Halban and Lew Kowarski played a critical role in early nuclear research.</p>

<p>
Halban in particular was one of the greatest scientific names in nuclear fission.</p>

<p>
In March of 1939 Halban conducted an experiment showing that neutrons were emitted by the fissioning of uranium.</p>

<p>

</p>

<p>
82</p>

<p>
In April Joliot, Halban, Kowarski and Perrin had a pretty good idea of how to use nuclear fission to produce energy and to make an explosive device and decided to file patents on their invention. Each of the four would receive a 5% share of any benefits and the other 80% would go to the research instittute they worked at in Paris.</p>

<p>

</p>

<p>
I will now quote from Goldschmidt's paper.</p>

<p>

</p>

<p>
83</p>

<p>
The first two patents concerned energy production and were entitled "Device for energy production" and "Method for stabilizing a device for energy production." They roughly defined the principles of the main components of our present power reactors: moderator in heterogeneous or homogeneous arrangements, cooling fluid, control rods, protection shield. The third patent called "Method for perfecting explosive charges" was less brilliant from a foresight point of view though it proposed valid solutions for the trigger, the tamper, and the rapid obtainment of the critical assembly of a possible explosive device. Finally, nearly a year later, after Alfred Nier's experimental confirmation in March 1940 of Niels Bohr's theoretical prediction that uranium 235, the rare isotope of the mixture in natural uranium, was responsible for fission by slow neutrons, the French took out an additional patent on the advantage of using enriched uranium for the chain reaction.</p>

<p>

</p>

<p>
End of quote.</p>

<p>

</p>

<p>
84</p>

<p>
In May of 1940, the CNRS, the French research institute in Paris, negotiated an agreement with Belgian mining company Union Miniere, who were the world's biggest producer of uranium, at the time a byproduct of radium mining, about a partnership for the world wide exploitation of these patents. However the agreement was not finalized due to the ongoing events in the war.</p>

<p>

</p>

<p>
At the beginning of the war, the French government had approved the development of an energy generator - or a nuclear reactor as we would say today, with the intention of creating an engine for submarines.</p>

<p>

</p>

<p>
85</p>

<p>
With the fall of France, Halban and Kowarski travelled to the UK with their supply of heavy water where they were received by their UK counterparts, James Chadwick and John Cockroft. The British were already working on an atomic bomb.</p>

<p>

</p>

<p>
In the UK the two conducted an experiment showing that it was possible to create nuclear energy using natural uranium and heavy water.</p>

<p>

</p>

<p>
In 1941 the British nuclear project was reorganized and given the name Tube Alloys. In 1942 it was decided to move the work on a plutonium bomb to Canada, and Canada would pay for the project. A lab was set up in Montreal and Halban was put in charge of the project.</p>

<p>

</p>

<p>
86</p>

<p>
Halban had negotiated this arrangement by offering to arrange to have the French patents  for world wide rights outside of France and the French empire transferred to the UK. In return the French team were to be given a key role in the British nuclear project.</p>

<p>

</p>

<p>
The author of the paper I am referencing, Bertrand Goldschmidt, was a section leader in Montreal and a colleague of Halban from France. </p>

<p>

</p>

<p>
The Montreal group cooperated with the American Manhattan Project and the two shared information and exchanged visits.</p>

<p>

</p>

<p>
87</p>

<p>
However, relations between the two began to break down, with a major cause of this being the Americans being unhappy about the French patents and Halban's arrangement to give the British world wide rights to them. The postwar commercial potential for nuclear power was seen to be huge, and this was a major bone of contention. The extensive participation of ICI (Imperial Chemical Industries) engineers in the Tube Alloys project was also objectionable to the Americans. Presumably this had something to do with potential for ICI being involved in future commercialization of the technology. The American Dupont company, a commercial rival of ICI, was also heavily involved in the American atomic bomb project. The eventual result of this was that the US cut off cooperation with the UK-Canada nuclear project. </p>

<p>

</p>

<p>
88</p>

<p>
Finally Halban was forced out of the project at the insistence of the Americans, and he was replaced by John Cockroft who moved to Montreal to take charge of the project. The Americans now restore limited cooperation. </p>

<p>

</p>

<p>
Kowarski was put in charge of building a heavy water moderated natural uranium reactor at a new site north of Ottawa at Chalk River. This reactor was turned on on the 5th of September, 1945, three days after Japan's surrender.</p>

<p>

</p>

<p>
So in what was supposedly a titanic war for survival, key allies were falling out with respect to their ultimate weapon over issues of patents covering post war commercialization. </p>

<p>

</p>

<p>
89</p>

<p>
With the end of the war, the nuclear weapons project in Montreal and Chalk River was wound up. </p>

<p>
Halban, Kowarski, and Goldschmidt returned to France and Cockroft to the UK where they all played senior roles in the nuclear programs of their respective countries. </p>

<p>
John Cockroft played an important role in the development of the Magnox reactors which Antoine asked about.</p>

<p>
The Chalk River Site remains as Canada's main nuclear research centre to this day, and Canada was to continue development of heavy water moderated natural uranium reactors. </p>

<p>

</p>

<p>
90</p>

<p>
The first commercial nuclear power plant was commissioned in the UK in 1956, roughly 17 years after the original French nuclear patents. </p>

<p>
At that time, UK patents had a term of 16 years. </p>

<p>
While I am not a patent lawyer, it would appear that these patents would likely have expired before nuclear power was ever commercialized.</p>

<p>

</p>

<p>
So to answer the question about patents, the first patents on nuclear energy date to before WWII started, and the very first two were about nuclear power plants and it was only the third one which covered nuclear weapons. </p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>
91 Thanks to other listeners.</p>

<p>

</p>

<p>
A number of other listeners made comments saying they were really enjoying the series. I would like to thank the following for their kind words of encouragement. They helped make the work required to do this worthwhile.</p>

<p>

</p>

<p>
They are</p>

<p>

</p>

<p>
brian-in-ohio</p>

<p>
mnw</p>

<p>
Clinton</p>

<p>
Antoine</p>

<p>
bjb</p>

<p>
Kevin O'Brien</p>

<p>
Trey</p>

<p>
L'andrew</p>

<p>
Archer72</p>

<p>
Jim DeVore</p>

<p>

</p>

<p>
If you have commented but I have forgotten your name, or if the show was recorded before I got a chance to read your comment, I would still like to thank you.</p>

<p>

</p>

<p>

</p>

<p>
92 Conclusion</p>

<p>

</p>

<p>
I would like to thank all the listeners for their kind comments and insightful questions.</p>

<p>
I hope that I have answered these questions to the satisfaction of everyone.</p>

<p>
I look forward to hearing from all of you in future podcast episodes including those on other topics.</p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>

</p>

<p>
Proceedings of the 29th annual conference of the Canadian Nuclear Association and 10th annual conference of the Canadian Nuclear Society. V. 1-3</p>

<p>
https://inis.iaea.org/records/m2s41-40917</p>

<p>
This has a paper by Bertrand Goldschmidt about the work of the French scientists in Canada.</p>

<p>

</p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>


<p><a href="https://hackerpublicradio.org/eps/hpr4628/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4627: UNIX Curio #5 - Faster, Pussycat! Kill! Kill!]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.


This series is dedicated to exploring little-known—and occasionally useful—trinkets lurking in the dusty corners of UNIX-like operating systems.


Let me start by admitting that I've never actually seen the film referenced in the episode title, ...]]></description>
<link>https://tsecurity.de/de/3469643/it+sicherheit/it+podcasts/hpr4627+unix+curio+5+-+faster+pussycat+kill+kill/</link>
<pubDate>Tue, 28 Apr 2026 02:02:43 +0200</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>

<blockquote>
This series is dedicated to exploring little-known—and occasionally useful—trinkets lurking in the dusty corners of UNIX-like operating systems.</blockquote>

<p>
Let me start by admitting that I've never actually seen the film referenced in the episode title, but I couldn't resist using it anyway.</p>

<p>
If you've used the UNIX command line to any extent, chances are good that you are familiar with the <code>
kill</code>
 command. A common use is to terminate a misbehaving program. But there is more behind how <code>
kill</code>
 works, including a curio you might not know about.</p>

<p>
The <code>
kill</code>
 utility works by sending a "signal" to the targeted process. This signal is selected from a pre-defined list, and triggers the process to interrupt its normal flow and handle the signal before potentially returning back to its work. This "signal handler" can do whatever activities are written in its code, but typically it will take actions connected to the purpose of the specific signal received.</p>

<p>
One option is for the process not to have a signal handler at all; in that case, there is a default action that the operating system will take on behalf of the process, depending on what the signal is. The possible default actions are to terminate the process, take some implementation-defined action (usually writing a core file to disk) and then terminate the process, stop (pause) execution of the process, continue execution of a stopped process, or ignore the signal.</p>

<p>
By default, <code>
kill</code>
 sends the TERM signal to the process, an indicator that it should terminate. Each signal has a name and a number assigned to it; SIGTERM is the name of the "terminate" signal. You can use the <code>
-s</code>
 option with the name to choose which signal to send. The 'kill' command is specified to take these names without the SIG prefix, though some implementations will accept them either way. Also, <code>
kill</code>
 is supposed to be case-insensitive when it comes to these names, but the convention is to write them in all upper case. The assigned numbers for signals can vary depending on the operating system, and on Linux, depending on what processor architecture you're on. However, there is a <a href="https://pubs.opengroup.org/onlinepubs/009695399/utilities/kill.html" rel="noopener noreferrer" target="_blank">
short list of signals</a>

<sup>
1</sup>
 that have a stable number assigned to them. Despite this, I recommend using the signal name in your scripts to make them clearer and to ensure maximum portability to different systems.</p>

<p>
Well-behaved programs will have a signal handler that responds to the TERM signal by stopping what they are doing, cleaning up any open resources like temporary files, and promptly exiting. However, not every program behaves well, so sometimes it becomes necessary to send them the KILL signal. This one is special and <a href="https://pubs.opengroup.org/onlinepubs/009695399/basedefs/signal.h.html" rel="noopener noreferrer" target="_blank">
cannot be handled or ignored by the program</a>

<sup>
2</sup>
; the operating system will immediately terminate the program, possibly leaving a mess behind.</p>

<p>
Two other signals that can come in handy sometimes are STOP and CONT. As you might expect, STOP forces a process to pause in the middle of whatever it was doing. Its counterpart, CONT (short for "continue"), causes it to resume execution. This can be useful if a program consumes CPU time when not actually doing anything worthwhile—sending it the STOP signal will end that, and when you're ready to use it again, CONT will cause it to pick up right where it left off. Like the KILL signal, STOP cannot be handled or ignored by the program. I have used this to pause the game FreeCiv when I wanted to break away to do something else, but didn't want to have to deal with exiting my current game and having to reload it later. Take note, though, that the program might get confused if it expects the system clock not to suddenly jump forward, as that is exactly how the situation will appear to it. Network connections or other resources the process is using that change while it is stopped are other potential trouble spots. Also be aware that a stopped graphical program will not update its window, so I find it best to minimize the window before stopping it and then continuing the process before trying to raise the window again.</p>

<p>
Programs are not necessarily <em>
required</em>
 to interpret signals in the way they are described. For example, the HUP signal was originally intended to be sent when a modem or serial connection hang-up occurred. Today, some daemons use it for other purposes and take a specific action in response. For example, the <a href="https://httpd.apache.org/docs/2.4/stopping.html#hup" rel="noopener noreferrer" target="_blank">
Apache web server will restart</a>

<sup>
3</sup>
, and <a href="https://networkmanager.dev/docs/api/latest/NetworkManager.html#id-1.2.2.9" rel="noopener noreferrer" target="_blank">
NetworkManager will reload its configuration</a>

<sup>
4</sup>
. These uses of signals are usually described in the daemon's manual page, often in a separate section dedicated to signals.</p>

<p>
While all this background might be interesting (or maybe not), it's pretty commonly known, so isn't really a curio. Our UNIX Curio for today is the "0" signal. This is actually not a signal at all; instead, it tells the <code>
kill</code>
 utility to just check for the existence of a process. If the process exists, <code>
kill</code>
 will exit with a status of 0. If it doesn't exist, the exit status will be greater than 0. This provides a handy way to check whether a particular process is still around. A shell command can use this exit status with its control structures like <code>
if</code>
 to take a particular action depending on whether a particular process exists. Somewhat oddly, "0" is both the number <em>
and</em>
 the name of this pseudo-signal.</p>

<p>
Why would you want to do this? I have used it for a script to analyze log files that runs daily on a web server. Depending on how much traffic the site is getting, the log files can grow to the point where it takes longer than a day for the script to get through them. If a second instance of the script is started while one is still running, it will slow down both and if more keep being added, eventually the machine will run out of memory.</p>

<p>
My solution was to create a .pid file containing the process ID number of the running script. You might see examples of these if you look in /run or /var/run on your system. The script creates a file named something like "myscript.pid" in this directory containing its own process ID, which can be accessed in the shell with the variable <code>
$$</code>
. When my script starts, it checks to see whether this file exists. If so, it uses <code>
kill -s 0 $(cat /run/myscript.pid)</code>
 to see if the previous process still exists. If the process is no longer around, that's a sign that it exited abnormally before it had the chance to delete the .pid file, so the script removes the abandoned .pid file, replaces it with a new one containing the current process ID, and continues with its work. If the previous process is still around, my script exits with a message to that effect. This way, I can be sure that only one instance of the script will ever be running at one time.</p>

<p>
Be aware that the <code>
kill</code>
 utility might also return a non-zero exit status if the user running it does not have privileges to send a signal to the process with the specified ID. This is not a concern if you are running a script as the root user, but could be if you are not. This can occur even if you aren't actually sending a signal, just using the "0" pseudo-signal to check if a process exists.</p>

<p>
There <em>
is</em>
 a weakness in this method. UNIX-like systems generally have a limit to the quantity of process ID numbers that can be issued, so they are reused over time. (However, there will never be two processes with the same ID number running at the <em>
same</em>
 time.) Typically, the first process that is run on start-up will be given the ID number 1, and each subsequent process will get the next higher number. Once the maximum is reached, the system starts again at the beginning with the lowest number not in use. It is possible for the script to crash and leave behind the .pid file, then the same process ID could be recycled and actively used for another program, causing a new instance of the script to give up. The chances of this are small enough that for my purposes, it's not worth worrying about. But you should be aware that it could happen.</p>

<p>
I should also note that it's not strictly necessary to use <code>
kill</code>
 for the purpose I described. The <code>
ps</code>
 utility can also be given a process ID with the <code>
-p</code>
 option; if the process exists, the exit status will be 0, otherwise it will be greater than 0. In this case, you could also use the output to check that the name of the command matches what you expect, helping avoid the problem of a recycled process ID. In addition, <code>
ps</code>
 doesn't concern itself with permissions for sending signals, so it will report on the existence of a process no matter what user you are running it as. From an efficiency standpoint, <code>
kill</code>
 generally requires fewer resources to run (in fact, it is built in to some shells), but functionally <code>
ps</code>
 can also do the job.</p>

<p>
So keep in mind that <code>
kill</code>
 is capable of doing more than just killing off programs—maybe you can put it to one of these uses for your needs.</p>

<p>
References:</p>

<ol>

<li>

<a href="https://pubs.opengroup.org/onlinepubs/009695399/utilities/kill.html" rel="noopener noreferrer" target="_blank">
Kill specification</a>
 https://pubs.opengroup.org/onlinepubs/009695399/utilities/kill.html</li>

<li>

<a href="https://pubs.opengroup.org/onlinepubs/009695399/basedefs/signal.h.html" rel="noopener noreferrer" target="_blank">
signal.h specification</a>
 https://pubs.opengroup.org/onlinepubs/009695399/basedefs/signal.h.html</li>

<li>

<a href="https://httpd.apache.org/docs/2.4/stopping.html#hup" rel="noopener noreferrer" target="_blank">
Stopping and Restarting Apache HTTP Server</a>
 https://httpd.apache.org/docs/2.4/stopping.html#hup</li>

<li>

<a href="https://networkmanager.dev/docs/api/latest/NetworkManager.html#id-1.2.2.9" rel="noopener noreferrer" target="_blank">
NetworkManager: Signals</a>
 https://networkmanager.dev/docs/api/latest/NetworkManager.html#id-1.2.2.9</li>

</ol>

<p>

<strong>
Appendix 1</strong>
 - example script:</p>

<pre data-language="plain">
#!/bin/sh

# Use your own unique name here - be sure you can write to this location
pidfile="/var/run/myscript.pid"

# Exit if previous run hasn't completed yet
if [ -f "$pidfile" ] ; then
  oldpid=$(cat "$pidfile")
  if kill -s 0 $oldpid ; then
    echo "${0}: Not running script, older process $oldpid still active"
    exit 1
  else
    echo "${0}: Removing old pidfile from nonexistent process $oldpid"
    rm -f "$pidfile"
  fi
fi

# Create pidfile
echo $$ &gt; "$pidfile"

## Insert commands to do the actual work of the script here

# Remove pidfile
rm -f "$pidfile"
</pre>

<p>

<strong>
Appendix 2</strong>
 - another version of the script using <code>
ps</code>
 instead of <code>
kill</code>
, checking that an existing process ID is actually the same command, and with extra validation of the contents of the pidfile; perhaps better for use by a non-root user:</p>

<pre data-language="plain">
#!/bin/sh

# Use your own unique name here - be sure you can write to this location
pidfile="$HOME/myscript.pid"

# Exit if previous run hasn't completed yet
if [ -f "$pidfile" ] ; then
  oldpid=$(( 1 * $(cat "$pidfile") ))
  if [ -n "$oldpid" ] &amp;&amp; [ "$oldpid" -gt 1 ] ; then
    :
  else
    echo "${0}: Not running script, $pidfile contents invalid"
    exit 1
  fi
# Test if old process ID exists
  if oldcmd="$( ps -o comm= -p $oldpid )" &amp;&amp;
# Also test if command name of old process is same as current script
  [ "$oldcmd" = "${0##*/}" ] ; then
    echo "${0}: Not running script, older process $oldpid still active"
    exit 1
  else
    echo "${0}: Removing old pidfile from nonexistent process $oldpid"
    rm -f "$pidfile"
  fi
fi

# Create pidfile
echo $$ &gt; "$pidfile"

## Insert commands to do the actual work of the script here

# Remove pidfile
rm -f "$pidfile"
</pre>

<p>

</p>


<p><a href="https://hackerpublicradio.org/eps/hpr4627/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4626: Cable Management / PC Speakers]]></title>
<description><![CDATA[This show has been flagged as Explicit by the host.



Cable Management / PC Speakers ... 








Boao 3 Pieces Cord Protector Wire Loom Black Tubing Cable Sleeve Split Sleeving for USB Charger Cord Cover Audio Video Cable, Each Size 10 ft 3/4 Inch, 1/2





https://www.amazon.com/dp/B0...]]></description>
<link>https://tsecurity.de/de/3466564/it+sicherheit/it+podcasts/hpr4626+cable+management+pc+speakers/</link>
<pubDate>Mon, 27 Apr 2026 02:01:56 +0200</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Explicit by the host.</p>

<p>

Cable Management / PC Speakers ... 
</p>

<p>

</p>

<p>

Boao 3 Pieces Cord Protector Wire Loom Black Tubing Cable Sleeve Split Sleeving for USB Charger Cord Cover Audio Video Cable, Each Size 10 ft 3/4 Inch, 1/2
</p>

<p>

<a href="https://www.amazon.com/dp/B08JPV4NRJ" rel="noopener noreferrer" target="_blank">
https://www.amazon.com/dp/B08JPV4NRJ</a>

</p>

<p>

</p>

<p>

Split-Sleeve Wire Loom for High-Temperature Automotive Harness and Home Cable Management, 25ft - 1/2 inch Braided Cable Management Sleeve Cord Protector, Self-Wrapping Split Wire Loom
</p>

<p>

<a href="https://www.amazon.com/dp/B0C4LD8FP3" rel="noopener noreferrer" target="_blank">
https://www.amazon.com/dp/B0C4LD8FP3</a>

</p>

<p>

</p>

<p>


<a href="https://hackerpublicradio.org/eps/hpr4626/hpr4626_image_ext_1.png">
<img src="https://hackerpublicradio.org/eps/hpr4626/hpr4626_image_ext_1_tn.png">
</a>


</p>

<p>

</p>

<p>

</p>

<p>

PreSonus Eris 3.5 Studio Monitors, Pair — Powered, Active Monitor Speakers for Near Field Music Production, Desktop Computer, Hi-Fi Audio
</p>

<p>

<a href="https://www.amazon.com/dp/B0C88ZB3D9" rel="noopener noreferrer" target="_blank">
https://www.amazon.com/dp/B0C88ZB3D9</a>

</p>

<p>

</p>

<p>

</p>

<p>

Wood Hangboard Rock Climbing Holds - Sturdy Hang Board for Climbers
</p>

<p>

<a href="https://www.amazon.com/dp/B07X58S696" rel="noopener noreferrer" target="_blank">
https://www.amazon.com/dp/B07X58S696</a>

</p>

<p>

</p>

<p>

POWER GUIDANCE Hangboard Rock Climbing Holds Finger Strengthener for Pull-up Grip Arm Training Indoor and Outdoor Double-Sided Non-Slip Portable
</p>

<p>

<a href="https://www.amazon.com/dp/B09VTG6RZN" rel="noopener noreferrer" target="_blank">
https://www.amazon.com/dp/B09VTG6RZN</a>

</p>

<p>

</p>

<p>

Cosmos 1 Pc Green Screen Backdrop 43 in / 110 cm Diameter Foldable Portable Photography Background Green Screen Chroma Key Backdrop for Photography Photo Video Studio, Live Streaming, Video Meeting
</p>

<p>

</p>

<p>

<a href="https://www.amazon.com/dp/B0CQNRWL7K" rel="noopener noreferrer" target="_blank">
https://www.amazon.com/dp/B0CQNRWL7K</a>

</p>

<p>

</p>

<p>

</p>

<p>


<a href="https://hackerpublicradio.org/eps/hpr4626/hpr4626_image_ext_2.png">
<img src="https://hackerpublicradio.org/eps/hpr4626/hpr4626_image_ext_2_tn.png">
</a>

<img src="https://hackerpublicradio.org/eps/hpr4626/hpr4626_image_ext_3.png">


</p>

<p>

</p>

<p>

<strong>
Key Points:</strong>

</p>

<p>

</p>

<ol>

<li>

<strong>
New Monitor Setup:</strong>

<ul>

<li>
Ordered a new 49-inch curved monitor.</li>

<li>
Current setup involves a steering wheel that needs to be moved for gaming and work.</li>

<li>
Detailed process for switching between gaming and work modes.</li>

</ul>

</li>

<li>

<strong>
Cable Management:</strong>

<ul>

<li>
Discussed different brands of wire loom: Boao and  teziicus Store .</li>

<li>
BOA is cheaper and see-through, while  teziicus Store is more expensive but better quality.</li>

<li>
Explained the use of split sleeve wire loom for easier cable management.</li>

<li>
Tips on using heat shrink tubing and a heat gun for a better seal.</li>

<li>
Mentioned using Gorilla Glue for expanding and sealing large dongles.</li>

<li>
Recommended sizes for wire loom: three-fourths inch for larger cables, one-fourth inch for smaller cables.</li>

</ul>

</li>

<li>

<strong>
Labeling and Organization:</strong>

<ul>

<li>
Emphasized the importance of labeling cables using a label maker.</li>

<li>
Suggested using specific tape for patch cables and placing labels a few inches away from the plug for easy identification.</li>

<li>
Mentioned using twist ties for temporary cable management and Velcro for more permanent setups.</li>

</ul>

</li>

<li>

<strong>
Additional Tools and Tips:</strong>

<ul>

<li>
Used binder clips and paracord for temporary setups.</li>

<li>
Mentioned using power guide holds for rock climbing practice during calls.</li>

<li>
Discussed the potential for a dual monitor setup to avoid moving the monitor frequently.</li>

</ul>

</li>

<li>

<strong>
PC Speakers:</strong>

<ul>

<li>
Noted the shift from traditional PC speakers to studio speakers.</li>

<li>
Mentioned entry-level studio speakers costing around $99.</li>

<li>
Highlighted the need for a subwoofer for better bass.</li>

<li>
Discussed bass shakers for haptic feedback in racing games.</li>

</ul>

</li>

<li>

<strong>
Workspace Cleanliness:</strong>

<ul>

<li>
Emphasized the importance of keeping the workspace clean and organized.</li>

<li>
Mentioned using a green screen for video calls, hung from the ceiling for a flat surface.</li>

</ul>

</li>

</ol>

<p>

<strong>
Conclusion:</strong>

</p>

<p>

</p>

<ul>

<li>
Encouraged listeners to keep their workspaces clean and organized for better productivity and aesthetics.</li>

<li>
Provided practical tips and tools for effective cable management and workspace setup.</li>

</ul>

<p>

<strong>
Closing Remarks:</strong>

</p>

<p>

</p>

<ul>

<li>
Wished listeners a good day and encouraged them to record their own episodes.</li>

</ul>

<p>

<strong>
Additional Notes:</strong>

</p>

<p>

</p>

<ul>

<li>
Mentioned the use of a standing desk and the challenges of dual-use with a steering wheel setup.</li>

<li>
Discussed the potential for a separate office table for gaming and work to avoid frequent adjustments.</li>

</ul>

<p>

<strong>
Host's Personal Note:</strong>

</p>

<p>

</p>

<ul>

<li>
Acknowledged the change in format for better show notes and clarity for listeners.</li>

</ul>

<p>

</p>

<p>

</p>

<p>

</p>


<p><a href="https://hackerpublicradio.org/eps/hpr4626/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4625: Site Specific Browsers]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.


A progressive web application (PWA), or progressive web app, is a type of web app that can be installed on a device as a standalone application. PWAs are installed using the offline cache of the device's web browser.






PWAs were intr...]]></description>
<link>https://tsecurity.de/de/3459765/it+sicherheit/it+podcasts/hpr4625+site+specific+browsers/</link>
<pubDate>Fri, 24 Apr 2026 02:02:31 +0200</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>

<p>
A progressive web application (PWA), or progressive web app, is a type of web app that can be installed on a device as a standalone application. PWAs are installed using the offline cache of the device's web browser.</p>

<p>

</p>

<p>
PWAs were introduced from 2016 as an alternative to native (device-specific) applications, with the advantage that they do not require separate bundling or distribution for different platforms. They can be used on a range of different systems, including desktop and mobile devices. Publishing the app to digital distribution systems, such as the Apple App Store, Google Play, or the Microsoft Store on Windows, is optional.</p>

<p>

</p>

<p>

<em>
-- Wikipedia.org</em>

</p>


<p><a href="https://hackerpublicradio.org/eps/hpr4625/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4624: Cheap Yellow Display Project Part 7: GUI Trying a Simple Hello World]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.



Hello, again. This is Trey.










Please note: I did the work described in this episode, and wrote the script more than 6 months prior to this recording.  But then life got in the way and I didn't get it recorded, and I didn't even l...]]></description>
<link>https://tsecurity.de/de/3456516/it+sicherheit/it+podcasts/hpr4624+cheap+yellow+display+project+part+7+gui+trying+a+simple+hello+world/</link>
<pubDate>Thu, 23 Apr 2026 02:02:11 +0200</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>

<p>

Hello, again. This is Trey.

</p>

<p>


</p>

<p>

Please note: I did the work described in this episode, and wrote the script more than 6 months prior to this recording.  But then life got in the way and I didn't get it recorded, and I didn't even look at the project until recently.  But, that dear friends is a story for another episode.  In literature, we call that "foretelling".  Right now, however, it is time to record and publish 
<em>
this</em>

episode.

</p>

<p>


</p>

<p>

Welcome to part 7 in my Cheap Yellow Display (CYD) Project series.  If you are still listening to me ramble about this project, thank you.  If you have lost track of it over the months of silence from me, you are not alone.  Frankly, I have lost track of it, too.  

</p>

<p>


</p>

<p>

If you wish to catch up on earlier episodes, you can find them on my 
<a href="https://www.hackerpublicradio.org/correspondents/0394.html" rel="noopener noreferrer" target="_blank">
HPR profile page</a>


<a href="https://www.hackerpublicradio.org/correspondents/0394.html" rel="noopener noreferrer" target="_blank">
https://www.hackerpublicradio.org/correspondents/0394.html</a>



</p>

<p>


</p>

<p>

Today I am not going to blather on about all the things we have done so far, and the current state of the project.  No, today we are getting back to basics, beginning with the Random Nerds Tutorial "Introducing the ESP32 Cheap Yellow Display" (
<a href="https://randomnerdtutorials.com/lvgl-cheap-yellow-display-esp32-2432s028r/" rel="noopener noreferrer" target="_blank">
https://randomnerdtutorials.com/lvgl-cheap-yellow-display-esp32-2432s028r/</a>

).

</p>

<p>


</p>

<p>

Why am I going back to basics? I really don't want to talk about it.  If you have not listened to episode 5 of this series, you may go back and suffer through it at HPR4532 - 
<a href="https://hackerpublicradio.org/eps/hpr4532/index.html" rel="noopener noreferrer" target="_blank">
https://hackerpublicradio.org/eps/hpr4532/index.html</a>


</p>

<p>


</p>

<p>

Suffice it to say that, when you choose to jump in the deep end of something you think you understand a little about, but about which you really know much less, you can find yourself flailing about, gasping for air, and trying not to sink.  Thus was my case.

</p>

<p>


</p>

<p>

However, a recurring theme has been evident to me in several podcasts &amp; YouTube videos I have experienced over the last few weeks.  That theme is "Embracing Failure".  The most recent of these was Mark Rober's YouTube video "Uncovering America's Underwater City" (
<a href="https://www.youtube.com/watch?v=q2C1JpQi5G4" rel="noopener noreferrer" target="_blank">
Uncovering America's Underwater City</a>

).  His successes and misses in that video gave me a glimmer of hope.

</p>

<p>


</p>

<p>


</p>

<p>

I have been programming computers in various forms since the early '80s.  Over the years, I worked with BASIC, Pascal, various flavors of C and of assembly, Perl, Java, JScript, Python, and more. And every time I started a course to learn a new language, the first program to write was... Yep! You guessed it.  Hello World.

</p>

<p>


</p>

<p>

Random Nerds Tutorial post "Introducing the ESP32 Cheap Yellow Display" (
<a href="https://randomnerdtutorials.com/lvgl-cheap-yellow-display-esp32-2432s028r/" rel="noopener noreferrer" target="_blank">
https://randomnerdtutorials.com/lvgl-cheap-yellow-display-esp32-2432s028r/</a>

) includes a starter program that creates 2 different buttons on the screen, which do 2 different things, a slider, and, of course, displays "Hello World".  In the show notes, you can see an image of this screen, captured from the tutorial.

</p>

<p>


</p>

<p>

<a href="https://hackerpublicradio.org/eps/hpr4624/hpr4624_image_1.jpeg">
<img src="https://hackerpublicradio.org/eps/hpr4624/hpr4624_image_1_tn.jpeg">
</a>

</p>

<p>


</p>

<p>

It was time for me to get started.

</p>

<p>


</p>

<p>

Copy, paste, RUN, right?  Nope. Not this time.  The article also explains, section by section what the code does.  My goal here is NOT simply to make the CYD do my bidding, but to learn the "Why" and the "How" which I need in order to become proficient.

</p>

<p>


</p>

<p>

First, we start with loading the necessary libraries.  These include (Pun absolutely intended):

</p>

<ul>

<li>

LVGL (Light and Versatile Graphics Library)

</li>

<li>

TFT_eSPI (Graphics library for output to the display itself)

</li>

<li>

XPT2046_Touchscreen.h (A Resistive touch controller library, used for touchscreen inputs from the CYD)

</li>

</ul>

<p>


</p>

<p>

Instructions earlier in the tutorial described how to make certain these are properly installed into the Arduino IDE.  One thing that I noticed almost immediately is that the previous GUI building tool I used in episode 5, called Squareline Studio, only supported up to LVGL Version 8, while the tutorial recommended LVGL 9.01.  I wonder if this contributed to some of my issues?

</p>

<p>


</p>

<p>

What is LVGL anyway?  LVGL stands for Light and Versatile Graphics Library. According to lvgl.io, "LVGL is the most popular free and open-source embedded graphics library to create beautiful user interfaces for any micro controller unit, microprocessor unit and display type."  It is built to make UI development easier with animations and more than 30 different widgets.

</p>

<p>


</p>

<p>

Now that we have included the necessary libraries, there is some initialization to do for the touchscreen.  The touchscreen is a Serial Peripheral Interface (SPI). You can see in the tutorial that XPT2046 requires you to define the following:

</p>

<ul>

<li>

The interrupt (IRQ) used

</li>

<li>

The MOSI (Master Out Slave In) pin used.  This is the pin which the microcontroller uses to send data to the touchscreen.

</li>

<li>

The MISO (Master In Slave Out) pin used. This is the pin which the microcontroller uses to receive data from the touchscreen.

</li>

<li>

The clock pin which the microcontroller uses to send clock signals to SPI devices.  

</li>

<li>

The Chip Select (CS) pin on the microcontroller, used to enable/disable communications with the touchscreen.

</li>

</ul>

<p>


</p>

<p>

With these defined, we can create specific instances for "touchscreenSPI" and "touchscreen".  Next, we define the screen height, width, and font size, along with integer variables x &amp; y for input coordinates when the screen is touched, and z for pressure used when the screen is touched.  These values are important when configuring the draw buffer.  

</p>

<p>


</p>

<p>

There is also a setup function which is used to basically launch the touchscreenSPI, the TFT Display, and LVGL. 

</p>

<p>


</p>

<p>

That was a lot.  But wait!  There is more!

</p>

<p>


</p>

<p>

There is a decent sized function which creates the main GUI screen, and it begins with the "Hello World" text label.  Here we can see specifically how the text label is created, named, assigned the text it will display, and sized and positioned.

</p>

<p>


</p>

<p>

The same goes for buttons one and two and their associated labels, and the slider and it's label.

</p>

<p>


</p>

<p>

Finally, there are event handler functions for when button 1 or button 2 are pressed and for when the slider is moved. 

</p>

<p>


</p>

<p>

When button 1 is pressed, it shows that it is clicked until it is released.  When button 2 is pressed, it actually changes the state of the button between "off" and "on"  to the opposite of the state it was in before it was pressed and alters the button 2 color accordingly. Button 2 effectively toggles from "off" to "on" or from "on"  back to "off" again each time it is pressed.  If it is "off" and I push it, it goes "on" and stays "on" until I push it again.  I hope my explanation of that simple function did not make it even more confusinger.  Back to the code!

</p>

<p>


</p>

<p>

When the slider is moved, it changes the value of the text for the slider label.

</p>

<p>


</p>

<p>

All fairly simple.  Now for the test.  In episode 5 you can witness me building my morse code keyer app and downloading it to my CYD, only to have the touchscreen input fail spectacularly.  I know there wasn't a hardware failure because the application which was pre-installed when I purchased the CYD worked perfectly. Additionally a pre-compiled application built for the CYD which I loaded from Brian Lough's WitnessMeNow GitHub site (
<a href="https://github.com/witnessmenow/ESP32-Cheap-Yellow-Display" rel="noopener noreferrer" target="_blank">
https://github.com/witnessmenow/ESP32-Cheap-Yellow-Display</a>

) also worked perfectly.

</p>

<p>


</p>

<p>

So, now it was time to, once again verify that the proper libraries are loaded in the library manager, and then copy the "Hello World" TFT Display &amp; Touchscreen test code from Random Tutorials and paste it into Arduino IDE, section by section, making certain, again, that I understand what each section does.

</p>

<p>


</p>

<p>

Please note: I spent years of my youth manually typing programs from magazines into computers.  Back then, my eyes worked better and my brain worked better.  And I often spent more time troubleshooting and trying to find all my typos than I did actually typing the program.  So, YES, I will copy &amp; paste other people's programs every time I can (And include proper attribution).  After all, this is a test, and if it works, it could even be the foundation upon which I build the application I really want.

</p>

<p>


</p>

<p>

I connected my CYD's USB-C port to my computer and verified the COM port Windows has chosen to assign to it.  Next, per the instructions in the tutorial, within Arduino IDE, I selected the "board" type that I was using as "ESP32 Dev Module", and specified the COM port to which it is connected.  With a deep breath and a short prayer, I clicked the "Upload" button.

</p>

<p>


</p>

<p>

After what seemed like an eternity compiling, but was actually closer to 36 seconds, I saw the screen on my CYD showing exactly what it should, and proudly displaying "Hello, world!"

</p>

<p>

</p>

<p>

<a href="https://hackerpublicradio.org/eps/hpr4624/hpr4624_image_2.jpeg">
<img src="https://hackerpublicradio.org/eps/hpr4624/hpr4624_image_2_tn.jpeg">
</a>

</p>

<p>

</p>

<p>

Now will the touchscreen work?  I clicked button 1.

</p>

<p>

</p>

<p>

<a href="https://hackerpublicradio.org/eps/hpr4624/hpr4624_image_3.jpeg">
<img src="https://hackerpublicradio.org/eps/hpr4624/hpr4624_image_3_tn.jpeg">
</a>

</p>

<p>


</p>

<p>


</p>

<p>

The button changed color when I was pressing it, and returned to normal when released.   Now for button 2. 

</p>

<p>


</p>

<p>

A tap toggled it from orange to blue and another toggled it back to orange again.

</p>

<p>


</p>

<p>

<a href="https://hackerpublicradio.org/eps/hpr4624/hpr4624_image_4.jpeg">
<img src="https://hackerpublicradio.org/eps/hpr4624/hpr4624_image_4_tn.jpeg">
</a>

</p>

<p>


</p>

<p>

Finally, the slider test.

</p>

<p>


</p>

<p>

Moving the slider did work, and changed the percentage value being displayed below the control.

</p>

<p>


</p>

<p>

<a href="https://hackerpublicradio.org/eps/hpr4624/hpr4624_image_5.jpeg">
<img src="https://hackerpublicradio.org/eps/hpr4624/hpr4624_image_5_tn.jpeg">
</a>

</p>

<p>


</p>

<p>

Everything worked!  Now we are getting somewhere.  There are photos in the shownotes. 

</p>

<p>


</p>

<p>

What next? I had a few options:

</p>

<p>


</p>

<ol>

<li>

I could use what I had learned from "Hello World" to begin building my GUI once again, part by part, but this time manually as code directly within Arduino IDE.  To start with, I would need to learn how to build different screens and navigate between them.

</li>

<li>

I was not thrilled with my experience using SquareLine Studio.  It is a commercial tool, and the licensing is a pain.  I recently discovered an open source option called EEZ Studio.  I could load it and try to rebuild the GUI a little at a time, examining the code produced as I go along.

</li>

<li>

Other options?  I'm sure there are dozens, but I need more information before I can make a choice.

</li>

</ol>

<p>


</p>

<p>

In the end, I chose "None of the above."  I decided to take a closer look at the code which SquareLine built for my GUI and try to learn what in there.

</p>

<p>


</p>

<p>

It turns out there was quite a bit.  Granted, I had built 3 different screens with quite a number of buttons and some other controls.  But where "Hello World" included all the code in a single .ino file, SquareLine had created a number of files:

</p>

<p>


</p>

<ul>

<li>

CMakeLists.txt &amp; Filelist.txt seem to be artifacts from when the GUI code was exported from SquareLine.

</li>

<li>

ui.ino is an Arduino C file with several of the same foundational structures found in "Hello World" for configuring and initializing libraries to work with the CYD.  Some of these differ from "Hello World", and will require comparison.

</li>

<li>

ui.c starts with a "Variables" section for defining screen, control and label names. It also has a "Functions" section with code for event handling. Finally, it has a "Screens" section which defines functions for each of the different application screens built within SquareLine: Send, Config, and Keyboard.

</li>

<li>

ui.h really does not have much in it.  I will need to research what it does

</li>

<li>

ui_Send_Screen.c, ui_Config_Screen.c, &amp; ui_Keyboard_Screen.c create all the controls and labels on each screen, specifying location, size, and some functionality.

</li>

<li>

ui_events.h also seems to have very little in it, like ui.h.  More research is needed.

</li>

<li>

ui_comp_hook.c simply includes the list of libraries with their versions along with the project name header, common to most of the files in this list.

</li>

<li>

ui_helpers.c has code related to properties for several of the controls in the project

</li>

<li>

ui_helpers.h is the only of the .h with any real amount of code in it.

</li>

</ul>

<p>


</p>

<p>

You can find all of these files on my github repository at 
<a href="https://github.com/jttrey3/CYD_MorseSender-v0.4" rel="noopener noreferrer" target="_blank">
https://github.com/jttrey3/CYD_MorseSender-v0.4</a>



</p>

<p>


</p>

<p>

This was interesting, but it didn't really get me anywhere.  Remember I mentioned a YouTube video by LVGL_BEGINNER where I first saw reference to EEZ Studio.  It was titled "LVGL ESP32 2432S028R CYD example with EEZ Studio" (
<a href="https://www.youtube.com/watch?v=1fXV2woCHqA" rel="noopener noreferrer" target="_blank">
LVGL ESP32 2432S028R CYD example with EEZ Studio</a>

).  In this video, the author shows how to use EEZ Studio to build a button.  Then he exports the code (A bunch of files like SquareLline did), copies all the created files into the same folder where his .ino file resides, and he integrates it into a "Template" .ino file designed by RandomNerds for the CYD, using an include statement and a function call.

</p>

<p>


</p>

<p>

I went back to my old ui.ino file from SquareLine.  It seems to only interact with the remainder of the ui files through an "#include &lt;ui.h&gt;" line and through a "ui_init();" function call.  What if, my issues were within ui.ino itself in the way it configured the board or instantiated the libraries or something?  

</p>

<p>


</p>

<p>

I have a working foundation to build on.  I made a copy of the template and moved it into a new test folder. I copied all the SquareLine created ui files into the same folder except for "ui.ino"  Next, I edited this version of "Hello World" and removed all the event handlers and the entire "lv_create_main_gui" function.  Finally, I replaced the  "lv_create_main_gui();" function call with "ui_init();"

</p>

<p>


</p>

<p>

This couldn't work, could it?  It was worth a shot.  I could always revert back to my saved copy of "Hello World" and try something different.

</p>

<p>


</p>

<p>

I reconnected the CYD to the USB-C cable and clicked the "Upload" button in Arduino IDE, then waited for what seemed like another eternity while the code compiled. This time, much longer than 36 seconds.  I pondered searching YouTube for the Jeopardy game show theme music to play in the background while I waited.

</p>

<p>


</p>

<p>

Finally, the screen on the CYD went black, and, amazingly, it displayed the "Send" screen I had originally built in SquareLine.  "Okay, Trey", I thought to myself, "Don't get your hopes up.  You have seen this before."  The real test is if any of the buttons work.

</p>

<p>


</p>

<p>

<a href="https://hackerpublicradio.org/eps/hpr4624/hpr4624_image_6.jpeg">
<img src="https://hackerpublicradio.org/eps/hpr4624/hpr4624_image_6_tn.jpeg">
</a>


</p>

<p>


</p>

<p>

I tapped the "Config" button...

</p>

<p>


</p>

<p>

The "Send" screen began to slide to the left, to be replaced with the "Config" screen.  It worked! 

</p>

<p>


</p>

<p>

<a href="https://hackerpublicradio.org/eps/hpr4624/hpr4624_image_7.jpeg">
<img src="https://hackerpublicradio.org/eps/hpr4624/hpr4624_image_7_tn.jpeg">
</a>


</p>

<p>


</p>

<p>

I tapped the "Keyboard" screen... The "Config" screen slid to the left, and the "Keyboard" screen slid into its place.

</p>

<p>


</p>

<p>

<a href="https://hackerpublicradio.org/eps/hpr4624/hpr4624_image_8.jpeg">
<img src="https://hackerpublicradio.org/eps/hpr4624/hpr4624_image_8_tn.jpeg">
</a>


</p>

<p>


</p>

<p>

I shouted loud enough to scare both cats, and they jumped from their sleeping spots on the bed in my office and ran out the door. 

</p>

<p>


</p>

<p>

It worked. I still have a ton of work to do, in the GUI and on the actual program to send Morse.  But this is a good place to stop and savor a bit of success.

</p>

<p>


</p>

<p>

I look forward to any feedback you might have.  Please post it as a comment or send me an email using the address listed in my HPR profile.  

</p>

<p>


</p>

<p>

Have an amazing day, and I will talk to you again in my next episode.

</p>

<p>

</p>


<p><a href="https://hackerpublicradio.org/eps/hpr4624/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4623: A brief infodump on the Broadcast Address and Routing]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.



Hello Hacker Public Radio, this is JonTheNiceGuy.








On the 

HPR Community News for January 2025

, Ken, Kevie and Some Guy On The Internet were talking about network addresses. As this was part of my job for several years, I thoug...]]></description>
<link>https://tsecurity.de/de/3453156/it+sicherheit/it+podcasts/hpr4623+a+brief+infodump+on+the+broadcast+address+and+routing/</link>
<pubDate>Wed, 22 Apr 2026 02:02:39 +0200</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>

<p>

Hello Hacker Public Radio, this is JonTheNiceGuy.
</p>

<p>

</p>

<p>

On the 
<a href="https://hackerpublicradio.org/eps/hpr4306/index.html" rel="noopener noreferrer" target="_blank">
HPR Community News for January 2025</a>

, Ken, Kevie and Some Guy On The Internet were talking about network addresses. As this was part of my job for several years, I thought I might talk about this for a couple of minutes.
</p>

<p>

</p>

<p>

All IP Networks now use what we refer to as 
<a href="https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing" rel="noopener noreferrer" target="_blank">
CIDR</a>

 based addressing, so you'll often see these expressed as "/24", "/16" and so on. This is "how many '1s' are in the binary representation of the local portion of this network. Windows is one of the last remaining platforms to refer to these as Netmasks, and express them as the four octets in decimal representation of those 1s, so /24 is 24 1s in a row, or 255.255.255.0, /16 is 255.255.0.0 and so on.
</p>

<p>

</p>

<p>

But what does this have to do with networks and networking? There are two pieces to this, the first is for Broadcasts, or how a node with an IPv4 address asks all the local nodes in an IPv4 network address range how to find other things, and the other is for routing.
</p>

<p>

</p>

<p>

Let's talk about Broadcasts. Right, so back when IPv4 (or just TCP/IP as we knew it then) was being developed to integrate into operating systems, most developers read the Request for Comments document about this new IP protocol and put the address that the devices should contact to talk to all the hosts on the local network segment, or the "broadcast address" as it's better known, as the last available IP address in that subnet. In a /24, that would be the .255 address in the subnet. The engineers at, from memory, either Sun Microsystems or DEC, read the same document and called that address the "Network Address" and made it the first available IP address in the subnet, the .0.
</p>

<p>

</p>

<p>

In the end the "Broadcast" address won out in IPv4 networks, and the Network address was left to history, but there are still just enough of those legacy systems knocking around that it was always seen as a bit of a risk to allow the Network Address back into the pool of addresses...
</p>

<p>

</p>

<p>

This is most often currently seen in printer setups, or for ARP address requests, but has largely fallen out of favour, in favour of Multicasts. In fact, so much so, that IPv6 has dropped the broadcast address entirely, and uses multicast.
</p>

<p>

</p>

<p>

But why does the number of bits matter?
</p>

<p>

</p>

<p>

This now comes back to routing.
</p>

<p>

</p>

<p>

Routing is where a host works out what the most specific route is to get to a given IP address. On a typical home IPv4 network this is fairly binary - you have a default gateway, usually on either .1 or .254 in your /24, and most of the traffic goes to that. In networks which need a highly available, or HA, router setup, you may see up to three IP addresses being used by your router, with some method of mapping the "virtual" address of the next hop gateway to a physical device. That said, even on that simple home network, there are at least two other networks which are used, and that's your "local" or "loopback" interface, which is able to use all the addresses in the range 127.0.0.0/8, but typically only binds to 127.0.0.1, and the network you are connected to, which doesn't require routing. Most home routers use 192.168.0.0/24 or 192.168.1.0/24.
</p>

<p>

</p>

<p>

In order to work out how to get the next hop to the IP address you're trying to reach, the computer turns both the IP address you're trying to reach, and all the CIDR masks in the routing table into binary numbers, and then matches the one which is most specifically accurate to work out what to do with it.
</p>

<p>

</p>

<p>

So, for example, if you have an IP address of 10.0.0.1/8, then your network mask is 00001010. If you are trying to find another address in that network, you only need to match that first 8 bits. An address of 11.0.0.1 doesn't match, because the first 8 bits, 00001011 doesn't match the routed network. More specific routes will take longer to match, which is why some of the routing tables on the core networks dedicate whole CPU cores to matching parts of the routing table. It's also why in the pre-IPv4 exhaustion days, IP addresses were typically sold in large blocks, usually to single geographic regions, so that you only had to match a large supernet, or large block of subnets in one go, not lots of smaller subnets.
</p>

<p>

</p>

<p>

Once you understand this about IPv4, IPv6 works the same way for routing, except the address space is four times larger, with the number of bits in a network area being 128, as opposed to IPv4's 32 bits.
</p>

<p>

</p>

<p>

Thanks to the janitors for triggering this bit of an info dump, and I hope it's been of interest to you! 
</p>

<p>

</p>

<p>

This is jontheniceguy, signing off from HPR.
</p>


<p><a href="https://hackerpublicradio.org/eps/hpr4623/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[173: Tarjeteros]]></title>
<description><![CDATA[In the streets of the Dominican Republic, a new economy thrives in the shadows. It’s built not on tourism or sugar, but on stolen data. They call them tarjeteros. And they are making a lot of money from stolen credit cards. This is a story about one group of tarjeteros who came to the US, and let...]]></description>
<link>https://tsecurity.de/de/3450537/it+sicherheit/it+podcasts/173+tarjeteros/</link>
<pubDate>Tue, 21 Apr 2026 09:03:08 +0200</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>In the streets of the Dominican Republic, a new economy thrives in the shadows. It’s built not on tourism or sugar, but on stolen data. They call them tarjeteros. And they are making a lot of money from stolen credit cards. This is a story about one group of tarjeteros who came to the US, and let loose on New York city.</p><h3>Sponsors</h3><p>Support for this show comes from <a href="https://www.threatlocker.com/"><strong>ThreatLocker®</strong></a>. ThreatLocker® is a Zero Trust Endpoint Protection Platform that strengthens your infrastructure from the ground up. With ThreatLocker® Allowlisting and Ringfencing™, you gain a more secure approach to blocking exploits of known and unknown vulnerabilities. ThreatLocker® provides Zero Trust control at the kernel level that enables you to allow everything you need and block everything else, including ransomware! Learn more at <a href="https://www.threatlocker.com/"><strong>www.threatlocker.com</strong></a>.</p><p>This show is sponsored by <a href="http://mazehq.com/darknet"><strong>Maze</strong></a>. Maze uses AI agents to triage and remediate cloud vulnerabilities by figuring out what’s actually exploitable, not just what’s theoretically risky. They remove the noise, prioritize vulns that matter, and manage remediation, so your team stops wasting time on meaningless vulns. Visit <a href="http://mazehq.com/darknet"><strong>MazeHQ.com/darknet</strong></a> for more information.</p><p>Support for this show comes from <a href="https://privacy.com/darknet"><strong>Privacy.com</strong></a>. Privacy allows you to create anonymous debit cards instantly to use for online shopping. Visit <a href="https://privacy.com/darknet"><strong>privacy.com/darknet</strong></a> to get a special offer.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4622: Hackerpublic Radio New Years Eve Show 2026 Episode 5]]></title>
<description><![CDATA[This show has been flagged as Explicit by the host.







Nova Scotia 









https://novascotia.com/









Akron, Ohio









https://www.akronohio.gov/









Stow, Ohio









https://www.stowohio.gov/









Kent , Ohio









https://www....]]></description>
<link>https://tsecurity.de/de/3449880/it+sicherheit/it+podcasts/hpr4622+hackerpublic+radio+new+years+eve+show+2026+episode+5/</link>
<pubDate>Tue, 21 Apr 2026 02:02:44 +0200</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Explicit by the host.</p>

<p>

</p>

<p>

Nova Scotia 
</p>

<p>

</p>

<p>

<a href="https://novascotia.com/" rel="noopener noreferrer" target="_blank">
https://novascotia.com/</a>

</p>

<p>

</p>

<p>

Akron, Ohio
</p>

<p>

</p>

<p>

<a href="https://www.akronohio.gov/" rel="noopener noreferrer" target="_blank">
https://www.akronohio.gov/</a>

</p>

<p>

</p>

<p>

Stow, Ohio
</p>

<p>

</p>

<p>

<a href="https://www.stowohio.gov/" rel="noopener noreferrer" target="_blank">
https://www.stowohio.gov/</a>

</p>

<p>

</p>

<p>

Kent , Ohio
</p>

<p>

</p>

<p>

<a href="https://www.kentohio.gov/" rel="noopener noreferrer" target="_blank">
https://www.kentohio.gov/</a>

</p>

<p>

</p>

<p>

Kent State Riots
</p>

<p>

</p>

<p>

<a href="https://www.britannica.com/event/Kent-State-shootings" rel="noopener noreferrer" target="_blank">
https://www.britannica.com/event/Kent-State-shootings</a>

</p>

<p>

</p>

<p>

Cuyahoga Falls
</p>

<p>

</p>

<p>

<a href="https://www.downtowncf.com/" rel="noopener noreferrer" target="_blank">
https://www.downtowncf.com/</a>

</p>

<p>

</p>

<p>

HAZMAT Truck Certification
</p>

<p>

</p>

<p>

<a href="https://www.tsa.gov/for-industry/hazmat-endorsement" rel="noopener noreferrer" target="_blank">
https://www.tsa.gov/for-industry/hazmat-endorsement</a>

</p>

<p>

</p>

<p>

1095-C Form
</p>

<p>

</p>

<p>

<a href="https://www.irs.gov/forms-pubs/about-form-1095-c" rel="noopener noreferrer" target="_blank">
https://www.irs.gov/forms-pubs/about-form-1095-c</a>

</p>

<p>

</p>

<p>

Boston City Hall
</p>

<p>

</p>

<p>

<a href="https://en.wikipedia.org/wiki/Boston_City_Hall" rel="noopener noreferrer" target="_blank">
https://en.wikipedia.org/wiki/Boston_City_Hall</a>

</p>

<p>

</p>

<p>

Give Me 40 Acres (To Turn This Rig Around) - Willis Brothers (song)
</p>

<p>

</p>

<p>

<a href="https://genius.com/The-willis-brothers-give-me-40-acres-to-turn-this-rig-around-lyrics" rel="noopener noreferrer" target="_blank">
https://genius.com/The-willis-brothers-give-me-40-acres-to-turn-this-rig-around-lyrics</a>

</p>

<p>

</p>

<p>

<a href="https://en.wikipedia.org/wiki/Give_Me_Forty_Acres_(To_Turn_This_Rig_Around)" rel="noopener noreferrer" target="_blank">
https://en.wikipedia.org/wiki/Give_Me_Forty_Acres_(To_Turn_This_Rig_Around)</a>

</p>

<p>

</p>

<p>

Brutalist Architectural Style 
</p>

<p>

</p>

<p>

<a href="https://www.riba.org/explore/riba-collections/architectural-styles/brutalism-movement/" rel="noopener noreferrer" target="_blank">
https://www.riba.org/explore/riba-collections/architectural-styles/brutalism-movement/</a>

</p>

<p>

</p>

<p>

105 MM Howitzer
</p>

<p>

</p>

<p>

<a href="https://americangimuseum.org/collections/restored-vehicles/m2a1-105mm-howitzer-1941-1953/" rel="noopener noreferrer" target="_blank">
https://americangimuseum.org/collections/restored-vehicles/m2a1-105mm-howitzer-1941-1953/</a>

</p>

<p>

</p>

<p>

1812 Overture
</p>

<p>

</p>

<p>

<a href="https://www.kdfc.com/articles/tchaikovsky-1812-overture" rel="noopener noreferrer" target="_blank">
https://www.kdfc.com/articles/tchaikovsky-1812-overture</a>

</p>

<p>

</p>

<p>

Boston Tunnel Project aka The Big Dig
</p>

<p>

</p>

<p>

<a href="https://www.mass.gov/info-details/the-big-dig-project-background" rel="noopener noreferrer" target="_blank">
https://www.mass.gov/info-details/the-big-dig-project-background</a>

</p>

<p>

</p>

<p>

Camel Nose In Your Tent
</p>

<p>

</p>

<p>

<a href="https://markeckel.com/2024/06/18/the-camels-nose/" rel="noopener noreferrer" target="_blank">
https://markeckel.com/2024/06/18/the-camels-nose/</a>

</p>

<p>

</p>

<p>

Manhatten Project
</p>

<p>

</p>

<p>

<a href="https://www.nps.gov/mapr/learn/manhattan-project.htm" rel="noopener noreferrer" target="_blank">
https://www.nps.gov/mapr/learn/manhattan-project.htm</a>

</p>

<p>

</p>

<p>

Morgentown, West Virgina
</p>

<p>

</p>

<p>

<a href="https://www.morgantownwv.gov/" rel="noopener noreferrer" target="_blank">
https://www.morgantownwv.gov/</a>

</p>

<p>

</p>

<p>

Mount Blue State Park
</p>

<p>

</p>

<p>

<a href="https://apps.web.maine.gov/cgi-bin/online/doc/parksearch/details.pl?park_id=18" rel="noopener noreferrer" target="_blank">
https://apps.web.maine.gov/cgi-bin/online/doc/parksearch/details.pl?park_id=18</a>

</p>

<p>

</p>

<p>

Belgrade Lakes
</p>

<p>

</p>

<p>

<a href="https://visitmaine.com/articles/belgrade-lakes/" rel="noopener noreferrer" target="_blank">
https://visitmaine.com/articles/belgrade-lakes/</a>

</p>

<p>

</p>

<p>

T-34 Airplane
</p>

<p>

</p>

<p>

<a href="https://www.military.com/equipment/t-34c-turbo-mentor" rel="noopener noreferrer" target="_blank">
https://www.military.com/equipment/t-34c-turbo-mentor</a>

</p>

<p>

</p>

<p>

F5 Fighter
</p>

<p>

</p>

<p>

<a href="https://www.northropgrumman.com/what-we-do/aircraft/f5-tiger" rel="noopener noreferrer" target="_blank">
https://www.northropgrumman.com/what-we-do/aircraft/f5-tiger</a>

</p>

<p>

</p>

<p>

DC 3
</p>

<p>

</p>

<p>

<a href="https://www.britannica.com/technology/DC-3" rel="noopener noreferrer" target="_blank">
https://www.britannica.com/technology/DC-3</a>

</p>

<p>

</p>

<p>

C-47 
</p>

<p>

</p>

<p>

<a href="https://www.nationalww2museum.org/war/articles/douglas-c-47-skytrain" rel="noopener noreferrer" target="_blank">
https://www.nationalww2museum.org/war/articles/douglas-c-47-skytrain</a>

</p>

<p>

</p>

<p>

T-6 
</p>

<p>

</p>

<p>

<a href="https://www.af.mil/About-Us/Fact-Sheets/Display/Article/104548/t-6a-texan-ii/" rel="noopener noreferrer" target="_blank">
https://www.af.mil/About-Us/Fact-Sheets/Display/Article/104548/t-6a-texan-ii/</a>

</p>

<p>

</p>

<p>

Civil Air Patrol
</p>

<p>

</p>

<p>

<a href="https://www.gocivilairpatrol.com/" rel="noopener noreferrer" target="_blank">
https://www.gocivilairpatrol.com/</a>

</p>

<p>

</p>

<p>

F4U Corsair 
</p>

<p>

</p>

<p>

<a href="https://www.nationalww2museum.org/visit/museum-campus-guide/us-freedom-pavilion/george-hw-bush-aviation-gallery/vought-f4u-corsair" rel="noopener noreferrer" target="_blank">
https://www.nationalww2museum.org/visit/museum-campus-guide/us-freedom-pavilion/george-hw-bush-aviation-gallery/vought-f4u-corsair</a>

</p>

<p>

</p>

<p>

Black Sheep Squadron (TV Show)
</p>

<p>

</p>

<p>

<a href="https://www.rottentomatoes.com/m/black_sheep_squadron" rel="noopener noreferrer" target="_blank">
https://www.rottentomatoes.com/m/black_sheep_squadron</a>

</p>

<p>

</p>

<p>

Hawaii
</p>

<p>

</p>

<p>

<a href="https://www.gohawaii.com/" rel="noopener noreferrer" target="_blank">
https://www.gohawaii.com/</a>

</p>

<p>

</p>

<p>

F4 Phantom
</p>

<p>

</p>

<p>

<a href="https://www.collingsfoundation.org/aircrafts/f-4d-phantom/" rel="noopener noreferrer" target="_blank">
https://www.collingsfoundation.org/aircrafts/f-4d-phantom/</a>

</p>

<p>

</p>

<p>

Vietnam
</p>

<p>

</p>

<p>

<a href="https://vietnam.travel/node/1336" rel="noopener noreferrer" target="_blank">
https://vietnam.travel/node/1336</a>

</p>

<p>

</p>

<p>

Thailand
</p>

<p>

</p>

<p>

<a href="https://www.tourismthailand.org/Home" rel="noopener noreferrer" target="_blank">
https://www.tourismthailand.org/Home</a>

</p>

<p>

</p>

<p>

F14
</p>

<p>

</p>

<p>

<a href="https://airandspace.si.edu/collection-objects/grumman-f-14dr-tomcat/nasm_A20040156000" rel="noopener noreferrer" target="_blank">
https://airandspace.si.edu/collection-objects/grumman-f-14dr-tomcat/nasm_A20040156000</a>

</p>

<p>

</p>

<p>

F15
</p>

<p>

</p>

<p>

<a href="https://www.military.com/equipment/f-15-eagle" rel="noopener noreferrer" target="_blank">
https://www.military.com/equipment/f-15-eagle</a>

</p>

<p>

</p>

<p>

Fort Bliss
</p>

<p>

</p>

<p>

<a href="https://www.military.com/equipment/f-15-eagle" rel="noopener noreferrer" target="_blank">
https://www.military.com/equipment/f-15-eagle</a>

</p>

<p>

</p>

<p>

No Toilet Paper For Russian Troops 
</p>

<p>

</p>

<p>

<a href="https://en.wikipedia.org/wiki/Operation_Tamarisk" rel="noopener noreferrer" target="_blank">
https://en.wikipedia.org/wiki/Operation_Tamarisk</a>

</p>

<p>

</p>

<p>

Boston Linux User Group
</p>

<p>

</p>

<p>

<a href="https://blu.org/" rel="noopener noreferrer" target="_blank">
https://blu.org/</a>

</p>

<p>

</p>

<p>

Kit Carson Scout
</p>

<p>

</p>

<p>

<a href="https://www.vvaw.org/veteran/article/?id=4467" rel="noopener noreferrer" target="_blank">
https://www.vvaw.org/veteran/article/?id=4467</a>

</p>

<p>

</p>

<p>

Battleship New Jersey
</p>

<p>

</p>

<p>

<a href="https://battleshipnewjersey.org/" rel="noopener noreferrer" target="_blank">
https://battleshipnewjersey.org/</a>

</p>

<p>

</p>

<p>

USS Newport News
</p>

<p>

</p>

<p>

<a href="https://www.history.navy.mil/content/history/museums/nmusn/explore/photography/ships-us/ships-usn-n/uss-newport-news-ca-148.html" rel="noopener noreferrer" target="_blank">
https://www.history.navy.mil/content/history/museums/nmusn/explore/photography/ships-us/ships-usn-n/uss-newport-news-ca-148.html</a>

</p>

<p>

</p>

<p>

USS Iowa
</p>

<p>

</p>

<p>

<a href="https://pacificbattleship.com/#dipipopup-60889" rel="noopener noreferrer" target="_blank">
https://pacificbattleship.com/#dipipopup-60889</a>

</p>

<p>

</p>

<p>

Harpoon Missle
</p>

<p>

</p>

<p>

<a href="https://www.navair.navy.mil/product/Harpoon" rel="noopener noreferrer" target="_blank">
https://www.navair.navy.mil/product/Harpoon</a>

</p>

<p>

</p>

<p>

Tomahawk Missle
</p>

<p>

</p>

<p>

<a href="https://www.rtx.com/raytheon/what-we-do/sea/tomahawk-cruise-missile" rel="noopener noreferrer" target="_blank">
https://www.rtx.com/raytheon/what-we-do/sea/tomahawk-cruise-missile</a>

</p>

<p>

</p>

<p>

Predator Drones
</p>

<p>

</p>

<p>

<a href="https://www.af.mil/About-Us/Fact-Sheets/Display/Article/104469/mq-1b-predator/" rel="noopener noreferrer" target="_blank">
https://www.af.mil/About-Us/Fact-Sheets/Display/Article/104469/mq-1b-predator/</a>

</p>

<p>

</p>

<p>

M50
</p>

<p>

</p>

<p>

<a href="https://warfarehistorynetwork.com/article/the-m50-reising-submachine-gun/" rel="noopener noreferrer" target="_blank">
https://warfarehistorynetwork.com/article/the-m50-reising-submachine-gun/</a>

</p>

<p>

</p>

<p>

</p>

<p>

M249 SAW
</p>

<p>

</p>

<p>

<a href="https://www.peosoldier.army.mil/Equipment/Equipment-Portfolio/Project-Manager-Soldier-Lethality-Portfolio/M249-Squad-Automatic-Weapon/" rel="noopener noreferrer" target="_blank">
https://www.peosoldier.army.mil/Equipment/Equipment-Portfolio/Project-Manager-Soldier-Lethality-Portfolio/M249-Squad-Automatic-Weapon/</a>

</p>

<p>

</p>

<p>

M60 Machine Gun
</p>

<p>

</p>

<p>

<a href="https://www.thearmorylife.com/taking-the-pig-for-a-walk-history-of-the-m60/" rel="noopener noreferrer" target="_blank">
https://www.thearmorylife.com/taking-the-pig-for-a-walk-history-of-the-m60/</a>

</p>

<p>

</p>

<p>

M 240 Machine Gun
</p>

<p>

</p>

<p>

<a href="https://armyhistory.org/the-m240b-general-purpose-machine-gun/" rel="noopener noreferrer" target="_blank">
https://armyhistory.org/the-m240b-general-purpose-machine-gun/</a>

</p>

<p>

</p>

<p>

M79 Grenade Launcher
</p>

<p>

</p>

<p>

<a href="https://warfarehistorynetwork.com/article/the-m79-grenade-launcher/" rel="noopener noreferrer" target="_blank">
https://warfarehistorynetwork.com/article/the-m79-grenade-launcher/</a>

</p>

<p>

</p>

<p>

</p>

<p>

Mark 19 Grenade Launcher
</p>

<p>

</p>

<p>

<a href="https://www.peosoldier.army.mil/Equipment/Equipment-Portfolio/Project-Manager-Soldier-Lethality-Portfolio/MK19-Grenade-Machine-Gun/" rel="noopener noreferrer" target="_blank">
https://www.peosoldier.army.mil/Equipment/Equipment-Portfolio/Project-Manager-Soldier-Lethality-Portfolio/MK19-Grenade-Machine-Gun/</a>

</p>

<p>

</p>

<p>

Fletchette Round
</p>

<p>

</p>

<p>

<a href="https://warfarehistorynetwork.com/article/the-m79-grenade-launcher/" rel="noopener noreferrer" target="_blank">
https://warfarehistorynetwork.com/article/the-m79-grenade-launcher/</a>

</p>

<p>

</p>

<p>

M16 Rifle
</p>

<p>

</p>

<p>

<a href="https://www.secureitgunstorage.com/the-history-of-the-m16-with-fun-facts-trivia/" rel="noopener noreferrer" target="_blank">
https://www.secureitgunstorage.com/the-history-of-the-m16-with-fun-facts-trivia/</a>

</p>

<p>

</p>

<p>

M14 Rifle
</p>

<p>

</p>

<p>

<a href="https://www.britannica.com/technology/M14-rifle" rel="noopener noreferrer" target="_blank">
https://www.britannica.com/technology/M14-rifle</a>

</p>

<p>

</p>

<p>

MIT 
</p>

<p>

</p>

<p>

<a href="https://www.mit.edu/education/" rel="noopener noreferrer" target="_blank">
https://www.mit.edu/education/</a>

</p>

<p>

</p>

<p>

Raufoss Mk 211 anti-materiel high-explosive incendiary/armor-piercing ammunition projectile
</p>

<p>

</p>

<p>

<a href="https://smallarmsreview.com/raufoss-multipurpose-ammo/" rel="noopener noreferrer" target="_blank">
https://smallarmsreview.com/raufoss-multipurpose-ammo/</a>

</p>

<p>

</p>

<p>

Barrett Rifles
</p>

<p>

</p>

<p>

<a href="https://barrett.net/products/firearms/" rel="noopener noreferrer" target="_blank">
https://barrett.net/products/firearms/</a>

</p>

<p>

</p>

<p>

Port Arms
</p>

<p>

</p>

<p>

<a href="https://www.collinsdictionary.com/us/dictionary/english/port-arms" rel="noopener noreferrer" target="_blank">
https://www.collinsdictionary.com/us/dictionary/english/port-arms</a>

</p>

<p>

</p>

<p>

PTSD
</p>

<p>

</p>

<p>

<a href="https://www.mayoclinic.org/diseases-conditions/post-traumatic-stress-disorder/symptoms-causes/syc-20355967" rel="noopener noreferrer" target="_blank">
https://www.mayoclinic.org/diseases-conditions/post-traumatic-stress-disorder/symptoms-causes/syc-20355967</a>

</p>

<p>

</p>

<p>

M1 Garand
</p>

<p>

</p>

<p>

<a href="https://thegca.org/m1-garand-history/" rel="noopener noreferrer" target="_blank">
https://thegca.org/m1-garand-history/</a>

</p>

<p>

</p>

<p>

Meet Boston
</p>

<p>

</p>

<p>

<a href="https://www.meetboston.com/" rel="noopener noreferrer" target="_blank">
https://www.meetboston.com/</a>

</p>

<p>

</p>

<p>

Chop Logic
</p>

<p>

</p>

<p>

<a href="https://www.hilotutor.com/archives_chop-logic.html" rel="noopener noreferrer" target="_blank">
https://www.hilotutor.com/archives_chop-logic.html</a>

</p>

<p>

</p>

<p>

Mumble 
</p>

<p>

</p>

<p>

<a href="https://www.mumble.info/" rel="noopener noreferrer" target="_blank">
https://www.mumble.info/</a>

</p>

<p>

</p>

<p>

Proxmox
</p>

<p>

</p>

<p>

<a href="https://www.proxmox.com/en/" rel="noopener noreferrer" target="_blank">
https://www.proxmox.com/en/</a>

</p>

<p>

</p>

<p>

Spice
</p>

<p>

</p>

<p>

<a href="https://www.spice-space.org/" rel="noopener noreferrer" target="_blank">
https://www.spice-space.org/</a>

</p>

<p>

</p>

<p>

VAX Computers
</p>

<p>

</p>

<p>

<a href="https://www.stromasys.com/resources/vax-computer-systems-an-in-depth-guide/" rel="noopener noreferrer" target="_blank">
https://www.stromasys.com/resources/vax-computer-systems-an-in-depth-guide/</a>

</p>

<p>

</p>

<p>

MIT Radar Lab Development WW II
</p>

<p>

</p>

<p>

<a href="https://www.technologyreview.com/2024/10/22/1104766/how-mits-rad-lab-rescued-d-day/" rel="noopener noreferrer" target="_blank">
https://www.technologyreview.com/2024/10/22/1104766/how-mits-rad-lab-rescued-d-day/</a>

</p>

<p>

</p>

<p>

DOS
</p>

<p>

</p>

<p>

<a href="https://www.techtarget.com/searchsecurity/definition/DOS" rel="noopener noreferrer" target="_blank">
https://www.techtarget.com/searchsecurity/definition/DOS</a>

</p>

<p>

</p>

<p>

PDP-11
</p>

<p>

</p>

<p>

<a href="https://www.computercollection.net/index.php/pdp-11-family/" rel="noopener noreferrer" target="_blank">
https://www.computercollection.net/index.php/pdp-11-family/</a>

</p>

<p>

</p>

<p>

Playboy
</p>

<p>

</p>

<p>

<a href="https://www.playboy.com/" rel="noopener noreferrer" target="_blank">
https://www.playboy.com/</a>

</p>

<p>

</p>

<p>

PDP-1
</p>

<p>

</p>

<p>

<a href="https://computerhistory.org/exhibits/pdp-1/" rel="noopener noreferrer" target="_blank">
https://computerhistory.org/exhibits/pdp-1/</a>

</p>

<p>

</p>

<p>

ed - The Unix Line Editor
</p>

<p>

</p>

<p>

<a href="https://medium.com/predict/using-ed-the-unix-line-editor-557ed6466660" rel="noopener noreferrer" target="_blank">
https://medium.com/predict/using-ed-the-unix-line-editor-557ed6466660</a>

</p>

<p>

</p>

<p>

MicroVax
</p>

<p>

</p>

<p>

<a href="https://www.computinghistory.org.uk/det/10535/Digital-MicroVAX-3100/" rel="noopener noreferrer" target="_blank">
https://www.computinghistory.org.uk/det/10535/Digital-MicroVAX-3100/</a>

</p>

<p>

</p>

<p>

ChaosNet
</p>

<p>

</p>

<p>

<a href="https://chaosnet.net/" rel="noopener noreferrer" target="_blank">
https://chaosnet.net/</a>

</p>

<p>

</p>

<p>

Vampire Tap
</p>

<p>

</p>

<p>

<a href="https://www.pcgamer.com/the-year-is-1983-and-im-about-to-vampire-tap-my-thick-ethernet/" rel="noopener noreferrer" target="_blank">
https://www.pcgamer.com/the-year-is-1983-and-im-about-to-vampire-tap-my-thick-ethernet/</a>

</p>

<p>

</p>

<p>

MIT Project Athena
</p>

<p>

</p>

<p>

<a href="https://news.mit.edu/2018/mit-looking-back-project-athena-distributed-computing-for-students-1111" rel="noopener noreferrer" target="_blank">
https://news.mit.edu/2018/mit-looking-back-project-athena-distributed-computing-for-students-1111</a>

</p>

<p>

</p>

<p>

XWindows
</p>

<p>

</p>

<p>

<a href="https://www.x.org/wiki/" rel="noopener noreferrer" target="_blank">
https://www.x.org/wiki/</a>

</p>

<p>

</p>

<p>

Windows 3.1
</p>

<p>

</p>

<p>

<a href="https://classicreload.com/win3x-windows-31.html" rel="noopener noreferrer" target="_blank">
https://classicreload.com/win3x-windows-31.html</a>

</p>

<p>

</p>

<p>

Windows 3..11
</p>

<p>

</p>

<p>

<a href="https://winworldpc.com/product/windows-3/311" rel="noopener noreferrer" target="_blank">
https://winworldpc.com/product/windows-3/311</a>

</p>

<p>

</p>

<p>

FTP
</p>

<p>

</p>

<p>

<a href="https://www.geeksforgeeks.org/computer-science-fundamentals/file-transfer-protocol-ftp/" rel="noopener noreferrer" target="_blank">
https://www.geeksforgeeks.org/computer-science-fundamentals/file-transfer-protocol-ftp/</a>

</p>

<p>

</p>

<p>

Teletype Model 33 ASR
</p>

<p>

</p>

<p>

<a href="https://www.curiousmarc.com/mechanical/teletype-asr-33" rel="noopener noreferrer" target="_blank">
https://www.curiousmarc.com/mechanical/teletype-asr-33</a>

</p>

<p>

</p>

<p>

Boston Molasses Flood
</p>

<p>

</p>

<p>

<a href="https://www.boston.gov/news/100-years-ago-today-molasses-crashes-through-bostons-north-end" rel="noopener noreferrer" target="_blank">
https://www.boston.gov/news/100-years-ago-today-molasses-crashes-through-bostons-north-end</a>

</p>

<p>

</p>

<p>

PDP-8 
</p>

<p>

</p>

<p>

<a href="https://www.computerhistory.org/revolution/minicomputers/11/331" rel="noopener noreferrer" target="_blank">
https://www.computerhistory.org/revolution/minicomputers/11/331</a>

</p>

<p>

</p>

<p>

Toll House Cookies
</p>

<p>

</p>

<p>

<a href="https://www.verybestbaking.com/toll-house/recipes/chocolate-chip-cookies/" rel="noopener noreferrer" target="_blank">
https://www.verybestbaking.com/toll-house/recipes/chocolate-chip-cookies/</a>

</p>

<p>

</p>

<p>

Boston Bruins
</p>

<p>

</p>

<p>

<a href="https://www.nhl.com/bruins/" rel="noopener noreferrer" target="_blank">
https://www.nhl.com/bruins/</a>

</p>

<p>

</p>

<p>

Hit Somebody (Song by Warren Zevon)
</p>

<p>

</p>

<p>

<a href="https://genius.com/Warren-zevon-hit-somebody-the-hockey-song-lyrics" rel="noopener noreferrer" target="_blank">
https://genius.com/Warren-zevon-hit-somebody-the-hockey-song-lyrics</a>

</p>

<p>

</p>

<p>

Slapshot 
</p>

<p>

</p>

<p>

<a href="https://www.rottentomatoes.com/m/slap_shot" rel="noopener noreferrer" target="_blank">
https://www.rottentomatoes.com/m/slap_shot</a>

</p>

<p>

</p>

<p>

Skrewball Whiskey
</p>

<p>

</p>

<p>

<a href="https://www.skrewballwhiskey.com/" rel="noopener noreferrer" target="_blank">
https://www.skrewballwhiskey.com/</a>

</p>

<p>

</p>

<p>

Chicago
</p>

<p>

</p>

<p>

<a href="https://www.chicago.gov/city/en.html" rel="noopener noreferrer" target="_blank">
https://www.chicago.gov/city/en.html</a>

</p>

<p>

</p>


<p><a href="https://hackerpublicradio.org/eps/hpr4622/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4621: Android volume control help]]></title>
<description><![CDATA[This show has been flagged as Explicit by the host.


NO NOTES



Provide feedback on this episode.]]></description>
<link>https://tsecurity.de/de/3446824/it+sicherheit/it+podcasts/hpr4621+android+volume+control+help/</link>
<pubDate>Mon, 20 Apr 2026 02:02:48 +0200</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Explicit by the host.</p>

<p>
NO NOTES
</p>


<p><a href="https://hackerpublicradio.org/eps/hpr4621/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4620: The Second Doctor, Part 1]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.
This starts our look at the stories of the Second Doctor, portrayed by Patrick Troughton, during the 1960s.

The Second Doctor, Part 1
										
Patrick Troughton is the reason we are still talking about Doctor Who all these years later. He took o...]]></description>
<link>https://tsecurity.de/de/3440412/it+sicherheit/it+podcasts/hpr4620+the+second+doctor+part+1/</link>
<pubDate>Fri, 17 Apr 2026 02:04:08 +0200</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>
<p>This starts our look at the stories of the Second Doctor, portrayed by Patrick Troughton, during the 1960s.</p>

<h1 class="entry-title">The Second Doctor, Part 1</h1>
										
<p><a href="https://en.wikipedia.org/wiki/Patrick_Troughton" data-type="link" data-id="https://en.wikipedia.org/wiki/Patrick_Troughton" target="_blank" rel="noreferrer noopener">Patrick Troughton</a> is the reason we are still talking about Doctor Who all these years later. He took over the lead role in a popular and successful show and continued the success. It might have been a disaster, but it wasn’t. And Troughton did not attempt to be another Hartnell, he had his own distinct way of playing the part. He established the principle that the personality of the Doctor changes when he (or she) regenerates. This made it much easier on all the actors who followed him in the role, and each one has been very distinctive in how they embodied the Doctor. Sadly, many of his episodes, and some complete stories, are missing now due to the short-sighted policy of the BBC the discard older shows, in many cases wiping video tapes for reuse. Of course, you can’t blame them <em>too</em> much since I doubt anyone in the 1960s would have believed that the show would still be going over 60 years later. But there is always hope that some more episodes will be recovered. There are people who collect old TV shows in various formats such as film and video tape, and it is virtually certain that some missing Doctor Who episodes still exist in private collectors’ hands, though how many is not known.</p>



<p>To take the place of the missing episodes we have reconstructions using <em>telesnaps</em> (photos taken of the monitor screen), animations, and for a few Troughton stories fans have re-staged the stories as stage plays. So there are ways to experience at least a little of these missing episodes. And even as I write this there are indications that more episodes may be found and returned to the BBC .</p>



<p>Troughton took over in the third story of Season 4, which aired in late 1966.</p>



<h2><a href="https://en.wikipedia.org/wiki/The_Power_of_the_Daleks" data-type="link" data-id="https://en.wikipedia.org/wiki/The_Power_of_the_Daleks" target="_blank" rel="noreferrer noopener">Power of the Daleks</a></h2>



<p>This is the first story for Patrick Troughton as the Doctor, and starting with the Daleks was a smart move. They were so popular that they guaranteed a good audience and would get Troughton off to a good start. The TARDIS lands on a planet called Vulcan, where a scientist has found a derelict ship containing a few Daleks. He thinks he can bring them back to life, and won’t listen to the Doctor who tries to warn him. Meanwhile, rebels on Vulcan are trying to overthrow the government there. In the end, the scientist sacrifices himself to help stop the Daleks, the rebels succeed in overthrowing the fascist dictator, and all is well. For now. Ben and Polly are along as the companions continuing their stay on the TARDIS after starting with the First Doctor in the War Machines</p>



<p>This is one of the completely missing stories, but there is an animated version which is available on DVD, or you can watch it on <a href="https://www.youtube.com/watch?v=gX1DN7yHneA" data-type="link" data-id="https://www.youtube.com/watch?v=gX1DN7yHneA" target="_blank" rel="noreferrer noopener">YouTube</a>. </p>



<h2><a href="https://en.wikipedia.org/wiki/The_Highlanders_(Doctor_Who)" data-type="link" data-id="https://en.wikipedia.org/wiki/The_Highlanders_(Doctor_Who)" target="_blank" rel="noreferrer noopener">The Highlanders</a></h2>



<p>And another historical story, taking us to the Battle of Culloden in 1746, where the last gasp of the Jacobite rebellion was snuffed out by the English army. The TARDIS crew are first captured by the Scots, who are not kindly disposed to people who are obviously English. Then they are captured by the English, who have decided they are traitors and want to hang them. After various adventures, they get away, and bring with them a young Scottish lad named Jamie, who becomes the third member of the TARDIS team when he promises to teach the Doctor to play the bagpipes. An average historical story made memorable by the introduction of the next truly beloved companion, Jamie. He would stay with the Doctor all the way through the end of Troughton’s run, and is still in high demand as a guest at Doctor Who conventions around the world. He was not actually intended to be a companion at first. They had shot two endings, one where he joins the Doctor, and another where he is left in Scotland. They did decide to keep him, but in the  next few stories, for which the scripts had already been written, he is less central to the plot and sometimes get lines originally written for another character.</p>



<p>This is another story where all of the episodes are missing, though there are reconstructions available.</p>



<h2><a href="https://en.wikipedia.org/wiki/The_Underwater_Menace" data-type="link" data-id="https://en.wikipedia.org/wiki/The_Underwater_Menace" target="_blank" rel="noreferrer noopener">The Underwater Menace</a></h2>



<p>The TARDIS team arrives on an island formed by an extinct volcano, where they are brought underground to a sunken city. They are told that their arrival was foretold by the goddess of the city, and that they would be sacrificed. They are rescued by a scientist known to the doctor, but it turns out he has gone quite mad. The city is Atlantis, and he says he will raise it, but his plan involves blowing up everything with nuclear bombs. The underwater scenes of swimming ladies are quite hilarious, but it is an inventive little story. The scene of the mad scientist raging as he disappears under the water is pretty good too, in a campy way.</p>



<p>Early in Patrick Troughton’s run as The Doctor the show dropped much of the history and focused more on monsters and SF to compete with shows like <em>Lost in Space</em> and <em>Land of the Giant</em>s.</p>



<p>This story is missing two of the 4 episodes, but reconstructions exist for the two missing episodes.</p>



<h2><a href="https://en.wikipedia.org/wiki/The_Moonbase" data-type="link" data-id="https://en.wikipedia.org/wiki/The_Moonbase" target="_blank" rel="noreferrer noopener">The Moonbase</a></h2>



<p>The Cybermen are back, and this time they are attacking a base on the Moon. They have been infiltrating the base through a hole in a basement wall, which is where you scratch your head and wonder why the air doesn’t all leak out through this hole. And since the Cybermen are still significantly organic, how are they breathing in vacuum? Still, the Doctor puts the emphasis on science as the way to defeat them. The return of the Cybermen was sufficiently popular for them to become the acknowledged second best enemy of the Doctor, after the Daleks, of course. And as such they would come back again in several of the Troughton’s stories, and continued up to the present to be featured in Doctor Who.</p>



<p>This story is also missing two of its episodes, but they have been animated so you can get a decent experience of the story now. And there is at least one decent jump scare here.</p>



<h2><a href="https://en.wikipedia.org/wiki/The_Macra_Terror" data-type="link" data-id="https://en.wikipedia.org/wiki/The_Macra_Terror" target="_blank" rel="noreferrer noopener">The Macra Terror</a></h2>



<p>The Macra made an appearance in the David Tennant story Gridlock, but this is where they began. The TARDIS materializes on a planet where a colony seems very happy, except for one malcontent who claims he has seen huge crab-like beings at night. Then the Doctor sees them as well, but no one else seems to notice them. It turns out these creatures are good at conditioning people to not see them, and to believe what they are told to believe. Ben ends up brainwashed by them, though the others escape this. And the colony is busily engaged in producing some kind of gas, and this turns out to be essential to the Macra. Oxygen is poisonous to them, they need the gas. Finally Ben breaks his conditioning and rescues the others, and the Macra are defeated. Why they reappeared in Gridlock was never clear to me, it looked like an Easter Egg for long-time fans that was never explained or justified.</p>



<p>This is another story that is missing all of its episodes in original form, but an animated version has been released, and is available on DVD and on <a href="https://www.youtube.com/watch?v=unipaGm8Pbo" data-type="link" data-id="https://www.youtube.com/watch?v=unipaGm8Pbo" target="_blank" rel="noreferrer noopener">YouTube</a>.</p>



<h2><a href="https://en.wikipedia.org/wiki/The_Faceless_Ones" data-type="link" data-id="https://en.wikipedia.org/wiki/The_Faceless_Ones" target="_blank" rel="noreferrer noopener">The Faceless Ones</a></h2>



<p>This is a very good, inventive story that purports to take place at Gatwick Airport, though it is of course not really shot there, but at a smaller place nearby. The TARDIS materializes there, and the first problem is that none of them have passports! This is the only thing matters to the immigration people at the airport. Meanwhile, something puzzling is going on with a company called Chameleon Tours. One young lady, played by Pauline Collins, is trying to find out what happened to her brother, who went on a tour with them, sent a postcard, and then vanished. It turns out that the folks running Chameleon Tours are an alien race of Shape-shifters, hence the “Faceless Ones”, who are kidnapping people to help repopulate their planet. The obvious plot hole is that this would involve repopulating with people, not Chamelelons, but never let that get in the way of what is otherwise a nice romp full of action and suspense. The production team was hoping to get Collins as a companion, but she turned them down. At the end, Ben and Polly take advantage of the fact they are on Earth at the proper time, and decide to leave the TARDIS and get on with their lives. So now only Jamie is left. I bet that won’t be true for long.</p>



<p>For this story 4 of the 6 episodes are missing, but again this is a story that got the complete animation treatment. You can purchase the DVD, or watch it on <a href="https://www.youtube.com/watch?v=ovSHAcu7g4A" data-type="link" data-id="https://www.youtube.com/watch?v=ovSHAcu7g4A" target="_blank" rel="noreferrer noopener">YouTube</a>.</p>


<h3>Links:</h3>
<ul>
<li><a href="https://en.wikipedia.org/wiki/Patrick_Troughton">https://en.wikipedia.org/wiki/Patrick_Troughton</a></li>
<li><a href="https://en.wikipedia.org/wiki/The_Power_of_the_Daleks">https://en.wikipedia.org/wiki/The_Power_of_the_Daleks</a></li>
<li><a href="https://www.youtube.com/watch?v=gX1DN7yHneA">https://www.youtube.com/watch?v=gX1DN7yHneA</a></li>
<li><a href="https://en.wikipedia.org/wiki/The_Highlanders_(Doctor_Who)">https://en.wikipedia.org/wiki/The_Highlanders_(Doctor_Who)</a></li>
<li><a href="https://en.wikipedia.org/wiki/The_Underwater_Menace">https://en.wikipedia.org/wiki/The_Underwater_Menace</a></li>
<li><a href="https://en.wikipedia.org/wiki/The_Moonbase">https://en.wikipedia.org/wiki/The_Moonbase</a></li>
<li><a href="https://en.wikipedia.org/wiki/The_Macra_Terror">https://en.wikipedia.org/wiki/The_Macra_Terror</a></li>
<li><a href="https://www.youtube.com/watch?v=unipaGm8Pbo">https://www.youtube.com/watch?v=unipaGm8Pbo</a></li>
<li><a href="https://en.wikipedia.org/wiki/The_Faceless_Ones">https://en.wikipedia.org/wiki/The_Faceless_Ones</a></li>
<li><a href="https://www.youtube.com/watch?v=ovSHAcu7g4A">https://www.youtube.com/watch?v=ovSHAcu7g4A</a></li>
<li><a href="https://www.palain.com/science-fiction/intro-to-doctor-who/the-second-doctor-part-1/">https://www.palain.com/science-fiction/intro-to-doctor-who/the-second-doctor-part-1/</a></li>
</ul>




<p><a href="https://hackerpublicradio.org/eps/hpr4620/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4619: HPR Beer Garden 12 - Baltic Porter]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.


Dave and Kevie continue the HPR Beer Garden series with a look at a less known (and maybe a hidden gem to many) style of beer that originates from the north-eastern area of Europe: the Baltic Porter. Kevie Samples  Öö from the 
Pojala
Brewery in ...]]></description>
<link>https://tsecurity.de/de/3437108/it+sicherheit/it+podcasts/hpr4619+hpr+beer+garden+12+-+baltic+porter/</link>
<pubDate>Thu, 16 Apr 2026 02:02:44 +0200</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>

<p>
Dave and Kevie continue the HPR Beer Garden series with a look at a less known (and maybe a hidden gem to many) style of beer that originates from the north-eastern area of Europe: the Baltic Porter. Kevie Samples  Öö from the <a href="https://www.pohjalabeer.com/" rel="noopener noreferrer" target="_blank">
Pojala</a>
Brewery in Estonia, whilst Dave samples Wave Tactics from another Estonian Brewery: <a href="https://puhastebeer.com/" rel="noopener noreferrer" target="_blank">
Pühaste</a>
. </p>

<p>

</p>

<p>

<a href="https://hackerpublicradio.org/eps/hpr4619/hpr4619_image_1.png">
<img src="https://hackerpublicradio.org/eps/hpr4619/hpr4619_image_1_tn.png">
</a>

</p>

<p>

</p>

<p>
Connect with the guys on Untappd:</p>

<ul>

<li>

<a href="https://untappd.com/user/thelovebug" rel="noopener noreferrer" target="_blank">
Dave</a>

</li>

<li>

<a href="https://untappd.com/user/kevie49" rel="noopener noreferrer" target="_blank">
Kevie</a>

</li>

</ul>

<p>

</p>

<p>
The intro sounds for the show are used from:</p>

<ul>

<li>

<a href="https://freesound.org/people/mixtus/sounds/329806/" rel="noopener noreferrer" target="_blank">
https://freesound.org/people/mixtus/sounds/329806/</a>

</li>

<li>

<a href="https://freesound.org/people/j1987/sounds/123003/" rel="noopener noreferrer" target="_blank">
https://freesound.org/people/j1987/sounds/123003/</a>

</li>

<li>

<a href="https://freesound.org/people/greatsoundstube/sounds/628437/" rel="noopener noreferrer" target="_blank">
https://freesound.org/people/greatsoundstube/sounds/628437/</a>

</li>

</ul>

<p>

</p>


<p><a href="https://hackerpublicradio.org/eps/hpr4619/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4618: Simple Podcasting - Episode 2 - Basic Filtering]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.


Basic-Filtering






01 Introduction


This is the second episode in a four part series  on a simple way to create your own HPR podcast episode.






02


This episode will cover the following topics:


Basic filtering..


De-essing t...]]></description>
<link>https://tsecurity.de/de/3433763/it+sicherheit/it+podcasts/hpr4618+simple+podcasting+-+episode+2+-+basic+filtering/</link>
<pubDate>Wed, 15 Apr 2026 02:02:40 +0200</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>

<p>
Basic-Filtering</p>

<p>

</p>

<p>
01 Introduction</p>

<p>
This is the second episode in a four part series  on a simple way to create your own HPR podcast episode.</p>

<p>

</p>

<p>
02</p>

<p>
This episode will cover the following topics:</p>

<p>
Basic filtering..</p>

<p>
De-essing to improve voice quality.</p>

<p>
And normalizing to adjust audio levels for easier reviewing.</p>

<p>

</p>

<p>
03</p>

<p>
Filtering is removing unwanted noise from an audio signal.</p>

<p>
There are several ways of doing this.</p>

<p>
It is possible to do this with Audacity, but I don't know how so I won't try to describe that method.</p>

<p>

</p>

<p>
It is possible however to filter using command line tools such as FFMPEG and Sox.</p>

<p>
When assembled into shell scripts, these tools can become part of an automated process that you can use over and over again for each HPR episode that you record.</p>

<p>

</p>

<p>
04</p>

<p>
In a later episode I will discuss how to analyze audio signals to find the sources of noise that can be reduced or eliminated with filters.</p>

<p>
In this episode however I will discuss basic filtering that you can apply routinely without doing any analysis beforehand.</p>

<p>

</p>

<p>
05 Sources of Noise</p>

<p>
A question that you may have is "why is there noise in the recording?"</p>

<p>
There are many sources of undesirable noise.</p>

<p>

</p>

<p>
06</p>

<p>
A very common one that you may not be aware of is electrical noise that works its way into the electronic recording circuits and is imperceptible to you until you play back the recorded audio.</p>

<p>
The most common noise signal is what is commonly called "line noise" and is a low frequency hum at 50 or 60 Hz from the electric power lines and reflects the 50 or 60 Hz frequency of the AC power lines feeding your recording hardware. </p>

<p>

</p>

<p>
07</p>

<p>
You may be familiar with this low frequency hum from when it emanates from large electrical hardware such as transformers as it makes the laminations vibrate. However, it can also work its way indirectly into electronic equipment as well. </p>

<p>
Good quality audio hardware may filter all or most of this out, but it is present in a lot of consumer grade hardware.</p>

<p>

</p>

<p>
08</p>

<p>
Other sources of electrical noise may reflect specific problems in your recording hardware. I will discuss one such problem with my microphone that I had to address.</p>

<p>
Still other sources of noise may reflect actual physical audio noise around you, such as fans. Placing the microphone close to your face will help in dealing with a lot of these problems, but you may find filtering to be of some help here as well. </p>

<p>

</p>

<p>

</p>

<p>
09 Audio Frequency Range</p>

<p>
Let's start with some basics. </p>

<p>
A good quality stereo of the type you may have at home is typically rated to perform between 20 Hz and 20 kHz. </p>

<p>
This is the widest possible range that we need to consider.</p>

<p>
In reality, this is a far wider range than is needed for a voice oriented podcast.</p>

<p>
It is also well beyond the range of the hardware that many of your listeners will be using to listen to the podcast.</p>

<p>

</p>

<p>
10</p>

<p>
For example, the speakers that I have connected to my PC and a number of headphones and earphones that I have tested drop off drastically below 80 Hz or above 8 kHz, or even above 6 kHz in many cases.</p>

<p>
This is not audiophile quality hardware, but it is representative of the sort of hardware that a lot of your listeners will be using when listening to podcasts.</p>

<p>
And to be honest here, a lot of people will have difficulty hearing anything above 8 kHz even with the best quality audio hardware due to hearing loss from environmental noise exposure or age. </p>

<p>

</p>

<p>
11</p>

<p>
You can get a good idea of what different frequencies sound like by generating sine waves using either FFMPEG or Sox.</p>

<p>

</p>

<p>
Here's an example of generating a 1 kHz sine wave using FFMPEG. A copy of this will be in the show notes.</p>

<p>
ffmpeg -f lavfi -i "sine=frequency=1000:sample_rate=44100:duration=3" 01000hz.flac</p>

<p>

</p>

<p>
This creates a sine wave at 1 kHz and at a sample rate of 44.1 kHz for a duration of 3 seconds and saves it to a flac file named 01000hz.flac</p>

<p>

</p>

<p>
12</p>

<p>
Here's the same using Sox.</p>

<p>
sox -n -r 44100 -b 16 01000hz.flac synth 3 sine 1000</p>

<p>
The -b 16 specifies using 16 bit audio to encode it, and the "sine 1000" element specifies the frequency in hertz.</p>

<p>

</p>

<p>
13</p>

<p>
You can test this out at different frequencies to get a feel for how your hardware responds. </p>

<p>

</p>

<p>
What the effective limits on typical hardware audio range means is that we can quite safely filter out a large part of what is considered to be the "audio range" without any noticeable loss of quality. </p>

<p>
For the purposes of our discussion here then I will limit the frequency range to between 80 Hz and 12 kHz, and that is being generous. You can probably narrow that, particularly at the top end, without any problems. </p>

<p>

</p>

<p>
14</p>

<p>
At the low end, the typical rule of thumb recommended by most people seems to be that for the average male voice you can set the lower threshold at 80 Hz, and for the average female you can set it at 160 Hz. </p>

<p>
Note that you don't *have* to set the threshold higher for a female. Rather, it is just that you typically *can* set it higher if you wish. Note also that these are averages, and may not reflect an actual individual.</p>

<p>

</p>

<p>

</p>

<p>
15 Simple Filters</p>

<p>
We will now create some simple filters using the same command line software mentioned in a previous episode in this series. </p>

<p>
These are FFMPEG and Sox. </p>

<p>

</p>

<p>
16</p>

<p>
First let's define some terminology.</p>

<p>
A high pass filter passes through frequencies which fall above a certain threshold and blocks frequencies which are below that frequency.</p>

<p>
A low pass filter passes through frequencies which fall below a certain threshold and blocks frequencies which are above that frequency.</p>

<p>

</p>

<p>
17</p>

<p>
In reality there isn't an abrupt cut-off in the filters. Instead there is a gradual roll off or sloping off of amplitude below or above the specified filter frequency. </p>

<p>
This is for two reasons. One is that if there was an abrupt cut off then it would risk introducing audible distortion in the signal for frequencies on the margin.</p>

<p>

</p>

<p>
18</p>

<p>
The other reason is that this is how hardware filters traditionally inherently worked when they were made out of electronic components such as resistors, capacitors, and inductors.</p>

<p>
The sharpness of this cut off can be adjusted, but we won't be fiddling with it in that sort of detail.</p>

<p>
You will sometimes see filters specified in terms of "poles". This has to do with describing how filters were constructed using electronic components. Don't worry about it, it doesn't really matter.</p>

<p>

</p>

<p>
19</p>

<p>
Here is a typical high pass filter using ffmpeg which filters out frequencies below 80 hertz.</p>

<p>
# High pass filter.</p>

<p>
ffmpeg -i inputfile.flac -af "highpass=f=80" outputfile.flac</p>

<p>

</p>

<p>
Here is a typical low pass filter using ffmpeg which filters out frequencies above 12 kHz.</p>

<p>
# Low pass filter.</p>

<p>
ffmpeg -i inputfile.flac -af "lowpass=f=12000" outputfile.flac</p>

<p>

</p>

<p>
20</p>

<p>
Here is a filter which combines the two.</p>

<p>
# Combined filters.</p>

<p>
ffmpeg -i inputfile.flac -af "highpass=f=80, lowpass=f=12000" outputfile.flac</p>

<p>

</p>

<p>
And here is the same thing using Sox.</p>

<p>
sox inputfile.flac outputfile.flac highpass 80 lowpass 12000</p>

<p>

</p>

<p>

</p>

<p>
21 Filtering Out Specific Frequencies</p>

<p>
Recall that I mentioned that a common source of noise is the 50 or 60 Hz AC power line frequency working its way through the electronics of your recording device.</p>

<p>
Because filters operate gradually and the 80 Hz lower filter threshold is close to 60 Hz, the high pass filter may not deal with this adequately.</p>

<p>

</p>

<p>
22</p>

<p>
Now it happens that your listeners may not be able to hear this 50 or 60 Hz noise anyway because their audio hardware won't reproduce it.</p>

<p>
That by the way includes you not being able to hear it either when you review your recording before uploading it.</p>

<p>
However, there may be some HPR listeners who are sitting back sipping a glass of wine and listening to your episode on their stereo and who can hear it.</p>

<p>
That suggests that we ought to do something about it just in case.</p>

<p>

</p>

<p>
23</p>

<p>
I will get into how to analyze audio signals in a later episode, but for now just accept that I looked at the frequency spectrum of a sample recording using my hardware and found a large 60 Hz noise spike which I wanted to address. </p>

<p>

</p>

<p>
24</p>

<p>
Experimenting with additional high pass frequencies up to 120 Hz did not improve things much with respect to the 60 Hz problem. There are other parameters which could be tweaked, but at this point it would seem most promising to attack the 60 Hz spike problem directly using a different filter method.</p>

<p>

</p>

<p>
To deal with the this 60 Hz spike we can use a "band reject" filter, which removes a specific band of frequencies. We will use this in combination with the filtering that we have already done above.</p>

<p>

</p>

<p>
25</p>

<p>
After a small amount of experimenting I came up with the following. I also added in a 50 Hz filter while I was at it, for the benefit of those living in areas with 50 Hz electrical supply.</p>

<p>

</p>

<p>
These filters will be included in the show notes, so don't worry if you can't quite understand all the details from a verbal description.</p>

<p>

</p>

<p>
26</p>

<p>
Here's the FFMPEG version.</p>

<p>

</p>

<p>
# Using ffmpeg</p>

<p>
ffmpeg -i input.flac -af "highpass=f=80, lowpass=f=12000, bandreject=f=60:width_type=h:w=20, bandreject=f=50:width_type=h:w=20" output.flac</p>

<p>

</p>

<p>
27</p>

<p>
This as the following elements </p>

<p>
A high pass filter at 80 Hz, </p>

<p>
A low pass filter at 12 kHz, </p>

<p>
A band reject filter centred at  60 Hz and with a width of 20 hertz.</p>

<p>
A similar band reject filter centred at 50 Hz. </p>

<p>

</p>

<p>
28</p>

<p>
Here's the Sox version.</p>

<p>

</p>

<p>
# Sox version.</p>

<p>
sox input.flac output.flac highpass 80 lowpass 12000 bandreject 60 20 bandreject 50 20</p>

<p>

</p>

<p>
Note that with sox, don't quote the filter definition strings or else it will result in an error as sox doesn't see enough parameters. This is not a problem with ffmpeg.</p>

<p>

</p>

<p>
29</p>

<p>
The band reject filter knocks the stuffing out of the 60 Hz line noise, and the 50 Hz parameter should do the same for that frequency as well. </p>

<p>

</p>

<p>
This basic filter should be able to be applied to any podcast audio recording without causing any problems. You can probably reduce the low pass frequency from 12 kHz down to 8 kHz without any problems, but I would suggest that you test it with your voice before making that decision.</p>

<p>

</p>

<p>
30</p>

<p>
I will come back to filtering out specific frequencies again later when I discuss how I solved a specific problem with the hardware that I am using. However, we have to discuss how to analyze audio signals before we can do that sort of technical troubleshooting, and I will cover that in a later episode.</p>

<p>

</p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>
31 De-Essing</p>

<p>
An additional type of filtering is "de-essing". </p>

<p>
When recording audio, the microphone or environment may result in "s", "sh", "ch" and possibly other sounds to be exaggerated.</p>

<p>
These are all higher frequency elements of voice recordings.</p>

<p>
"De-essing" attempts to soften these sounds by selectively reducing the volume on the frequency band which contains these sounds.</p>

<p>

</p>

<p>

</p>

<p>
32 Software Filters</p>

<p>
De-essing is accomplished via software filters.</p>

<p>
FFMPEG and Sox both have de-essing filters.</p>

<p>
For FFMPEG, the de-essing filter is built in.</p>

<p>
For Sox however, we must install an optional plug-in. I will cover this is more detail when I discuss using Sox for de-essing.</p>

<p>

</p>

<p>
33 Do You Need De-Essing?</p>

<p>
The first thing to make clear however, is that you may not need to worry about this.</p>

<p>
If you think the audio sounds just fine the way it is, you don't need to do any de-essing to it.</p>

<p>
De-essing is a very subtle change, and you would probably need to do some careful before and after comparisons of audio samples to tell the difference.</p>

<p>
I didn't know that a thing called de-essing even existed before I started doing the research to make this podcast episode. </p>

<p>
However, at this point we are doing things more for fun than out of necessity, so I'll describe it anyway.</p>

<p>

</p>

<p>
34 De-Essing with FFMPEG</p>

<p>
De-essing with FFMPEG is relatively simple.</p>

<p>
The filter is built in, and there are just three values to adjust.</p>

<p>
On the other hand, it is not really obvious what these values mean in practical terms.</p>

<p>

</p>

<p>
35</p>

<p>
I will however warn you to not rely on the AI search results from Google to understand this feature.</p>

<p>
The AI, in my experience, just makes stuff up about it and tells you to use options that don't exist and values that are not valid.</p>

<p>
I found that the only useful information came from FFMPEG's own web site, and from examples written by actual humans.</p>

<p>

</p>

<p>
36</p>

<p>
I then experimented with different values to see what effects they had.</p>

<p>
Since the results are rather subtle, fine tuning isn't really that necessary and I found that I could arrive at some reasonable values fairly quickly. </p>

<p>
I will provide the parameters that I found useful for me, and I suspect they would probably work for you as well.</p>

<p>

</p>

<p>
37</p>

<p>
Here is a typical de-essing command.</p>

<p>
ffmpeg -i inputfile.flac -filter_complex "deesser=i=0.5:m=0.5:f=0.5:s=o" -b:a 336k -sample_fmt s16 outputfile.flac</p>

<p>

</p>

<p>
38</p>

<p>
The important arguments are i, m, and f.</p>

<p>

</p>

<p>
i is intensity for triggering de-essing. </p>

<p>
The allowed range is 0 to 1. The default is 0. </p>

<p>
By experimentation I found that "0" means no  de-essing, and "1" is maximum de-essing.</p>

<p>
I found that setting it to "0.5"  gave satisfactory results.</p>

<p>

</p>

<p>
39</p>

<p>
m is the amount of "ducking on the treble part of sound". </p>

<p>
The allowed range is 0 to 1. The default is 0.5. </p>

<p>
By experimentation I found that "1" means no  de-essing, and "0" is maximum de-essing.</p>

<p>
I found that setting it to "0.5" gave satisfactory results.</p>

<p>

</p>

<p>
40</p>

<p>
f is how much of the original frequency content to keep when de-essing.</p>

<p>
The allowed range is 0 to 1. The default is 0.5. </p>

<p>
By experimentation I found that "1" means no  de-essing, and "0" is maximum de-essing.</p>

<p>
I found that setting it to "0.5" gave satisfactory results.</p>

<p>

</p>

<p>
41</p>

<p>
Setting "m" or "f" too high can result in a distorted output as too much of the original sound is cut out.</p>

<p>
The defaults of 0.5 in both cases gave audible improvements without noticeable distortion.</p>

<p>

</p>

<p>
42</p>

<p>
There is an additional parameter called "s". This controls whether the de-essing filter does anything.</p>

<p>
Setting it to "o" is the normal and default mode. </p>

<p>
Setting it to "e" causes it to output just the components that it would normally have filtered out. This is useful for testing purposes so you can see what and how much is being filtered. You only use this when experimenting with different values.</p>

<p>
Setting it to "i" causes the input to be passed through without de-essing. This would be useful in scripts where you want to use a variable to control whether or not to use the de-esser while still creating the expected output file.</p>

<p>

</p>

<p>
43</p>

<p>
There are two other elements of the command which were included but are not strictly speaking part of the de-essing filter itself .</p>

<p>
These are " -b:a 336k" and "-sample_fmt s16".</p>

<p>
 " -b:a 336k" sets the audio bit rate to 336k. </p>

<p>
"-sample_fmt s16" sets the audio sample format to 16 bit.</p>

<p>

</p>

<p>
I found it necessary to specify these in order to prevent the de-essing filter from  changing formats.</p>

<p>
They are not part of de-essing however.</p>

<p>

</p>

<p>

</p>

<p>
44 De-Essing with Sox</p>

<p>
You can also de-ess with Sox.</p>

<p>
However, this is more complex for several reasons.</p>

<p>
One reason is that Sox does not have its own de-essing filters. Instead it uses optional plug-ins, and you must find and install these.</p>

<p>
The actual plug in may vary depending on what operating system you are using.</p>

<p>
The other reason is that it deals with the issue in fairly low level parameters, and so is a bit more complex to describe. </p>

<p>
Because of this I will skip over describing this in detail and just give a very brief overview. If anyone would like me to describe in more detail how to de-ess with Sox, then send in a comment and I will do a short episode on it later.</p>

<p>

</p>

<p>
45 Sox De-Essing Overview</p>

<p>
To de-ess with Sox, you first need to install the plug-ins.</p>

<p>
On Linux, these will be the TAP ladspa plug-ins.</p>

<p>
TAP stands for "Tom's Audio Processing" plugins.</p>

<p>
ladspa stands for "Linux Audio Developer's Simple Plugin API"</p>

<p>

</p>

<p>
To install the TAP plugins on Ubuntu, using the following command.</p>

<p>
sudo apt install tap-plugins</p>

<p>

</p>

<p>
The plug-in we need is called "tap_deesser.so".</p>

<p>

</p>

<p>
46</p>

<p>
In order to use the plug-ins, you need to set the path as a variable. </p>

<p>
On Ubuntu this is.</p>

<p>
export LADSPA_PATH="/usr/lib/ladspa:"</p>

<p>
I put the above in the shell script which calls the Sox de-esser.</p>

<p>

</p>

<p>
47</p>

<p>
To use the Sox de-esser, you do the following:</p>

<p>
sox inputfile.flac outputfile.flac ladspa tap_deesser tap_deesser -30 4500</p>

<p>

</p>

<p>
48</p>

<p>
tap_deesser tap_deesser tells it which plugin to use. We need to state tap_deesser twice because the first is the name of the ".so" file and the second is the name of the plugin. A single "so" file can contain multiple filters, although in this case there is only one.</p>

<p>
-30 is the threshold in dB at which to start to apply the filter.</p>

<p>
4500 is the frequency in Hz that the filter centres around.</p>

<p>

</p>

<p>
49</p>

<p>
The TAP web page has a table of recommended frequencies. These are:</p>

<p>

</p>

<p>
Male 'ess'	4500 Hz</p>

<p>
Male 'ssh'	3400 Hz</p>

<p>
Female 'ess'	6800 Hz</p>

<p>
Female 'ssh'	5100 Hz</p>

<p>

</p>

<p>
You will need to do some trial and error to find what works best for you. </p>

<p>

</p>

<p>

</p>

<p>
50 De-Essing Summary</p>

<p>
De-essing can be used to make minor improvements to voice quality by reducing certain harsh sounds which may be exaggerated by a microphone.</p>

<p>
If it sounds like a lot of work you can probably simply not bother with it and not really miss it.</p>

<p>

</p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>
51 Normalizing</p>

<p>

</p>

<p>
Normalizing a signal means adjusting it to meet a specified level.</p>

<p>
For audio it means adjusting the volume or sound level.</p>

<p>
You may wish to normalize the audio of your recording to make it easier to listen to when reviewing it.</p>

<p>
The copy that you send to HPR however should be the original un-normalized version.</p>

<p>

</p>

<p>
52</p>

<p>
Sound level is measured in two ways, dB and LUFS. The latter is a more sophisticated way of measuring things which takes into account how the human ear perceives loudness. I won't go into a lot of detail in that regards, other than to say that just accept LUFS as a unit of perceived loudness that is the international standard. LUFS stands for "Loudness Units referenced to Full Scale", and is part of the EBU R128 standard, where EBU stands for European Broadcast Union. </p>

<p>

</p>

<p>
In both cases the measured value is a negative number, with numbers smaller in magnitude being louder. Smaller in magnitude means closer to zero.</p>

<p>

</p>

<p>
53</p>

<p>
HPR will adjust the sound level for publication, but if you wish to check the audio before uploading it can help to adjust it to something close to what HPR will do so that you can listen to it at a volume which most listeners will hear.</p>

<p>
In my case full volume on the audio system input produced a sound level which was much lower than a typical HPR episode. </p>

<p>
However, the volume level in the flac file itself can be adjusted using ffmpeg.</p>

<p>

</p>

<p>
54 Measuring Volume Level</p>

<p>
First we need to see what the volume level is for a typical HPR podcast.</p>

<p>

</p>

<p>
To do this we use ffmpeg. </p>

<p>
In this example we are using an episode named "hprpodcast.mp3".</p>

<p>
Pick an episode which you think is suitable and copy the file to the working directory.</p>

<p>

</p>

<p>
55</p>

<p>
In the following script we use a volumedetect filter. </p>

<p>
The text we want normally outputs to standard error, so we have to do a bit of bashery to redirect this to standard output so it will go through a pipe.</p>

<p>
We then grep for the string "I:".</p>

<p>
This will have the average volume level in "loudness units" (LUFS).</p>

<p>
Then we extract the number, giving us a target LUFS level. </p>

<p>

</p>

<p>
56</p>

<p>
ffmpeg -i hprpodcast.mp3 -filter:a ebur128=framelog=quiet -f null /dev/null 2&gt;&amp;1 | grep "I:"  | cut -d: -f2</p>

<p>

</p>

<p>
57</p>

<p>
Unfortunately I can't find a Sox feature which handles EBU loudness, so we need to work in dB instead.</p>

<p>

</p>

<p>
Here is the sox version. </p>

<p>
However, note that this may not work on mp3s if sox mp3 handing is not installed.</p>

<p>

</p>

<p>
58</p>

<p>
sox hprpodcast.mp3 -n stats 2&gt;&amp;1 | grep "RMS lev dB" | rev | cut -d" " -f1 | rev </p>

<p>

</p>

<p>
59</p>

<p>
You can use either of these for measuring the volume or sound level of an audio file.</p>

<p>
However, note that individual episodes from HPR may vary a bit in terms of loudness. In the samples that I looked at, this however was less than 1 LUFS or dB while my own recording was roughly 5 LUFS lower in volume than a typical HPR episode.</p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>
60</p>

<p>
If you Google for the EBU R128 standard the AI result will confidently tell you to use a target of -23 LUFS. However, this is wrong, which shouldn't be of any surprise if you are familiar with using AI. </p>

<p>

</p>

<p>
61</p>

<p>
The -23 LUFS figure is for broadcast television. There is in fact no standard level for podcasts. However, there is apparently a general industry convention of using somewhere around -17 LUFS. If I look at the first two HPR episodes that I did, HPR normalized them to -16.8 LUFS and -17.8 LUFS, while the original FLAC files that I submitted were -21.6 LUFS and -22.3 LUFS respectively. </p>

<p>

</p>

<p>
62</p>

<p>
So HRP appear to be targeting somewhere around -17 LUFS as well. We will therefore use -17 LUFS as our target for our own copy for review.</p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>
63</p>

<p>
The nice thing about using the EBU filter in FFMPEG is that this is very simple.</p>

<p>
Here is the FFMPEG version. </p>

<p>

</p>

<p>
64</p>

<p>
ffmpeg -i inputfile.flac -af loudnorm=I=-17:TP=-2.0:LRA=7.0 -ar 44.1k outputfile.flac</p>

<p>

</p>

<p>
65</p>

<p>
"I" is the LUFS target. </p>

<p>
LRA  is the loudness range target. The default value is 7.0 so I used that.</p>

<p>
TP sets the maximum true peak. The default value is -2.0. so I used that.</p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>
66</p>

<p>
With Sox things are a bit more difficult. There is no direct method of setting the loudness that I am aware of, so we need to measure the current sound level in dB, do some calculations, and then apply that as a gain factor to the output.</p>

<p>

</p>

<p>
67</p>

<p>
First we need to subtract the measured db level from our flac file from the target db level from the HPR episode we decided to use as a sample.</p>

<p>
Bash by itself normally just does integer math.</p>

<p>
However, we would like to have at least one decimal point of resolution to work with.</p>

<p>
The simple solution is to do this calculation using bc, the shell arbitrary precision calculator. </p>

<p>

</p>

<p>
68</p>

<p>
Then take this new value and use it in a "volume" filter. </p>

<p>
The number which we give sox is the amount to increase or decrease the volume by.</p>

<p>
Sox will then output a new file with the new volume level. </p>

<p>
You can now listen to this file under conditions more closely approximating what it will be like after HPR have done their own audio adjustments and normalizaton on it </p>

<p>
This helps when listening to the file for any problems before you upload it. </p>

<p>

</p>

<p>
69</p>

<p>
Rather than reading 5 lines of complex shell script to you, I will put a copy of it in the show notes.</p>

<p>

</p>

<p>
level=$( sox $inputfile -n stats 2&gt;&amp;1 | grep "RMS lev dB" )</p>

<p>
leveldb=$( echo "$level" | rev | cut -d" " -f1 | rev )</p>

<p>
targetdb="-18.9"</p>

<p>
volumechange=$(echo "scale=2 ; $targetdb - $leveldb" | bc )</p>

<p>

</p>

<p>
sox $inputfile $outputname gain "$volumechange"</p>

<p>

</p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>
70</p>

<p>
Normalization should be the last thing you do to the file.</p>

<p>
It should be done after any noise filtering, such as low pass, high pass, bandreject, etc.</p>

<p>
If you normalize first, you will be amplifying the noise as well as the desired signal.</p>

<p>

</p>

<p>
71</p>

<p>
The exact normalization level used for review purposes doesn't matter, as HPR will apply their own later.</p>

<p>
All we are doing at this point is adjusting the volume to something which approximates a normal episode so you can listen to it for final review.</p>

<p>

</p>

<p>
72</p>

<p>
When you send your file to HPR, send the original *unnormalized* version, not the normalized version. </p>

<p>
When you normalize an audio signal, if you are not careful you may introduce things which cause problems with later additional processing. </p>

<p>
HPR probably do more things to the audio than just normalizing and so they need the unnormalized file so that they can do their own normalizing last. </p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>
73</p>

<p>
If at this point you are happy with the recording as is, you are ready to send the *unnormalized* version to HPR.</p>

<p>

</p>

<p>
The scripts to implement the features discussed in this episode will be in the show notes.</p>

<p>

</p>

<p>

</p>

<p>
74 Conclusion</p>

<p>
In this episode we covered basic filtering using ffmpeg and sox.</p>

<p>
We discussed what noise was and some of the origins of noise.</p>

<p>
We talked about the audio frequency range and the limitations of common hardware used to record and listen to podcasts.</p>

<p>
We covered basic high and low pass filters used to limit the audio frequency range in order to remove possible low and high frequency noise.</p>

<p>

</p>

<p>
75</p>

<p>
We discussed specific filters to eliminate 50 and 60 Hz electrical power noise.</p>

<p>
We talked about de-essing, what it was, why you may wish to use it, and some basic de-essing filter implementation details.</p>

<p>
We discussed normalizing, what it is, why you may wish to use it, and how it relates to podcasting conventions.</p>

<p>

</p>

<p>
76</p>

<p>
In the next episode we will discuss analyzing audio signals to help find the sources of noise problems.</p>

<p>
We will also discuss creating filters to eliminate any problems that we found.</p>

<p>
In my case I had a problem with the microphone that I use, and I describe how I used filters to deal with that problem.</p>

<p>

</p>

<p>
77</p>

<p>
This has been the second episode in a four part series on simple podcasting.</p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>
EBU R128 Loudness Measurement using FFMPEG</p>

<p>

</p>

<p>
#!/bin/bash</p>

<p>

</p>

<p>
echo "EBU r128 loudness measurement using FFMPEG"</p>

<p>
for inputfile in *.flac *.mp3 ; do</p>

<p>
	level=$( ffmpeg -i $inputfile -filter:a ebur128=framelog=quiet -f null /dev/null 2&gt;&amp;1 | grep "I:"  | cut -d: -f2 )</p>

<p>
	echo $inputfile $level</p>

<p>
done</p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>
DB Sound Level Measurement using Sox</p>

<p>

</p>

<p>
#!/bin/bash</p>

<p>
# Sox version. May not work for mp3 if an mp3 format handling is not installed.</p>

<p>
echo "dB sound level measurement using Sox."</p>

<p>
for inputfile in *.flac *.mp3 ; do</p>

<p>

</p>

<p>
	level=$( sox $inputfile -n stats 2&gt;&amp;1 | grep "RMS lev dB" )</p>

<p>
	leveldb=$( echo "$level" | rev | cut -d" " -f1 | rev )</p>

<p>
	echo $inputfile $leveldb</p>

<p>
done</p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>
EBU R128 Loudness Normalization using FFMPEG</p>

<p>

</p>

<p>
#!/bin/bash</p>

<p>

</p>

<p>
# Adjust the volume to a desired level.</p>

<p>
for inputfile in *.flac ; do</p>

<p>
	j=$( basename $inputfile ".flac" )</p>

<p>
	outputname="$j""-normff.flac"</p>

<p>

</p>

<p>
	ffmpeg -i $inputfile -af loudnorm=I=-17:TP=-2.0:LRA=4.0 -ar 44.1k $outputname</p>

<p>
	echo $outputname</p>

<p>
done</p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>
DB Sound Level Normalization using Sox</p>

<p>

</p>

<p>
#!/bin/bash</p>

<p>

</p>

<p>
# Adjust the volume to a desired level.</p>

<p>
for inputfile in *.flac ; do</p>

<p>
	j=$( basename $inputfile ".flac" )</p>

<p>
	outputname="$j""-normff.flac"</p>

<p>
	# Measure the volume level and extract the mean volume.</p>

<p>
	level=$( sox $inputfile -n stats 2&gt;&amp;1 | grep "RMS lev dB" )</p>

<p>
	leveldb=$( echo "$level" | rev | cut -d" " -f1 | rev )</p>

<p>
	# Calculate the difference in dB desired. Scale specifies the number of decimal places.</p>

<p>
	# Target db is the volume measured on hpr4506 (UCSD-P-System).</p>

<p>
	targetdb="-18.9"</p>

<p>
	volumechange=$(echo "scale=2 ; $targetdb - $leveldb" | bc )</p>

<p>
	echo "Using sox: File:  $inputfile  Original level: $leveldb  Change by: $volumechange"</p>

<p>

</p>

<p>
	# Adjust the volume.</p>

<p>
	sox $inputfile $outputname gain "$volumechange"</p>

<p>

</p>

<p>
done</p>

<p>

</p>

<p>
--------------------</p>

<p>

</p>

<p>
Full processing pipeline for making simple podcasts using FFMPEG</p>

<p>

</p>

<p>
#!/bin/bash</p>

<p>

</p>

<p>
#!/bin/bash</p>

<p>

</p>

<p>
# Full processing pipeline for making simple podcasts.</p>

<p>

</p>

<p>
# ======================================================================</p>

<p>
# Concatenate multiple flac files into a single flac file.</p>

<p>
# This is used to combine podcast recorded segments into a single</p>

<p>
# flac file for uploading to HPR.</p>

<p>

</p>

<p>
concataudio ()</p>

<p>
{</p>

<p>
	outputname="$1"</p>

<p>

</p>

<p>
	# First create the list file.</p>

<p>
	printf "file '%s'\n" [0-9][0-9].flac &gt; podseglist.txt</p>

<p>

</p>

<p>
	# Now concatenate them</p>

<p>
	ffmpeg -f concat -safe 0 -i podseglist.txt "$outputname"</p>

<p>

</p>

<p>
	rm podseglist.txt</p>

<p>
}</p>

<p>

</p>

<p>
# ======================================================================</p>

<p>

</p>

<p>
# Basic filters.</p>

<p>
filter ()</p>

<p>
{</p>

<p>
	inputfile=$1</p>

<p>
	outputname=$2</p>

<p>

</p>

<p>
	# Using ffmpeg.</p>

<p>

</p>

<p>
	# The high and low pass filters.</p>

<p>
	hlpfil="highpass=f=80, lowpass=f=12000"</p>

<p>

</p>

<p>
	# Band reject filters filter for 60Hz and another for 50Hz.</p>

<p>
	linefil="bandreject=f=60:width_type=h:w=20, bandreject=f=50:width_type=h:w=20"</p>

<p>

</p>

<p>
	# Using ffmpeg</p>

<p>
	ffmpeg -i $inputfile -af "$hlpfil, $linefil" $outputname</p>

<p>
}</p>

<p>

</p>

<p>
# ======================================================================</p>

<p>

</p>

<p>
# De-Essing.</p>

<p>
deessing ()</p>

<p>
{</p>

<p>
	inputfile=$1</p>

<p>
	outputname=$2</p>

<p>
	option=$3</p>

<p>

</p>

<p>
	# De-essing filter.</p>

<p>
	ffmpeg -i $inputfile -filter_complex "deesser=i=0.5:m=0.5:f=0.5:s=$option" -b:a 336k -sample_fmt s16 $outputname</p>

<p>

</p>

<p>
}</p>

<p>

</p>

<p>
# ======================================================================</p>

<p>
# Normalizing the audio to EBU R128 standard for review using ffmpeg.</p>

<p>
normffmpeg ()</p>

<p>
{</p>

<p>
	inputfile=$1</p>

<p>
	outputname=$2</p>

<p>

</p>

<p>
	# Normalize to EBU R128 standard.</p>

<p>
	ffmpeg -i $inputfile -af loudnorm=I=-17:TP=-2.0:LRA=4.0 -ar 44.1k $outputname</p>

<p>

</p>

<p>
}</p>

<p>

</p>

<p>
# ======================================================================</p>

<p>

</p>

<p>
# Output an MP3 version to help with reviewing.</p>

<p>
mp3convert ()</p>

<p>
{</p>

<p>
	inputfile=$1</p>

<p>

</p>

<p>
	# Get the name of the file and then create the output file name.</p>

<p>
	j=$( basename $inputfile ".flac" )</p>

<p>
	outputname="$j"".mp3"</p>

<p>

</p>

<p>
	# Convert to MP3.</p>

<p>
	ffmpeg -i $inputfile $outputname</p>

<p>
}</p>

<p>

</p>

<p>
# ======================================================================</p>

<p>

</p>

<p>
# Concatenate the separate audio files.</p>

<p>
concataudio fullpod-unfiltered.flac</p>

<p>

</p>

<p>
# Basic filtering.</p>

<p>
filter fullpod-unfiltered.flac filtered.flac</p>

<p>

</p>

<p>
# De-essing. This is the version to send for publishing.</p>

<p>
# The third argument should be "o" for de-essing, or "i" for pass through without de-essing.</p>

<p>
deessing filtered.flac fullpod.flac o</p>

<p>

</p>

<p>
# Normalized for review.</p>

<p>
normffmpeg fullpod.flac fullpod-norm.flac</p>

<p>

</p>

<p>
# Output an MP3 copy for review.</p>

<p>
mp3convert fullpod-norm.flac</p>

<p>

</p>

<p>

</p>

<p>

</p>

<p>
--------------------</p>

<p>
--------------------</p>

<p>

</p>


<p><a href="https://hackerpublicradio.org/eps/hpr4618/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4617: UNIX Curio #4 - Archiving Files]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.


This series is dedicated to exploring little-known—and occasionally useful—trinkets lurking in the dusty corners of UNIX-like operating systems.


When you think about creating and managing archives on a UNIX system, 
tar
 is probably the utilit...]]></description>
<link>https://tsecurity.de/de/3430429/it+sicherheit/it+podcasts/hpr4617+unix+curio+4+-+archiving+files/</link>
<pubDate>Tue, 14 Apr 2026 02:02:23 +0200</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>

<blockquote>
This series is dedicated to exploring little-known—and occasionally useful—trinkets lurking in the dusty corners of UNIX-like operating systems.</blockquote>

<p>
When you think about creating and managing archives on a UNIX system, <code>
tar</code>
 is probably the utility that comes to mind. But this was not the first archiving program; <code>

<a href="https://man.cat-v.org/unix-1st/5/archive" rel="noopener noreferrer" target="_blank">
ar</a>

</code>

<a href="https://man.cat-v.org/unix-1st/5/archive" rel="noopener noreferrer" target="_blank">
 was in First Edition UNIX</a>

<sup>
1</sup>
 and <code>

<a href="https://man.netbsd.org/NetBSD-10.0/cpio.1" rel="noopener noreferrer" target="_blank">
cpio</a>

</code>

<a href="https://man.netbsd.org/NetBSD-10.0/cpio.1" rel="noopener noreferrer" target="_blank">
 also pre-dates it, sort of</a>

<sup>
2</sup>
. According to the NetBSD manual page, <code>
cpio</code>
 was developed within AT&amp;T before <code>
tar</code>
, but did not get widely released until System III UNIX after <code>
tar</code>
 was already well known from the earlier release of Seventh Edition UNIX (a.k.a. Version 7).</p>

<p>
You might think that <code>
ar</code>
 and <code>
cpio</code>
 are old and irrelevant these days, but these formats do live on. Each <a href="https://manpages.debian.org/trixie/dpkg-dev/deb.5.en.html" rel="noopener noreferrer" target="_blank">
Debian package file</a>

<sup>
3</sup>
 is an <code>
ar</code>
 archive which in turn contains two <code>
tar</code>
 files. On Red Hat, Fedora, SUSE, and some other distributions, each <a href="https://rpm.org/docs/6.0.x/manual/format_v6.html" rel="noopener noreferrer" target="_blank">
.rpm package file</a>

<sup>
4</sup>
 contains a <code>
cpio</code>
 payload. So these may very well still be in use on your modern Linux system.</p>

<p>
But let's get back to the subject of what you might want to use to create archives today. The <code>
tar</code>
 utility has persisted in its popularity over the decades, and you most probably have a version installed on your UNIX-like systems. One of the problems with <code>
tar</code>
, however, is that it has not kept a consistent file format. Also, different implementations have used differing syntax at times.</p>

<p>
There are excellent reasons for the <a href="https://man.netbsd.org/NetBSD-10.0/libarchive-formats.5" rel="noopener noreferrer" target="_blank">
file format changing</a>

<sup>
5</sup>
. The names people give files have gotten longer over time, and the original Seventh Edition <code>
tar</code>
 format could only handle a total pathname length of 100 bytes for each archive member. In addition, filenames were in ASCII format, and modern filesystems now accommodate richer encodings with characters that aren't in ASCII. The size of each archive member was limited to 8 gigabytes—unthinkably large back then, but not so big these days. User and group ownership could only be specified by numeric ID, which can vary from one system to another. Many other types of files and information simply couldn't be stored: block and character device nodes, FIFOs, sockets, extended attributes, access control lists, and SELinux contexts.</p>

<p>
As a result, the <code>
tar</code>
 format had to evolve over the years. One important version was the <code>
ustar</code>
 format, created for the 1988 POSIX standard. The POSIX committee wanted to try standardizing both the file format and syntax for the <code>
tar</code>
 command. While the <code>
ustar</code>
 format addressed some shortcomings, progress marched on. Filesystems started allowing filenames in different character sets and more types of information to be attached to files, so for the 2001 revision of POSIX they gave up on standardizing the <code>
tar</code>
 utility and came up with a new format and utility, which is our actual UNIX Curio for this episode: <code>

<a href="https://pubs.opengroup.org/onlinepubs/009695399/utilities/pax.html" rel="noopener noreferrer" target="_blank">
pax</a>

</code>

<sup>
6</sup>
. Since the <code>
pax</code>
 program didn't have historical baggage, they could specify its options, behavior, and file format and be sure everyone's implementation would match. Developers of different <code>
tar</code>
 implementations had been reluctant to change away from their historical option syntax to the standard. The <code>
pax</code>
 utility was also an attempt to avoid taking sides between those who advocated for <code>
tar</code>
 and fans of <code>
cpio</code>
. The <code>
pax</code>
 file format was an extension of <code>
ustar</code>
 with the ability to add arbitrary new attributes tied to each archive member as UTF-8 Unicode. Some of these attribute names were standardized, but implementers could also define their own, making the format more future-proof. Older versions of <code>
tar</code>
 that could handle the <code>
ustar</code>
 format should still be able to process <code>
pax</code>
 archives, but might not know what to do with the extra attributes.</p>

<p>
GNU <code>
tar</code>
 developed its <a href="https://www.gnu.org/software/tar/manual/tar.html" rel="noopener noreferrer" target="_blank">
current archive format</a>

<sup>
7</sup>
 alongside the standardization of the <code>
ustar</code>
 format. The GNU format was based on an early draft which later underwent incompatible changes, so the two unfortunately are not interchangable. Unlike <code>
ustar</code>
, the GNU format has no limits on the size of files or the length of their names. In addition to its own format, GNU <code>
tar</code>
 is able to detect and correctly process both <code>
ustar</code>
 and <code>
pax</code>
 archives. In situations where its native format can't store necessary information about a file (such as POSIX access control lists or extended attributes), GNU <code>
tar</code>
 will automatically output the <code>
pax</code>
 format instead (called "posix" in documentation). However, it still uses the GNU format by default, though the documentation has been <a href="https://web.cvs.savannah.gnu.org/viewvc/*checkout*/tar/tar/manual/tar.html?revision=1.3" rel="noopener noreferrer" target="_blank">
threatening to move to the POSIX format for at least 20 years</a>

<sup>
8</sup>
.</p>

<p>
The good news is that the <code>
ustar</code>
, <code>
pax</code>
, GNU <code>
tar</code>
, and Seventh Edition <code>
tar</code>
 formats are well documented and utilities across many UNIX-like systems<sup>
2,7,9,10,11</sup>
 are able to handle these, depending on which formats existed when the utility was developed. While your system may not have <code>
pax</code>
 itself installed, there are other archiving utilities that can read the file format, including GNU <code>
tar</code>
. (Somewhat amusingly, Debian and some other Free Software operating systems package a <code>

<a href="http://www.mirbsd.org/htman/i386/man1/pax.htm#Sh.STANDARDS" rel="noopener noreferrer" target="_blank">
pax</a>

</code>

<a href="http://www.mirbsd.org/htman/i386/man1/pax.htm#Sh.STANDARDS" rel="noopener noreferrer" target="_blank">
 utility developed by MirBSD</a>

<sup>
12</sup>
 which largely follows the POSIX-specified interface, but doesn't support reading or writing archives in <code>
pax</code>
 format!) Look at the manual page for the <code>
tar</code>
, <code>
cpio</code>
, or <code>
pax</code>
 utilities on your system to see if they can handle <code>
pax</code>
 archives.</p>

<p>
Perhaps one aspect that has worked in favor of <code>
tar</code>
 and other UNIX archive formats is that they only concern themselves with storing files and make no attempt at compression. Instead, it is common for a complete archive file to be compressed <em>
after</em>
 creation; many utilities can be told to do this step for you, but it is not typically the default behavior. Therefore, if a better compression method comes along, the archive format doesn't need to change. If you do use compression, be careful to choose a method that is available on the destination system. Compressing files is a big enough subject to deserve its own episode, so we won't talk more about it here.</p>

<p>
So which format should you use when creating an archive? Unfortunately, there is no single answer that applies in all circumstances. The <code>
pax</code>
 format is supported among modern UNIX-like systems and can represent all types of files and metadata. While other systems, their filesystems, and archive utilities might not be able to properly make use of all the metadata, they should at least be able to extract the data contained in files and, if Unicode is supported, give them appropriate filenames. If you intend to unpack the archive on an older system, more research might be needed to figure out what formats it is able to handle. The Seventh Edition <code>
tar</code>
 format (often called "v7") is widely supported, including by older systems, but has limitations in what it can contain as described earlier.</p>

<p>
Moving beyond the UNIX world, things get even more complicated. Apple's macOS, with its FreeBSD underpinnings, easily handles <code>
tar</code>
 files. However, when it comes to MS-DOS and Windows, it's a bit different. There, a multitude of archiving programs and formats arose, usually combining archiving with compression. <code>
PKZIP</code>
 was probably the most popular of these and its .zip format became common in many places, helped by the fact that PKWARE openly published the specification. While there is only a single .zip format, it has many options, some proprietary, and different implementations have diverged in the way some aspects are handled (or not handled). An <a href="https://www.iso.org/standard/60101.html" rel="noopener noreferrer" target="_blank">
ISO/IEC standard for .zip</a>

<sup>
13</sup>
 was published in 2015 giving a baseline profile, and sticking to it produces files that can be widely extracted successfully. Other file formats like OpenDocument use the .zip format and typically hew to the standardized profile.</p>

<p>
Windows' File Explorer, starting with Windows XP, can <a href="https://windowsforum.com/threads/mastering-file-compression-on-windows-how-to-zip-and-unzip-files-effortlessly.369235/" rel="noopener noreferrer" target="_blank">
natively extract .zip files</a>

<sup>
14</sup>
. The <a href="https://infozip.sourceforge.net/" rel="noopener noreferrer" target="_blank">
Info-ZIP program</a>

<sup>
15</sup>
 is a Free Software implementation for a wide variety of systems (even rather obscure ones); while it might not be installed on yours, if you're copying the archive file over, you can probably copy over its <code>
unzip</code>
 utility at the same time to unpack it. So .zip probably has the broadest support, although it might not already be present on every system. However, as Klaatu points out in <a href="https://hackerpublicradio.org/eps/hpr4557/index.html" rel="noopener noreferrer" target="_blank">
Hacker Public Radio episode 4557</a>

<sup>
16</sup>
, .zip files and applications handling them aren't always great at maintaining metadata about files. The .zip format doesn't seem to have any way to represent UNIX file permissions, and user/group ownership can only be included as numeric IDs. Other types of metadata on UNIX-like systems are not saved at all. This is probably not a problem in some cases, such as with a collection of photos, but for others it might be a concern.</p>

<p>
While <code>
pax</code>
 as a utility does not seem to have gained much popularity or support, except on commercial UNIX systems where including it was required to conform to the POSIX standard, its file format has persisted. Free Software systems have generally avoided the <code>
pax</code>
 interface, preferring to stick with the <code>
tar</code>
 utility on the command line, but usually have good support for archive files in the <code>
pax</code>
 format. Outside of UNIX-like systems, .zip seems to have become the most common file format, and support for it is also good in the UNIX world, though it might not be built in.</p>

<p>
References:</p>

<ol>

<li>

<a href="https://man.cat-v.org/unix-1st/5/archive" rel="noopener noreferrer" target="_blank">
Archive (library) file format</a>
 https://man.cat-v.org/unix-1st/5/archive</li>

<li>

<a href="https://man.netbsd.org/NetBSD-10.0/cpio.1" rel="noopener noreferrer" target="_blank">
NetBSD 10.0 cpio manual page</a>
 https://man.netbsd.org/NetBSD-10.0/cpio.1</li>

<li>

<a href="https://manpages.debian.org/trixie/dpkg-dev/deb.5.en.html" rel="noopener noreferrer" target="_blank">
Debian binary package format</a>
 https://manpages.debian.org/trixie/dpkg-dev/deb.5.en.html</li>

<li>

<a href="https://rpm.org/docs/6.0.x/manual/format_v6.html" rel="noopener noreferrer" target="_blank">
RPM V6 Package format</a>
 https://rpm.org/docs/6.0.x/manual/format_v6.html</li>

<li>

<a href="https://man.netbsd.org/NetBSD-10.0/libarchive-formats.5" rel="noopener noreferrer" target="_blank">
NetBSD 10.0 libarchive-formats manual page</a>
 https://man.netbsd.org/NetBSD-10.0/libarchive-formats.5</li>

<li>

<a href="https://pubs.opengroup.org/onlinepubs/009695399/utilities/pax.html" rel="noopener noreferrer" target="_blank">
Pax specification</a>
 https://pubs.opengroup.org/onlinepubs/009695399/utilities/pax.html</li>

<li>

<a href="https://www.gnu.org/software/tar/manual/tar.html" rel="noopener noreferrer" target="_blank">
GNU tar manual</a>
 https://www.gnu.org/software/tar/manual/tar.html</li>

<li>

<a href="https://web.cvs.savannah.gnu.org/viewvc/*checkout*/tar/tar/manual/tar.html?revision=1.3" rel="noopener noreferrer" target="_blank">
GNU tar manual for version 1.15.90</a>
 https://web.cvs.savannah.gnu.org/viewvc/*checkout*/tar/tar/manual/tar.html?revision=1.3</li>

<li>

<a href="https://man.freebsd.org/cgi/man.cgi?query=libarchive-formats&amp;sektion=5&amp;apropos=0&amp;manpath=FreeBSD+15.0-RELEASE+and+Ports" rel="noopener noreferrer" target="_blank">
FreeBSD 15.0 libarchive-formats manual page</a>
 https://man.freebsd.org/cgi/man.cgi?query=libarchive-formats&amp;sektion=5&amp;apropos=0&amp;manpath=FreeBSD+15.0-RELEASE+and+Ports</li>

<li>

<a href="https://man.openbsd.org/OpenBSD-7.8/tar" rel="noopener noreferrer" target="_blank">
OpenBSD 7.8 tar manual page</a>
 https://man.openbsd.org/OpenBSD-7.8/tar</li>

<li>

<a href="https://support.hpe.com/hpesc/public/docDisplay?docId=c01922474&amp;docLocale=en_US" rel="noopener noreferrer" target="_blank">
HP-UX Reference (11i v3 07/02) - 1 User Commands N-Z (vol 2)</a>
 https://support.hpe.com/hpesc/public/docDisplay?docId=c01922474&amp;docLocale=en_US</li>

<li>

<a href="http://www.mirbsd.org/htman/i386/man1/pax.htm#Sh.STANDARDS" rel="noopener noreferrer" target="_blank">
MirBSD pax(1) manual page</a>
 http://www.mirbsd.org/htman/i386/man1/pax.htm#Sh.STANDARDS</li>

<li>

<a href="https://www.iso.org/standard/60101.html" rel="noopener noreferrer" target="_blank">
ISO/IEC 21320-1:2015 Information technology - Document Container File Part 1: Core</a>
 https://www.iso.org/standard/60101.html</li>

<li>

<a href="https://windowsforum.com/threads/mastering-file-compression-on-windows-how-to-zip-and-unzip-files-effortlessly.369235/" rel="noopener noreferrer" target="_blank">
Mastering File Compression on Windows</a>
 https://windowsforum.com/threads/mastering-file-compression-on-windows-how-to-zip-and-unzip-files-effortlessly.369235/</li>

<li>

<a href="https://infozip.sourceforge.net/" rel="noopener noreferrer" target="_blank">
About Info-ZIP</a>
 https://infozip.sourceforge.net/</li>

<li>

<a href="https://hackerpublicradio.org/eps/hpr4557/index.html" rel="noopener noreferrer" target="_blank">
HPR4557::Why I prefer tar to zip</a>
 https://hackerpublicradio.org/eps/hpr4557/index.html</li>

</ol>

<p>

</p>


<p><a href="https://hackerpublicradio.org/eps/hpr4617/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4616: Thoughts about age control and further suggestions]]></title>
<description><![CDATA[This show has been flagged as Explicit by the host.

    
      
        HPR EXCLUSIVE: THE INTERVIEW THAT WILL SAVE CIVILIZATION (OR AT
        LEAST YOUR KITCHEN DRAWER)
    
    
    
    
      
        Hopper sits down with the legendary Trollercoaster for a
        completely serious policy...]]></description>
<link>https://tsecurity.de/de/3427439/it+sicherheit/it+podcasts/hpr4616+thoughts+about+age+control+and+further+suggestions/</link>
<pubDate>Mon, 13 Apr 2026 02:02:53 +0200</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Explicit by the host.</p>

    <p>
      <strong>
        HPR EXCLUSIVE: THE INTERVIEW THAT WILL SAVE CIVILIZATION (OR AT
        LEAST YOUR KITCHEN DRAWER)</strong>
    </p>
    <p>
    </p>
    <p>
      <em>
        Hopper sits down with the legendary Trollercoaster for a
        completely serious policy discussion with absolutely zero
        sarcasm whatsoever</em>
    </p>
    <p>
    </p>
    <p>
      Tired of living in a world where ANYONE can just... open a drawer?
      Where CHILDREN can casually access spatulas and spicy condiments
      without proving their age to a licensed algorithm? Where your VCR
      doesn't run a background check before spooling up a tape?</p>
    <p>
      WELL, WORRY NO MORE.</p>
    <p>
    </p>
    <p>
      In this landmark interview, visionary tech policy thinker <strong>
        Trollercoaster</strong> lays out the roadmap to a safer tomorrow
      — one age-verified gunshot wound at a time. Topics covered
      include:</p>
    <ul>
      <li>
        <strong>
          System 76's courageous capitulation</strong> — actually a 5D
        chess move to manufacture the next generation of hackers by
        making Linux mildly annoying again</li>
      <li>
        <strong>
          Two-factor authentication for firearms</strong> — SMS-based
        triggers considered, reluctantly rejected (reception is bad at
        most crime scenes)</li>
      <li>
        <strong>
          GPS injections at birth</strong> — like circumcision, but for
        helicopter parents. Kids won't remember. Probably.</li>
      <li>
        <strong>
          Kitchen-as-a-Service (KaaS™)</strong> — powered by Microsoft,
        mandated by your government, billed monthly, support tickets
        routed to Bangalore</li>
      <li>
        <strong>
          Biannual maturity exams</strong> — because some people's
        brains start "deteriorating" and they end up making sarcastic
        podcasts that lawmakers might accidentally take seriously</li>
    </ul>
    <p>
    </p>
    <p>
      The liability framework is elegant in its simplicity: if anything
      bad ever happens to anyone, <strong>
        sue the manufacturer</strong>
      . Philips. IKEA. Smith &amp; Wesson. Your kitchen. It doesn't
      matter. Someone made a thing, someone got hurt, somebody owes
      somebody lunch money.</p>
    <p>
    </p>
    <p>
      If you <strong>
        agree</strong> with any of this: contact your lawmakers
      immediately. They are waiting by the phone.</p>
    <p>
      If you <strong>
        disagree</strong>
      : too late, buddy. The lobbyists are already having the soup
      course.</p>
    <p>
    </p>
    <p>
      <em>
        The lawmakers need your insights. They are, as noted, extremely
        narrow-minded.</em>
    </p>
    <p><em>The comment section is open.</em>
    </p><p><a href="https://hackerpublicradio.org/eps/hpr4616/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4615: Clicking through an audit]]></title>
<description><![CDATA[This show has been flagged as Explicit by the host.



ISO 27001



from Wikipedia.org:



ISO/IEC 27001
 is an 

information security standard

. It specifies the requirements for establishing, implementing, maintaining and continually improving an 

information security management system

 (ISM...]]></description>
<link>https://tsecurity.de/de/3422044/it+sicherheit/it+podcasts/hpr4615+clicking+through+an+audit/</link>
<pubDate>Fri, 10 Apr 2026 02:03:06 +0200</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Explicit by the host.</p>

<h2>
<strong>
ISO 27001</strong>
</h2>
<p>
<em>
from Wikipedia.org:</em>
</p>
<p>
<strong>
ISO/IEC 27001</strong>
 is an <u>
<a href="https://en.wikipedia.org/wiki/Information_security_standards" rel="noopener noreferrer" target="_blank">
information security standard</a>
</u>
. It specifies the requirements for establishing, implementing, maintaining and continually improving an <u>
<a href="https://en.wikipedia.org/wiki/Information_security_management_system" rel="noopener noreferrer" target="_blank">
information security management system</a>
</u>
 (ISMS). Organizations with an ISMS that meet the standard's requirements can choose to have it certified by an <u>
<a href="https://en.wikipedia.org/wiki/Accredited_registrar" rel="noopener noreferrer" target="_blank">
accredited certification body</a>
</u>
 following successful completion of an <u>
<a href="https://en.wikipedia.org/wiki/Audit" rel="noopener noreferrer" target="_blank">
audit</a>
</u>
.</p>
<h2>
<br>
</h2>
<h2>
<strong>
Information security audit</strong>
</h2>
<p>
<em>
from Wikipedia.org:</em>
</p>
<p>
An <strong>
information security audit</strong>
 is an <u>
<a href="https://en.wikipedia.org/wiki/Audit" rel="noopener noreferrer" target="_blank">
audit</a>
</u>
 of the level of <u>
<a href="https://en.wikipedia.org/wiki/Information_security" rel="noopener noreferrer" target="_blank">
information security</a>
</u>
 in an organization. It is an independent review and examination of system records, activities, and related documents. These audits are intended to improve the level of information security, avoid improper information security designs, and optimize the efficiency of the security safeguards and security processes.</p>
<h2>
<br>
</h2>
<h2>
<strong>
Factors contributing to cybersecurity fatigue</strong>
</h2>
<p>
Source: Adapted from Factors contributing to cybersecurity fatigue by L. J. J. S. (2024), Abertay University.</p>
<p>
Available at: <u>
<a href="https://rke.abertay.ac.uk/en/publications/factors-contributing-to-cybersecurity-fatigue/" rel="noopener noreferrer" target="_blank">
https://rke.abertay.ac.uk/en/publications/factors-contributing-to-cybersecurity-fatigue/</a>
</u>
</p>
<p>
In cloud-based environments, the push for high-security standards often leads to "cybersecurity fatigue," which creates unintended psychological strain on employees.</p>
<ul>
<li>
Constant interruptions from repetitive access requests.</li>
<li>
Overload of security checks and decision fatigue.</li>
<li>
Lack of clear understanding regarding actual cybersecurity risks.</li>
</ul>
<h3>
<strong>
Impact on Behavior</strong>
</h3>
<ul>
<li>
Fatigue frequently leads to negative outcomes, including the bypassing of security protocols, abandonment of necessary tasks, and total disengagement from mandatory training.</li>
</ul>
<h3>
<strong>
Key Concept</strong>
</h3>
<ul>
<li>
The study highlights "attitudinal fatigue" (an employee's negative mindset toward security) as a major barrier to organizational resilience and compliance.</li>
</ul>
<h3>
<strong>
Strategic Recommendations:</strong>
</h3>
<ul>
<li>
Transition to "contextualized training" that uses relatable, real-world scenarios.</li>
<li>
Streamline security workflows to minimize disruption to daily productivity.</li>
<li>
Develop targeted interventions.</li>
</ul>
<h2>
<br>
</h2>
<h2>
<strong>
National Institute of Standards and Technology</strong>
</h2>
<p>
2011 Report: <u>
<a href="https://nvlpubs.nist.gov/nistpubs/legacy/sp/nistspecialpublication800-137.pdf" rel="noopener noreferrer" target="_blank">
Information Security Continuous Monitoring (ISCM) for Federal Information Systems and Organizations</a>
</u>
</p>
<h2>
<br>
</h2>
<h2>
<strong>
<em>
(Tangentially</em>
) related Episodes</strong>
</h2>
<ul>
<li>
<u>
<a href="https://hackerpublicradio.org/eps/hpr3779/index.html" rel="noopener noreferrer" target="_blank">
hpr3779 :: Just Because You Can Do a Thing...</a>
</u>
 - Trey</li>
<li>
<u>
<a href="https://hackerpublicradio.org/eps/hpr0061/index.html" rel="noopener noreferrer" target="_blank">
hpr0061 :: Punk Computing</a>
</u>
 - Klattu</li>
<li>
<u>
<a href="https://hackerpublicradio.org/eps/hpr4615/hackerpublicradio.org/eps/hpr0002/index.html" rel="noopener noreferrer" target="_blank">
hpr0002 :: Customization the Lost Reason</a>
</u>
 - Deepgeek</li>
</ul>
<p>
<br>
</p>


<p><a href="https://hackerpublicradio.org/eps/hpr4615/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4614: Dauug|18: Faster Than a ’286, but Inspectable Like a Soroban]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.
In this show, Marc Abel presents an introduction to Dauug|18, an 18-bit controller developed by The Dauug House. About the size of a postcard, Dauug|18 avoids the use of complex VLSI such as microprocessors, FPGAs, PLDs, ASICs, and DRAM. Instead, t...]]></description>
<link>https://tsecurity.de/de/3418873/it+sicherheit/it+podcasts/hpr4614+dauug18faster+than+a+286+but+inspectable+like+a+soroban/</link>
<pubDate>Thu, 09 Apr 2026 02:02:45 +0200</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>
<p>In this show, Marc Abel presents an introduction to Dauug|18, an 18-bit controller developed by The Dauug House. About the size of a postcard, Dauug|18 avoids the use of complex VLSI such as microprocessors, FPGAs, PLDs, ASICs, and DRAM. Instead, the architecture is built from trivial glue logic and synchronous static RAM, using components that can be hand-soldered and verified for connectivity after assembly.</p>
<p>The motivation for Dauug|18 is to provide refuge in situations where transparency, auditability, and supply chain integrity are priorities. Rather than relying on high-integration silicon, Dauug|18 is auditable at the logic-gate level, allowing owners to verify the integrity of their hardware.</p>
<p>This show covers key architectural details, the decision to use SRAM for both memory and logic, and system constraints that stem from Dauug|18's brutal simplicity, limited component selection, and succinctness. The practical effect of these constraints on programming Dauug|18 is also discussed in detail.</p>
<p>Anticipated uses for Dauug|18 include privacy assertion, critical infrastructure, and curricula for fields relating to computer engineering.</p>
<p>Files supplied with this show include a short PDF of Dauug|18 architectural details, as well as word-accurate, spell-checked subtitles and their matching transcript.</p>
<p>More information, technical documentation, and updates on related projects like Dauug|36 can be found at <a href="https://dauug.org/">https://dauug.org</a>.</p><p><a href="https://hackerpublicradio.org/eps/hpr4614/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4613: Adding functionality to an Odoo installation]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.


A show about downloading and installing extra Odoo addons.


There are 18780 lines of Python code in the core of Odoo (18)


The standard set of available apps are usually installed in /usr/lib/python3/dist-packages/odoo/addons/


Take note of...]]></description>
<link>https://tsecurity.de/de/3415703/it+sicherheit/it+podcasts/hpr4613+adding+functionality+to+an+odoo+installation/</link>
<pubDate>Wed, 08 Apr 2026 02:03:51 +0200</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>

<p>
A show about downloading and installing extra Odoo addons.</p>

<p>
There are 18780 lines of Python code in the core of Odoo (18)</p>

<p>
The standard set of available apps are usually installed in /usr/lib/python3/dist-packages/odoo/addons/</p>

<p>
Take note of the Linux File Hierarchy Standard</p>

<p>
So install your own stuff somewhere under /usr/local.</p>

<p>
For this show we standardize on /usr/local/lib/python3/odoo/addons </p>

<p>
But some use /opt/odoo.</p>

<p>

</p>

<p>
Edit /etc/odoo/odoo.conf and add:</p>

<p>
addons_path = /usr/lib/python3/dist-packages/odoo/addons, /usr/local/lib/python3/odoo/addons </p>

<p>

</p>

<p>
Find extra apps for example in: https://apps.odoo-community.org/shop</p>

<p>

</p>

<p>
First example:</p>

<p>
"Web Responsive", "https://github.com/OCA/web/", subdirectory "web_responsive" </p>

<p>

</p>

<p>
Next go to:</p>

<p>
Menu-&gt;Settings-&gt;Enable developermode-&gt;Goto Apps app-&gt;Update list of apps: to scan for all apps</p>

<p>
Install the app you just installed in /usr/local/lib/python3/odoo/addons </p>

<p>

</p>

<p>
Some more apps:</p>

<p>
"Web No Bubble" ,"https://github.com/OCA/web/", subdirectory "web_no_bubble" </p>

<p>
"Remove odoo.com Bindings", "https://github.com/OCA/server-brand/", subdirectory "disable_odoo_online"</p>

<p>
To unhide accountancy: https://github.com/OCA/account-financial-tools/tree/19.0/account_usability </p>

<p>
To add a helpdesk: https://apps.odoo-community.org/shop/helpdesk-management-4839</p>

<p>

</p>

<p>
Want more support? : jeroen@jeroenbaten.nl</p>


<p><a href="https://hackerpublicradio.org/eps/hpr4613/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[172: SuperBox]]></title>
<description><![CDATA[What if there was a device which gave you endless movies and TV shows without ads? Ok great sign me up! In this episode we interview “D3ada55”, who found such a device, but as she gazed into it, she discovered it gazing back at her.SponsorsSupport for this show comes from ThreatLocker®. ThreatLoc...]]></description>
<link>https://tsecurity.de/de/3413003/it+sicherheit/it+podcasts/172+superbox/</link>
<pubDate>Tue, 07 Apr 2026 09:03:01 +0200</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>What if there was a device which gave you endless movies and TV shows without ads? Ok great sign me up! In this episode we interview “D3ada55”, who found such a device, but as she gazed into it, she discovered it gazing back at her.</p><h3>Sponsors</h3><p>Support for this show comes from <a href="https://www.threatlocker.com/"><strong>ThreatLocker®</strong></a>. ThreatLocker® is a Zero Trust Endpoint Protection Platform that strengthens your infrastructure from the ground up. With ThreatLocker® Allowlisting and Ringfencing™, you gain a more secure approach to blocking exploits of known and unknown vulnerabilities. ThreatLocker® provides Zero Trust control at the kernel level that enables you to allow everything you need and block everything else, including ransomware! Learn more at <a href="https://www.threatlocker.com/"><strong>www.threatlocker.com</strong></a>.</p><p>This episode is sponsored by <a href="https://www.meter.com/"><strong>Meter</strong></a>, the company building networks from the ground up. Meter delivers a complete networking stack - wired, wireless, and cellular - in one solution that’s built for performance and scale. Alongside their partners, Meter designs the hardware, writes the firmware, builds the software, manages deployments, and runs support. Learn more at <a href="https://www.meter.com/"><strong>meter.com</strong></a>.</p><p>This episode is sponsored by <a href="https://exaforce.com/darknet-diaries"><strong>Exaforce</strong></a>. Exaforce was created to handle the complete security operations workflow - detect, triage, investigate, respond. Exabots autonomously manage every stage, eliminating gaps between alert and action that slow down traditional security operations. And how it works is simple too: the exabots ingest all security data and then semantically connects it to understand the full context of security events and how they relate to each other. Learn more at <a href="https://exaforce.com/darknet-diaries"><strong>exaforce.com/darknet-diaries</strong></a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4612: Hackerpublic Radio New Years Eve Show 2026 Episode 4]]></title>
<description><![CDATA[This show has been flagged as Explicit by the host.


Aldi





https://www.aldi.us/






https://en.wikipedia.org/wiki/Aldi









Does Aldi's Summit Diet Cola Contain Aspartame?





https://www.thedailymeal.com/1465489/does-aldi-cola-contain-aspartame/









Aspartame and Other Sweetener...]]></description>
<link>https://tsecurity.de/de/3412363/it+sicherheit/it+podcasts/hpr4612+hackerpublic+radio+new+years+eve+show+2026+episode+4/</link>
<pubDate>Tue, 07 Apr 2026 02:02:51 +0200</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Explicit by the host.</p>
<p>

Aldi
</p>

<p>

<a href="https://www.aldi.us/" rel="noopener noreferrer" target="_blank">
https://www.aldi.us/</a>

</p>

<p>

<a href="https://en.wikipedia.org/wiki/Aldi" rel="noopener noreferrer" target="_blank">
https://en.wikipedia.org/wiki/Aldi</a>

</p>

<p>

</p>

<p>

Does Aldi's Summit Diet Cola Contain Aspartame?
</p>

<p>

<a href="https://www.thedailymeal.com/1465489/does-aldi-cola-contain-aspartame/" rel="noopener noreferrer" target="_blank">
https://www.thedailymeal.com/1465489/does-aldi-cola-contain-aspartame/</a>

</p>

<p>

</p>

<p>

Aspartame and Other Sweeteners in Food
</p>

<p>

<a href="https://en.wikipedia.org/wiki/Aspartame" rel="noopener noreferrer" target="_blank">
https://en.wikipedia.org/wiki/Aspartame</a>

</p>

<p>

<a href="https://www.fda.gov/food/food-additives-petitions/aspartame-and-other-sweeteners-food" rel="noopener noreferrer" target="_blank">
https://www.fda.gov/food/food-additives-petitions/aspartame-and-other-sweeteners-food</a>

</p>

<p>

<a href="https://pmc.ncbi.nlm.nih.gov/articles/PMC8227014/" rel="noopener noreferrer" target="_blank">
https://pmc.ncbi.nlm.nih.gov/articles/PMC8227014/</a>

</p>

<p>

</p>

<p>

Sugar: THE BITTER TRUTH
</p>

<p>

<a href="https://www.youtube.com/watch?v=dBnniua6-oM" rel="noopener noreferrer" target="_blank">
https://www.youtube.com/watch?v=dBnniua6-oM</a>

</p>

<p>

</p>

<p>

How to Make Up Comebacks when Somebody Calls You Fat
</p>

<p>

<a href="https://www.wikihow.com/Make-Up-Comebacks-when-Somebody-Calls-You-Fat" rel="noopener noreferrer" target="_blank">
https://www.wikihow.com/Make-Up-Comebacks-when-Somebody-Calls-You-Fat</a>

</p>

<p>

</p>

<p>

Swimming With Men - You Calling Me Fat?
</p>

<p>

<a href="https://www.youtube.com/watch?v=JbD_sk0ih0g" rel="noopener noreferrer" target="_blank">
https://www.youtube.com/watch?v=JbD_sk0ih0g</a>

</p>

<p>

</p>

<p>

"Weird Al" Yankovic - Fat (Official Video)
</p>

<p>

<a href="https://www.youtube.com/watch?v=t2mU6USTBRE" rel="noopener noreferrer" target="_blank">
https://www.youtube.com/watch?v=t2mU6USTBRE</a>

</p>

<p>

</p>

<p>

Sam's Club
</p>

<p>

<a href="https://www.samsclub.com/" rel="noopener noreferrer" target="_blank">
https://www.samsclub.com/</a>

</p>

<p>

</p>

<p>

3rd Rock from the Sun
</p>

<p>

<a href="https://en.wikipedia.org/wiki/3rd_Rock_from_the_Sun" rel="noopener noreferrer" target="_blank">
https://en.wikipedia.org/wiki/3rd_Rock_from_the_Sun</a>

</p>

<p>

</p>

<p>

Interstate Highway System
</p>

<p>

<a href="https://en.wikipedia.org/wiki/Interstate_Highway_System" rel="noopener noreferrer" target="_blank">
https://en.wikipedia.org/wiki/Interstate_Highway_System</a>

</p>

<p>

</p>

<p>

History of the Interstate Highway System
</p>

<p>

<a href="https://highways.dot.gov/highway-history/interstate-system/50th-anniversary/history-interstate-highway-system" rel="noopener noreferrer" target="_blank">
https://highways.dot.gov/highway-history/interstate-system/50th-anniversary/history-interstate-highway-system</a>

</p>

<p>

<a href="https://www.gbcnet.com/ushighways/history.html" rel="noopener noreferrer" target="_blank">
https://www.gbcnet.com/ushighways/history.html</a>

</p>

<p>

<a href="https://www.history.com/articles/interstate-highway-system" rel="noopener noreferrer" target="_blank">
https://www.history.com/articles/interstate-highway-system</a>

</p>

<p>

<a href="https://www.historicushighways.com/history-of-us-highways" rel="noopener noreferrer" target="_blank">
https://www.historicushighways.com/history-of-us-highways</a>

</p>

<p>

<a href="https://vividmaps.com/evolution-interstate-highway-system/" rel="noopener noreferrer" target="_blank">
https://vividmaps.com/evolution-interstate-highway-system/</a>

</p>

<p>

<a href="https://www.youtube.com/watch?v=SF16uDPGi14" rel="noopener noreferrer" target="_blank">
https://www.youtube.com/watch?v=SF16uDPGi14</a>

</p>

<p>

</p>

<p>

99% Invisible
</p>

<p>

<a href="https://99percentinvisible.org/" rel="noopener noreferrer" target="_blank">
https://99percentinvisible.org/</a>

</p>

<p>

<a href="https://en.wikipedia.org/wiki/99%25_Invisible" rel="noopener noreferrer" target="_blank">
https://en.wikipedia.org/wiki/99%25_Invisible</a>

</p>

<p>

</p>

<p>

Devhack is a Queer-focused hackerspace
</p>

<p>

<a href="https://wiki.hackerspaces.org/%E2%88%95dev/hack" rel="noopener noreferrer" target="_blank">
https://wiki.hackerspaces.org/%E2%88%95dev/hack</a>

</p>

<p>

<a href="https://devhack.net/" rel="noopener noreferrer" target="_blank">
https://devhack.net/</a>

</p>

<p>

</p>

<p>

Beyond The Exit
</p>

<p>

<a href="https://www.youtube.com/@BTE4172/videos" rel="noopener noreferrer" target="_blank">
https://www.youtube.com/@BTE4172/videos</a>

</p>

<p>

</p>

<p>

Amtrak
</p>

<p>

<a href="https://www.amtrak.com/home" rel="noopener noreferrer" target="_blank">
https://www.amtrak.com/home</a>

</p>

<p>

</p>

<p>

Palmer Raids
</p>

<p>

<a href="https://en.wikipedia.org/wiki/Palmer_Raids" rel="noopener noreferrer" target="_blank">
https://en.wikipedia.org/wiki/Palmer_Raids</a>

</p>

<p>

</p>

<p>

Mumble project
</p>

<p>

<a href="https://www.mumble.info/" rel="noopener noreferrer" target="_blank">
https://www.mumble.info/</a>

</p>

<p>

</p>

<p>

LinuxLugCast
</p>

<p>

<a href="https://linuxlugcast.com/" rel="noopener noreferrer" target="_blank">
https://linuxlugcast.com/</a>

</p>

<p>

</p>

<p>

n scale piedmont northern boxcar
</p>

<p>

<a href="https://www.worthpoint.com/worthopedia/scale-kadee-piedmont-northern-40-1840448079" rel="noopener noreferrer" target="_blank">
https://www.worthpoint.com/worthopedia/scale-kadee-piedmont-northern-40-1840448079</a>

</p>

<p>

</p>

<p>

N scale
</p>

<p>

<a href="https://en.wikipedia.org/wiki/N_scale" rel="noopener noreferrer" target="_blank">
https://en.wikipedia.org/wiki/N_scale</a>

</p>

<p>

</p>

<p>

HO scale
</p>

<p>

<a href="https://en.wikipedia.org/wiki/HO_scale" rel="noopener noreferrer" target="_blank">
https://en.wikipedia.org/wiki/HO_scale</a>

</p>

<p>

</p>

<p>

Rail transport modelling scales
</p>

<p>

<a href="https://en.wikipedia.org/wiki/Rail_transport_modelling_scales" rel="noopener noreferrer" target="_blank">
https://en.wikipedia.org/wiki/Rail_transport_modelling_scales</a>

</p>

<p>

</p>

<p>

Navy Pier
</p>

<p>

<a href="https://en.wikipedia.org/wiki/Navy_Pier" rel="noopener noreferrer" target="_blank">
https://en.wikipedia.org/wiki/Navy_Pier</a>

</p>

<p>

<a href="https://navypier.org/" rel="noopener noreferrer" target="_blank">
https://navypier.org/</a>

</p>

<p>

</p>

<p>

The IT Crowd
</p>

<p>

<a href="https://en.wikipedia.org/wiki/The_IT_Crowd" rel="noopener noreferrer" target="_blank">
https://en.wikipedia.org/wiki/The_IT_Crowd</a>

</p>

<p>

<a href="https://www.imdb.com/title/tt0487831/" rel="noopener noreferrer" target="_blank">
https://www.imdb.com/title/tt0487831/</a>

</p>

<p>

</p>

<p>

A Christmas Story
</p>

<p>

<a href="https://en.wikipedia.org/wiki/A_Christmas_Story" rel="noopener noreferrer" target="_blank">
https://en.wikipedia.org/wiki/A_Christmas_Story</a>

</p>

<p>

</p>

<p>

Die Hard
</p>

<p>

<a href="https://www.imdb.com/title/tt0095016/" rel="noopener noreferrer" target="_blank">
https://www.imdb.com/title/tt0095016/</a>

</p>

<p>

<a href="https://theconversation.com/nine-reasons-why-die-hard-really-is-a-christmas-film-173801" rel="noopener noreferrer" target="_blank">
https://theconversation.com/nine-reasons-why-die-hard-really-is-a-christmas-film-173801</a>

</p>

<p>

</p>

<p>

The Fifth Element
</p>

<p>

<a href="https://en.wikipedia.org/wiki/The_Fifth_Element" rel="noopener noreferrer" target="_blank">
https://en.wikipedia.org/wiki/The_Fifth_Element</a>

</p>

<p>

</p>

<p>

Footloose
</p>

<p>

<a href="https://en.wikipedia.org/wiki/Footloose" rel="noopener noreferrer" target="_blank">
https://en.wikipedia.org/wiki/Footloose</a>

</p>

<p>

</p>

<p>

Tom Cruise's Couch Jump
</p>

<p>

<a href="https://people.com/tom-cruise-couch-jump-on-oprah-is-20-years-old-11737728" rel="noopener noreferrer" target="_blank">
https://people.com/tom-cruise-couch-jump-on-oprah-is-20-years-old-11737728</a>

</p>

<p>

</p>

<p>

Cruise control
</p>

<p>

<a href="https://en.wikipedia.org/wiki/Cruise_control" rel="noopener noreferrer" target="_blank">
https://en.wikipedia.org/wiki/Cruise_control</a>

</p>

<p>

</p>

<p>

Blind spot monitor
</p>

<p>

<a href="https://en.wikipedia.org/wiki/Blind_spot_monitor" rel="noopener noreferrer" target="_blank">
https://en.wikipedia.org/wiki/Blind_spot_monitor</a>

</p>

<p>

</p>

<p>

Kenworth T680
</p>

<p>

<a href="https://www.kenworth.com/trucks/T680/" rel="noopener noreferrer" target="_blank">
https://www.kenworth.com/trucks/T680/</a>

</p>

<p>

<a href="https://www.youtube.com/watch?v=Ze05NW6UJOE" rel="noopener noreferrer" target="_blank">
https://www.youtube.com/watch?v=Ze05NW6UJOE</a>

</p>

<p>

</p>

<p>

Knight Rider
</p>

<p>

<a href="https://en.wikipedia.org/wiki/Knight_Rider_(1982_TV_series)" rel="noopener noreferrer" target="_blank">
https://en.wikipedia.org/wiki/Knight_Rider_(1982_TV_series)</a>

</p>

<p>

<a href="https://en.wikipedia.org/wiki/KITT" rel="noopener noreferrer" target="_blank">
https://en.wikipedia.org/wiki/KITT</a>

</p>

<p>

</p>

<p>

Christine (King novel)
</p>

<p>

<a href="https://en.wikipedia.org/wiki/Christine_(King_novel)" rel="noopener noreferrer" target="_blank">
https://en.wikipedia.org/wiki/Christine_(King_novel)</a>

</p>

<p>

</p>

<p>

SWAT
</p>

<p>

<a href="https://en.wikipedia.org/wiki/SWAT" rel="noopener noreferrer" target="_blank">
https://en.wikipedia.org/wiki/SWAT</a>

</p>

<p>

</p>

<p>

The Blues Brothers (film)
</p>

<p>

<a href="https://en.wikipedia.org/wiki/The_Blues_Brothers_(film)" rel="noopener noreferrer" target="_blank">
https://en.wikipedia.org/wiki/The_Blues_Brothers_(film)</a>

</p>

<p>

<a href="https://www.imdb.com/title/tt0080455" rel="noopener noreferrer" target="_blank">
https://www.imdb.com/title/tt0080455</a>

</p>

<p>

</p>

<p>

Speed limits in the United States
</p>

<p>

<a href="https://en.wikipedia.org/wiki/Speed_limits_in_the_United_States" rel="noopener noreferrer" target="_blank">
https://en.wikipedia.org/wiki/Speed_limits_in_the_United_States</a>

</p>

<p>

</p>

<p><a href="https://hackerpublicradio.org/eps/hpr4612/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4611: HPR Community News for March 2026]]></title>
<description><![CDATA[This show has been flagged as Explicit by the host.
New hosts

There were no new hosts this month.


Last Month's Shows



Id
Day
Date
Title
Host


4586
Mon
2026-03-02
HPR Community News for February 2026
HPR Volunteers


4587
Tue
2026-03-03
UNIX Curio #1 - Shell Archives
Vance


4588
Wed
2026-03...]]></description>
<link>https://tsecurity.de/de/3410006/it+sicherheit/it+podcasts/hpr4611+hpr+community+news+for+march+2026/</link>
<pubDate>Mon, 06 Apr 2026 02:02:45 +0200</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Explicit by the host.</p>
<h2>New hosts</h2>
<p>
There were no new hosts this month.
</p>

<h2>Last Month's Shows</h2>

<table>
<tr>
<th>Id</th>
<th>Day</th>
<th>Date</th>
<th>Title</th>
<th>Host</th>
</tr>
<tr>
<td><strong><a href="https://hackerpublicradio.org/eps/hpr4586/index.html" target="_blank">4586</a></strong></td>
<td>Mon</td>
<td class="shrink">2026-03-02</td>
<td><a href="https://hackerpublicradio.org/eps/hpr4586/index.html" target="_blank">HPR Community News for February 2026</a></td>
<td><a href="https://hackerpublicradio.org/correspondents/0159.html" target="_blank">HPR Volunteers</a></td>
</tr>
<tr>
<td><strong><a href="https://hackerpublicradio.org/eps/hpr4587/index.html" target="_blank">4587</a></strong></td>
<td>Tue</td>
<td class="shrink">2026-03-03</td>
<td><a href="https://hackerpublicradio.org/eps/hpr4587/index.html" target="_blank">UNIX Curio #1 - Shell Archives</a></td>
<td><a href="https://hackerpublicradio.org/correspondents/0459.html" target="_blank">Vance</a></td>
</tr>
<tr>
<td><strong><a href="https://hackerpublicradio.org/eps/hpr4588/index.html" target="_blank">4588</a></strong></td>
<td>Wed</td>
<td class="shrink">2026-03-04</td>
<td><a href="https://hackerpublicradio.org/eps/hpr4588/index.html" target="_blank">HPR Beer Garden 11 - Belgian Scotch Ale</a></td>
<td><a href="https://hackerpublicradio.org/correspondents/0296.html" target="_blank">Kevie</a></td>
</tr>
<tr>
<td><strong><a href="https://hackerpublicradio.org/eps/hpr4589/index.html" target="_blank">4589</a></strong></td>
<td>Thu</td>
<td class="shrink">2026-03-05</td>
<td><a href="https://hackerpublicradio.org/eps/hpr4589/index.html" target="_blank">YouTube Subscriptions 2025 #15</a></td>
<td><a href="https://hackerpublicradio.org/correspondents/0198.html" target="_blank">Ahuka</a></td>
</tr>
<tr>
<td><strong><a href="https://hackerpublicradio.org/eps/hpr4590/index.html" target="_blank">4590</a></strong></td>
<td>Fri</td>
<td class="shrink">2026-03-06</td>
<td><a href="https://hackerpublicradio.org/eps/hpr4590/index.html" target="_blank">Playing Civilization V, Part 9</a></td>
<td><a href="https://hackerpublicradio.org/correspondents/0198.html" target="_blank">Ahuka</a></td>
</tr>
<tr>
<td><strong><a href="https://hackerpublicradio.org/eps/hpr4591/index.html" target="_blank">4591</a></strong></td>
<td>Mon</td>
<td class="shrink">2026-03-09</td>
<td><a href="https://hackerpublicradio.org/eps/hpr4591/index.html" target="_blank">A Bit of Git</a></td>
<td><a href="https://hackerpublicradio.org/correspondents/0403.html" target="_blank">Lee</a></td>
</tr>
<tr>
<td><strong><a href="https://hackerpublicradio.org/eps/hpr4592/index.html" target="_blank">4592</a></strong></td>
<td>Tue</td>
<td class="shrink">2026-03-10</td>
<td><a href="https://hackerpublicradio.org/eps/hpr4592/index.html" target="_blank">Happy by shower # 2</a></td>
<td><a href="https://hackerpublicradio.org/correspondents/0441.html" target="_blank">Antoine</a></td>
</tr>
<tr>
<td><strong><a href="https://hackerpublicradio.org/eps/hpr4593/index.html" target="_blank">4593</a></strong></td>
<td>Wed</td>
<td class="shrink">2026-03-11</td>
<td><a href="https://hackerpublicradio.org/eps/hpr4593/index.html" target="_blank">Nuclear Reactor Technology - Ep 8 Generation Four Reactors</a></td>
<td><a href="https://hackerpublicradio.org/correspondents/0455.html" target="_blank">Whiskeyjack</a></td>
</tr>
<tr>
<td><strong><a href="https://hackerpublicradio.org/eps/hpr4594/index.html" target="_blank">4594</a></strong></td>
<td>Thu</td>
<td class="shrink">2026-03-12</td>
<td><a href="https://hackerpublicradio.org/eps/hpr4594/index.html" target="_blank">Hackerpublic Radio New Years Eve Show 2026 Episode 2</a></td>
<td><a href="https://hackerpublicradio.org/correspondents/0269.html" target="_blank">Honkeymagoo</a></td>
</tr>
<tr>
<td><strong><a href="https://hackerpublicradio.org/eps/hpr4595/index.html" target="_blank">4595</a></strong></td>
<td>Fri</td>
<td class="shrink">2026-03-13</td>
<td><a href="https://hackerpublicradio.org/eps/hpr4595/index.html" target="_blank">WATER WATER EVERYWHERE!</a></td>
<td><a href="https://hackerpublicradio.org/correspondents/0036.html" target="_blank">operat0r</a></td>
</tr>
<tr>
<td><strong><a href="https://hackerpublicradio.org/eps/hpr4596/index.html" target="_blank">4596</a></strong></td>
<td>Mon</td>
<td class="shrink">2026-03-16</td>
<td><a href="https://hackerpublicradio.org/eps/hpr4596/index.html" target="_blank">Adding voice-over audio track created using text to speech on the movie subtitles</a></td>
<td><a href="https://hackerpublicradio.org/correspondents/0030.html" target="_blank">Ken Fallon</a></td>
</tr>
<tr>
<td><strong><a href="https://hackerpublicradio.org/eps/hpr4597/index.html" target="_blank">4597</a></strong></td>
<td>Tue</td>
<td class="shrink">2026-03-17</td>
<td><a href="https://hackerpublicradio.org/eps/hpr4597/index.html" target="_blank">UNIX Curio #2 - fgrep</a></td>
<td><a href="https://hackerpublicradio.org/correspondents/0459.html" target="_blank">Vance</a></td>
</tr>
<tr>
<td><strong><a href="https://hackerpublicradio.org/eps/hpr4598/index.html" target="_blank">4598</a></strong></td>
<td>Wed</td>
<td class="shrink">2026-03-18</td>
<td><a href="https://hackerpublicradio.org/eps/hpr4598/index.html" target="_blank">Recording good audio using open source tools</a></td>
<td><a href="https://hackerpublicradio.org/correspondents/0442.html" target="_blank">Shane - StrandedOutput</a></td>
</tr>
<tr>
<td><strong><a href="https://hackerpublicradio.org/eps/hpr4599/index.html" target="_blank">4599</a></strong></td>
<td>Thu</td>
<td class="shrink">2026-03-19</td>
<td><a href="https://hackerpublicradio.org/eps/hpr4599/index.html" target="_blank">Women in digital and games event</a></td>
<td><a href="https://hackerpublicradio.org/correspondents/0430.html" target="_blank">Dave Hingley</a></td>
</tr>
<tr>
<td><strong><a href="https://hackerpublicradio.org/eps/hpr4600/index.html" target="_blank">4600</a></strong></td>
<td>Fri</td>
<td class="shrink">2026-03-20</td>
<td><a href="https://hackerpublicradio.org/eps/hpr4600/index.html" target="_blank">The First Doctor, Part 5</a></td>
<td><a href="https://hackerpublicradio.org/correspondents/0198.html" target="_blank">Ahuka</a></td>
</tr>
<tr>
<td><strong><a href="https://hackerpublicradio.org/eps/hpr4601/index.html" target="_blank">4601</a></strong></td>
<td>Mon</td>
<td class="shrink">2026-03-23</td>
<td><a href="https://hackerpublicradio.org/eps/hpr4601/index.html" target="_blank">How to be a better writer</a></td>
<td><a href="https://hackerpublicradio.org/correspondents/0415.html" target="_blank">enistello</a></td>
</tr>
<tr>
<td><strong><a href="https://hackerpublicradio.org/eps/hpr4602/index.html" target="_blank">4602</a></strong></td>
<td>Tue</td>
<td class="shrink">2026-03-24</td>
<td><a href="https://hackerpublicradio.org/eps/hpr4602/index.html" target="_blank">Hackerpublic Radio New Years Eve Show 2026 Episode 3</a></td>
<td><a href="https://hackerpublicradio.org/correspondents/0269.html" target="_blank">Honkeymagoo</a></td>
</tr>
<tr>
<td><strong><a href="https://hackerpublicradio.org/eps/hpr4603/index.html" target="_blank">4603</a></strong></td>
<td>Wed</td>
<td class="shrink">2026-03-25</td>
<td><a href="https://hackerpublicradio.org/eps/hpr4603/index.html" target="_blank">On the Erosion of Freedom in Open Source Software</a></td>
<td><a href="https://hackerpublicradio.org/correspondents/0420.html" target="_blank">HopperMCS</a></td>
</tr>
<tr>
<td><strong><a href="https://hackerpublicradio.org/eps/hpr4604/index.html" target="_blank">4604</a></strong></td>
<td>Thu</td>
<td class="shrink">2026-03-26</td>
<td><a href="https://hackerpublicradio.org/eps/hpr4604/index.html" target="_blank">Quick Tips for January 20 26</a></td>
<td><a href="https://hackerpublicradio.org/correspondents/0036.html" target="_blank">operat0r</a></td>
</tr>
<tr>
<td><strong><a href="https://hackerpublicradio.org/eps/hpr4605/index.html" target="_blank">4605</a></strong></td>
<td>Fri</td>
<td class="shrink">2026-03-27</td>
<td><a href="https://hackerpublicradio.org/eps/hpr4605/index.html" target="_blank">Lee locks down his wifey poo</a></td>
<td><a href="https://hackerpublicradio.org/correspondents/0446.html" target="_blank">Elsbeth</a></td>
</tr>
<tr>
<td><strong><a href="https://hackerpublicradio.org/eps/hpr4606/index.html" target="_blank">4606</a></strong></td>
<td>Mon</td>
<td class="shrink">2026-03-30</td>
<td><a href="https://hackerpublicradio.org/eps/hpr4606/index.html" target="_blank">My Nerdy Childhood: From Floppy Disks to Dial-Up Dreams</a></td>
<td><a href="https://hackerpublicradio.org/correspondents/0433.html" target="_blank">Trollercoaster</a></td>
</tr>
<tr>
<td><strong><a href="https://hackerpublicradio.org/eps/hpr4607/index.html" target="_blank">4607</a></strong></td>
<td>Tue</td>
<td class="shrink">2026-03-31</td>
<td><a href="https://hackerpublicradio.org/eps/hpr4607/index.html" target="_blank">UNIX Curio #3 - basename and dirname</a></td>
<td><a href="https://hackerpublicradio.org/correspondents/0459.html" target="_blank">Vance</a></td>
</tr>
</table>

<h2>Comments this month</h2>

<h3>Past shows</h3>
<ul>
<li><strong><a href="https://hackerpublicradio.org/eps/hpr3711/index.html#comments" target="_blank">hpr3711</a></strong> (2022-10-24) "<em>Cars</em>" by <a href="https://hackerpublicradio.org/correspondents/0377.html" target="_blank">Zen_Floater2</a>.<br></li>
<ul>
<li><strong>m0dese7en</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr3711/index.html#comment_4642" target="_blank">Additional details on cars</a></em>" (2026-03-13 16:44:12)<br></li>
</ul>
<li><strong><a href="https://hackerpublicradio.org/eps/hpr4333/index.html#comments" target="_blank">hpr4333</a></strong> (2025-03-12) "<em>A Radically Transparent Computer Without Complex VLSI</em>" by <a href="https://hackerpublicradio.org/correspondents/0443.html" target="_blank">Marc W. Abel</a>.<br></li>
<ul>
<li><strong>Marc</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4333/index.html#comment_4660" target="_blank">New online home for Dauug|36 and Dauug|18</a></em>" (2026-03-25 15:18:15)<br></li>
</ul>
<li><strong><a href="https://hackerpublicradio.org/eps/hpr4424/index.html#comments" target="_blank">hpr4424</a></strong> (2025-07-17) "<em>How I use Newsboat for Podcasts and Reddit</em>" by <a href="https://hackerpublicradio.org/correspondents/0318.html" target="_blank">Archer72</a>.<br></li>
<ul>
<li><strong>أحمد المحمودي</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4424/index.html#comment_4667" target="_blank">Not fixed</a></em>" (2026-03-31 00:54:19)<br></li>
</ul>
<li><strong><a href="https://hackerpublicradio.org/eps/hpr4509/index.html#comments" target="_blank">hpr4509</a></strong> (2025-11-13) "<em>HPR Beer Garden 5 - Heferweisen</em>" by <a href="https://hackerpublicradio.org/correspondents/0296.html" target="_blank">Kevie</a>.<br></li>
<ul>
<li><strong>Gan Ainm</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4509/index.html#comment_4631" target="_blank">Hefeweizen</a></em>" (2026-03-04 06:47:39)<br></li>
<li><strong>Kevie</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4509/index.html#comment_4641" target="_blank">Thanks Gan</a></em>" (2026-03-13 15:28:45)<br></li>
</ul>
<li><strong><a href="https://hackerpublicradio.org/eps/hpr4553/index.html#comments" target="_blank">hpr4553</a></strong> (2026-01-14) "<em>Nuclear Reactor Technology - Ep 4 Less Common Reactor Types</em>" by <a href="https://hackerpublicradio.org/correspondents/0455.html" target="_blank">Whiskeyjack</a>.<br></li>
<ul>
<li><strong>Antoine</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4553/index.html#comment_4650" target="_blank">Were/are the designs patented?</a></em>" (2026-03-18 12:41:35)<br></li>
<li><strong>Whiskeyjack</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4553/index.html#comment_4651" target="_blank">Reply to Antoine</a></em>" (2026-03-19 03:31:50)<br></li>
<li><strong>Antoine</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4553/index.html#comment_4655" target="_blank">I will</a></em>" (2026-03-21 02:30:29)<br></li>
</ul>
<li><strong><a href="https://hackerpublicradio.org/eps/hpr4565/index.html#comments" target="_blank">hpr4565</a></strong> (2026-01-30) "<em>HPR Beer Garden 9 - Barley Wine</em>" by <a href="https://hackerpublicradio.org/correspondents/0296.html" target="_blank">Kevie</a>.<br></li>
<ul>
<li><strong>Aleman</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4565/index.html#comment_4634" target="_blank">Beer Garden</a></em>" (2026-03-06 19:25:26)<br></li>
</ul>
<li><strong><a href="https://hackerpublicradio.org/eps/hpr4571/index.html#comments" target="_blank">hpr4571</a></strong> (2026-02-09) "<em>Data processing retrospective</em>" by <a href="https://hackerpublicradio.org/correspondents/0403.html" target="_blank">Lee</a>.<br></li>
<ul>
<li><strong>Archer72</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4571/index.html#comment_4628" target="_blank">previous generation</a></em>" (2026-03-03 15:44:12)<br></li>
</ul>
<li><strong><a href="https://hackerpublicradio.org/eps/hpr4573/index.html#comments" target="_blank">hpr4573</a></strong> (2026-02-11) "<em>Nuclear Reactor Technology - Ep 6 Thorium Reactors</em>" by <a href="https://hackerpublicradio.org/correspondents/0455.html" target="_blank">Whiskeyjack</a>.<br></li>
<ul>
<li><strong>Archer72</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4573/index.html#comment_4618" target="_blank">Interesting series</a></em>" (2026-02-28 16:59:15)<br></li>
<li><strong>Whiskeyjack</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4573/index.html#comment_4619" target="_blank">Reply to Archer72</a></em>" (2026-02-28 23:06:46)<br></li>
<li><strong>Clinton</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4573/index.html#comment_4635" target="_blank">Modern situation.</a></em>" (2026-03-07 11:30:14)<br></li>
<li><strong>Whiskeyjack</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4573/index.html#comment_4636" target="_blank">Reply to Clinton</a></em>" (2026-03-07 18:42:23)<br></li>
</ul>
<li><strong><a href="https://hackerpublicradio.org/eps/hpr4574/index.html#comments" target="_blank">hpr4574</a></strong> (2026-02-12) "<em>UNIX Curio #0 - Introduction</em>" by <a href="https://hackerpublicradio.org/correspondents/0459.html" target="_blank">Vance</a>.<br></li>
<ul>
<li><strong>murph</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4574/index.html#comment_4622" target="_blank">Great show, looking forward to more.</a></em>" (2026-03-01 19:21:46)<br></li>
</ul>
<li><strong><a href="https://hackerpublicradio.org/eps/hpr4575/index.html#comments" target="_blank">hpr4575</a></strong> (2026-02-13) "<em>Making First Contact</em>" by <a href="https://hackerpublicradio.org/correspondents/0030.html" target="_blank">Ken Fallon</a>.<br></li>
<ul>
<li><strong>Archer72</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4575/index.html#comment_4617" target="_blank">Good to hear 73's</a></em>" (2026-02-28 15:51:52)<br></li>
</ul>
<li><strong><a href="https://hackerpublicradio.org/eps/hpr4576/index.html#comments" target="_blank">hpr4576</a></strong> (2026-02-16) "<em>Responce to Lee/Elsbeth eps</em>" by <a href="https://hackerpublicradio.org/correspondents/0036.html" target="_blank">operat0r</a>.<br></li>
<ul>
<li><strong>candycanearter07</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4576/index.html#comment_4639" target="_blank">relatable episode</a></em>" (2026-03-10 01:39:18)<br></li>
</ul>
<li><strong><a href="https://hackerpublicradio.org/eps/hpr4577/index.html#comments" target="_blank">hpr4577</a></strong> (2026-02-17) "<em>HPR Beer Garden 10 - Scotch Ale/Wee Heavy</em>" by <a href="https://hackerpublicradio.org/correspondents/0296.html" target="_blank">Kevie</a>.<br></li>
<ul>
<li><strong>Kevie</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4577/index.html#comment_4613" target="_blank">Upcoming beers</a></em>" (2026-02-26 18:14:16)<br></li>
</ul>
<li><strong><a href="https://hackerpublicradio.org/eps/hpr4583/index.html#comments" target="_blank">hpr4583</a></strong> (2026-02-25) "<em>Nuclear Reactor Technology - Ep 7 Small Modular Reactors</em>" by <a href="https://hackerpublicradio.org/correspondents/0455.html" target="_blank">Whiskeyjack</a>.<br></li>
<ul>
<li><strong>brian-in-ohio</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4583/index.html#comment_4625" target="_blank">good shows</a></em>" (2026-03-02 21:10:12)<br></li>
<li><strong>Whiskeyjack</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4583/index.html#comment_4630" target="_blank">Response to brian-in-ohio for HPR4583 Small Modular Reactors</a></em>" (2026-03-03 23:38:55)<br></li>
</ul>
<li><strong><a href="https://hackerpublicradio.org/eps/hpr4584/index.html#comments" target="_blank">hpr4584</a></strong> (2026-02-26) "<em>Recording a show, and crappy audio</em>" by <a href="https://hackerpublicradio.org/correspondents/0318.html" target="_blank">Archer72</a>.<br></li>
<ul>
<li><strong>Dave Lee (thelovebug)</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4584/index.html#comment_4614" target="_blank">Audio quality</a></em>" (2026-02-27 08:33:24)<br></li>
<li><strong>Kevin O'Brien</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4584/index.html#comment_4615" target="_blank">The Zoom was perfect</a></em>" (2026-02-27 17:29:43)<br></li>
<li><strong>Archer72</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4584/index.html#comment_4626" target="_blank">Bad mic</a></em>" (2026-03-03 15:08:13)<br></li>
<li><strong>jezra</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4584/index.html#comment_4675" target="_blank">false advertising! </a></em>" (2026-04-03 17:28:05)<br></li>
</ul>
<li><strong><a href="https://hackerpublicradio.org/eps/hpr4585/index.html#comments" target="_blank">hpr4585</a></strong> (2026-02-27) "<em>mpv util scripts</em>" by <a href="https://hackerpublicradio.org/correspondents/0454.html" target="_blank">candycanearter</a>.<br></li>
<ul>
<li><strong>Windigo</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4585/index.html#comment_4616" target="_blank">mpv fanclub</a></em>" (2026-02-28 01:55:28)<br></li>
<li><strong>Windigo</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4585/index.html#comment_4620" target="_blank">Re: mpv fanclub</a></em>" (2026-03-01 05:07:24)<br></li>
<li><strong>Archer72</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4585/index.html#comment_4621" target="_blank">Second in mpv fanclub</a></em>" (2026-03-01 08:52:41)<br></li>
<li><strong>candycanearter07</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4585/index.html#comment_4623" target="_blank">updated script</a></em>" (2026-03-01 22:35:38)<br></li>
</ul>
</ul>
<h3>This month's shows</h3>
<ul>
<li><strong><a href="https://hackerpublicradio.org/eps/hpr4586/index.html#comments" target="_blank">hpr4586</a></strong> (2026-03-02) "<em>HPR Community News for February 2026</em>" by <a href="https://hackerpublicradio.org/correspondents/0159.html" target="_blank">HPR Volunteers</a>.<br></li>
<ul>
<li><strong>candycanearter07</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4586/index.html#comment_4624" target="_blank">41:40</a></em>" (2026-03-01 23:39:18)<br></li>
<li><strong>Whiskeyjack</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4586/index.html#comment_4629" target="_blank">HPR Commnity News discussion on audio</a></em>" (2026-03-03 23:11:25)<br></li>
</ul>
<li><strong><a href="https://hackerpublicradio.org/eps/hpr4587/index.html#comments" target="_blank">hpr4587</a></strong> (2026-03-03) "<em>UNIX Curio #1 - Shell Archives</em>" by <a href="https://hackerpublicradio.org/correspondents/0459.html" target="_blank">Vance</a>.<br></li>
<ul>
<li><strong>Archer72</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4587/index.html#comment_4627" target="_blank">Continuing series</a></em>" (2026-03-03 15:15:19)<br></li>
<li><strong>xmanmonk</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4587/index.html#comment_4632" target="_blank">uuencode/uudecode on Solaris</a></em>" (2026-03-05 01:47:53)<br></li>
<li><strong>Vance</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4587/index.html#comment_4637" target="_blank">Thanks, and Solaris</a></em>" (2026-03-07 20:10:08)<br></li>
<li><strong>Jim DeVore</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4587/index.html#comment_4645" target="_blank">Thanks for the trip down memory lane!</a></em>" (2026-03-17 01:19:46)<br></li>
</ul>
<li><strong><a href="https://hackerpublicradio.org/eps/hpr4591/index.html#comments" target="_blank">hpr4591</a></strong> (2026-03-09) "<em>A Bit of Git</em>" by <a href="https://hackerpublicradio.org/correspondents/0403.html" target="_blank">Lee</a>.<br></li>
<ul>
<li><strong>candycanearter07</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4591/index.html#comment_4638" target="_blank">anecdotal teaching is the best kind</a></em>" (2026-03-09 04:58:24)<br></li>
</ul>
<li><strong><a href="https://hackerpublicradio.org/eps/hpr4592/index.html#comments" target="_blank">hpr4592</a></strong> (2026-03-10) "<em>Happy by shower # 2</em>" by <a href="https://hackerpublicradio.org/correspondents/0441.html" target="_blank">Antoine</a>.<br></li>
<ul>
<li><strong>candycanearter07</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4592/index.html#comment_4640" target="_blank">interesting!</a></em>" (2026-03-10 04:20:16)<br></li>
<li><strong>Antoine</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4592/index.html#comment_4654" target="_blank">Sharing (response to candycanearter07)</a></em>" (2026-03-21 02:27:17)<br></li>
</ul>
<li><strong><a href="https://hackerpublicradio.org/eps/hpr4593/index.html#comments" target="_blank">hpr4593</a></strong> (2026-03-11) "<em>Nuclear Reactor Technology - Ep 8 Generation Four Reactors</em>" by <a href="https://hackerpublicradio.org/correspondents/0455.html" target="_blank">Whiskeyjack</a>.<br></li>
<ul>
<li><strong>Jim DeVore</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4593/index.html#comment_4644" target="_blank">Great series!</a></em>" (2026-03-17 01:13:51)<br></li>
<li><strong>Whiskeyjack</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4593/index.html#comment_4646" target="_blank">Response to Jim DeVore</a></em>" (2026-03-17 13:46:31)<br></li>
</ul>
<li><strong><a href="https://hackerpublicradio.org/eps/hpr4596/index.html#comments" target="_blank">hpr4596</a></strong> (2026-03-16) "<em>Adding voice-over audio track created using text to speech on the movie subtitles</em>" by <a href="https://hackerpublicradio.org/correspondents/0030.html" target="_blank">Ken Fallon</a>.<br></li>
<ul>
<li><strong>folky</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4596/index.html#comment_4586" target="_blank">Interesting solution, but annoying </a></em>" (2026-02-05 11:54:36)<br></li>
<li><strong>Carsten</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4596/index.html#comment_4611" target="_blank">Amazing project</a></em>" (2026-02-25 00:29:08)<br></li>
<li><strong>candycanearter07</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4596/index.html#comment_4643" target="_blank">interesting!!</a></em>" (2026-03-16 13:38:03)<br></li>
</ul>
<li><strong><a href="https://hackerpublicradio.org/eps/hpr4597/index.html#comments" target="_blank">hpr4597</a></strong> (2026-03-17) "<em>UNIX Curio #2 - fgrep</em>" by <a href="https://hackerpublicradio.org/correspondents/0459.html" target="_blank">Vance</a>.<br></li>
<ul>
<li><strong>Ken Fallon</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4597/index.html#comment_4633" target="_blank">Time to active use</a></em>" (2026-03-05 05:58:31)<br></li>
<li><strong>L'andrew </strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4597/index.html#comment_4647" target="_blank">Nice job explaining *grep features.</a></em>" (2026-03-18 03:34:11)<br></li>
<li><strong>candycanearter07</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4597/index.html#comment_4648" target="_blank">informative</a></em>" (2026-03-18 03:52:52)<br></li>
<li><strong>Vance</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4597/index.html#comment_4653" target="_blank">Expressions</a></em>" (2026-03-20 18:16:09)<br></li>
</ul>
<li><strong><a href="https://hackerpublicradio.org/eps/hpr4598/index.html#comments" target="_blank">hpr4598</a></strong> (2026-03-18) "<em>Recording good audio using open source tools</em>" by <a href="https://hackerpublicradio.org/correspondents/0442.html" target="_blank">Shane - StrandedOutput</a>.<br></li>
<ul>
<li><strong>Archer72</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4598/index.html#comment_4652" target="_blank">Great tips!</a></em>" (2026-03-19 10:39:24)<br></li>
<li><strong>Ole Aamot</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4598/index.html#comment_4659" target="_blank">GarageJam 6.0.1</a></em>" (2026-03-24 01:50:51)<br></li>
</ul>
<li><strong><a href="https://hackerpublicradio.org/eps/hpr4600/index.html#comments" target="_blank">hpr4600</a></strong> (2026-03-20) "<em>The First Doctor, Part 5</em>" by <a href="https://hackerpublicradio.org/correspondents/0198.html" target="_blank">Ahuka</a>.<br></li>
<ul>
<li><strong>Kevie</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4600/index.html#comment_4656" target="_blank">Great series</a></em>" (2026-03-21 15:22:59)<br></li>
<li><strong>Kevin O'Brien</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4600/index.html#comment_4657" target="_blank">I think I will</a></em>" (2026-03-21 21:23:38)<br></li>
<li><strong>Archer72</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4600/index.html#comment_4658" target="_blank">Great series and 2nd continuation </a></em>" (2026-03-21 22:35:05)<br></li>
</ul>
<li><strong><a href="https://hackerpublicradio.org/eps/hpr4605/index.html#comments" target="_blank">hpr4605</a></strong> (2026-03-27) "<em>Lee locks down his wifey poo</em>" by <a href="https://hackerpublicradio.org/correspondents/0446.html" target="_blank">Elsbeth</a>.<br></li>
<ul>
<li><strong>Ken Fallon</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4605/index.html#comment_4649" target="_blank">Congratulations</a></em>" (2026-03-18 11:09:45)<br></li>
<li><strong>Elsbeth</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4605/index.html#comment_4661" target="_blank">Thank you!</a></em>" (2026-03-27 11:10:10)<br></li>
<li><strong>Trollercoaster</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4605/index.html#comment_4662" target="_blank">Congrats - and now we want all the fun puns!</a></em>" (2026-03-27 12:58:38)<br></li>
<li><strong>Antoine</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4605/index.html#comment_4663" target="_blank">=)</a></em>" (2026-03-29 22:39:06)<br></li>
<li><strong>ClaudioM</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4605/index.html#comment_4664" target="_blank">Congratulations to You Both!</a></em>" (2026-03-30 13:22:43)<br></li>
<li><strong>Paulj</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4605/index.html#comment_4678" target="_blank">Congratulations</a></em>" (2026-04-04 19:52:01)<br></li>
</ul>
<li><strong><a href="https://hackerpublicradio.org/eps/hpr4606/index.html#comments" target="_blank">hpr4606</a></strong> (2026-03-30) "<em>My Nerdy Childhood: From Floppy Disks to Dial-Up Dreams</em>" by <a href="https://hackerpublicradio.org/correspondents/0433.html" target="_blank">Trollercoaster</a>.<br></li>
<ul>
<li><strong>Trey</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4606/index.html#comment_4665" target="_blank">Trip down memory lane...</a></em>" (2026-03-30 14:24:54)<br></li>
<li><strong>xmanmonk</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4606/index.html#comment_4666" target="_blank">Great Episode!</a></em>" (2026-03-30 16:23:43)<br></li>
<li><strong>Trollercoaster</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4606/index.html#comment_4668" target="_blank">Back to you...</a></em>" (2026-03-31 08:24:58)<br></li>
<li><strong>Trollercoaster</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4606/index.html#comment_4669" target="_blank">Not to janitors</a></em>" (2026-03-31 08:26:06)<br></li>
<li><strong>ClaudioM</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4606/index.html#comment_4671" target="_blank">Nerdy Nostalgia!</a></em>" (2026-03-31 17:20:34)<br></li>
</ul>
<li><strong><a href="https://hackerpublicradio.org/eps/hpr4607/index.html#comments" target="_blank">hpr4607</a></strong> (2026-03-31) "<em>UNIX Curio #3 - basename and dirname</em>" by <a href="https://hackerpublicradio.org/correspondents/0459.html" target="_blank">Vance</a>.<br></li>
<ul>
<li><strong>xmanmonk</strong> said: "<em><a href="https://hackerpublicradio.org/eps/hpr4607/index.html#comment_4670" target="_blank">Great episode!</a></em>" (2026-03-31 14:19:12)<br></li>
</ul>
</ul>
<h2>Mailing List discussions</h2>
<p>Policy decisions surrounding HPR are taken by the community as a whole. This
discussion takes place on the <a href="https://lists.hackerpublicradio.com/mailman/listinfo/hpr" target="_blank">Mailing List</a>
which is open to all HPR listeners and contributors. The discussions are open
and available on the HPR server under <a href="https://lists.hackerpublicradio.com/pipermail/hpr">Mailman</a>.
</p>
<p>The threaded discussions this month can be found here:</p>
<a href="https://lists.hackerpublicradio.com/pipermail/hpr/2026-March/thread.html" target="_blank">https://lists.hackerpublicradio.com/pipermail/hpr/2026-March/thread.html</a>

<h2>Events Calendar</h2>
<p>With the kind permission of <strong>LWN.net</strong> we are linking to
<a href="https://lwn.net/Calendar/" target="_blank">The LWN.net Community Calendar</a>.</p>
<p>Quoting the site:</p>
<blockquote>This is the LWN.net community event calendar, where we track
events of interest to people using and developing Linux and free software.
Clicking on individual events will take you to the appropriate web
page.</blockquote>
<!-- HPRCN:month=2026-03,latest_comment=4679,latest_host=460,latest_episode=4607 -->
<p><a href="https://hackerpublicradio.org/eps/hpr4611/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4610: Playing Civilization V, Part 10]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.
In our next look at the game mechanics for Civilization V we three key ideas: Great People, Trade, and Empires/Civilizations.
Playing Civilization V, Part 10 - Great People
Gaining Great People
You earn Great People by accumulating Great Person Poi...]]></description>
<link>https://tsecurity.de/de/3404206/it+sicherheit/it+podcasts/hpr4610+playing+civilization+v+part+10/</link>
<pubDate>Fri, 03 Apr 2026 02:02:25 +0200</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>
<p>In our next look at the game mechanics for Civilization V we three key ideas: Great People, Trade, and Empires/Civilizations.</p>
<h2>Playing Civilization V, Part 10 - Great People</h2>
<h3>Gaining Great People</h3>
<p>You earn Great People by accumulating Great Person Points (GPP). Each type of Great Person has its own type of GPP, and they are earned independently, so you can easily accumulate points for several different types of Great People at the same time. You can earn these points through specialists, through Wonders, and through Social Policies. While you can accumulate points towards any and all Great People, you should focus on ones that fit your game strategy. If you are going for a Domination victory, you should focus on Great Generals and Great Admirals in preference to Great Artists and Great Musicians. But if you are going for a Culture victory you might want to reverse that. That is not to say you won’t gain a few random other Great People along the way, just that you should know what you are trying to achieve. And Great Generals and Great Admirals are a little different in that you earn them by winning battles.</p>
<h3>Types of Great People</h3>
<ul>
<li>Great Artist – Can start Golden Age, or create Great works</li>
<li>Great Musician – Can do Concert Tour (+Tourism), or create Great Works</li>
<li>Great Writer- Can write a Political Treatise (+Culture), or create Great Works</li>
<li>Great Engineer – Can hurry production (including Wonders). Can create Manufactory</li>
<li>Great General – combat bonus to units within 2 tiles, or steal land when creating a Citadel</li>
<li>Khan – Unique to Mongolia, replaces Great General, moves faster and heals adjacent units, and can create Citadel</li>
<li>Great Merchant – Trade Mission (+Gold and +Influence with a city state). Create Customs House</li>
<li>Merchant of Venice – Unique to Venice, replaces Great Merchant. +100% Gold and +100% Influence from Trade Mission, or can puppet a City-State. Can create Customs House</li>
<li>Great Scientist – Can Hurry Research, or create Academy</li>
<li>Great Admiral – Combat bonus to naval units within 2 tiles. Can repair adjacent naval and embarked units</li>
<li>Great Prophet – Can Found or enhance Religion, can spread Religion, or can create Holy Site</li>
</ul>
<p>Every type except Great Admiral can create something, but that uses up the Great Person. And the main action for each also uses up the Great Person (e.g. do a Concert Tour, Hurry Production, etc.). So you need to consider which one works best for you. As a general rule, compare which option pays off the best. For example, if it is early in the game and you get a Great Scientist, creating an Academy will give you science points per turn that will pay off over the whole game. But once you hit the mid-to-late stages the one time hit of science points from Hurry Research makes more sense because you don’t have the time left for the per-turn bonus from an Academy to add up. And if there is a key Wonder you need to make your strategy works, keeping a Great Engineer on hand to hurry it up can pay off very nicely. This is the only way to Hurry Production on a Wonder.</p>
<h3>Trade</h3>
<p>In Civilization V, the amount of Gold you earn from terrain is much lower, so the path to a full treasury requires that you set up Trade Routes. You have limited number of Trade Slots available, but that limit grows over time. You can earn slots two ways. The first is through discovering techs:</p>
<ul>
<li>Ancient Era: Animal Husbandry, Sailing</li>
<li>Classical Era: Engineering</li>
<li>Medieval Era: Compass</li>
<li>Renaissance Era: Banking</li>
<li>Industrial Era: Biology</li>
<li>Modern Era: Railroad</li>
<li>Atomic Era: Penicillin</li>
</ul>
<p>So just from keeping up your research you can get up to 8 Trade Routes. In addition, the Wonders Colossus and Petra each provide an additional Trade Route.</p>
<p>You can establish trade route with your own cities, with City-States, and with other Empires. Trade routes are always city-to-city, and are limited by distance, so it can make sense sometimes to move your trade unit to a different city. The city that produced the unit will always be where it shows up first, but you can make a move on its first turn to transfer the unit to another city, though note that Cargo Ships can only be placed in coastal cities. This can bring a desired destination city within range. Note that for land units (Caravans) you can increase the range by building roads.</p>
<h3>Effects of Trade</h3>
<p>Trade is generally pursued for the gold, but there can also be Science, Culture, and Religious effects, so it is worth paying attention here. Even if Gold is the main object, you may have several options that provide equivalent amounts of Gold, and a potential gain of Science or Culture might be the tie-breaker, depending on your strategy for victory. If you establish a trade route with a City-State, you can receive Gold, provide religious pressure to convert them to your religion, and gain influence with them, This can be very helpful if you are going for a Diplomatic Victory, But I would not accept a large difference in Gold just for that minor Influence gain. You can gain far more influence with Gold in long run. Setting up trade between your own cities can be helpful in giving a boost to a city because you can send Food and Production. In the earlier phases of the game that might be a good idea to get a city up to full development. The city where the route originates does not lose Food or Production, but some added amount shows up in the destination city. However, for Food trade to happen you need to have a Granary in each city, and for Production you need to have a Workshop in each city.</p>
<h3>Plundering</h3>
<p>Trade routes can be plundered by Empires you are at war with, or more often, by Barbarians. When that happens, the route disappears, and you need to build another trade unit and set up another route.</p>
<h3>Empires/Civs</h3>
<p>There are 43 possible Civilizations in Civ 5, so I don’t propose to discuss all of them in depth here, but if you want to dive into this more you can go to the <a href="https://civilization.fandom.com/wiki/Civilizations_(Civ5)">Civ Wiki</a> for a chart that shows them all. Instead, I want to discuss why they are different and how you should make choices depending on the Victory type you are choosing. Of course, if you let the game make the choice for you randomly, knowing what each Civ is good for can help you to determine what type of strategy to pursue for your best chance of a victory.</p>
<p>The first thing to know about each Civ is that they have a starting bias for where they will spawn at the beginning of the game. This can be either positive or negative, i.e. you are either more likely to spawn in certain terrain, or less likely to spawn in certain terrain. England, which is a naval power, will be biases to spawn on the Coast. Whereas Egypt, a famously desert country, will have a negative bias to avoid Jungle or Forest locations.</p>
<p>Second, all Civs have one or more Unique Abilities. For example, the Carthaginians have two abilities that come from history. The first is Phoenician Heritage, which means that all Coastal cities get a free Harbor. And once they have earned a Great General, their military units can cross Mountain tiles, and they are the only ones that can do this. And the French have the City of Light ability, which grants doubled theming bonuses for Museums and wonders that are in the Capital.</p>
<p>Third, each Civ has a Unique Unit. These units replace one of the regular units in the game, but are enhanced in some way. Spain has two of these. The first, the Tercio, replaces the Musketman, but it has a +50% bonus against mounted units and an increased Melee strength, making it a combination of Musketman and Pikeman. The other unit, the Conquistador replaces the Knight, but it has some interesting abilities. It can move after attacking if it still has movement points, embarked units have double defense, it can see two tiles further, and has no penalty when attacking cities. Finally, the Conquistador unit can be use to establish a city, though that uses up the unit.</p>
<p>Finally, most (but not all) Civs have Unique Building or Improvement. As with units, these tend to replace ordinary buildings/improvements but offer something better. Arabia, for instance, has the Bazaar, which replaces the Marketplace. But it provides an additional 2 Gold per turn more than the Marketplace, it adds one additional copy of each improved luxury resource near the city, and provides +2 Gold for each Oasis and each source of Oil.</p>
<p>What you need to consider is how each of these unique attributes of a Civ will fit in to your strategy. And timing matters. The American Unique Unit of the B-17 Bomber is nice, to be sure, but comes very late in the game. It probably won’t help you conquer the world. But the Roman units of the Ballista and the Legion are excellent for an early campaign of conquest. For a Trade-oriented strategy, Portugal is excellent, as all of its Unique attributes help with generating Trade and Gold. And Gold is the key to many possible paths to victory. So keep these points in mind as you plan your strategy. And to illustrate all of the things we have been discussing in the Civilization V series, I will play a game where I aim for a Diplomatic Victory.</p>
<h3>Links:</h3>
<ul>
<li><a href="https://civilization.fandom.com/wiki/Great_People_(Civ5)">https://civilization.fandom.com/wiki/Great_People_(Civ5)</a></li>
<li><a href="https://civilization.fandom.com/wiki/International_trade_route_(Civ5)">https://civilization.fandom.com/wiki/International_trade_route_(Civ5)</a></li>
<li><a href="https://civilization.fandom.com/wiki/Civilizations_(Civ5)">https://civilization.fandom.com/wiki/Civilizations_(Civ5)</a></li>
<li><a href="https://www.palain.com/gaming/civilization-v/playing-civilization-v-part-10/">https://www.palain.com/gaming/civilization-v/playing-civilization-v-part-10/</a></li>
</ul>
<p><a href="https://hackerpublicradio.org/eps/hpr4610/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4609: Proper Date Format]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.


This is about how dates are formatted, and I demonstrate that the ISO 8601 Format is the only logical one to use, and will make your life easier if you learn to use it.






Something you quickly run into if you correspond with people in both...]]></description>
<link>https://tsecurity.de/de/3401048/it+sicherheit/it+podcasts/hpr4609+proper+date+format/</link>
<pubDate>Thu, 02 Apr 2026 02:04:30 +0200</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>

<p>
This is about how dates are formatted, and I demonstrate that the ISO 8601 Format is the only logical one to use, and will make your life easier if you learn to use it.</p>

<p>

</p>

<p>
Something you quickly run into if you correspond with people in both the U.S. and Europe, which I have done over my career as well as in my personal life, is that we don’t write dates the same way. If you think March 14th is Pi day because in the U.S. it is written as 3/14, people in most of Europe will wonder why you think there is a 14th month to the year. And if you want to make a joke about May 4th, as in “May the fourth be with you”, it is 5/4 in the U.S., and 4/5 in most of Europe. And it can be even more complicated once you drag in the rest of the world. There is simply no uniformity. You can see this with this page at <a href="https://en.wikipedia.org/wiki/List_of_date_formats_by_country" rel="noopener noreferrer" target="_blank">
Wikipedia</a>
. And we are not even consistent in how we talk about dates. In the U.S. we might well say “May 4th”, and that does indeed match how we write dates. But then we will insist that our independence day is the “Fourth of July”, almost like we are not a British colony any longer, but let’s use their date format for one of our most important dates.</p>

<p>

</p>

<p>
In my experience, each side thinks the other is a bit odd, but regards it as a harmless eccentricity. But which side is correct in this? The answer, of course, is neither. The one absolutely correct date format has been defined, and you can find it in the <a href="https://en.wikipedia.org/wiki/ISO_8601" rel="noopener noreferrer" target="_blank">
ISO 8601</a>
 standard. The correct date format is YYYY/MM/DD, because that puts the elements of the date in a logical order. Why is this the logical order? Well, suppose you were filing documents by date. Would you start by putting all of the documents from the 4th day (without regard to month or year) into a group? Or would you first collect all documents for a given year? Now, you might argue that filing documents is something people don’t do as much of these days. We have computers and digital documents, we don’t need any filing cabinets. But that only strengthens my argument, as you can easily verify. For example I am writing this on February 13, 2025. If I use a date code for my digital file, and I make it 02132025, what happens if I later on create file on January 6, 2026? That would then be 01062026. Try this, and you will see that in your file manager 01062026 will appear before 02132025, because all computers treat the significance of digits from left to right.</p>

<p>

</p>

<p>
But if you follow the ISO 8601 standard, the most significant part of the date is on the left, and all of your files will be in order. And once you get used to it, your life is easier. An example of this is photos. My wife and I like to travel, and we take a lot of photos using our smart phones. And every photo we take uses date/time stamp as part of the file name, and the dates all follow the ISO 8601 standard. So I can easily sort my photos in the order in which they were taken. And since I have over 13,000 photos in my Flickr Pro account, a little help with sorting them is really nice. I now use this format not just for digital file names, but for most of my dating purposes. It just makes sense.</p>

<p>

</p>

<h3>
Links</h3>

<ul>

<li>

<a href="https://en.wikipedia.org/wiki/List_of_date_formats_by_country" rel="noopener noreferrer" target="_blank">
https://en.wikipedia.org/wiki/List_of_date_formats_by_country</a>

</li>

<li>

<a href="https://en.wikipedia.org/wiki/ISO_8601" rel="noopener noreferrer" target="_blank">
https://en.wikipedia.org/wiki/ISO_8601</a>

</li>

<li>

<a href="https://www.zwilnik.com/proper-date-formats/" rel="noopener noreferrer" target="_blank">
https://www.zwilnik.com/proper-date-formats/</a>

</li>

</ul>

<p>

</p>


<p><a href="https://hackerpublicradio.org/eps/hpr4609/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4608: Simple Podcasting - Episode 1 - Preparation and Recording]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.

Simple-Podcasting



01 Introduction

This is the first episode in a four part series  on a simple way to create your own HPR podcast episode.



02

If it sounds contradictory to have four episodes on a simple subject, you only actua...]]></description>
<link>https://tsecurity.de/de/3397751/it+sicherheit/it+podcasts/hpr4608+simple+podcasting+-+episode+1+-+preparation+and+recording/</link>
<pubDate>Wed, 01 Apr 2026 02:17:25 +0200</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>
<p>
Simple-Podcasting</p>


<p>
01 Introduction</p>
<p>
This is the first episode in a four part series  on a simple way to create your own HPR podcast episode.</p>


<p>
02</p>
<p>
If it sounds contradictory to have four episodes on a simple subject, you only actually need the first episode to see how to create podcasts. </p>
<p>
The remaining episodes are on steadily more complex subjects, with the later ones being more in the realm of gratuitous hackery for the fun of it.</p>


<p>
03</p>
<p>
I am fairly new to podcasting. I have done an HPR episode on Oathtool, another on the UCSD P-System, and an 8 part series on nuclear power.</p>
<p>
Prior to this I have never done a podcast before.</p>
<p>
Despite that, a number of people wrote into HPR to say that they really liked what I did.</p>
<p>
This means that you too can make a first podcast and have other people find it very interesting.</p>


<p>
04</p>
<p>
Since I am fairly new to this, I thought I would document how I went about it for the benefit of anyone who wants to do the same. </p>
<p>
This describes things from the perspective of someone who is very new to this sort of thing.</p>


<p>
Later on I will get into some more advanced topics and then finish off with some blatant gratuitous hackery like how to use Libre Office Calc or GNU Octave in place of an audio editor for some things. </p>


<hr>


<p>
05 Initial Hurdles</p>
<p>
There were several hurdles to get over before I could record an episode though.</p>
<p>
The most obvious one to me was that I'm not the sort of person who can simply babble into a microphone. </p>
<p>
That meant that I needed to have a way of recording things that would let me exclude pauses and repeat sentences that I had messed up.</p>


<p>
06</p>
<p>
However, since I was new to podcasting, I didn't know how to use an audio editor such as Audacity.</p>
<p>
After a bit of thinking though I came up with a very simple solution to that which I will get into a bit later in this episode. </p>


<hr>


<p>
07 Picking a Topic</p>
<p>
With the recording process solved, the next thing to do was to find something to talk about.</p>
<p>
The key to this is to have some place to keep notes.</p>
<p>
I use a note taking program for this, called Zim.</p>


<p>
08</p>
<p>
There are other programs which do something similar, but Zim is the one that I use.</p>
<p>
Whenever I came up with an idea of a topic, I would add a note for it.</p>
<p>
Whenever I came across any information relevant to one of the topics, I added it to the note. </p>


<p>
09</p>
<p>
You might think that you don't know of anything interesting, but the fact is that a lot of the rest of us are fairly sad individuals who are just as boring as you are and so find things like verbal tours through obsolete and obscure operating systems to be quite fascinating.</p>


<p>
10</p>
<p>
I am sure that you too know something obscure but equally interesting.</p>


<hr>


<p>
11 Writing a Script</p>
<p>
Once you have a topic, the next thing is to write a script.</p>
<p>
If you are good at talking off the cuff, then all you may need is an outline.</p>
<p>
If you are like me however, then you will need to write down exactly what you are going to say in a way which you can read back later.</p>


<p>
12</p>
<p>
In this case, start with an outline and fill in the detail after the outline is written.</p>
<p>
Again, I use Zim for writing my scripts.</p>
<p>
It provides a simple way of organizing my scripts as I am putting them together.</p>
<p>
It also provides character and word counts so I can estimate how many minutes of material that I have.</p>
<p>
When I started I decided that I should target about 10 to 20 minutes for the length of an episode.</p>
<p>
That's a personal decision and not something you need to follow for yourself, but it gives me a guideline to work to.</p>


<p>
13</p>
<p>
As a rule of thumb I find that if I multiply the character count by 0.0011, that gives me the approximate number of minutes of audio when recorded.</p>
<p>
Your own number may differ from this, but it's a good starting point to work from.</p>
<p>
If you think the episode is getting too long, don't worry. You can split it up into multiple episodes. </p>


<p>
14</p>
<p>
Once you have the script written and have, if necessary, split it into separate episodes, start numbering the paragraphs.</p>


<p>
This is related to the recording method, which I will go into more detail later.</p>


<p>
15</p>
<p>
Each paragraph or section should be equivalent to 30 seconds to a minute of audio. </p>
<p>
If you are just starting out in podcasting, this may be roughly how much you are comfortable with recording without pausing to collect your thoughts or stumbling over what you are saying.</p>
<p>
We will knit these sections together with a very simple bit of software later.</p>


<hr>


<p>
16 Recording Equipment</p>
<p>
You will need some sort of recording equipment.</p>
<p>
While some people may talk about using a phone or an MP3 player with record function, or something like that, I'll stick with recording onto a PC.</p>


<p>
17</p>
<p>
My recording equipment consists of a Maxwell headset with headphones, boom mic, and USB connection.</p>
<p>
There is no part number on it and can't identify it further than that.</p>
<p>
The cost was probably around $20.</p>
<p>
Similar ones sell for $5 to $35, depending on where you buy it.</p>
<p>
I already had this, so I didn't have to go out and buy it when I decided to make a podcast. </p>


<p>
18</p>
<p>
A boom mic, that is a microphone that is on an arm attached to the headset, is good because it keeps the microphone at a consistent distance from your mouth without any effort.</p>


<p>
19</p>
<p>
The disadvantage of the particular model that I have is that there is noise in the signal, which you can hear in my first two podcast episodes.</p>
<p>
Despite the noise, people still liked the episodes so don't get too hung up on audio quality.</p>
<p>
I will talk later about how to fix noise issues like this by filtering.</p>
<p>
However at this point I am just going to stick to the basics.</p>


<hr>




<p>
20 Recording Software</p>
<p>
For recording software, I used Gnome Record on Ubuntu.</p>
<p>
This is licensed under GPLv2 or later.</p>


<p>
21</p>
<p>
Is very basic</p>
<p>
The only options are to select the file format, and select stereo or mono</p>
<p>
The sample rate for flac is fixed at 44.10 kHz, which is what HPR wants.</p>


<p>
22</p>
<p>
If you are using different software, possibly on another operating system, the principles are the same.</p>
<p>
There are probably equivalents which you can find if you look for them.</p>
<p>
Perhaps you or other listeners could make an HPR episode recommending one.</p>


<p>
23</p>
<p>
When using Gnome Record, use the menu located in the upper right of the window bar, which has three small horizontal lines as an icon.</p>
<p>
Set the preferred format to FLAC.</p>
<p>
Set the audio channel to mono.</p>


<p>
24 Recording</p>
<p>
Get comfortable at your desk.</p>
<p>
Get a cup of tea ready as your throat may get dry.</p>
<p>
Set up the hardware.</p>


<p>
25</p>
<p>
If using a boom mic on a headset, adjust the mic so that it is roughly at chin level. </p>
<p>
Avoid putting a boom microphone directly in front of your mouth. You should speak over the top of the boom microphone, not directly at it. This  will prevent you from breathing on the microphone, causing noise problems.</p>


<p>
26</p>
<p>
If you have a different type of microphone, you may have to experiment a bit using short test recordings to find the optimal position. </p>


<p>
27</p>
<p>
Using your recording software, make a test recording and listen to it.</p>
<p>
If it is too quiet and the input volume is already up all the way, we can adjust this later with software. </p>


<p>
28</p>
<p>
If the test recording sounds OK though, then you are ready to start.</p>


<hr>


<p>
29 Recording using Gnome Sound Recorder</p>
<p>
I will now describe how to use Gnome Sound Recorder.</p>
<p>
If you are using different software the details may be different, but the basic principles should be similar.</p>
<p>
Using the mouse, click on the "Record" button. </p>
<p>
It will start recording, showing the waveform of the recording as it goes.</p>


<p>
30</p>
<p>
To stop recording, click on the square "stop" icon that appeared at the bottom.</p>
<p>
Give the recording a name, using a numbering system starting at 01.</p>
<p>
To accept the recording, click on the check mark button on the right.</p>
<p>
To save the recording, click on the down pointing arrow on the right.</p>
<p>
31</p>
<p>
The file name will default to the name of the recording which we just gave it.</p>
<p>
The numbers should match the paragraph numbers in your script.</p>
<p>
The recording will be saved as a flac file in your home directory. there is no option to save it anywhere else and you will need to move it to your preferred destination manually. </p>
<p>
32</p>
<p>
You can now delete the copy of the recording which Sound Recorder keeps by clicking on the garbage can on the left. This does not affect the copy on your disk. You will want to delete these extra copies as you go along, as there's no easy way to do this later and an extra copy of the recordings will accumulate in a dot directory somewhere and take up space.</p>
<p>
33</p>
<p>
If you make a mistake or are otherwise dissatisfied with that paragraph, just delete the file and record it again. </p>
<p>
Keep the pauses at the start and end of each audio segment equivalent to normal pauses between words. This is actually fairly easy to do. </p>
<p>
When you are done you may have anywhere between  2 and 4 dozen separate flac files. </p>




<p>
34 Using the keyboard shortcuts with Gnome Sound Recorder</p>
<p>
Here are the two most useful keyboard shortcuts for Gnome Sound Recorder.</p>
<p>
Press Ctrl - R to start recording.</p>
<p>
Press "S" to stop recording.</p>
<p>
35</p>
<p>
You still need to use the mouse to click on the check mark button to accept the recording.</p>
<p>
There are supposedly keyboard shortcuts to save the recording to disk and to delete the recording, but these don't seem to work, at least not in version 43.beta on Ubuntu 24.04</p>
<p>
Starting and stopping via keyboard shortcuts is still useful however.</p>


<p>
36</p>
<p>
You can use other software, and I will talk later in another episode about using command line software such as ffmpeg to record.</p>


<hr>


<p>
37 Tips on Recording</p>
<p>
If you are new to podcasting or just are not good at making long speeches, keep each recording segment short, a minute or less being a good target.</p>
<p>
If you stumble over what you are trying to say, don't worry, just repeat the recording for that section. </p>
<p>
38</p>
<p>
Talk clearly in even, measured tones at a reasonably constant volume.</p>
<p>
Remember who your audience are.</p>
<p>
They are people who are listening to your podcast while they are doing housework, or gardening, or driving a car, or walking down a street, or taking some exercise.</p>
<p>
Very few will be sitting at a desk in a quiet room like you are when you are recording.</p>
<p>
39</p>
<p>
Try to make sure that what you are saying comes across clearly.</p>
<p>
If the loudness of your voice varies too much, they won't be able to hear you in the quiet parts.</p>
<p>
The worst thing to do is to trail off into an imperceptible mumble at the end of each sentence. </p>
<p>
Listeners will not be able to follow you if you do that and may give up trying to listen to your episode.</p>




<hr>


<p>
40 HPR Audio File Requirements</p>


<p>
HPR episodes are mono, not stereo.</p>
<p>
If you send in a stereo file, they will convert to mono.</p>
<p>
However, you may wish to convert to mono yourself for the purposes of better duplicating the final result when you review your own work.</p>


<p>
41</p>
<p>
The easiest way to create a mono recording is to record it as mono in the first place, if your recording software has this option.</p>
<p>
If you are using Gnome Sound Recorder, there is a setting for this.</p>
<p>
I described how to set Gnome Sound Recorder to mono just a few moments ago.</p>


<p>
42</p>
<p>
If your software doesn't have a mono option, or if you have already recorded it and now wish to convert to mono, you can use ffmpeg to do the conversion.</p>


<p>
ffmpeg -i stereosample.flac  -ac 1 monofile.flac</p>


<hr>


<p>
43 Alternatives to Gnome Sound Recorder</p>


<p>
An alternative to Gnome Sound Recorder is KDE Recorder.</p>
<p>
This is also available as a snap on Ubuntu.</p>
<p>
The license is GPL-2.0-or-later.</p>


<p>
44</p>
<p>
However, I found it to be a bit more difficult to use than Gnome Sound Recorder.</p>
<p>
Selecting the microphone source was difficult.</p>
<p>
It shows several sources rather than just taking what the OS says is standard.</p>
<p>
45</p>
<p>
This may be because it is a KDE app running on Gnome. Perhaps this is easier if you are using KDE.</p>
<p>
Every time I unplugged my headset and plugged it back in, it added more audio sources to its list.</p>
<p>
None of them worked however until I selected the correct one, exited the program, and then started it back up.</p>
<p>
46</p>
<p>
All files are saved to the Music directory, there is no choice offered.</p>
<p>
Audio format selection is more difficult, it being a two step process.</p>
<p>
There was no option for mono recordings, only stereo.</p>
<p>
Flac recordings were 48 kHz rather than HPR's preferred 44.1 kHz. Converting this would require more post-processing using audio software to change it. </p>
<p>
47</p>
<p>
It seems to offer no advantages over Gnome Sound Recorder on Ubuntu, while making selecting sound sources more difficult.</p>
<p>
If you are using a Gnome desktop you are better off with Gnome Sound Recorder.</p>
<p>
However, it is all a matter of personal preference, and if you find that you like KDE Recorder better, then go ahead and use it. </p>


<p>
48 Other Alternatives</p>
<p>
There are of course still other alternatives.</p>
<p>
Many people recommend using Audacity to record.</p>
<p>
However, I don't know how to do that, and the premise of this podcast episode is that you have something you would like to make an HPR episode but are put off by the difficulty of learning how to do so.</p>
<p>
49</p>
<p>
However, Audacity is a very capable audio program and I have nothing against it.</p>
<p>
I will describe how to use a feature in Audacity to help overcome an audio problem that I encountered,  but I will save that for another episode.</p>


<p>
50</p>
<p>
As well as GUI programs, there are also programs which allow you to record audio from the command line.</p>
<p>
I will describe a couple of these in another episode.</p>
<p>
If you are wondering why you may want to use a command line program for this purpose, one of the advantages of this is that it lets us write scripts which automate the recording process and eliminate some of the manual steps that I outlined above. </p>


<hr>


<p>
51 Combining the Segments into a Single Audio File</p>


<p>
At this point you will have recorded your podcast episode as a series of several dozen flac files.</p>
<p>
We will now stitch the separate flac files into a single file.</p>
<p>
We do this using either ffmpeg or sox. </p>


<p>
52 FFMPEG and Sox</p>
<p>
FFMPEG is a set of command line programs for converting and manipulating audio and video files.</p>
<p>
Various parts are licensed under the LGPL V 2.1 or later, and GPL v 2 or later.</p>


<p>
53</p>
<p>
Sox is also a set of command line programs, but for audio only.</p>
<p>
Sox stands for Sound Exchange.</p>
<p>
Sox is licensed under similar terms as FFMPEG.</p>
<p>
In fact Sox actually uses FFMPEG for certain operations.</p>


<p>
54</p>
<p>
For our purposes here, with one exception you can do everything audio related with either FFMPEG or Sox, except for one thing which I will get to in another episode. That one is related to doing some gratuitous hackery when analyzing audio files, so it may be irrelevant to anything you need to do.</p>


<p>
Since the two are more or less equivalent for our purposes, I will provide examples using both.</p>


<p>
55 Combining Audio Segments</p>
<p>
The best way to combine multiple audio segments is with a simple shell script. </p>
<p>
A copy of this will be in the show notes.</p>


<p>
56 Using FFMPEG</p>
<p>
Doing this with FFMPEG requires just two lines.</p>


<p>
# First create the list file.</p>
<p>
printf "file '%s'\n" [0-9][0-9].flac &gt; podseglist.txt</p>


<p>
57</p>
<p>
This first line creates a file called "podseglist.txt" which contains a list of all the two digit numbered flac files in the current directory, together with some other necessary text.</p>
<p>
I have assumed you wish to give these files two digits. Add more digits out if you feel this is necessary.</p>
<p>
The file name "podseglist.txt" is purely arbitrary and you can use whatever name you wish.</p>


<p>
58</p>
<p>
Now we need to concatenate the files.</p>
<p>
# Now concatenate them</p>
<p>
ffmpeg -f concat -safe 0 -i podseglist.txt fullpod.flac</p>


<p>
The second line calls ffmpeg, tells it to perform a concatenation operation, turning the multiple files listed in "podseglist.txt" into one and saving it in a file called "fullpod.flac".</p>


<p>
59 Using Sox</p>
<p>
The Sox version is simpler.</p>


<p>
sox [0-9][0-9].flac fullpod.flac</p>


<p>
60</p>
<p>
This will concatenate all the two digit numbered flac files in the current directory into one file called  "fullpod.flac".</p>




<hr>


<p>
61 Review the Combined Audio File</p>
<p>
Next you need to review your combined audio file.</p>
<p>
Listen to the resulting file.</p>
<p>
If you are satisfied with it, you are done recording and are ready to upload.</p>
<p>
If you are unhappy about some part of it, you can re-record just that section and run the combining script again. The numbers in your script will help you find the appropriate file. </p>
<p>
62</p>
<p>
The people running HPR will worry about adding the introductory and concluding music, converting it to mono if it is currently stereo, and adjusting the output level to make the volume consistent with other HPR episodes.</p>
<p>
If there are noise problems that you want to try to correct I will cover that in another episode in this series.</p>


<hr>


<p>
63 Prepare the Show Notes</p>
<p>
You will need to have a few things ready when you go to upload your episode.</p>
<p>
These are the title, summary, tags, and show notes.</p>
<p>
The title should be something short but descriptive. </p>
<p>
If this episode is part of a series, you probably want to use a consistent title and include an episode number.</p>
<p>
64</p>
<p>
Next, you need a summary. This is a brief description of what the episode is about. Try to be clear about what it is you will be talking about.</p>
<p>
However, there are limits on the length of the summary. The limit was 100 characters at the time that I was writing this.</p>
<p>
65</p>
<p>
The title and summary will be automatically added by HPR to the beginning of your episode, so put some thought into what you write here.</p>
<p>
The title and summary are read out by a text to speech program, so avoid difficult abbreviations or words that the software may not know how to pronounce. </p>
<p>
66</p>
<p>
Next you will need to pick some tags. These are used for search purposes. I will let someone else recommend how you should pick tags.</p>
<p>
67</p>
<p>
Next, you need to have show notes. </p>
<p>
If you have written a script, you can simply copy-paste the whole thing into the show notes.</p>
<p>
68</p>
<p>
At one time there was a limit on the size of the show notes, but that limit was removed recently. </p>


<hr>


<p>
69 Uploading the Episode</p>
<p>
I will let someone else describe the process of uploading the audio file and associated title, summary, and show notes.</p>
<p>
However, you will need to have an email address ready to use as part of that process, so if you have multiple email accounts you need to settle on which one will be used as your HPR contact address.</p>


<hr>


<p>
70 Conclusion</p>
<p>
The preceding is how I created my first two podcast episodes, which were on Oathtool and the UCSD P-System operating system. </p>
<p>
Plenty of people wrote in to say that they liked them.</p>
<p>
Nobody complained about the quality of my narration or the technical quality of the audio. </p>
<p>
You should be able to do the same.</p>


<hr>


<p>
71 Further Episodes in this Series</p>
<p>
I have covered the basics, but there is more that we can do to improve the audio quality if you are so inclined or if you encounter an audio problem. In further episodes in this series I will cover the following:</p>
<p>
72</p>
<p>
Basic filtering with FFMPEG and Sox to cover general cases. It's a good idea to use this sort of basic filtering on  your audio whether you notice any problems or not.</p>
<p>
73</p>
<p>
"De-essing" to improve perceived voice quality slightly in order to overcome sound artifacts inherent to using at least some microphones. </p>
<p>
74</p>
<p>
Normalizing audio to adjust the sound levels for easier reviewing.</p>
<p>
75</p>
<p>
Analyzing the audio signal with Audacity to discover the characteristics of any noise problems that you may hear.</p>
<p>
76</p>
<p>
Advanced filtering with with FFMPEG and Sox so solve specific problems such as I had with my headset or which you may have with environmental noise such as fans. </p>
<p>
77</p>
<p>
Command line recording and playing of audio using FFMPEG and Sox. This can help automate the process by automatically numbering the small audio files which are part of the recording process which I have described.</p>
<p>
78</p>
<p>
I promised some gratuitous hackery, and I will provide it in the form of describing how to do audio spectrum analysis using Libre Office Calc spreadsheets and GNU Octave mathematical software in place of Audacity when troubleshooting audio problems. </p>


<p>
79</p>
<p>
This concludes the first episode in a four part series on simple podcasting.</p>


<hr>
<p>
Scripts for this episode.</p>


<pre>
<code>
#!/bin/bash
# First create the list file.
printf "file '%s'\n" [0-9][0-9].flac &gt; podseglist.txt
ffmpeg -f concat -safe 0 -i podseglist.txt fullpod.flac
</code>
</pre>
<hr>
<pre>
<code>
#!/bin/bash
sox [0-9][0-9].flac fullpod.flac
</code>
</pre>
<hr>

<p><a href="https://hackerpublicradio.org/eps/hpr4608/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4607: UNIX Curio #3 - basename and dirname]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.


This series is dedicated to exploring little-known—and occasionally useful—trinkets lurking in the dusty corners of UNIX-like operating systems.


Hopefully it doesn't seem like I'm picking on 
Linux Journal
, but like UNIX Curio #1 (HPR4587), t...]]></description>
<link>https://tsecurity.de/de/3394572/it+sicherheit/it+podcasts/hpr4607+unix+curio+3+-+basename+and+dirname/</link>
<pubDate>Tue, 31 Mar 2026 02:02:34 +0200</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>

<blockquote>
This series is dedicated to exploring little-known—and occasionally useful—trinkets lurking in the dusty corners of UNIX-like operating systems.</blockquote>

<p>
Hopefully it doesn't seem like I'm picking on <em>
Linux Journal</em>
, but like UNIX Curio #1 (HPR4587), this column has been inspired by <a href="https://www.linuxjournal.com/content/treating-compressed-and-uncompressed-data-sources-same" rel="noopener noreferrer" target="_blank">
an article of theirs</a>

<sup>
1</sup>
. The author was demonstrating a clever <code>
bash</code>
 script that would take a filename and send the file to standard output or, if the filename ended in .gz, decompress it and send the result to standard output. Slightly rearranged, he had:</p>

<pre data-language="plain">
F=`echo $1 | perl -pe 's/\.gz$//'`
if [[ -f $F ]] ; then
  cat $F
elif [[ -f $F.gz ]] ; then
  gunzip -c $F
fi
</pre>

<p>
He took some heat on the web site and in letters to the magazine for cranking up a whole Perl interpreter just to chop the .gz off the end of a filename. Our curio for today is a standard UNIX utility made for just this purpose called <code>

<a href="https://pubs.opengroup.org/onlinepubs/009695399/utilities/basename.html" rel="noopener noreferrer" target="_blank">
basename</a>

</code>

<sup>
2</sup>
. Along with its brother <code>

<a href="https://pubs.opengroup.org/onlinepubs/009695399/utilities/dirname.html" rel="noopener noreferrer" target="_blank">
dirname</a>

</code>

<sup>
3</sup>
, it is used to pull apart pathnames to get the part you want. What <code>
basename</code>
 does is remove any leading path on the name given to it, and if a suffix is specified as well, removes that also. If a directory path with a trailing slash is given, it returns the last part with no slashes. Here are some examples:</p>

<pre data-language="plain">
$ basename /bin/gzip
gzip
$ basename /bin/gzip .so
gzip
$ basename /usr/lib/libz.so .so
libz
$ basename /usr/lib/
lib
</pre>

<p>
The counterpart, <code>
dirname</code>
, does essentially the opposite. It removes the last part of the pathname and returns a directory name (with no trailing slash):</p>

<pre data-language="plain">
$ dirname /usr/lib/libz.so
/usr/lib
$ dirname /usr/lib/
/usr
$ dirname file_in_this_dir
.
</pre>

<p>
So we can replace the first line of the script up top with <code>
F=`dirname $1`/`basename $1 .gz`</code>
, get the same result, and be sure it will work on any UNIX-like system, no Perl necessary. The more observant among you may be thinking "<code>
sed</code>
 could do that, too!" and you're right; <code>
F=`echo $1 | sed 's/\.gz$//'`</code>
 also would work anywhere.</p>

<p>
One might suspect that as a general-purpose text processor, <code>
sed</code>
 would be slower than <code>
basename</code>
 and <code>
dirname</code>
. To see how they compared, we ran each method against a randomly-generated list of 5,000 filenames. Turns out the critics were right, as Perl ran the longest at 59 seconds. Using <code>
basename</code>
/<code>
dirname</code>
 took 44 seconds—a nice improvement, but <code>
sed</code>
 blew past it at 34 seconds. Probably the fact that only one call to <code>
sed</code>
 was needed versus two for <code>
basename</code>
 and <code>
dirname</code>
 made the difference.</p>

<p>
Helpful suggestions in response to the article revealed a shell curio. You may have seen the brace syntax for parameters. For example, to show a filename $F with an "X" appended, you can't use <code>
echo $FX</code>
 because that means a parameter named <code>
FX</code>
. Instead, you'd use <code>
echo ${F}X</code>
 and the shell only interprets what's inside the braces as the parameter name.</p>

<p>

<a href="https://pubs.opengroup.org/onlinepubs/009695399/utilities/xcu_chap02.html#tag_02_06_02" rel="noopener noreferrer" target="_blank">
Modifiers can also go inside the braces</a>

<sup>
4</sup>
 and one of these, %, is just what we need to chop off that extension. This works in <code>
bash</code>
, <code>
zsh</code>
, and any shell conforming to the current POSIX standard, but not <code>
csh</code>
 and friends or older implementations of the Bourne shell. We can rewrite the first line of the original script as simply <code>
F=${1%.gz}</code>
 and forgo any outside utilities. Performance? Under half a second to process those 5,000 filenames. Not bad at all.</p>

<p>
References:</p>

<ol>

<li>

<a href="https://www.linuxjournal.com/content/treating-compressed-and-uncompressed-data-sources-same" rel="noopener noreferrer" target="_blank">
Treating Compressed and Uncompressed Data Sources the Same</a>
 https://www.linuxjournal.com/content/treating-compressed-and-uncompressed-data-sources-same</li>

<li>

<a href="https://pubs.opengroup.org/onlinepubs/009695399/utilities/basename.html" rel="noopener noreferrer" target="_blank">
Basename specification</a>
 https://pubs.opengroup.org/onlinepubs/009695399/utilities/basename.html</li>

<li>

<a href="https://pubs.opengroup.org/onlinepubs/009695399/utilities/dirname.html" rel="noopener noreferrer" target="_blank">
Dirname specification</a>
 https://pubs.opengroup.org/onlinepubs/009695399/utilities/dirname.html</li>

<li>

<a href="https://pubs.opengroup.org/onlinepubs/009695399/utilities/xcu_chap02.html#tag_02_06_02" rel="noopener noreferrer" target="_blank">
Shell Command Language: Parameter Expansion</a>
 https://pubs.opengroup.org/onlinepubs/009695399/utilities/xcu_chap02.html#tag_02_06_02</li>

</ol>

<p>

<em>
This article was originally written in July 2010. The podcast episode was recorded in March 2026.</em>

</p>


<p><a href="https://hackerpublicradio.org/eps/hpr4607/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4606: My Nerdy Childhood: From Floppy Disks to Dial-Up Dreams]]></title>
<description><![CDATA[This show has been flagged as Explicit by the host.


  

    
  
  
    
      It all started at 
        Flanders Technology International in 1987... a tech
      expo where an eleven-year-old watched a wooden block move across a
      desk and an arrow follow it on screen. That was it. That wa...]]></description>
<link>https://tsecurity.de/de/3391626/it+sicherheit/it+podcasts/hpr4606+my+nerdy+childhood+from+floppy+disks+to+dial-up+dreams/</link>
<pubDate>Mon, 30 Mar 2026 02:04:41 +0200</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Explicit by the host.</p>


  

    
  
  
    <p>
      It all started at <strong>
        Flanders Technology International</strong> in 1987... a tech
      expo where an eleven-year-old watched a wooden block move across a
      desk and an arrow follow it on screen. That was it. That was the
      moment. He <em>
        had</em> to have a computer with a mouse.</p>
    <p>
      What followed was a story of after-school showroom squatting,
      summer jobs, game piracy, a modem bill that nearly gave his
      parents a heart attack, and an education in computing that no
      school could have provided.</p>
    <p>
      From the <a href="https://en.wikipedia.org/wiki/Amstrad_PC_1512" rel="noopener noreferrer" target="_blank">
        Amstrad PC1512</a> and the GEM windowing system, to the
      Schneider Euro PC with its infamous <strong>
        Turbo button</strong> that turned Ms. Pac-Man into a half-second
      blur — this episode is a love letter to the glorious chaos of home
      computing in the late 1980s.</p>
    <p>
      Along the way: the satisfying clatter of a <a href="https://www.youtube.com/watch?v=gXf8OF7l27M" rel="noopener
        noreferrer" target="_blank">
        matrix printer</a>
      , the dark arts of <code>
        config.sys</code> and <code>
        autoexec.bat</code>
      , <a href="https://www.youtube.com/watch?v=l0yQfyJlqdA" rel="noopener noreferrer" target="_blank">
        Digger</a>
      , the allure of the <a href="https://www.youtube.com/watch?v=Z1-HTSrOB74" rel="noopener
        noreferrer" target="_blank">
        Commodore 64</a>
      , forbidden floppy disks at computer club, a 2400-baud modem, and
      the very first taste of online community — long before anyone
      called it the internet.</p>
    <h2>
      The computers</h2>
    <ul>
      <li>
        <a href="https://en.wikipedia.org/wiki/Amstrad_PC_1512" rel="noopener noreferrer" target="_blank">
          Amstrad PC1512</a> — the showroom machine that started it all</li>
      <li>
        <a href="https://en.wikipedia.org/wiki/Schneider_Euro_PC" rel="noopener noreferrer" target="_blank">
          Schneider Euro PC</a> — the computer-in-a-keyboard with the
        infamous Turbo button</li>
      <li>
        <a href="https://en.wikipedia.org/wiki/Commodore_64" rel="noopener noreferrer" target="_blank">
          Commodore 64</a> — legendary sounds, legendary forbidden
        floppy disks</li>
    </ul>
    <h2>
      Play the games</h2>
    <ul>
      <li> <a href="https://www.futrega.org/digger/" rel="noopener
          noreferrer" target="_blank">Digger</a> — play in your browser</li>
      <li> <a href="https://www.mspacman1.com/" rel="noopener
          noreferrer" target="_blank">Ms. Pac-Man</a> — play in your
        browser</li>
      <li> <a href="https://www.lemon64.com/game/samantha-fox-strip-poker" rel="noopener noreferrer" target="_blank">Samantha Fox Strip
          Poker (C64)</a>
      </li>
      <li> <a href="https://playclassic.games/games/point-n-click-adventure-dos-games-online/play-leisure-suit-larry-goes-looking-for-love-in-several-wrong-places-online/" rel="noopener noreferrer" target="_blank">Leisure Suit Larry —
          Looking for Love in All the Wrong Places</a> — play in your
        browser</li>
    </ul>
    <p>
    </p>
  
<p><a href="https://hackerpublicradio.org/eps/hpr4606/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4605: Lee locks down his wifey poo]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.


Two geeky people, both HPR hosts, decide to sign on the dotted line and do the darn thing and get married.


Provide feedback on this episode.]]></description>
<link>https://tsecurity.de/de/3385027/it+sicherheit/it+podcasts/hpr4605+lee+locks+down+his+wifey+poo/</link>
<pubDate>Fri, 27 Mar 2026 01:02:33 +0100</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>

<p>
Two geeky people, both HPR hosts, decide to sign on the dotted line and do the darn thing and get married.</p>


<p><a href="https://hackerpublicradio.org/eps/hpr4605/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4604: Quick Tips for January 20 26]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.
It's going to be pretty short, I'm going to go through my quick
tips. Looks like I've got enough to kind of do a little short
episode for you guys. Quick tips are basically just, you know,
kind of things that I think about, that add value, kind of ...]]></description>
<link>https://tsecurity.de/de/3381861/it+sicherheit/it+podcasts/hpr4604+quick+tips+for+january+20+26/</link>
<pubDate>Thu, 26 Mar 2026 01:17:33 +0100</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>
<p>It's going to be pretty short, I'm going to go through my quick
tips. Looks like I've got enough to kind of do a little short
episode for you guys. Quick tips are basically just, you know,
kind of things that I think about, that add value, kind of like
those stupid viral videos on social media where they show, like
how to make a pancake with a square, like it, you know.</p>
<ul>
<li>Prevent messiness when making <a href="https://en.wikipedia.org/wiki/Matcha">Matcha</a></li>
<li>Baking soda and super glue to get an epoxy type of seal.</li>
<li>"Tile batter pad on top of speaker in middle" - even <a href="https://hackerpublicradio.org/correspondents/0036.html">operat0r</a> has no clue !</li>
<li>How to blowing out a candle</li>
<li>Request for more shows on <a href="https://en.wikipedia.org/wiki/Rsync">rsync</a> inspired by <a href="https://hackerpublicradio.org/eps/hpr4341/index.html">hpr4341 :: Transferring Large Data Sets</a> sent in by <a href="https://hackerpublicradio.org/correspondents/0436.html">hairylarry</a></li>
<li>How to make a foam machine</li>
<li>Fixing garden chairs by replacing the Vinyl straps</li>
<li>How to use a Fabric belt</li>
<li><a href="https://ytdlnis.org/">YTDLnis</a> Full Featured Downloader using <a href="https://github.com/yt-dlp/yt-dlp">yt-dlp</a>, available on <a href="https://f-droid.org/packages/com.deniscerri.ytdl">F-Droid</a></li>
<li>Use a wet paper towel over Microwave food.</li>
<li>Use <a href="https://en.wikipedia.org/wiki/Binder_clip">binder clips</a> instead of chip clips</li>
<li><a href="https://chromewebstore.google.com/detail/things-to-get-me/hikgojdlmopjpjfbmmpoleceddnhdjbi">Things To Get Me</a> since Amazon got rid of their add arbitrary item to wish list feature. </li>
</ul>
<p><a href="https://hackerpublicradio.org/eps/hpr4604/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4603: On the Erosion of Freedom in Open Source Software]]></title>
<description><![CDATA[This show has been flagged as Explicit by the host.


DISCLAIMER: "Hill willing to kill on" is an idiom. I do not condone or tolerate open calls for violence and want to make this very clear here. Due to the incredibly unfortunate nature of the topic at hand, I have also taken the liberty to mark...]]></description>
<link>https://tsecurity.de/de/3378412/it+sicherheit/it+podcasts/hpr4603+on+the+erosion+of+freedom+in+open+source+software/</link>
<pubDate>Wed, 25 Mar 2026 01:02:59 +0100</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Explicit by the host.</p>

<p>
DISCLAIMER: "Hill willing to kill on" is an idiom. I do not condone or tolerate open calls for violence and want to make this very clear here. Due to the incredibly unfortunate nature of the topic at hand, I have also taken the liberty to mark this episode as explicit. </p>

<p>

</p>

<p>
This episode was recorded while I had some short downtime. There are filler phrases and pauses throughout. I apologize in advance. </p>


<p><a href="https://hackerpublicradio.org/eps/hpr4603/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4602: Hackerpublic Radio New Years Eve Show 2026 Episode 3]]></title>
<description><![CDATA[This show has been flagged as Explicit by the host.



Bluetooth









https://www.bluetooth.com/









Sound Core Headsets









https://www.soundcore.com/









BaoFeng Mini 









https://www.baofengradio.com/products/5r-mini









NOAA Weather ...]]></description>
<link>https://tsecurity.de/de/3375063/it+sicherheit/it+podcasts/hpr4602+hackerpublic+radio+new+years+eve+show+2026+episode+3/</link>
<pubDate>Tue, 24 Mar 2026 01:01:47 +0100</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Explicit by the host.</p>

<p>

Bluetooth
</p>

<p>

</p>

<p>

<a href="https://www.bluetooth.com/" rel="noopener noreferrer" target="_blank">
https://www.bluetooth.com/</a>

</p>

<p>

</p>

<p>

Sound Core Headsets
</p>

<p>

</p>

<p>

<a href="https://www.soundcore.com/" rel="noopener noreferrer" target="_blank">
https://www.soundcore.com/</a>

</p>

<p>

</p>

<p>

BaoFeng Mini 
</p>

<p>

</p>

<p>

<a href="https://www.baofengradio.com/products/5r-mini" rel="noopener noreferrer" target="_blank">
https://www.baofengradio.com/products/5r-mini</a>

</p>

<p>

</p>

<p>

NOAA Weather Channel
</p>

<p>

</p>

<p>

<a href="https://www.weather.gov/mob/nwr" rel="noopener noreferrer" target="_blank">
https://www.weather.gov/mob/nwr</a>

</p>

<p>

</p>

<p>

Chirp APP
</p>

<p>

</p>

<p>

<a href="https://chirpmyradio.com/projects/chirp/wiki/Home" rel="noopener noreferrer" target="_blank">
https://chirpmyradio.com/projects/chirp/wiki/Home</a>

</p>

<p>

</p>

<p>

HAM Radio
</p>

<p>

</p>

<p>

<a href="https://www.arrl.org/what-is-ham-radio" rel="noopener noreferrer" target="_blank">
https://www.arrl.org/what-is-ham-radio</a>

</p>

<p>

</p>

<p>

Echolink APP
</p>

<p>

</p>

<p>

<a href="https://www.echolink.org/" rel="noopener noreferrer" target="_blank">
https://www.echolink.org/</a>

</p>

<p>

</p>

<p>

YAGI Antenna
</p>

<p>

</p>

<p>

<a href="https://www.everythingrf.com/community/what-is-a-yagi-antenna" rel="noopener noreferrer" target="_blank">
https://www.everythingrf.com/community/what-is-a-yagi-antenna</a>

</p>

<p>

</p>

<p>

ISS
</p>

<p>

</p>

<p>

<a href="https://www.nasa.gov/international-space-station/" rel="noopener noreferrer" target="_blank">
https://www.nasa.gov/international-space-station/</a>

</p>

<p>

</p>

<p>

Dry January
</p>

<p>

</p>

<p>

<a href="https://alcoholchange.org.uk/help-and-support/managing-your-drinking/dry-january" rel="noopener noreferrer" target="_blank">
https://alcoholchange.org.uk/help-and-support/managing-your-drinking/dry-january</a>

</p>

<p>

</p>

<p>

</p>

<p>

APRS
</p>

<p>

</p>

<p>

<a href="https://www.aprs.org/" rel="noopener noreferrer" target="_blank">
https://www.aprs.org/</a>

</p>

<p>

</p>

<p>

Quebec
</p>

<p>

</p>

<p>

<a href="https://www.quebec-cite.com/en" rel="noopener noreferrer" target="_blank">
https://www.quebec-cite.com/en</a>

</p>

<p>

</p>

<p>

Chicago
</p>

<p>

</p>

<p>

<a href="https://www.choosechicago.com/" rel="noopener noreferrer" target="_blank">
https://www.choosechicago.com/</a>

</p>

<p>

</p>

<p>

Lexington, Kentucky
</p>

<p>

</p>

<p>

<a href="https://www.lexingtonky.gov/" rel="noopener noreferrer" target="_blank">
https://www.lexingtonky.gov/</a>

</p>

<p>

</p>

<p>

IT (Movie series)
</p>

<p>

</p>

<p>

<a href="https://stephen-kings-it-series.fandom.com/wiki/It_(film_series)" rel="noopener noreferrer" target="_blank">
https://stephen-kings-it-series.fandom.com/wiki/It_(film_series)</a>

</p>

<p>

</p>

<p>

<a href="https://www.rottentomatoes.com/m/it_2017" rel="noopener noreferrer" target="_blank">
https://www.rottentomatoes.com/m/it_2017</a>

</p>

<p>

</p>

<p>

<a href="https://www.rottentomatoes.com/m/it_chapter_two" rel="noopener noreferrer" target="_blank">
https://www.rottentomatoes.com/m/it_chapter_two</a>

</p>

<p>

</p>

<p>

Burn Notice
</p>

<p>

</p>

<p>

<a href="https://www.rottentomatoes.com/tv/burn-notice" rel="noopener noreferrer" target="_blank">
https://www.rottentomatoes.com/tv/burn-notice</a>

</p>

<p>

</p>

<p>

Bill Skarsgard 
</p>

<p>

</p>

<p>

<a href="https://www.rottentomatoes.com/celebrity/771821133" rel="noopener noreferrer" target="_blank">
https://www.rottentomatoes.com/celebrity/771821133</a>

</p>

<p>

</p>

<p>

Villians 
</p>

<p>

</p>

<p>

<a href="https://www.rottentomatoes.com/m/villains" rel="noopener noreferrer" target="_blank">
https://www.rottentomatoes.com/m/villains</a>

</p>

<p>

</p>

<p>

Becky (movie series)
</p>

<p>

</p>

<p>

<a href="https://www.rottentomatoes.com/m/becky_2020" rel="noopener noreferrer" target="_blank">
https://www.rottentomatoes.com/m/becky_2020</a>

</p>

<p>

</p>

<p>

<a href="https://www.rottentomatoes.com/m/the_wrath_of_becky" rel="noopener noreferrer" target="_blank">
https://www.rottentomatoes.com/m/the_wrath_of_becky</a>

</p>

<p>

</p>

<p>

Kevin James
</p>

<p>

</p>

<p>

<a href="https://www.rottentomatoes.com/celebrity/1148922-kevin_james" rel="noopener noreferrer" target="_blank">
https://www.rottentomatoes.com/celebrity/1148922-kevin_james</a>

</p>

<p>

</p>

<p>

Krampus 
</p>

<p>

</p>

<p>

<a href="https://www.rottentomatoes.com/m/krampus" rel="noopener noreferrer" target="_blank">
https://www.rottentomatoes.com/m/krampus</a>

</p>

<p>

</p>

<p>

Bruce Campbell
</p>

<p>

</p>

<p>

<a href="https://www.rottentomatoes.com/celebrity/bruce_campbell" rel="noopener noreferrer" target="_blank">
https://www.rottentomatoes.com/celebrity/bruce_campbell</a>

</p>

<p>

</p>

<p>

The  Perfect Host
</p>

<p>

</p>

<p>

<a href="https://www.rottentomatoes.com/m/the-perfect-host" rel="noopener noreferrer" target="_blank">
https://www.rottentomatoes.com/m/the-perfect-host</a>

</p>

<p>

</p>

<p>

David Hyde Pierce
</p>

<p>

</p>

<p>

<a href="https://www.rottentomatoes.com/celebrity/david_hyde_pierce" rel="noopener noreferrer" target="_blank">
https://www.rottentomatoes.com/celebrity/david_hyde_pierce</a>

</p>

<p>

</p>

<p>

John Dies At The End
</p>

<p>

</p>

<p>

<a href="https://www.rottentomatoes.com/m/john_dies_at_the_end" rel="noopener noreferrer" target="_blank">
https://www.rottentomatoes.com/m/john_dies_at_the_end</a>

</p>

<p>

</p>

<p>

This Book Is Full of Spiders
</p>

<p>

</p>

<p>

<a href="https://www.goodreads.com/book/show/12924261-this-book-is-full-of-spiders" rel="noopener noreferrer" target="_blank">
https://www.goodreads.com/book/show/12924261-this-book-is-full-of-spiders</a>

</p>

<p>

</p>

<p>

The Owners
</p>

<p>

</p>

<p>

<a href="https://www.rottentomatoes.com/m/the_owners_2020" rel="noopener noreferrer" target="_blank">
https://www.rottentomatoes.com/m/the_owners_2020</a>

</p>

<p>

</p>

<p>

Games of Thrones
</p>

<p>

</p>

<p>

<a href="https://www.rottentomatoes.com/tv/game_of_thrones" rel="noopener noreferrer" target="_blank">
https://www.rottentomatoes.com/tv/game_of_thrones</a>

</p>

<p>

</p>

<p>

Maisy Williams
</p>

<p>

</p>

<p>

<a href="https://www.rottentomatoes.com/celebrity/maisie_williams" rel="noopener noreferrer" target="_blank">
https://www.rottentomatoes.com/celebrity/maisie_williams</a>

</p>

<p>

</p>

<p>

Sylvester McCoy
</p>

<p>

</p>

<p>

<a href="https://www.rottentomatoes.com/celebrity/sylvester_mccoy" rel="noopener noreferrer" target="_blank">
https://www.rottentomatoes.com/celebrity/sylvester_mccoy</a>

</p>

<p>

</p>

<p>

Don't Breath
</p>

<p>

</p>

<p>

<a href="https://www.rottentomatoes.com/m/dont_breathe_2016" rel="noopener noreferrer" target="_blank">
https://www.rottentomatoes.com/m/dont_breathe_2016</a>

</p>

<p>

</p>

<p>

</p>

<p>

Terrifier Movie Series
</p>

<p>

</p>

<p>

<a href="https://www.rottentomatoes.com/m/terrifier" rel="noopener noreferrer" target="_blank">
https://www.rottentomatoes.com/m/terrifier</a>

</p>

<p>

</p>

<p>

<a href="https://www.rottentomatoes.com/m/terrifier_2" rel="noopener noreferrer" target="_blank">
https://www.rottentomatoes.com/m/terrifier_2</a>

</p>

<p>

</p>

<p>

<a href="https://www.rottentomatoes.com/m/terrifier_3" rel="noopener noreferrer" target="_blank">
https://www.rottentomatoes.com/m/terrifier_3</a>

</p>

<p>

</p>

<p>

V/H/S Movie Series
</p>

<p>

</p>

<p>

<a href="https://www.rottentomatoes.com/m/v_h_s_halloween" rel="noopener noreferrer" target="_blank">
https://www.rottentomatoes.com/m/v_h_s_halloween</a>

</p>

<p>

</p>

<p>

<a href="https://www.rottentomatoes.com/m/v_h_s_beyond" rel="noopener noreferrer" target="_blank">
https://www.rottentomatoes.com/m/v_h_s_beyond</a>

</p>

<p>

</p>

<p>

<a href="https://www.rottentomatoes.com/m/vhs" rel="noopener noreferrer" target="_blank">
https://www.rottentomatoes.com/m/vhs</a>

</p>

<p>

</p>

<p>

<a href="https://www.rottentomatoes.com/m/vhs94" rel="noopener noreferrer" target="_blank">
https://www.rottentomatoes.com/m/vhs94</a>

</p>

<p>

</p>

<p>

<a href="https://www.rottentomatoes.com/m/vhs99" rel="noopener noreferrer" target="_blank">
https://www.rottentomatoes.com/m/vhs99</a>

</p>

<p>

</p>

<p>

<a href="https://www.rottentomatoes.com/m/v_h_s_85" rel="noopener noreferrer" target="_blank">
https://www.rottentomatoes.com/m/v_h_s_85</a>

</p>

<p>

</p>

<p>

<a href="https://www.rottentomatoes.com/m/vhs2" rel="noopener noreferrer" target="_blank">
https://www.rottentomatoes.com/m/vhs2</a>

</p>

<p>

</p>

<p>

<a href="https://www.rottentomatoes.com/m/vhs_viral" rel="noopener noreferrer" target="_blank">
https://www.rottentomatoes.com/m/vhs_viral</a>

</p>

<p>

</p>

<p>

Last Christmas
</p>

<p>

</p>

<p>

<a href="https://www.rottentomatoes.com/m/last_christmas_2019" rel="noopener noreferrer" target="_blank">
https://www.rottentomatoes.com/m/last_christmas_2019</a>

</p>

<p>

</p>

<p>

Santa's Slay
</p>

<p>

</p>

<p>

<a href="https://www.rottentomatoes.com/m/santas_slay" rel="noopener noreferrer" target="_blank">
https://www.rottentomatoes.com/m/santas_slay</a>

</p>

<p>

</p>

<p>

Violent Night
</p>

<p>

</p>

<p>

<a href="https://www.rottentomatoes.com/m/violent_night" rel="noopener noreferrer" target="_blank">
https://www.rottentomatoes.com/m/violent_night</a>

</p>

<p>

</p>

<p>

8 Bit Christmas
</p>

<p>

</p>

<p>

<a href="https://www.rottentomatoes.com/m/8_bit_christmas" rel="noopener noreferrer" target="_blank">
https://www.rottentomatoes.com/m/8_bit_christmas</a>

</p>

<p>

</p>

<p>

Rare Exports
</p>

<p>

</p>

<p>

<a href="https://www.rottentomatoes.com/m/rare_exports" rel="noopener noreferrer" target="_blank">
https://www.rottentomatoes.com/m/rare_exports</a>

</p>

<p>

</p>

<p>

Silent Night, Deadly Night
</p>

<p>

</p>

<p>

<a href="https://www.rottentomatoes.com/m/silent_night_deadly_night_2025" rel="noopener noreferrer" target="_blank">
https://www.rottentomatoes.com/m/silent_night_deadly_night_2025</a>

</p>

<p>

</p>

<p>

Carnage for Christmas
</p>

<p>

</p>

<p>

<a href="https://www.rottentomatoes.com/m/carnage_for_christmas" rel="noopener noreferrer" target="_blank">
https://www.rottentomatoes.com/m/carnage_for_christmas</a>

</p>

<p>

</p>

<p>

All The Creatures Were Stirring
</p>

<p>

</p>

<p>

<a href="https://www.rottentomatoes.com/m/all_the_creatures_were_stirring" rel="noopener noreferrer" target="_blank">
https://www.rottentomatoes.com/m/all_the_creatures_were_stirring</a>

</p>

<p>

</p>

<p>

Full Circle Weekly News
</p>

<p>

</p>

<p>

<a href="https://fullcirclemagazine.org/" rel="noopener noreferrer" target="_blank">
https://fullcirclemagazine.org/</a>

</p>

<p>

</p>

<p>

Treevenge
</p>

<p>

</p>

<p>

<a href="https://www.rottentomatoes.com/m/treevenge_2009" rel="noopener noreferrer" target="_blank">
https://www.rottentomatoes.com/m/treevenge_2009</a>

</p>

<p>

</p>

<p>

The Killing Tree (aka Demonic Christmas Tree)
</p>

<p>

</p>

<p>

<a href="https://www.rottentomatoes.com/m/the_killing_tree" rel="noopener noreferrer" target="_blank">
https://www.rottentomatoes.com/m/the_killing_tree</a>

</p>

<p>

</p>

<p>

Bambi The Reckoning
</p>

<p>

</p>

<p>

<a href="https://www.rottentomatoes.com/m/bambi_the_reckoning" rel="noopener noreferrer" target="_blank">
https://www.rottentomatoes.com/m/bambi_the_reckoning</a>

</p>

<p>

</p>

<p>

Winnie The Pooh Blood and Honey
</p>

<p>

</p>

<p>

<a href="https://www.rottentomatoes.com/m/winnie_the_pooh_blood_and_honey" rel="noopener noreferrer" target="_blank">
https://www.rottentomatoes.com/m/winnie_the_pooh_blood_and_honey</a>

</p>

<p>

</p>

<p>

Five Nights At Freddys
</p>

<p>

</p>

<p>

<a href="https://www.rottentomatoes.com/m/five_nights_at_freddys" rel="noopener noreferrer" target="_blank">
https://www.rottentomatoes.com/m/five_nights_at_freddys</a>

</p>

<p>

</p>

<p>

Five Nights At Freddys 2
</p>

<p>

</p>

<p>

<a href="https://www.rottentomatoes.com/m/five_nights_at_freddys_2" rel="noopener noreferrer" target="_blank">
https://www.rottentomatoes.com/m/five_nights_at_freddys_2</a>

</p>

<p>

</p>

<p>

Stranger Things
</p>

<p>

</p>

<p>

<a href="https://www.rottentomatoes.com/tv/stranger_things" rel="noopener noreferrer" target="_blank">
https://www.rottentomatoes.com/tv/stranger_things</a>

</p>

<p>

</p>

<p>

Alien Vs Predator
</p>

<p>

</p>

<p>

<a href="https://www.rottentomatoes.com/m/alien_vs_predator" rel="noopener noreferrer" target="_blank">
https://www.rottentomatoes.com/m/alien_vs_predator</a>

</p>

<p>

</p>

<p>

Snakes On A Train
</p>

<p>

</p>

<p>

<a href="https://www.rottentomatoes.com/m/snakes_on_a_train" rel="noopener noreferrer" target="_blank">
https://www.rottentomatoes.com/m/snakes_on_a_train</a>

</p>

<p>

</p>

<p>

LOST
</p>

<p>

</p>

<p>

<a href="https://www.rottentomatoes.com/tv/lost" rel="noopener noreferrer" target="_blank">
https://www.rottentomatoes.com/tv/lost</a>

</p>

<p>

</p>

<p>

From 
</p>

<p>

</p>

<p>

<a href="https://www.rottentomatoes.com/tv/from" rel="noopener noreferrer" target="_blank">
https://www.rottentomatoes.com/tv/from</a>

</p>

<p>

</p>

<p>

Kingfast SSD Drives
</p>

<p>

</p>

<p>

<a href="https://kingfast-ssd.com/" rel="noopener noreferrer" target="_blank">
https://kingfast-ssd.com/</a>

</p>

<p>

</p>

<p>

Floorp
</p>

<p>

</p>

<p>

<a href="https://floorp.app/" rel="noopener noreferrer" target="_blank">
https://floorp.app/</a>

</p>

<p>

</p>

<p>

Jellyfin
</p>

<p>

</p>

<p>

<a href="https://jellyfin.org/" rel="noopener noreferrer" target="_blank">
https://jellyfin.org/</a>

</p>

<p>

</p>

<p>

Primeval 
</p>

<p>

</p>

<p>

<a href="https://www.rottentomatoes.com/tv/primeval" rel="noopener noreferrer" target="_blank">
https://www.rottentomatoes.com/tv/primeval</a>

</p>

<p>

</p>

<p>

Shetland 
</p>

<p>

</p>

<p>

<a href="https://www.rottentomatoes.com/tv/shetland" rel="noopener noreferrer" target="_blank">
https://www.rottentomatoes.com/tv/shetland</a>

</p>

<p>

</p>

<p>

Fallout
</p>

<p>

</p>

<p>

<a href="https://www.rottentomatoes.com/tv/fallout" rel="noopener noreferrer" target="_blank">
https://www.rottentomatoes.com/tv/fallout</a>

</p>

<p>

</p>

<p>

Fallout 4 (viideo game)
</p>

<p>

</p>

<p>

<a href="https://fallout.bethesda.net/en/games/fallout-4" rel="noopener noreferrer" target="_blank">
https://fallout.bethesda.net/en/games/fallout-4</a>

</p>

<p>

</p>

<p>

Twisted Metal
</p>

<p>

</p>

<p>

<a href="https://www.rottentomatoes.com/tv/twisted_metal" rel="noopener noreferrer" target="_blank">
https://www.rottentomatoes.com/tv/twisted_metal</a>

</p>

<p>

</p>

<p>

Playstation 
</p>

<p>

</p>

<p>

<a href="https://en.wikipedia.org/wiki/PlayStation" rel="noopener noreferrer" target="_blank">
https://en.wikipedia.org/wiki/PlayStation</a>

</p>

<p>

</p>

<p>

Farscape
</p>

<p>

</p>

<p>

<a href="https://www.rottentomatoes.com/tv/farscape" rel="noopener noreferrer" target="_blank">
https://www.rottentomatoes.com/tv/farscape</a>

</p>

<p>

</p>

<p>

Peace Keeper Wars
</p>

<p>

</p>

<p>

<a href="https://www.rottentomatoes.com/tv/farscape_the_peacekeeper_wars" rel="noopener noreferrer" target="_blank">
https://www.rottentomatoes.com/tv/farscape_the_peacekeeper_wars</a>

</p>

<p>

</p>

<p>

Altered 
</p>

<p>

</p>

<p>

<a href="https://www.rottentomatoes.com/m/altered_2025" rel="noopener noreferrer" target="_blank">
https://www.rottentomatoes.com/m/altered_2025</a>

</p>

<p>

</p>

<p>

Firefly
</p>

<p>

</p>

<p>

<a href="https://www.rottentomatoes.com/tv/firefly" rel="noopener noreferrer" target="_blank">
https://www.rottentomatoes.com/tv/firefly</a>

</p>

<p>

</p>

<p>

Running Man 
</p>

<p>

</p>

<p>

<a href="https://www.rottentomatoes.com/m/the_running_man_2025" rel="noopener noreferrer" target="_blank">
https://www.rottentomatoes.com/m/the_running_man_2025</a>

</p>

<p>

</p>

<p>

Suits
</p>

<p>

</p>

<p>

<a href="https://www.rottentomatoes.com/tv/suits" rel="noopener noreferrer" target="_blank">
https://www.rottentomatoes.com/tv/suits</a>

</p>

<p>

</p>

<p>

Peacemaker
</p>

<p>

</p>

<p>

<a href="https://www.rottentomatoes.com/tv/peacemaker_2022" rel="noopener noreferrer" target="_blank">
https://www.rottentomatoes.com/tv/peacemaker_2022</a>

</p>

<p>

</p>

<p>

Tulsa King
</p>

<p>

</p>

<p>

<a href="https://www.rottentomatoes.com/tv/tulsa_king" rel="noopener noreferrer" target="_blank">
https://www.rottentomatoes.com/tv/tulsa_king</a>

</p>

<p>

</p>

<p>

Deadpool and Wolverine
</p>

<p>

</p>

<p>

<a href="https://www.rottentomatoes.com/m/deadpool_and_wolverine" rel="noopener noreferrer" target="_blank">
https://www.rottentomatoes.com/m/deadpool_and_wolverine</a>

</p>

<p>

</p>

<p>

Guardians Of The Galaxy 3
</p>

<p>

</p>

<p>

<a href="https://www.rottentomatoes.com/m/guardians_of_the_galaxy_vol_3" rel="noopener noreferrer" target="_blank">
https://www.rottentomatoes.com/m/guardians_of_the_galaxy_vol_3</a>

</p>

<p>

</p>

<p>

Guardians Of The Galaxy Holiday Special
</p>

<p>

</p>

<p>

<a href="https://www.rottentomatoes.com/m/the_guardians_of_the_galaxy_holiday_special" rel="noopener noreferrer" target="_blank">
https://www.rottentomatoes.com/m/the_guardians_of_the_galaxy_holiday_special</a>

</p>

<p>

</p>

<p>

</p>

<p>

All Dogs Go To Kevin (Knoxville)
</p>

<p>

</p>

<p>

<a href="https://www.dogstokevin.com/" rel="noopener noreferrer" target="_blank">
https://www.dogstokevin.com/</a>

</p>

<p>

</p>

<p>

Atlanta
</p>

<p>

</p>

<p>

<a href="https://discoveratlanta.com/" rel="noopener noreferrer" target="_blank">
https://discoveratlanta.com/</a>

</p>

<p>

</p>

<p>

Bohdi Linux
</p>

<p>

</p>

<p>

<a href="https://www.bodhilinux.com/" rel="noopener noreferrer" target="_blank">
https://www.bodhilinux.com/</a>

</p>

<p>

</p>

<p>

Linux Mint
</p>

<p>

</p>

<p>

<a href="https://linuxmint.com/" rel="noopener noreferrer" target="_blank">
https://linuxmint.com/</a>

</p>

<p>

</p>

<p>

Feren OS 
</p>

<p>

</p>

<p>

<a href="https://ferenos.weebly.com/" rel="noopener noreferrer" target="_blank">
https://ferenos.weebly.com/</a>

</p>

<p>

</p>

<p>

Mokka 
</p>

<p>

</p>

<p>

<a href="https://dev.to/jliter/garuda-mokka-the-new-distro-for-developers-who-want-power-and-polish-3eif" rel="noopener noreferrer" target="_blank">
https://dev.to/jliter/garuda-mokka-the-new-distro-for-developers-who-want-power-and-polish-3eif</a>

</p>

<p>

</p>

<p>

Mate 
</p>

<p>

</p>

<p>

<a href="https://mate-desktop.org/" rel="noopener noreferrer" target="_blank">
https://mate-desktop.org/</a>

</p>

<p>

</p>

<p>

Cinnamon
</p>

<p>

</p>

<p>

<a href="https://thenewstack.io/what-makes-the-cinnamon-desktop-so-appealing/" rel="noopener noreferrer" target="_blank">
https://thenewstack.io/what-makes-the-cinnamon-desktop-so-appealing/</a>

</p>

<p>

</p>

<p>

Little Ceasars
</p>

<p>

</p>

<p>

<a href="https://littlecaesars.com/en-us/" rel="noopener noreferrer" target="_blank">
https://littlecaesars.com/en-us/</a>

</p>

<p>

</p>

<p>

Jets Pizza
</p>

<p>

</p>

<p>

<a href="https://www.jetspizza.com/stores/kentucky/" rel="noopener noreferrer" target="_blank">
https://www.jetspizza.com/stores/kentucky/</a>

</p>

<p>

</p>

<p>

South Coast Pizza
</p>

<p>

</p>

<p>

<a href="https://southcoastpizza.com/" rel="noopener noreferrer" target="_blank">
https://southcoastpizza.com/</a>

</p>

<p>

</p>

<p>

Pluribus
</p>

<p>

</p>

<p>

<a href="https://www.rottentomatoes.com/tv/pluribus/s01" rel="noopener noreferrer" target="_blank">
https://www.rottentomatoes.com/tv/pluribus/s01</a>

</p>

<p>

</p>

<p>

Rick and Morty
</p>

<p>

</p>

<p>

<a href="https://www.rottentomatoes.com/tv/rick_and_morty" rel="noopener noreferrer" target="_blank">
https://www.rottentomatoes.com/tv/rick_and_morty</a>

</p>

<p>

</p>

<p>

Stadia Controller
</p>

<p>

</p>

<p>

<a href="https://www.pcgamingwiki.com/wiki/Controller:Stadia_Controller" rel="noopener noreferrer" target="_blank">
https://www.pcgamingwiki.com/wiki/Controller:Stadia_Controller</a>

</p>

<p>

</p>

<p>

System 76
</p>

<p>

</p>

<p>

<a href="https://system76.com/" rel="noopener noreferrer" target="_blank">
https://system76.com/</a>

</p>

<p>

</p>

<p>

Pop OS
</p>

<p>

</p>

<p>

<a href="https://system76.com/pop/" rel="noopener noreferrer" target="_blank">
https://system76.com/pop/</a>

</p>

<p>

</p>

<p>

Elementry OS
</p>

<p>

</p>

<p>

<a href="https://elementary.io/" rel="noopener noreferrer" target="_blank">
https://elementary.io/</a>

</p>

<p>

</p>

<p>

FMAN
</p>

<p>

</p>

<p>

<a href="https://fman.io/" rel="noopener noreferrer" target="_blank">
https://fman.io/</a>

</p>

<p>

</p>

<p>

Thunarr
</p>

<p>

</p>

<p>

<a href="https://docs.xfce.org/xfce/thunar/start" rel="noopener noreferrer" target="_blank">
https://docs.xfce.org/xfce/thunar/start</a>

</p>

<p>

</p>

<p>

PCMAN FM
</p>

<p>

</p>

<p>

<a href="https://wiki.archlinux.org/title/PCManFM" rel="noopener noreferrer" target="_blank">
https://wiki.archlinux.org/title/PCManFM</a>

</p>

<p>

</p>

<p>

ESP 32 
</p>

<p>

</p>

<p>

<a href="https://randomnerdtutorials.com/getting-started-with-esp32/" rel="noopener noreferrer" target="_blank">
https://randomnerdtutorials.com/getting-started-with-esp32/</a>

</p>

<p>

</p>

<p>

ESP 32 Cheap  Yellow Screen
</p>

<p>

</p>

<p>

<a href="https://randomnerdtutorials.com/cheap-yellow-display-esp32-2432s028r/" rel="noopener noreferrer" target="_blank">
https://randomnerdtutorials.com/cheap-yellow-display-esp32-2432s028r/</a>

</p>

<p>

</p>

<p>

Ganesh
</p>

<p>

</p>

<p>

<a href="https://www.hinduamerican.org/blog/5-things-to-know-about-ganesha" rel="noopener noreferrer" target="_blank">
https://www.hinduamerican.org/blog/5-things-to-know-about-ganesha</a>

</p>

<p>

</p>

<p>

Black Shirt Bleach (Tie Dye)
</p>

<p>

</p>

<p>

<a href="https://www.clorox.com/learn/how-to-bleach-tie-dye-patterns/" rel="noopener noreferrer" target="_blank">
https://www.clorox.com/learn/how-to-bleach-tie-dye-patterns/</a>

</p>

<p>

</p>

<p>

Discharge Paste for Fabric
</p>

<p>

</p>

<p>

<a href="https://store.jacquardproducts.com/products/decolourant" rel="noopener noreferrer" target="_blank">
https://store.jacquardproducts.com/products/decolourant</a>

</p>

<p>

</p>

<p>

Plastisol
</p>

<p>

</p>

<p>

<a href="https://latem.com/blog/what-exactly-is-plastisol" rel="noopener noreferrer" target="_blank">
https://latem.com/blog/what-exactly-is-plastisol</a>

</p>

<p>

</p>

<p>

Potato / Tapioca Starch
</p>

<p>

</p>

<p>

<a href="https://www.unnatisilks.com/blogs/fiber-talk/21850-2" rel="noopener noreferrer" target="_blank">
https://www.unnatisilks.com/blogs/fiber-talk/21850-2</a>

</p>

<p>

</p>

<p>

Corn Starch (garment printing)
</p>

<p>

</p>

<p>

<a href="https://www.biopacktech.com/Corn-Starch-PLA-Sustainable-Digital-Printing-Design-Clothes-Packaging-pd44247194.html" rel="noopener noreferrer" target="_blank">
https://www.biopacktech.com/Corn-Starch-PLA-Sustainable-Digital-Printing-Design-Clothes-Packaging-pd44247194.html</a>

</p>

<p>

</p>

<p>

Xanthum Gum
</p>

<p>

</p>

<p>

<a href="https://thedreamstress.com/2024/04/making-18th-century-buckram-gum-arabica-vs-tragacanth-vs-xantham/" rel="noopener noreferrer" target="_blank">
https://thedreamstress.com/2024/04/making-18th-century-buckram-gum-arabica-vs-tragacanth-vs-xantham/</a>

</p>

<p>

</p>

<p>

Gnu Wolrd Order
</p>

<p>

</p>

<p>

<a href="https://gnuworldorder.info/" rel="noopener noreferrer" target="_blank">
https://gnuworldorder.info/</a>

</p>

<p>

</p>

<p>

Drawing Fluid (screen printing)
</p>

<p>

</p>

<p>

<a href="https://www.melissadettloff.com/blog/2023/5/10/drawing-with-drawing-fluid-for-screen-printing-paint-pen-squeeze-bottle-four-tools-tested" rel="noopener noreferrer" target="_blank">
https://www.melissadettloff.com/blog/2023/5/10/drawing-with-drawing-fluid-for-screen-printing-paint-pen-squeeze-bottle-four-tools-tested</a>

</p>

<p>

</p>

<p>

Screen Filler
</p>

<p>

</p>

<p>

<a href="https://thediningtablestudio.uk/blog/screen-printing-with-screen-filler-and-drawing-fluid/" rel="noopener noreferrer" target="_blank">
https://thediningtablestudio.uk/blog/screen-printing-with-screen-filler-and-drawing-fluid/</a>

</p>

<p>

</p>

<p>

Photo Emullsion
</p>

<p>

</p>

<p>

<a href="https://www.instructables.com/Photo-emulsion-Screen-Printing/" rel="noopener noreferrer" target="_blank">
https://www.instructables.com/Photo-emulsion-Screen-Printing/</a>

</p>

<p>

</p>

<p>

PHP
</p>

<p>

</p>

<p>

<a href="https://www.php.net/" rel="noopener noreferrer" target="_blank">
https://www.php.net/</a>

</p>

<p>

</p>

<p>

Proton Drive
</p>

<p>

</p>

<p>

<a href="https://proton.me/drive" rel="noopener noreferrer" target="_blank">
https://proton.me/drive</a>

</p>

<p>

</p>

<p>

GRUB
</p>

<p>

</p>

<p>

<a href="https://www.gnu.org/software/grub/" rel="noopener noreferrer" target="_blank">
https://www.gnu.org/software/grub/</a>

</p>

<p>

</p>

<p>

Arch Linux
</p>

<p>

</p>

<p>

<a href="https://archlinux.org/" rel="noopener noreferrer" target="_blank">
https://archlinux.org/</a>

</p>

<p>

</p>

<p>

Proxmox
</p>

<p>

</p>

<p>

<a href="https://www.proxmox.com/en/" rel="noopener noreferrer" target="_blank">
https://www.proxmox.com/en/</a>

</p>

<p>

</p>

<p>

Allen Americans Hockey Team
</p>

<p>

</p>

<p>

<a href="https://allenamericans.com/" rel="noopener noreferrer" target="_blank">
https://allenamericans.com/</a>

</p>

<p>

</p>

<p>

Dallas Stars Hockey 
</p>

<p>

</p>

<p>

<a href="https://www.nhl.com/stars/" rel="noopener noreferrer" target="_blank">
https://www.nhl.com/stars/</a>

</p>

<p>

</p>

<p>

Arlington, Texas
</p>

<p>

</p>

<p>

<a href="https://www.arlingtontx.gov/Home" rel="noopener noreferrer" target="_blank">
https://www.arlingtontx.gov/Home</a>

</p>

<p>

</p>

<p>

Dallas, Texas
</p>

<p>

</p>

<p>

<a href="https://dallascityhall.com/Pages/default.aspx" rel="noopener noreferrer" target="_blank">
https://dallascityhall.com/Pages/default.aspx</a>

</p>

<p>

</p>

<p>

Knoxville Ice Bears
</p>

<p>

</p>

<p>

<a href="https://knoxvilleicebears.com/" rel="noopener noreferrer" target="_blank">
https://knoxvilleicebears.com/</a>

</p>

<p>

</p>

<p>

Skrewball Whiskey
</p>

<p>

</p>

<p>

<a href="https://www.skrewballwhiskey.com/en/" rel="noopener noreferrer" target="_blank">
https://www.skrewballwhiskey.com/en/</a>

</p>

<p>

</p>

<p>

Fireball
</p>

<p>

</p>

<p>

<a href="https://www.fireballwhisky.com/" rel="noopener noreferrer" target="_blank">
https://www.fireballwhisky.com/</a>

</p>

<p>

</p>

<p>

Dr. McGillicuddys
</p>

<p>

</p>

<p>

<a href="https://drmcgillicuddy.com/" rel="noopener noreferrer" target="_blank">
https://drmcgillicuddy.com/</a>

</p>

<p>

</p>

<p>

Guacamole
</p>

<p>

</p>

<p>

<a href="https://www.allrecipes.com/recipe/14064/easy-guacamole/" rel="noopener noreferrer" target="_blank">
https://www.allrecipes.com/recipe/14064/easy-guacamole/</a>

</p>

<p>

</p>

<p>

Inkscape
</p>

<p>

</p>

<p>

<a href="https://inkscape.org/" rel="noopener noreferrer" target="_blank">
https://inkscape.org/</a>

</p>

<p>

</p>

<p>

Cricut Cutting Machine
</p>

<p>

</p>

<p>

<a href="https://inkscape.org/" rel="noopener noreferrer" target="_blank">
https://inkscape.org/</a>

</p>

<p>

</p>

<p>

South East Linux Fest
</p>

<p>

</p>

<p>

<a href="https://southeastlinuxfest.org/" rel="noopener noreferrer" target="_blank">
https://southeastlinuxfest.org/</a>

</p>

<p>

</p>

<p>

Seinfeld
</p>

<p>

</p>

<p>

<a href="https://www.rottentomatoes.com/tv/seinfeld" rel="noopener noreferrer" target="_blank">
https://www.rottentomatoes.com/tv/seinfeld</a>

</p>

<p>

</p>

<p>

Simpsons
</p>

<p>

</p>

<p>

<a href="https://www.rottentomatoes.com/tv/the_simpsons" rel="noopener noreferrer" target="_blank">
https://www.rottentomatoes.com/tv/the_simpsons</a>

</p>

<p>

</p>

<p>

24 (TV Show)
</p>

<p>

</p>

<p>

<a href="https://www.rottentomatoes.com/tv/24" rel="noopener noreferrer" target="_blank">
https://www.rottentomatoes.com/tv/24</a>

</p>

<p>

</p>

<p>

Eveangelion
</p>

<p>

</p>

<p>

<a href="https://www.rottentomatoes.com/m/evangelion_111_you_are_not_alone" rel="noopener noreferrer" target="_blank">
https://www.rottentomatoes.com/m/evangelion_111_you_are_not_alone</a>

</p>

<p>

</p>

<p>

Robotech
</p>

<p>

</p>

<p>

<a href="https://www.rottentomatoes.com/tv/robotech" rel="noopener noreferrer" target="_blank">
https://www.rottentomatoes.com/tv/robotech</a>

</p>

<p>

</p>

<p>

StarGate
</p>

<p>

</p>

<p>

<a href="https://www.rottentomatoes.com/m/stargate" rel="noopener noreferrer" target="_blank">
https://www.rottentomatoes.com/m/stargate</a>

</p>

<p>

</p>

<p>

MakeMKV
</p>

<p>

</p>

<p>

<a href="https://www.makemkv.com/" rel="noopener noreferrer" target="_blank">
https://www.makemkv.com/</a>

</p>

<p>

</p>

<p>

Handbrake
</p>

<p>

</p>

<p>

<a href="https://handbrake.fr/" rel="noopener noreferrer" target="_blank">
https://handbrake.fr/</a>

</p>

<p>

</p>

<p>

The IT Crowd
</p>

<p>

</p>

<p>

<a href="https://www.rottentomatoes.com/tv/the_it_crowd_2006" rel="noopener noreferrer" target="_blank">
https://www.rottentomatoes.com/tv/the_it_crowd_2006</a>

</p>

<p>

</p>

<p>

Jimmy Carr
</p>

<p>

</p>

<p>

<a href="https://www.jimmycarr.com/" rel="noopener noreferrer" target="_blank">
https://www.jimmycarr.com/</a>

</p>

<p>

</p>

<p>

IT Crowd (American version)
</p>

<p>

</p>

<p>

<a href="https://www.asteroidg.com/index.php?section=articles&amp;page=20240327_it_crowd_2007_pilot" rel="noopener noreferrer" target="_blank">
https://www.asteroidg.com/index.php?section=articles&amp;page=20240327_it_crowd_2007_pilot</a>

</p>

<p>

</p>

<p>

IT Crowd (German version)
</p>

<p>

</p>

<p>

<a href="https://www.imdb.com/title/tt1101236/" rel="noopener noreferrer" target="_blank">
https://www.imdb.com/title/tt1101236/</a>

</p>

<p>

</p>

<p>

Red Bull 
</p>

<p>

</p>

<p>

<a href="https://www.redbull.com/us-en" rel="noopener noreferrer" target="_blank">
https://www.redbull.com/us-en</a>

</p>

<p>

</p>

<p>

Liquid Death (Mountain Water
</p>

<p>

</p>

<p>

<a href="https://liquiddeath.com/" rel="noopener noreferrer" target="_blank">
https://liquiddeath.com/</a>

</p>

<p>

</p>

<p>

Deathwish Coffee
</p>

<p>

</p>

<p>

<a href="https://www.deathwishcoffee.com/" rel="noopener noreferrer" target="_blank">
https://www.deathwishcoffee.com/</a>

</p>

<p>

</p>

<p>

Fanta
</p>

<p>

</p>

<p>

<a href="https://www.coca-cola.com/us/en/brands/fanta" rel="noopener noreferrer" target="_blank">
https://www.coca-cola.com/us/en/brands/fanta</a>

</p>

<p>

</p>

<p>

Orange Crush
</p>

<p>

</p>

<p>

<a href="https://www.crushsoda.com/" rel="noopener noreferrer" target="_blank">
https://www.crushsoda.com/</a>

</p>

<p>

</p>

<p>

Mezzo Mix
</p>

<p>

</p>

<p>

<a href="https://germanfoods.org/shop-german-foods/mezzo-mix-cola-orange-soda-in-can-11-2-oz/" rel="noopener noreferrer" target="_blank">
https://germanfoods.org/shop-german-foods/mezzo-mix-cola-orange-soda-in-can-11-2-oz/</a>

</p>

<p>

</p>

<p>

Liquid Death (energy drinks)
</p>

<p>

</p>

<p>

<a href="https://liquiddeath.com/products/scary-strawberry" rel="noopener noreferrer" target="_blank">
https://liquiddeath.com/products/scary-strawberry</a>

</p>

<p>

</p>

<p>

Liquid Death (iced teas)
</p>

<p>

</p>

<p>

<a href="https://liquiddeath.com/products/variety-tea" rel="noopener noreferrer" target="_blank">
https://liquiddeath.com/products/variety-tea</a>

</p>

<p>

</p>

<p>

Tang
</p>

<p>

</p>

<p>

<a href="https://www.mondelezinternational.com/our-brands/tang/" rel="noopener noreferrer" target="_blank">
https://www.mondelezinternational.com/our-brands/tang/</a>

</p>

<p>

</p>

<p>

Kool Aid
</p>

<p>

</p>

<p>

<a href="https://www.kraftheinz.com/kool-aid" rel="noopener noreferrer" target="_blank">
https://www.kraftheinz.com/kool-aid</a>

</p>

<p>

</p>

<p>

True Citrus
</p>

<p>

</p>

<p>

<a href="https://www.truecitrus.com/" rel="noopener noreferrer" target="_blank">
https://www.truecitrus.com/</a>

</p>

<p>

</p>


<p><a href="https://hackerpublicradio.org/eps/hpr4602/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4601: How to be a better writer]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.


Some tips on how the text you write can be improved.


With the pestilence of AI spreading out over the once-human internet, doing what LLMs don't is a pretty good starting point to improve one's own writing.




Make mistakes.


Edit yoursel...]]></description>
<link>https://tsecurity.de/de/3371304/it+sicherheit/it+podcasts/hpr4601+how+to+be+a+better+writer/</link>
<pubDate>Mon, 23 Mar 2026 01:01:35 +0100</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>

<p>
Some tips on how the text you write can be improved.</p>

<p>
With the pestilence of AI spreading out over the once-human internet, doing what LLMs don't is a pretty good starting point to improve one's own writing.</p>

<ol>

<li>
Make mistakes.</li>

<li>
Edit yourself.</li>

<li>
Avoid the tics that are dangerously close to becoming the norm.</li>

</ol>

<p>
See this Wikipedia page, aimed at editors of user submissions:</p>

<p>

<a href="https://en.wikipedia.org/wiki/Wikipedia:Signs_of_AI_writing" rel="noopener noreferrer" target="_blank">
https://en.wikipedia.org/wiki/Wikipedia:Signs_of_AI_writing</a>

</p>

<p>
The sections on content, language &amp; grammar, and style are particularly relevant.</p>


<p><a href="https://hackerpublicradio.org/eps/hpr4601/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4600: The First Doctor, Part 5]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.
This is a further look at the stories of the First Doctor, portrayed by William Hartnell, during the 1960s.
The First Doctor, Part 5
The Celestial Toymaker
This is a wonderful story, and the Toymaker is another foe many Doctor Who fans wanted to se...]]></description>
<link>https://tsecurity.de/de/3363271/it+sicherheit/it+podcasts/hpr4600+the+first+doctor+part+5/</link>
<pubDate>Fri, 20 Mar 2026 01:01:54 +0100</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>
<p>This is a further look at the stories of the First Doctor, portrayed by William Hartnell, during the 1960s.</p>
<h2>The First Doctor, Part 5</h2>
<h3><a href="https://en.wikipedia.org/wiki/The_Celestial_Toymaker">The Celestial Toymaker</a></h3>
<p>This is a wonderful story, and the Toymaker is another foe many Doctor Who fans wanted to see return, and in 2023 it happened. In the story <em>The Giggle</em> he returned, played this time by Neil Patrick Harris, and it is a very good story. But in this introduction of the character he is played by Michael Gough in a Fu Manchu-like costume, and he has great powers, but is bound by certain rules, which makes this interesting. When the Tardis lands in his world, he sets them games they have to survive to escape. They are games based on children’s games you might be familiar with, but they have a twist. The Doctor is told he must solve the Trilogic puzzle in exactly 1023 moves, and Steven and Dodo must win their games before the Doctor wins his. This story is pure entertainment but very well done.</p>
<p>But Hartnell’s decline continued. In this story there are scenes of The Trilogic Puzzle where a hand moves a piece, but it is not Hartnell’s hand, it is another actor. And Hartnell does not appear at all in episodes 2 &amp; 3. Producer John Wiles had a plan to replace Hartnell whose contract was up at the end of the season, but he was over-ruled by BBC Head of Serials, Gerald Savory, who extended Hartnell’s contract, leading to John Wiles quitting the production. Hartnell would continue for now, but something would have to happen eventually.</p>
<h3><a href="https://en.wikipedia.org/wiki/The_Gunfighters_(Doctor_Who)">The Gunfighters</a>)</h3>
<p>This is another historical story, but is embarrassingly bad. It takes the Tardis to Tombstone, Arizona at the time of the famous Gunfight at the OK Corral. Steven Taylor is mostly silly trying to act out childish fantasies of cowboys. The set up comes from the end of the previous story when the Doctor bites into a candy and yells in pain. He needs to see a dentist, and Doc Holliday, aside from being a gunfighter, is a dentist. Mistaken identities happen all over. This is light fluff, but is enjoyable if you give in to the silliness.</p>
<h3><a href="https://en.wikipedia.org/wiki/The_Savages_(Doctor_Who)">The Savages</a>)</h3>
<p>This is another story about who are the bad guys really, similar to <em>Galaxy Four</em>. In this case, Dodo and Steven are captured by what appear to be Stone Age savages. The Doctor, meanwhile, is taken to the city of the Elders, is greeted warmly. It seems they have been following his travels for some time and are great admirers of him. Steven and Dodo are rescued by soldiers from the City, and reunited with the Doctor. Then Dodo slips away and stumbles on experiments being conducted on human beings. So the Elders turn out to be the real Savages here. The lab is destroyed, the two groups decide to live together in peace, but they realize they need a leader who is from neither group and choose Steven to be their leader. So another companion goes. Only Dodo is left.</p>
<h3><a href="https://en.wikipedia.org/wiki/The_War_Machines">The War Machines</a></h3>
<p>This is an “AI gone bad” story. A professor has built a computer to help manage the communications in the new Post Office Tower, which in fact was a new building in London. But the computer turns out to be more than anyone realized. But Doctor gets it right away when the computer correctly gives the meaning of TARDIS. Then it turns out that the computer can hypnotize people and make them its slaves. It does this to several of the professors involved, and has them build the War Machines that will enable it to take over the world. Dodo is hypnotized and tries to trap the Doctor, but he figures it out and restores her, then she is sent away to recuperate. We won’t ever see her again. Meanwhile the secretary to one of the professors, by the name of Polly, and young sailor named Ben, join up with the Doctor, and they defeat the computer. At the end, they realize they have Dodo’s TARDIS key and enter just before it takes off. So now we have two new companions.</p>
<p>This is a fun episode. The props are the usual for this time in Doctor Who, cheap. But the writing is good, and story has enough twists and turns to carry you right along. Hartnell was really good in this story despite the problems he was having.</p>
<h3><a href="https://en.wikipedia.org/wiki/The_Smugglers">The Smugglers</a></h3>
<p>This is another historical story, but instead of being based on any particular incident it tells of a general occurrence in English history. The English government chose to support itself primarily through customs duties on imports, which of course created an incentive to avoid those duties by smuggling, and that definitely happened a lot in the Cornwall area. It was also one the issues that started the American Revolution, but that is not our story here. The TARDIS crew encounters a former pirate, now turned church warden, who tells them a secret before being killed by another pirate. Ben and Polly capture a man who they think is the murderer, but he is in fact an undercover Revenue agent, and in the end helps to defeat the pirates. It is a good story, and the most memorable character has to be Cherub, the pirate who murdered the church warden and who kills other people and is very sinister.</p>
<p>This is a story where all episodes have been lost, so I had to get it through reconstructions.</p>
<h3><a href="https://en.wikipedia.org/wiki/The_Tenth_Planet">The Tenth Planet</a></h3>
<p>This is Hartnell’s final story, and it takes the TARDIS to Antarctica, where the travelers are taken to the Snowcap base of the International Space Command. They are managing the return of the manned space mission Zeus IV, and everything goes wrong when a new planet appears, dooming the mission. Then we meet the second most memorable enemies of the Doctor, the Cybermen. They explain that they are from the planet Mondas, which is Earth’s twin (hence the Tenth Planet), and need the energy from the Earth to keep their planet going. The General running the base is of course pig-headed and does everything possible to make things worse than they have to be. This adventure turns out to be too much for the Doctor, who explains that his old body is just wearing out, and when they get back to the TARDIS he collapses and starts to change. In the end his replaced by the of Patrick Troughton.</p>
<p>Hartnell was becoming increasingly difficult to work with as far back as The Time Meddler, where you could really see him losing his lines, and there are lots of stories about him hiding notes to remind himself of what he was supposed to say. But the BBC didn’t want the show to end, so they did something unprecedented and replaced the lead actor in a popular series. To explain it away, they invented regeneration, something the Doctor’s race could do. We now call them the Time Lords of Gallifrey, but that part did not appear until the end of Troughton’s run as the Doctor. For now, the Doctor was just a member of an unspecified alien race, and the only other member we had met was the Meddling Monk. At least we assume he is of the same race since he has a TARDIS.</p>
<h3>The First Doctor Era</h3>
<p>Whatever else you might want to say about Hartnell he created a franchise that has lasted for over 60 years at the time I write this. And after a slow start, he really developed the character and became identified with it. In the beginning he was a very stubborn and unlikable old man, but as the series progressed he mellowed and his humor started to come through even more. Hartnell himself returned to the role one more time in the Third Doctor story <a href="https://en.wikipedia.org/wiki/The_Three_Doctors_(Doctor_Who)"><em>The Three Doctors</em></a> (1973), which was the first time Doctor Who had a story featuring multiple incarnations of the character, in the case the First Doctor (William Hartnell), the Second Doctor (Patrick Troughton), and the Third Doctor (Jon Pertwee). But due to his declining health he has a limited role appearing only on a TV Screen. He passed away in 1975.</p>
<p>He was portrayed by Richard Hurndall in another multiple Doctor story, _<a href="https://en.wikipedia.org/wiki/The_Five_Doctors">The Five Doctors</a>_ (1983), which was broadcast for the 20th anniversary of the program during Peter Davison’s run as the Fifth Doctor. In recent times David Bradley has portrayed the First Doctor, particularly in the docudrama <a href="https://en.wikipedia.org/wiki/An_Adventure_in_Space_and_Time">An Adventure in Space and Time</a> (2013) which was produced in honor of the 50th anniversary of the program. This show tells the story of the First Doctor and the how the program came together in a dramatic form, and I recommend it highly. Bradley would reprise the role in 2017 in _<a href="https://en.wikipedia.org/wiki/The_Doctor_Falls">The Doctor Falls</a><em> and </em><a href="https://en.wikipedia.org/wiki/Twice_Upon_a_Time_(Doctor_Who)">Twice Upon A Time</a>)<em> where he played opposite Peter Capaldi’s 12th Doctor, and then again in </em><a href="https://en.wikipedia.org/wiki/The_Power_of_the_Doctor">The Power of the Doctor</a>_ (2022), where he appears alongside other previous Doctors. It is perhaps notable that the first three Doctors, William Hartnell, Patrick Troughton, and Jon Pertwee, have all passed away, but only Hartnell’s First doctor has been revived so often.</p>
<h3>Links:</h3>
<ul>
<li><a href="https://en.wikipedia.org/wiki/The_Celestial_Toymaker">https://en.wikipedia.org/wiki/The_Celestial_Toymaker</a></li>
<li><a href="https://en.wikipedia.org/wiki/The_Gunfighters_(Doctor_Who)">https://en.wikipedia.org/wiki/The_Gunfighters_(Doctor_Who)</a></li>
<li><a href="https://en.wikipedia.org/wiki/The_Savages_(Doctor_Who)">https://en.wikipedia.org/wiki/The_Savages_(Doctor_Who)</a></li>
<li><a href="https://en.wikipedia.org/wiki/The_War_Machines">https://en.wikipedia.org/wiki/The_War_Machines</a></li>
<li><a href="https://en.wikipedia.org/wiki/The_Smugglers">https://en.wikipedia.org/wiki/The_Smugglers</a></li>
<li><a href="https://en.wikipedia.org/wiki/The_Tenth_Planet">https://en.wikipedia.org/wiki/The_Tenth_Planet</a></li>
<li><a href="https://en.wikipedia.org/wiki/The_Three_Doctors_(Doctor_Who)">https://en.wikipedia.org/wiki/The_Three_Doctors_(Doctor_Who)</a></li>
<li><a href="https://en.wikipedia.org/wiki/The_Five_Doctors">https://en.wikipedia.org/wiki/The_Five_Doctors</a></li>
<li><a href="https://en.wikipedia.org/wiki/An_Adventure_in_Space_and_Time">https://en.wikipedia.org/wiki/An_Adventure_in_Space_and_Time</a></li>
<li><a href="https://en.wikipedia.org/wiki/The_Doctor_Falls">https://en.wikipedia.org/wiki/The_Doctor_Falls</a></li>
<li><a href="https://en.wikipedia.org/wiki/Twice_Upon_a_Time_(Doctor_Who)">https://en.wikipedia.org/wiki/Twice_Upon_a_Time_(Doctor_Who)</a></li>
<li><a href="https://en.wikipedia.org/wiki/The_Power_of_the_Doctor">https://en.wikipedia.org/wiki/The_Power_of_the_Doctor</a></li>
<li><a href="https://www.palain.com/science-fiction/intro-to-doctor-who/the-first-doctor-part-5/">https://www.palain.com/science-fiction/intro-to-doctor-who/the-first-doctor-part-5/</a></li>
</ul>
<p><a href="https://hackerpublicradio.org/eps/hpr4600/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[SpyCloud’s 2026 Identity Exposure Report Reveals Explosion of Non-Human Identity Theft]]></title>
<description><![CDATA[Austin, TX, USA, 19th March 2026, CyberNewswire
The post SpyCloud’s 2026 Identity Exposure Report Reveals Explosion of Non-Human Identity Theft appeared first on The Security Ledger with Paul F. Roberts.]]></description>
<link>https://tsecurity.de/de/3362077/it+sicherheit/it+podcasts/spyclouds+2026+identity+exposure+report+reveals+explosion+of+non-human+identity+theft/</link>
<pubDate>Thu, 19 Mar 2026 14:17:46 +0100</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Austin, TX, USA, 19th March 2026, CyberNewswire</p>
<p>The post <a href="https://securityledger.com/2026/03/spyclouds-2026-identity-exposure-report-reveals-explosion-of-non-human-identity-theft/">SpyCloud’s 2026 Identity Exposure Report Reveals Explosion of Non-Human Identity Theft</a> appeared first on <a href="https://securityledger.com/">The Security Ledger with Paul F. Roberts</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[CISO Whisperer Names 11 Vendors Leading the Shift from Tools to Outcomes at RSA Conference 2026]]></title>
<description><![CDATA[Austin, United States, 19th March 2026, CyberNewswire
The post CISO Whisperer Names 11 Vendors Leading the Shift from Tools to Outcomes at RSA Conference 2026 appeared first on The Security Ledger with Paul F. Roberts.]]></description>
<link>https://tsecurity.de/de/3362076/it+sicherheit/it+podcasts/ciso+whisperer+names+11+vendors+leading+the+shift+from+tools+to+outcomes+at+rsa+conference+2026/</link>
<pubDate>Thu, 19 Mar 2026 14:17:45 +0100</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Austin, United States, 19th March 2026, CyberNewswire</p>
<p>The post <a href="https://securityledger.com/2026/03/ciso-whisperer-names-11-vendors-leading-the-shift-from-tools-to-outcomes-at-rsa-conference-2026/">CISO Whisperer Names 11 Vendors Leading the Shift from Tools to Outcomes at RSA Conference 2026</a> appeared first on <a href="https://securityledger.com/">The Security Ledger with Paul F. Roberts</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4599: Women in digital and games event]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.


Women in Digital and Games

By Digital and Creative Technologies - West Suffolk College
73 Western WayBury St Edmunds, England
Friday, Mar 27 from 6 pm to 8 pm


Join us in person to celebrate and empower Women in Digital and Games with ...]]></description>
<link>https://tsecurity.de/de/3360636/it+sicherheit/it+podcasts/hpr4599+women+in+digital+and+games+event/</link>
<pubDate>Thu, 19 Mar 2026 01:02:00 +0100</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>


<h1>Women in Digital and Games</h1>

<p>By Digital and Creative Technologies - West Suffolk College<br>
73 Western WayBury St Edmunds, England<br>
Friday, Mar 27 from 6 pm to 8 pm<br>
</p>
<p>
Join us in person to celebrate and empower Women in Digital and Games with talks, networking, and fun!
</p>
<p>
Get ready to connect, learn, and be inspired at this awesome in-person event celebrating amazing women in the digital and games industries. Whether you're a student, professional, or just curious, come hang out, hear stories, and boost your network. Don’t miss out on an empowering evening filled with energy and inspiration!
</p>
<p>
Source: Eventbrite <a href="https://share.google/SXD66BhsftLmQ3Yfx">https://share.google/SXD66BhsftLmQ3Yfx</a></p>

<ul>
<li><a href="https://share.google/SXD66BhsftLmQ3Yfx">https://share.google/SXD66BhsftLmQ3Yfx</a></li>
<li><a href="https://camjam.me/">https://camjam.me/</a></li>
<li><a href="https://www.computinghistory.org.uk/">https://www.computinghistory.org.uk/</a></li>
</ul>

<p><a href="https://hackerpublicradio.org/eps/hpr4599/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4598: Recording good audio using open source tools]]></title>
<description><![CDATA[This show has been flagged as Explicit by the host.


Here is some no nonsense advice for recording decent sounding audio using Linux and open-source software!






Some of my links:








Mastodon: 
https://indieweb.social/@stranded_output




PeerTube: 
https://peertube.wtf/c/strand...]]></description>
<link>https://tsecurity.de/de/3357697/it+sicherheit/it+podcasts/hpr4598+recording+good+audio+using+open+source+tools/</link>
<pubDate>Wed, 18 Mar 2026 01:01:19 +0100</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Explicit by the host.</p>

<p>
Here is some no nonsense advice for recording decent sounding audio using Linux and open-source software!</p>

<p>

</p>

<p>
Some of my links:</p>

<p>

</p>

<ul>

<li>
Mastodon: <a href="https://indieweb.social/@stranded_output" rel="noopener noreferrer" target="_blank">
https://indieweb.social/@stranded_output</a>

</li>

<li>
PeerTube: <a href="https://peertube.wtf/c/strandedoutput/videos" rel="noopener noreferrer" target="_blank">
https://peertube.wtf/c/strandedoutput/videos</a>

</li>

<li>
Linux Lads podcast: <a href="https://linuxlads.com/" rel="noopener noreferrer" target="_blank">
https://linuxlads.com/</a>
 </li>

<li>
YouTube channel: <a href="https://www.youtube.com/@strandedoutput2916" rel="noopener noreferrer" target="_blank">
https://www.youtube.com/@strandedoutput2916</a>

</li>

<li>
Personal site: <a href="https://strandedoutput.com/" rel="noopener noreferrer" target="_blank">
https://strandedoutput.com/</a>

</li>

</ul>


<p><a href="https://hackerpublicradio.org/eps/hpr4598/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Orchid Security Recognized by Gartner® as a Representative Vendor of Guardian Agents]]></title>
<description><![CDATA[New York, United States, 17th March 2026, CyberNewswire
The post Orchid Security Recognized by Gartner® as a Representative Vendor of Guardian Agents appeared first on The Security Ledger with Paul F. Roberts.]]></description>
<link>https://tsecurity.de/de/3355504/it+sicherheit/it+podcasts/orchid+security+recognized+by+gartner+as+a+representative+vendor+of+guardian+agents/</link>
<pubDate>Tue, 17 Mar 2026 14:48:00 +0100</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>New York, United States, 17th March 2026, CyberNewswire</p>
<p>The post <a href="https://securityledger.com/2026/03/orchid-security-recognized-by-gartner-as-a-representative-vendor-of-guardian-agents/">Orchid Security Recognized by Gartner® as a Representative Vendor of Guardian Agents</a> appeared first on <a href="https://securityledger.com/">The Security Ledger with Paul F. Roberts</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Exposed Developer Secrets Surge: AI Drives 34% Increase in 2025]]></title>
<description><![CDATA[GitGuardian’s latest Secrets Sprawl report found more than 28 million new secrets exposed via public GitHub commits in 2025, a 34% increase over 2024 and the largest annual jump the company has recorded. The spike reflects a broader transformation in software creation, as AI tools lower the barri...]]></description>
<link>https://tsecurity.de/de/3355346/it+sicherheit/it+podcasts/exposed+developer+secrets+surge+ai+drives+34+increase+in+2025/</link>
<pubDate>Tue, 17 Mar 2026 13:47:48 +0100</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>GitGuardian’s latest Secrets Sprawl report found more than 28 million new secrets exposed via public GitHub commits in 2025, a 34% increase over 2024 and the largest annual jump the company has recorded. The spike reflects a broader transformation in software creation, as AI tools lower the barrier to coding.</p>
<p>The post <a href="https://securityledger.com/2026/03/exposed-developer-secrets-surge-ai-drives-34-increase-in-2025/">Exposed Developer Secrets Surge: AI Drives 34% Increase in 2025</a> appeared first on <a href="https://securityledger.com/">The Security Ledger with Paul F. Roberts</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[GitGuardian Reports an 81% Surge of AI-Service Leaks as 29M Secrets Hit Public GitHub]]></title>
<description><![CDATA[New York, NY, 17th March 2026, CyberNewswire
The post GitGuardian Reports an 81% Surge of AI-Service Leaks as 29M Secrets Hit Public GitHub appeared first on The Security Ledger with Paul F. Roberts.]]></description>
<link>https://tsecurity.de/de/3355212/it+sicherheit/it+podcasts/gitguardian+reports+an+81+surge+of+ai-service+leaks+as+29m+secrets+hit+public+github/</link>
<pubDate>Tue, 17 Mar 2026 13:03:51 +0100</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>New York, NY, 17th March 2026, CyberNewswire</p>
<p>The post <a href="https://securityledger.com/2026/03/gitguardian-reports-an-81-surge-of-ai-service-leaks-as-29m-secrets-hit-public-github/">GitGuardian Reports an 81% Surge of AI-Service Leaks as 29M Secrets Hit Public GitHub</a> appeared first on <a href="https://securityledger.com/">The Security Ledger with Paul F. Roberts</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4597: UNIX Curio #2 - fgrep]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.


This series is dedicated to exploring little-known—and occasionally useful—trinkets lurking in the dusty corners of UNIX-like operating systems.


Imagine, if you will, a Jane Austen novel about three sisters. The first is well-known and celebra...]]></description>
<link>https://tsecurity.de/de/3354010/it+sicherheit/it+podcasts/hpr4597+unix+curio+2+-+fgrep/</link>
<pubDate>Tue, 17 Mar 2026 01:01:37 +0100</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>

<blockquote>
This series is dedicated to exploring little-known—and occasionally useful—trinkets lurking in the dusty corners of UNIX-like operating systems.</blockquote>

<p>
Imagine, if you will, a Jane Austen novel about three sisters. The first is well-known and celebrated by everyone; the second, while slightly smarter and more capable, is significantly less popular; and the third languishes in near-total isolation and obscurity. These three sisters live on any UNIX-like system, and their names are <code>
grep</code>
, <code>
egrep</code>
, and <code>
fgrep</code>
.</p>

<p>
We will assume you are already familiar with <code>
grep</code>
—<code>
egrep</code>
 works pretty much the same, except she handles <strong>
e</strong>
xtended regular expression syntax. (When writing shell scripts intended to be portable, be careful to call <code>
egrep</code>
 if your expression uses <code>
+</code>
, <code>
?</code>
, <code>
|</code>
, or braces as metacharacters. Some versions of GNU grep make no distinction between basic and extended regular expressions, so you may be surprised when your script works on one system but not another.)</p>

<p>
But our subject for today is poor, unnoticed <code>
fgrep</code>
. While the plainest sister of the three, she really doesn't deserve to be ignored. The "f" in her name stands either for <strong>
f</strong>
ixed-string or <strong>
f</strong>
ast, depending on who you ask. She does not handle regular expressions at all; the pattern she is given is taken literally. This is a great advantage when what you are searching for contains characters having special meaning in a regular expression.</p>

<p>
Suppose you have a directory full of PHP scripts and want to find references to an array element called <code>
$tokens[0]</code>
. You can try <code>
grep</code>
 (note that the single quotes are necessary to prevent the shell from interpreting <code>
$tokens</code>
 as a shell variable):</p>

<pre data-language="plain">
$ grep '$tokens[0]' *.php
</pre>

<p>
But there is no output. The reason is that the brackets have special significance to <code>
grep</code>
; <code>
[0]</code>
 is interpreted as a character class containing only 0. Therefore, this command looks for the string <code>
$tokens0</code>
, which is not what we want. We would have to escape the brackets with backslashes to get the correct match (some implementations may require you to escape the dollar sign also):</p>

<pre data-language="plain">
$ grep '$tokens\[0\]' *.php
parser.php:   $outside[] = $tokens[0];
</pre>

<p>
Instead of fooling with all that escaping (which might get tedious if our pattern contains many special characters), we can just use <code>
fgrep</code>
 instead:</p>

<pre data-language="plain">
$ fgrep '$tokens[0]' *.php
parser.php:   $outside[] = $tokens[0];
</pre>

<p>
One place where <code>
fgrep</code>
 can be particularly handy is when searching through log files for IP addresses. With ordinary <code>
grep</code>
, the pattern <code>
43.2.1.0</code>
 would match 43.221.0.123, 43.2.110.123, and a bunch of other IP addresses you're not interested in because the dot metacharacter will match any character. To make sure you only matched a literal dot you'd have to escape each one with a backslash or, better yet, use <code>
fgrep</code>
.</p>

<p>
But what about the claim that <code>
fgrep</code>
 is fast? On GNU systems, there is usually one single binary that changes its behavior depending on whether it is called as <code>
grep</code>
, <code>
egrep</code>
, or <code>
fgrep</code>
. (Actually, this is in line with the <a href="https://pubs.opengroup.org/onlinepubs/009695399/utilities/grep.html#tag_04_63_18" rel="noopener noreferrer" target="_blank">
POSIX standard</a>

<sup>
1</sup>
, which deprecates <code>
egrep</code>
 and <code>
fgrep</code>
 in favor of a single <code>
grep</code>
 command taking the <code>
-E</code>
 option for using extended regular expressions and the <code>
-F</code>
 option for doing fixed-string searches.)</p>

<p>
In testing, we found that when specifying a single pattern on the command line, <code>
fgrep</code>
 wasn't really any faster than <code>
grep</code>
. However, when using the <code>
-f</code>
 option to specify a file containing a list of a couple dozen patterns, <code>
fgrep</code>
 could consistently produce a 20% time savings. On systems where <code>
grep</code>
 and <code>
fgrep</code>
 are different binaries, there can potentially be a more dramatic difference in speed and even memory usage.</p>

<p>
In our hypothetical Austen novel, the neglected sister would probably be driven to a bad end, to be only spoken of afterward in hushed whispers. Don't let that happen! Whenever you need to search for a string, but don't require the power of regular expressions, get into the habit of calling on <code>
fgrep</code>
. She can be very helpful and deserves more attention than she gets. You'll save yourself the trouble of worrying about metacharacters and maybe some running time as well.</p>

<p>
References:</p>

<ol>

<li>

<a href="https://pubs.opengroup.org/onlinepubs/009695399/utilities/grep.html#tag_04_63_18" rel="noopener noreferrer" target="_blank">
Grep specification</a>
 https://pubs.opengroup.org/onlinepubs/009695399/utilities/grep.html#tag_04_63_18</li>

</ol>

<p>

<em>
This article was originally written in June 2010. The podcast episode was recorded in February 2026.</em>

</p>


<p><a href="https://hackerpublicradio.org/eps/hpr4597/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4596: Adding voice-over audio track created using text to speech on the movie subtitles]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.

We’ll explain why we’re doing it, what it is, and cover some useful tools along the way.

I’ve been watching movies recommended to me by my colleagues.

As I work for a global company, the recommendations are often “Foreign Language”, which b...]]></description>
<link>https://tsecurity.de/de/3351507/it+sicherheit/it+podcasts/hpr4596+adding+voice-over+audio+track+created+using+text+to+speech+on+the+movie+subtitles/</link>
<pubDate>Mon, 16 Mar 2026 01:01:58 +0100</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>
<h1>
We’ll explain why we’re doing it, what it is, and cover some useful tools along the way.</h1>
<p>
I’ve been watching movies recommended to me by my colleagues.</p>
<p>
As I work for a global company, the recommendations are often “Foreign Language”, which by definition is every movie to someone.</p>
<p>
It’s often difficult to read the subtitles, or they are distracting from the acting.</p>
<p>
So I thought of converting the subtitles to speech for inclusion as an audio track, to produce a Voice Over or Lectoring audio track.</p>
<h2>
Lectoring aka Voice Over Translations</h2>
<p>
First used is soviet countries to read the news and propaganda from a lectors - the first podcasts ?</p>
<blockquote>
In Polish, lektor is also used to mean “off-screen reader” or “voice-over artist”. A lektor is a (usually male) reader who provides the Polish voice-over on foreign-language programmes and films where the voice-over translation technique is used. This is the standard localization technique on Polish television and (as an option) on many DVDs; full dubbing is generally reserved for children’s material.</blockquote>
<ul>
<li>
<a href="https://en.wikipedia.org/wiki/Lector#Television" rel="noopener noreferrer" target="_blank">
https://en.wikipedia.org/wiki/Lector#Television</a>
</li>
</ul>
<h2>
Example: Night of the Living Dead</h2>
<p>
To give you an idea of what this sounds like I’m going to play you an example of the out of copyright movie, <a href="https://en.wikipedia.org/wiki/Night_of_the_Living_Dead" rel="noopener noreferrer" target="_blank">
Night of the Living Dead</a>
.</p>
<blockquote>
In the United States, Night of the Living Dead was mistakenly released into the public domain because the original distributor failed to replace the copyright notice when changing the film’s name</blockquote>
<h3>
Original</h3>
<p>
First the original sound track, then the same clip with the voice over track.</p>
<audio controls="" preload="none">
  <source src="https://hackerpublicradio.org/eps/hpr4596/hpr4596_1968_Night_of_the_Living_Dead_Original.mp3" type="audio/mpeg">
</audio>
<h3>
Voice Over</h3>
<audio controls="" preload="none">
  <source src="https://hackerpublicradio.org/eps/hpr4596/hpr4596_1968_Night_of_the_Living_Dead_voice_over.mp3" type="audio/mpeg">
</audio>
<h1>
Proof of Concept</h1>
<p>
As a native English speaker I find it difficult to follow those Voice Over tracks as I am trying to focus on the underlying audio. In discussions with Polish friends, it seems that this is not a problem when Polish is your native language. To put that to the test I wanted to try it out on a movie to see if that were indeed the case.</p>
<p>
I asked on Mastodon for a non English movie that was Creative Commons but did have English Subtitles, and HPR host <a href="https://hackerpublicradio.org/correspondents/0196.html" rel="noopener noreferrer" target="_blank">
Windigo</a>
had the answer.</p>
<blockquote>
<a href="https://en.wikipedia.org/wiki/Nasty_Old_People" rel="noopener noreferrer" target="_blank">
2009 Nasty Old People</a>
is a 2009 Swedish film directed by Hanna Sköld, Tangram Film. It premiered on 10 October 2009 at Kontrapunkt in Malmö, and on file sharing site The Pirate Bay. The film is available as an authorized and legal download under the Creative Commons license CC BY-NC-SA.</blockquote>
<p>
So my idea was to take each bit of subtitle text, convert it to audio, then have the generated audio play at the same time the subtitle appears on the screen.</p>
<p>
We use <a href="https://github.com/OHF-Voice/piper1-gpl" rel="noopener noreferrer" target="_blank">
piper</a>
to process shows here on HPR, and we also generate <a href="https://en.wikipedia.org/wiki/SubRip" rel="noopener noreferrer" target="_blank">
srt, or SubRip subtitle files</a>
for each show.</p>
<p>
SRT or SubRip files are the easiest subtitle file to work with.</p>
<p>
From <a href="https://en.wikipedia.org/wiki/SubRip" rel="noopener noreferrer" target="_blank">
https://en.wikipedia.org/wiki/SubRip</a>
</p>
<p>
The SubRip file format is described on the <a href="https://en.wikipedia.org/wiki/Matroska" rel="noopener noreferrer" target="_blank">
Matroska</a>
multimedia <a href="https://en.wikipedia.org/wiki/Container_format_(digital)" rel="noopener noreferrer" target="_blank">
container format</a>
website as “perhaps the most basic of all subtitle formats.”</p>
<p>
SubRip (SubRip Text) files are named with the <a href="https://en.wikipedia.org/wiki/Filename_extension" rel="noopener noreferrer" target="_blank">
extension</a>
<code>
.srt</code>
, and contain formatted lines of plain text in groups separated by a blank line.</p>
<p>
Subtitles are numbered sequentially, starting at 1. The <a href="https://en.wikipedia.org/wiki/Timecode" rel="noopener noreferrer" target="_blank">
timecode</a>
format used is hours:minutes:seconds,milliseconds with time units fixed to two zero-padded digits and fractions fixed to three zero-padded digits (00:00:00,000).</p>
<p>
The comma (,) is used for <a href="https://en.wikipedia.org/wiki/Decimal_separator#History" rel="noopener noreferrer" target="_blank">
fractional separator</a>
.</p>
<ol>
<li>
A numeric counter identifying each sequential subtitle</li>
<li>
The time that the subtitle should appear on the screen, followed by <code>
–&gt;</code>
and the time it should disappear</li>
<li>
Subtitle text itself on one or more lines</li>
<li>
A blank line containing no text, indicating the end of this subtitle</li>
</ol>
<p>
I downloaded <a href="https://archive.org/details/VisionOntv-NastyOldPeopleFeatureFilm625-3" rel="noopener noreferrer" target="_blank">
the movie from the Internet Archive</a>
, and then used <a href="https://github.com/OHF-Voice/piper1-gpl" rel="noopener noreferrer" target="_blank">
Piper voice</a>
to convert a minutes worth of subtitles.</p>
<blockquote>
piper_voice: A fast and local neural text-to-speech engine that embeds espeak-ng for phonemization. GPL-3.0 license</blockquote>
<p>
Once I had the audio prepared for a sample of the subtitles, it was over to audacity to create a new subtitle audio track.</p>
<blockquote>
Audacity is the world’s most popular audio editing and recording app GPL v2 or later,</blockquote>
<p>
Timing the segments would be a problem, if it were not for the fact that Audacity supports srt files as Labels.</p>
<p>
File &gt; Import &gt; Lables. Then select the srt file</p>
<p>
<a href="https://hackerpublicradio.org/eps/hpr4596/hpr4596_image_1.png">
<img src="https://hackerpublicradio.org/eps/hpr4596/hpr4596_image_1_tn.png">
</a>
</p>
<p>
</p>
<p>
The subtitle track with the text of the audio will be displayed. I could then Import each Audio segment and line them up with the subtitle track for to get the correct timing.</p>
<p>
<a href="https://hackerpublicradio.org/eps/hpr4596/hpr4596_image_2.png">
<img src="https://hackerpublicradio.org/eps/hpr4596/hpr4596_image_2_tn.png">
</a>
</p>
<p>
Each subtitles segment created a new separate audio file which I then exported.</p>
<p>
I then used <a href="https://kdenlive.org/" rel="noopener noreferrer" target="_blank">
Kdenlive</a>
to open the video and import the audio and subtitle tracks.</p>
<blockquote>
Kdenlive: is the acronym for KDE Non-Linear Video Editor. It works on Linux, Windows, macOS, and BSD. GPL-3.0-or-later</blockquote>
<p>
There is a good article on adding <a href="https://www.checksub.com/blog/subtitles-in-kdenlive" rel="noopener noreferrer" target="_blank">
by Jean-Marc on How to Add Subtitles Easily in Kdenlive</a>
</p>
<p>
Project &gt; Subtitles &gt; Add Subtitle Track</p>
<p>
<a href="https://hackerpublicradio.org/eps/hpr4596/hpr4596_image_3.png">
<img src="https://hackerpublicradio.org/eps/hpr4596/hpr4596_image_3_tn.png">
</a>
</p>
<p>
Select the Subtitle file</p>
<p>
<a href="https://hackerpublicradio.org/eps/hpr4596/hpr4596_image_4.png">
<img src="https://hackerpublicradio.org/eps/hpr4596/hpr4596_image_4_tn.png">
</a>
</p>
<p>
Align the subtitle and audio track.</p>
<p>
<a href="https://hackerpublicradio.org/eps/hpr4596/hpr4596_image_5.png">
<img src="https://hackerpublicradio.org/eps/hpr4596/hpr4596_image_5_tn.png">
</a>
</p>
<p>
After rendering the segment out I was satisfied that this was something worth doing.</p>
<h1>
The script</h1>
<p>
The <a href="https://hackerpublicradio.org/eps/hpr4596/hpr4596_srt2audio.bash" rel="noopener noreferrer" target="_blank">
script</a>
can be found on the episode page for this show on the HPR site, and I put it together as a proof of concept.</p>
<p>
It creates a new audio track for the subtitles, and merges this with the original sound track to create a new selectable sound track.</p>
<p>
It begins by creating a length of silent audio that is as long as up to the first subtitle time segment begin timestamp.</p>
<p>
The first subtitle segment is converted from text to speech using <a href="https://github.com/OHF-Voice/piper1-gpl" rel="noopener noreferrer" target="_blank">
Piper voice</a>
</p>
<p>
That segment of audio is added to the initial silence track.</p>
<p>
We check the total length so far, and then see if there is supposed to be silence between the last and next subtitle segment begin timestamp.</p>
<p>
If there is, then a filler piece of silence is added until the next subtitle should appear.</p>
<p>
If not then the audio for both subtitles play immediately after one another.</p>
<p>
I was worried that the subtitle audio would then lag behind the on screen dialogue but it works surprisingly well. Even long series of dialogue sort themselves out after a bit.</p>
<p>
We do this over and over again for each subtitle, right up to the very end of the movie.</p>
<p>
This new subtitle to speech audio track is then merged back into the media file as a new audio track.</p>
<p>
<a href="https://hackerpublicradio.org/eps/hpr4596/hpr4596_image_6.png">
<img src="https://hackerpublicradio.org/eps/hpr4596/hpr4596_image_6_tn.png">
</a>
</p>
<pre data-language="plain">
96
00:15:06,240 --&gt; 00:15:10,640
It will be two years before it's this big
</pre>
<p>
<a href="https://hackerpublicradio.org/eps/hpr4596/hpr4596_image_7.png">
<img src="https://hackerpublicradio.org/eps/hpr4596/hpr4596_image_7_tn.png">
</a>
</p>
<pre data-language="plain">
97
00:15:12,840 --&gt; 00:15:17,840
But don't you bother. By then I'll be long gone
</pre>
<p>
<a href="https://hackerpublicradio.org/eps/hpr4596/hpr4596_image_8.png">
<img src="https://hackerpublicradio.org/eps/hpr4596/hpr4596_image_8_tn.png">
</a>
</p>
<pre data-language="plain">
98
00:15:19,840 --&gt; 00:15:22,400
It was just a question
</pre>
<p>
<a href="https://hackerpublicradio.org/eps/hpr4596/hpr4596_image_9.png">
<img src="https://hackerpublicradio.org/eps/hpr4596/hpr4596_image_9_tn.png">
</a>
</p>
<pre data-language="plain">
99
00:15:22,880 --&gt; 00:15:25,480
Porridge?
</pre>
<p>
</p>
<h3>
Original</h3>
<p>
First the original sound track, then the same clip with the voice over track.</p>
<audio controls="" preload="none">
  <source src="https://hackerpublicradio.org/eps/hpr4596/hpr4596_Nasty_Old_People_Original.mp3" type="audio/mpeg">
</audio>
<h3>
Voice Over</h3>
<audio controls="" preload="none">
  <source src="https://hackerpublicradio.org/eps/hpr4596/hpr4596_Nasty_Old_People_voice_over.mp3" type="audio/mpeg">
</audio>
<h1>
Lessons learned</h1>
<p>
Now that I have done this for a lot of movies, there a few tips for getting the best output.</p>
<p>
The creation of the audio track usually goes well, but you can run into issues with the merging of the new track back into the movie.</p>
<h1>
Preparation</h1>
<p>
The first thing you need is a subtitle file which will be the basis of the voice you will be listening to. It should be good quality so that it matches when the actors speak.</p>
<p>
It’s important to clean up this before you use it, fixing spelling mistakes and removing html that will get rendered. Listening to three hours of “I L Zero ve y Zero u”, or “less than forward slash I, greater than”, or “L am from Lndia” can get a bit tedious.</p>
<p>
You should also try and get versions that translate the songs as well.</p>
<h3>
Getting a SRT file from the media.</h3>
<p>
As many Subtitles are taken from a DVDs they can often be poor <a href="https://en.wikipedia.org/wiki/Optical_character_recognition" rel="noopener noreferrer" target="_blank">
Optical character recognition</a>
versions of the bitmap-based streams. So a picture of string “Hello World” rather than the letters.</p>
<h3>
ffmpeg</h3>
<p>
By far the easiest and best way to get the subtitles is to extract it from the movie itself, provided it’s a separate track.</p>
<blockquote>
ffmpeg is a complete, cross-platform solution to record, convert and stream audio and video. LGPL-2.1-or-later, GPL-2.0-or-later</blockquote>
<ul>
<li>
<a href="https://ffmpeg.org/" rel="noopener noreferrer" target="_blank">
https://ffmpeg.org/</a>
</li>
</ul>
<p>
<code>
ffmpeg -y -hide_banner -loglevel error -txt_format text -i "${this_movie_file}" "${this_srt_file}"</code>
</p>
<h3>
Getting a SRT file from the web.</h3>
<p>
If that fails you can try to get the subtitle files from the Internet.</p>
<ul>
<li>
<a href="https://www.opensubtitles.org/" rel="noopener noreferrer" target="_blank">
https://www.opensubtitles.org</a>
</li>
</ul>
<p>
Select your language with the highest subtitle rating.</p>
<p>
You can check the media using the <em>
mpv</em>
media player.</p>
<blockquote>
mpv is a media player based on MPlayer and mplayer2. It supports a wide variety of video file formats, audio and video codecs, and subtitle types. GPLv2+, parts under LGPLv2.1+, some optional parts under GPLv3</blockquote>
<ul>
<li>
<a href="https://mpv.io/manual/master/" rel="noopener noreferrer" target="_blank">
https://mpv.io/manual/master/</a>
</li>
</ul>
<p>
Name the srt file with the same prefix as the movie and <code>
mpv</code>
will play it. You can also use the <code>
--sub-files=</code>
option as well.</p>
<p>
<code>
mpv "${this_movie_file}" --sub-files="${this_srt_file}"</code>
</p>
<p>
Scrub through the file to see if the timing is correct. The subtitles can be toggled using the <code>
j</code>
key.</p>
<h3>
Fixing Timing issues</h3>
<p>
It’s very important to get the subtitles to align, otherwise the voices will be out of sync.</p>
<p>
When the subtitles don’t match up, it’s usually that they need to have the start offset corrected.</p>
<p>
<em>
ffsubsync</em>
will automatically try and adjust the offset of the first subtitle to the first use of speech in a movie.</p>
<blockquote>
ffsubsync: Language-agnostic automatic synchronization of subtitles with video, so that subtitles are aligned to the correct starting point within the video. MIT license</blockquote>
<ul>
<li>
<a href="https://github.com/smacke/ffsubsync" rel="noopener noreferrer" target="_blank">
https://github.com/smacke/ffsubsync</a>
</li>
</ul>
<p>
<code>
pip install ffsubsync</code>
</p>
<pre data-language="plain">
ffs video.mp4 -i unsynchronized.srt -o synchronized.srt
</pre>
<p>
<em>
LosslessCut</em>
will allow you to quickly remove additional trailers, or ads, at the beginning, so that ffsubsync will have a better chance of working if they are trimmed away.</p>
<blockquote>
LosslessCut: aims to be the ultimate cross platform FFmpeg GUI for extremely fast and lossless operations on video, audio, subtitle and other related media files. GPL-2.0 license</blockquote>
<ul>
<li>
<a href="https://github.com/mifi/lossless-cut" rel="noopener noreferrer" target="_blank">
https://github.com/mifi/lossless-cut</a>
</li>
</ul>
<p>
If that fails to match up the subtitles, you can use <a href="https://gist.github.com/flatlinebb/07caa79fd3b9f3770788df21756a4611" rel="noopener noreferrer" target="_blank">
mpv keyboard shortcuts</a>
, move to the first speech segment an then press the <code>
Ctrl+Shift+Left</code>
and <code>
Ctrl+Shift+Right</code>
to adjust subtitle delay so that the next or previous subtitle is displayed. It will also show a number giving the miliseconds the delay is, eg <code>
-148416</code>
miliseconds or <code>
-148.416</code>
seconds.</p>
<p>
You can use many tools to adjust the subtitles, and I tried out <a href="https://github.com/zambrinf/srt-offset" rel="noopener noreferrer" target="_blank">
SRT Offset</a>
.</p>
<blockquote>
srt-offset: A simple command-line tool to offset SRT subtitle files. This tool allows you to adjust the timing of subtitles in SRT files, which can be useful when subtitles are out of sync with the video. MIT license</blockquote>
<p>
<code>
srt-offset -i input.srt -offset -148.416 -o output.srt</code>
</p>
<h2>
Manually adding the new subtitle to speech audio track</h2>
<p>
If that presents an issue then you can use <a href="https://avidemux.sourceforge.net/" rel="noopener noreferrer" target="_blank">
avidemux</a>
to just add the new audio track.</p>
<blockquote>
Avidemux: is a free video editor designed for simple cutting, filtering and encoding tasks. GPL V2</blockquote>
<p>
Open Avidemux, and select “File &gt; Open”, to select the movie.</p>
<p>
Then go to “Audio &gt; Select Track”</p>
<p>
<a href="https://hackerpublicradio.org/eps/hpr4596/hpr4596_image_10.png">
<img src="https://hackerpublicradio.org/eps/hpr4596/hpr4596_image_10_tn.png">
</a>
</p>
<p>
Select the next unselected track and tick “Enabled”, “Add Audio Track”</p>
<p>
<a href="https://hackerpublicradio.org/eps/hpr4596/hpr4596_image_11.png">
<img src="https://hackerpublicradio.org/eps/hpr4596/hpr4596_image_11_tn.png">
</a>
</p>
<p>
Then pick the new mixed track, in this example <code>
.~NastyOldPeople_mixed.mp3</code>
</p>
<p>
<a href="https://hackerpublicradio.org/eps/hpr4596/hpr4596_image_12.png">
<img src="https://hackerpublicradio.org/eps/hpr4596/hpr4596_image_12_tn.png">
</a>
</p>
<h1>
Conclusion</h1>
<p>
I now find it much easier to watch a movie with the voice over track. It gets to a point where I don’t even notice it is there and just hear the actors speak in their own language, and I just know what they are saying.</p>
<h3>
Links</h3>
<ul>
<li>
<a href="https://en.wikipedia.org/wiki/Nasty_Old_People" rel="noopener noreferrer" target="_blank">
2009 Nasty Old People</a>
</li>
<li>
<a href="https://en.wikipedia.org/wiki/File:Wikimania_2015_-_Jimmy_Wales_-_es.webm" rel="noopener noreferrer" target="_blank">
A Spanish voice-over translation</a>
</li>
<li>
<a href="https://avidemux.sourceforge.net/" rel="noopener noreferrer" target="_blank">
avidemux</a>
</li>
<li>
<a href="https://www.checksub.com/blog/subtitles-in-kdenlive" rel="noopener noreferrer" target="_blank">
by Jean-Marc on How to Add Subtitles Easily in Kdenlive</a>
</li>
<li>
<a href="https://en.wikipedia.org/wiki/Container_format" rel="noopener noreferrer" target="_blank">
container format</a>
</li>
<li>
<a href="https://en.wikipedia.org/wiki/Decimal_separator#History" rel="noopener noreferrer" target="_blank">
Decimal separator</a>
</li>
<li>
<a href="https://en.wikipedia.org/wiki/Filename_extension" rel="noopener noreferrer" target="_blank">
extension</a>
</li>
<li>
<a href="https://ffmpeg.org/" rel="noopener noreferrer" target="_blank">
ffmpeg</a>
</li>
<li>
<a href="https://en.wikipedia.org/wiki/FFmpeg" rel="noopener noreferrer" target="_blank">
ffmpeg on wikipedia</a>
</li>
<li>
<a href="https://github.com/smacke/ffsubsync" rel="noopener noreferrer" target="_blank">
ffsubsync</a>
</li>
<li>
<a href="https://www.gnu.org/licenses/gpl-3.0.en.html" rel="noopener noreferrer" target="_blank">
GPL-3.0 license</a>
</li>
<li>
<a href="https://www.gnu.org/licenses/old-licenses/gpl-2.0.html" rel="noopener noreferrer" target="_blank">
GPL v2 or later</a>
</li>
<li>
<a href="https://kdenlive.org/" rel="noopener noreferrer" target="_blank">
Kdenlive</a>
</li>
<li>
<a href="https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html" rel="noopener noreferrer" target="_blank">
LGPL-2.1</a>
</li>
<li>
<a href="https://github.com/mifi/lossless-cut" rel="noopener noreferrer" target="_blank">
LosslessCut</a>
</li>
<li>
<a href="https://en.wikipedia.org/wiki/Matroska" rel="noopener noreferrer" target="_blank">
Matroska</a>
</li>
<li>
<a href="https://mit-license.org/" rel="noopener noreferrer" target="_blank">
MIT license</a>
</li>
<li>
<a href="https://archive.org/details/night-of-the-living-dead-1968_202312" rel="noopener noreferrer" target="_blank">
Movie on Archive.org</a>
</li>
<li>
<a href="https://mpv.io/manual/master/" rel="noopener noreferrer" target="_blank">
mpv</a>
</li>
<li>
<a href="https://gist.github.com/flatlinebb/07caa79fd3b9f3770788df21756a4611" rel="noopener noreferrer" target="_blank">
mpv keyboard shortcuts</a>
</li>
<li>
<a href="https://en.wikipedia.org/wiki/Mpv_%28media_player%29" rel="noopener noreferrer" target="_blank">
mpv wikipedia</a>
</li>
<li>
<a href="https://archive.org/details/VisionOntv-NastyOldPeopleFeatureFilm625-3" rel="noopener noreferrer" target="_blank">
Nasty Old People from the Internet Archive</a>
</li>
<li>
<a href="https://en.wikipedia.org/wiki/Night_of_the_Living_Dead#Copyright_status_and_home_media" rel="noopener noreferrer" target="_blank">
Night of the Living Dead</a>
</li>
<li>
<a href="https://www.youtube.com/watch?v=zprG3AtrvOk" rel="noopener noreferrer" target="_blank">
Noc żywych trupów | Film grozy | Polski lektor</a>
</li>
<li>
<a href="https://en.wikipedia.org/wiki/OpenSubtitles" rel="noopener noreferrer" target="_blank">
OpenSubtitles</a>
</li>
<li>
<a href="https://www.opensubtitles.org/" rel="noopener noreferrer" target="_blank">
opensubtitles.org</a>
</li>
<li>
<a href="https://en.wikipedia.org/wiki/Optical_character_recognition" rel="noopener noreferrer" target="_blank">
Optical character recognition</a>
</li>
<li>
<a href="https://github.com/OHF-Voice/piper1-gpl" rel="noopener noreferrer" target="_blank">
Piper voice</a>
</li>
<li>
<a href="https://github.com/zambrinf/srt-offset" rel="noopener noreferrer" target="_blank">
SRT Offset</a>
</li>
<li>
<a href="https://en.wikipedia.org/wiki/SubRip" rel="noopener noreferrer" target="_blank">
srt, or SubRip subtitle files</a>
</li>
<li>
<a href="https://en.wikipedia.org/wiki/SubRip" rel="noopener noreferrer" target="_blank">
SubRip</a>
</li>
<li>
<a href="https://en.wikipedia.org/wiki/Timecode" rel="noopener noreferrer" target="_blank">
Timecode</a>
</li>
<li>
<a href="https://en.wikipedia.org/wiki/Voice-over_translation" rel="noopener noreferrer" target="_blank">
Voice-over translation</a>
</li>
<li>
<a href="https://github.com/openai/whisper" rel="noopener noreferrer" target="_blank">
Whisper</a>
</li>
</ul>
<p>
</p><p><a href="https://hackerpublicradio.org/eps/hpr4596/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[AI Under Control: Link11 Launches AI Management Dashboard for Clean Traffic]]></title>
<description><![CDATA[Frankfurt am Main, Germany, 19th February 2026, CyberNewswire
The post AI Under Control: Link11 Launches AI Management Dashboard for Clean Traffic appeared first on The Security Ledger with Paul F. Roberts.]]></description>
<link>https://tsecurity.de/de/3347122/it+sicherheit/it+podcasts/ai+under+control+link11+launches+ai+management+dashboard+for+clean+traffic/</link>
<pubDate>Fri, 13 Mar 2026 13:19:24 +0100</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Frankfurt am Main, Germany, 19th February 2026, CyberNewswire</p>
<p>The post <a href="https://securityledger.com/2026/02/ai-under-control-link11-launches-ai-management-dashboard-for-clean-traffic/">AI Under Control: Link11 Launches AI Management Dashboard for Clean Traffic</a> appeared first on <a href="https://securityledger.com/">The Security Ledger with Paul F. Roberts</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Sendmarc Releases DMARCbis Fireside Chat Featuring Co-Editor Todd Herr]]></title>
<description><![CDATA[Wilmington, North America, 24th February 2026, CyberNewswire
The post Sendmarc Releases DMARCbis Fireside Chat Featuring Co-Editor Todd Herr appeared first on The Security Ledger with Paul F. Roberts.]]></description>
<link>https://tsecurity.de/de/3347121/it+sicherheit/it+podcasts/sendmarc+releases+dmarcbis+fireside+chat+featuring+co-editor+todd+herr/</link>
<pubDate>Fri, 13 Mar 2026 13:19:23 +0100</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Wilmington, North America, 24th February 2026, CyberNewswire</p>
<p>The post <a href="https://securityledger.com/2026/02/sendmarc-releases-dmarcbis-fireside-chat-featuring-co-editor-todd-herr/">Sendmarc Releases DMARCbis Fireside Chat Featuring Co-Editor Todd Herr</a> appeared first on <a href="https://securityledger.com/">The Security Ledger with Paul F. Roberts</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[One Identity Appoints Michael Henricks as Chief Financial and Operating Officer]]></title>
<description><![CDATA[Alisa Viejo, CA, United States, 25th February 2026, CyberNewswire
The post One Identity Appoints Michael Henricks as Chief Financial and Operating Officer appeared first on The Security Ledger with Paul F. Roberts.]]></description>
<link>https://tsecurity.de/de/3347120/it+sicherheit/it+podcasts/one+identity+appoints+michael+henricks+as+chief+financial+and+operating+officer/</link>
<pubDate>Fri, 13 Mar 2026 13:19:21 +0100</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Alisa Viejo, CA, United States, 25th February 2026, CyberNewswire</p>
<p>The post <a href="https://securityledger.com/2026/02/one-identity-appoints-michael-henricks-as-chief-financial-and-operating-officer/">One Identity Appoints Michael Henricks as Chief Financial and Operating Officer</a> appeared first on <a href="https://securityledger.com/">The Security Ledger with Paul F. Roberts</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Link11 Releases European Cyber Report 2026: DDoS Attacks Become a Constant Threat]]></title>
<description><![CDATA[Frankfurt am Main, Germany, 2nd March 2026, CyberNewswire
The post Link11 Releases European Cyber Report 2026: DDoS Attacks Become a Constant Threat appeared first on The Security Ledger with Paul F. Roberts.]]></description>
<link>https://tsecurity.de/de/3347119/it+sicherheit/it+podcasts/link11+releases+european+cyber+report+2026+ddos+attacks+become+a+constant+threat/</link>
<pubDate>Fri, 13 Mar 2026 13:19:19 +0100</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Frankfurt am Main, Germany, 2nd March 2026, CyberNewswire</p>
<p>The post <a href="https://securityledger.com/2026/03/link11-releases-european-cyber-report-2026-ddos-attacks-become-a-constant-threat/">Link11 Releases European Cyber Report 2026: DDoS Attacks Become a Constant Threat</a> appeared first on <a href="https://securityledger.com/">The Security Ledger with Paul F. Roberts</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Criminal IP to Present Decision-Ready Threat Intelligence at RSAC™ 2026]]></title>
<description><![CDATA[Torrance, United States / California, 2nd March 2026, CyberNewswire
The post Criminal IP to Present Decision-Ready Threat Intelligence at RSAC™ 2026 appeared first on The Security Ledger with Paul F. Roberts.]]></description>
<link>https://tsecurity.de/de/3347118/it+sicherheit/it+podcasts/criminal+ip+to+present+decision-ready+threat+intelligence+at+rsac+2026/</link>
<pubDate>Fri, 13 Mar 2026 13:19:17 +0100</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Torrance, United States / California, 2nd March 2026, CyberNewswire</p>
<p>The post <a href="https://securityledger.com/2026/03/criminal-ip-to-present-decision-ready-threat-intelligence-at-rsac-2026/">Criminal IP to Present Decision-Ready Threat Intelligence at RSAC™ 2026</a> appeared first on <a href="https://securityledger.com/">The Security Ledger with Paul F. Roberts</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Archipelo and Checkmarx Announce Partnership Connecting AppSec Detection with DevSPM]]></title>
<description><![CDATA[San Francisco, CA, United States, 3rd March 2026, CyberNewswire
The post Archipelo and Checkmarx Announce Partnership Connecting AppSec Detection with DevSPM appeared first on The Security Ledger with Paul F. Roberts.]]></description>
<link>https://tsecurity.de/de/3347117/it+sicherheit/it+podcasts/archipelo+and+checkmarx+announce+partnership+connecting+appsec+detection+with+devspm/</link>
<pubDate>Fri, 13 Mar 2026 13:19:13 +0100</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>San Francisco, CA, United States, 3rd March 2026, CyberNewswire</p>
<p>The post <a href="https://securityledger.com/2026/03/archipelo-and-checkmarx-announce-partnership-connecting-appsec-detection-with-devspm/">Archipelo and Checkmarx Announce Partnership Connecting AppSec Detection with DevSPM</a> appeared first on <a href="https://securityledger.com/">The Security Ledger with Paul F. Roberts</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Reclaim Security Raises $26M to Eliminate the 27-Day Remediation Gap]]></title>
<description><![CDATA[New York, USA, 4th March 2026, CyberNewswire
The post Reclaim Security Raises $26M to Eliminate the 27-Day Remediation Gap appeared first on The Security Ledger with Paul F. Roberts.]]></description>
<link>https://tsecurity.de/de/3347116/it+sicherheit/it+podcasts/reclaim+security+raises+26m+to+eliminate+the+27-day+remediation+gap/</link>
<pubDate>Fri, 13 Mar 2026 13:19:11 +0100</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>New York, USA, 4th March 2026, CyberNewswire</p>
<p>The post <a href="https://securityledger.com/2026/03/reclaim-security-raises-26m-to-eliminate-the-27-day-remediation-gap/">Reclaim Security Raises $26M to Eliminate the 27-Day Remediation Gap</a> appeared first on <a href="https://securityledger.com/">The Security Ledger with Paul F. Roberts</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Security Risk Advisors Releases “The Purple Perspective 2026” Report]]></title>
<description><![CDATA[Philadelphia, PA, United States, 9th March 2026, CyberNewswire
The post Security Risk Advisors Releases “The Purple Perspective 2026” Report appeared first on The Security Ledger with Paul F. Roberts.]]></description>
<link>https://tsecurity.de/de/3347115/it+sicherheit/it+podcasts/security+risk+advisors+releases+the+purple+perspective+2026+report/</link>
<pubDate>Fri, 13 Mar 2026 13:19:09 +0100</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Philadelphia, PA, United States, 9th March 2026, CyberNewswire</p>
<p>The post <a href="https://securityledger.com/2026/03/security-risk-advisors-releases-the-purple-perspective-2026-report/">Security Risk Advisors Releases “The Purple Perspective 2026” Report</a> appeared first on <a href="https://securityledger.com/">The Security Ledger with Paul F. Roberts</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[Leading Myanmar Fleet Management Company Yoma Fleet Selects AccuKnox SIEM to Replace Legacy Tools]]></title>
<description><![CDATA[Menlo Park, USA, 10th March 2026, CyberNewswire
The post Leading Myanmar Fleet Management Company Yoma Fleet Selects AccuKnox SIEM to Replace Legacy Tools appeared first on The Security Ledger with Paul F. Roberts.]]></description>
<link>https://tsecurity.de/de/3347114/it+sicherheit/it+podcasts/leading+myanmar+fleet+management+company+yoma+fleet+selects+accuknox+siem+to+replace+legacy+tools/</link>
<pubDate>Fri, 13 Mar 2026 13:19:08 +0100</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Menlo Park, USA, 10th March 2026, CyberNewswire</p>
<p>The post <a href="https://securityledger.com/2026/03/leading-myanmar-fleet-management-company-yoma-fleet-selects-accuknox-siem-to-replace-legacy-tools/">Leading Myanmar Fleet Management Company Yoma Fleet Selects AccuKnox SIEM to Replace Legacy Tools</a> appeared first on <a href="https://securityledger.com/">The Security Ledger with Paul F. Roberts</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[AI-HealthTech Innovator Humata Health Partners with AccuKnox for Zero Trust CNAPP]]></title>
<description><![CDATA[Menlo Park, California, USA, 13th March 2026, CyberNewswire
The post AI-HealthTech Innovator Humata Health Partners with AccuKnox for Zero Trust CNAPP appeared first on The Security Ledger with Paul F. Roberts.]]></description>
<link>https://tsecurity.de/de/3347113/it+sicherheit/it+podcasts/ai-healthtech+innovator+humata+health+partners+with+accuknox+for+zero+trust+cnapp/</link>
<pubDate>Fri, 13 Mar 2026 13:19:06 +0100</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Menlo Park, California, USA, 13th March 2026, CyberNewswire</p>
<p>The post <a href="https://securityledger.com/2026/03/ai-healthtech-innovator-humata-health-partners-with-accuknox-for-zero-trust-cnapp/">AI-HealthTech Innovator Humata Health Partners with AccuKnox for Zero Trust CNAPP</a> appeared first on <a href="https://securityledger.com/">The Security Ledger with Paul F. Roberts</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4595: WATER WATER EVERYWHERE!]]></title>
<description><![CDATA[This show has been flagged as Explicit by the host.


I'm talking about water meters 


Provide feedback on this episode.]]></description>
<link>https://tsecurity.de/de/3346173/it+sicherheit/it+podcasts/hpr4595+water+water+everywhere/</link>
<pubDate>Fri, 13 Mar 2026 12:03:45 +0100</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Explicit by the host.</p>

<p>
I'm talking about water meters </p>


<p><a href="https://hackerpublicradio.org/eps/hpr4595/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4594: Hackerpublic Radio New Years Eve Show 2026 Episode 2]]></title>
<description><![CDATA[This show has been flagged as Explicit by the host.



### Eps 02 Start ###








Amazon Alexa





https://en.wikipedia.org/wiki/Amazon_Alexa






https://developer.amazon.com/en-US/alexa









Home Assistant





https://en.wikipedia.org/wiki/Home_Assistant






ht...]]></description>
<link>https://tsecurity.de/de/3342615/it+sicherheit/it+podcasts/hpr4594+hackerpublic+radio+new+years+eve+show+2026+episode+2/</link>
<pubDate>Thu, 12 Mar 2026 01:02:20 +0100</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Explicit by the host.</p>

<p>

### Eps 02 Start ###
</p>

<p>

</p>

<p>

Amazon Alexa
</p>

<p>

<a href="https://en.wikipedia.org/wiki/Amazon_Alexa" rel="noopener noreferrer" target="_blank">
https://en.wikipedia.org/wiki/Amazon_Alexa</a>

</p>

<p>

<a href="https://developer.amazon.com/en-US/alexa" rel="noopener noreferrer" target="_blank">
https://developer.amazon.com/en-US/alexa</a>

</p>

<p>

</p>

<p>

Home Assistant
</p>

<p>

<a href="https://en.wikipedia.org/wiki/Home_Assistant" rel="noopener noreferrer" target="_blank">
https://en.wikipedia.org/wiki/Home_Assistant</a>

</p>

<p>

<a href="https://www.home-assistant.io/" rel="noopener noreferrer" target="_blank">
https://www.home-assistant.io/</a>

</p>

<p>

</p>

<p>

Steelseries: Arctis 9X
</p>

<p>

<a href="https://steelseries.com/gaming-headsets/arctis-9x" rel="noopener noreferrer" target="_blank">
https://steelseries.com/gaming-headsets/arctis-9x</a>

</p>

<p>

<a href="https://headphonereview.com/over-ear/steelseries-arctis-9x-gaming-headset-review/" rel="noopener noreferrer" target="_blank">
https://headphonereview.com/over-ear/steelseries-arctis-9x-gaming-headset-review/</a>

</p>

<p>

</p>

<p>

Razer: Nari series
</p>

<p>

<a href="https://www.razer.com/pc/gaming-headsets-and-audio/nari-family" rel="noopener noreferrer" target="_blank">
https://www.razer.com/pc/gaming-headsets-and-audio/nari-family</a>

</p>

<p>

<a href="https://mysupport.razer.com/app/answers/detail/a_id/3636/~/razer-nari-ultimate-%7C-rz04-02670-support-%26-faqs" rel="noopener noreferrer" target="_blank">
https://mysupport.razer.com/app/answers/detail/a_id/3636/~/razer-nari-ultimate-%7C-rz04-02670-support-%26-faqs</a>

</p>

<p>

</p>

<p>

Skullcandy: crusher
</p>

<p>

<a href="https://www.skullcandy.com/collections/skullcandy-crusher-bass" rel="noopener noreferrer" target="_blank">
https://www.skullcandy.com/collections/skullcandy-crusher-bass</a>

</p>

<p>

</p>

<p>

Audio-Technica ATH-M50x
</p>

<p>

<a href="https://www.audio-technica.com/en-us/ath-m50x" rel="noopener noreferrer" target="_blank">
https://www.audio-technica.com/en-us/ath-m50x</a>

</p>

<p>

</p>

<p>

HyperX: cloud
</p>

<p>

<a href="https://hyperx.com/collections/gaming-headsets" rel="noopener noreferrer" target="_blank">
https://hyperx.com/collections/gaming-headsets</a>

</p>

<p>

</p>

<p>

Plantronics Headset
</p>

<p>

<a href="https://plantronicsstore.com/" rel="noopener noreferrer" target="_blank">
https://plantronicsstore.com/</a>

</p>

<p>

</p>

<p>

Skullcandy: Hesh 3® Wireless
</p>

<p>

<a href="https://support.skullcandy.com/hc/en-us/articles/360008277374-Hesh-3-Wireless" rel="noopener noreferrer" target="_blank">
https://support.skullcandy.com/hc/en-us/articles/360008277374-Hesh-3-Wireless</a>

</p>

<p>

</p>

<p>

Centauri Carbon
</p>

<p>

<a href="https://www.elegoo.com/pages/elegoo-centauri-carbon" rel="noopener noreferrer" target="_blank">
https://www.elegoo.com/pages/elegoo-centauri-carbon</a>

</p>

<p>

<a href="https://us.elegoo.com/products/centauri-carbon?srsltid=AfmBOooFOZ2ms1EDtl2TiIAajyqMjkLFTkPb0hMFzis2PZs8sbdgpfRn" rel="noopener noreferrer" target="_blank">
https://us.elegoo.com/products/centauri-carbon?srsltid=AfmBOooFOZ2ms1EDtl2TiIAajyqMjkLFTkPb0hMFzis2PZs8sbdgpfRn</a>

</p>

<p>

</p>

<p>

Ender-3
</p>

<p>

<a href="https://www.creality.com/products/ender-3-3d-printer" rel="noopener noreferrer" target="_blank">
https://www.creality.com/products/ender-3-3d-printer</a>

</p>

<p>

<a href="https://www.creality3dofficial.com/products/official-creality-ender-3-3d-printer" rel="noopener noreferrer" target="_blank">
https://www.creality3dofficial.com/products/official-creality-ender-3-3d-printer</a>

</p>

<p>

</p>

<p>

Monoprice Maker Select V2
</p>

<p>

<a href="https://monopricesupport.kayako.com/article/278-maker-select-v2-manual-quick-start-guide-part-13860" rel="noopener noreferrer" target="_blank">
https://monopricesupport.kayako.com/article/278-maker-select-v2-manual-quick-start-guide-part-13860</a>

</p>

<p>

<a href="https://www.treatstock.com/machines/item/237-maker-select" rel="noopener noreferrer" target="_blank">
https://www.treatstock.com/machines/item/237-maker-select</a>

</p>

<p>

</p>

<p>

baha GmbH
</p>

<p>

<a href="https://www.baha.com/?culture=en-US&amp;ts=1768855891246" rel="noopener noreferrer" target="_blank">
https://www.baha.com/?culture=en-US&amp;ts=1768855891246</a>

</p>

<p>

</p>

<p>

HP Elite Mini 600
</p>

<p>

<a href="https://www.hp.com/us-en/shop/mdp/desktops-and-workstations/hp-elite-mini-600-3074457345617692179--1" rel="noopener noreferrer" target="_blank">
https://www.hp.com/us-en/shop/mdp/desktops-and-workstations/hp-elite-mini-600-3074457345617692179--1</a>

</p>

<p>

</p>

<p>

HP 9000
</p>

<p>

<a href="https://en.wikipedia.org/wiki/HP_9000" rel="noopener noreferrer" target="_blank">
https://en.wikipedia.org/wiki/HP_9000</a>

</p>

<p>

</p>

<p>

Full Circle Magazine
</p>

<p>

<a href="https://fullcirclemagazine.org/" rel="noopener noreferrer" target="_blank">
https://fullcirclemagazine.org/</a>

</p>

<p>

</p>

<p>

Mintcast
</p>

<p>

<a href="https://mintcast.org/" rel="noopener noreferrer" target="_blank">
https://mintcast.org/</a>

</p>

<p>

</p>

<p>

Podcatcher
</p>

<p>

<a href="https://en.wikipedia.org/wiki/List_of_podcast_clients" rel="noopener noreferrer" target="_blank">
https://en.wikipedia.org/wiki/List_of_podcast_clients</a>

</p>

<p>

</p>

<p>

Podcast addict
</p>

<p>

<a href="https://podcastaddict.com/" rel="noopener noreferrer" target="_blank">
https://podcastaddict.com/</a>

</p>

<p>

</p>

<p>

Antenna pod
</p>

<p>

<a href="https://antennapod.org/" rel="noopener noreferrer" target="_blank">
https://antennapod.org/</a>

</p>

<p>

</p>

<p>

Robinhood: Trading &amp; Investing
</p>

<p>

<a href="https://robinhood.com/us/en/" rel="noopener noreferrer" target="_blank">
https://robinhood.com/us/en/</a>

</p>

<p>

</p>

<p>

E-Trade is an investment brokerage and electronic trading platform
</p>

<p>

<a href="https://us.etrade.com/home" rel="noopener noreferrer" target="_blank">
https://us.etrade.com/home</a>

</p>

<p>

</p>

<p>

Distrohoppers' Digest Podcast
</p>

<p>

<a href="https://distrohoppersdigest.org/" rel="noopener noreferrer" target="_blank">
https://distrohoppersdigest.org/</a>

</p>

<p>

</p>

<p>

Spotify
</p>

<p>

<a href="https://open.spotify.com/" rel="noopener noreferrer" target="_blank">
https://open.spotify.com/</a>

</p>

<p>

</p>

<p>

Software-defined radio
</p>

<p>

<a href="https://en.wikipedia.org/wiki/Software-defined_radio" rel="noopener noreferrer" target="_blank">
https://en.wikipedia.org/wiki/Software-defined_radio</a>

</p>

<p>

</p>

<p>

Filk music
</p>

<p>

<a href="https://en.wikipedia.org/wiki/Filk_music" rel="noopener noreferrer" target="_blank">
https://en.wikipedia.org/wiki/Filk_music</a>

</p>

<p>

</p>

<p>

OggCamp 2026
</p>

<p>

<a href="https://www.oggcamp.org/" rel="noopener noreferrer" target="_blank">
https://www.oggcamp.org/</a>

</p>

<p>

</p>

<p>

Moss music
</p>

<p>

<a href="https://mordewis.bandcamp.com/" rel="noopener noreferrer" target="_blank">
https://mordewis.bandcamp.com/</a>

</p>

<p>

</p>

<p>

Discord
</p>

<p>

<a href="https://discord.com/" rel="noopener noreferrer" target="_blank">
https://discord.com/</a>

</p>

<p>

<a href="https://support.discord.com/hc/en-us/articles/360030853132-Server-Folders-101" rel="noopener noreferrer" target="_blank">
https://support.discord.com/hc/en-us/articles/360030853132-Server-Folders-101</a>

</p>

<p>

</p>

<p>

The Hitchhiker's Guide to the Galaxy
</p>

<p>

<a href="https://en.wikipedia.org/wiki/The_Hitchhiker%27s_Guide_to_the_Galaxy" rel="noopener noreferrer" target="_blank">
https://en.wikipedia.org/wiki/The_Hitchhiker%27s_Guide_to_the_Galaxy</a>

</p>

<p>

<a href="https://hitchhikers.fandom.com/wiki/The_Hitchhiker%27s_Guide_to_the_Galaxy" rel="noopener noreferrer" target="_blank">
https://hitchhikers.fandom.com/wiki/The_Hitchhiker%27s_Guide_to_the_Galaxy</a>

</p>

<p>

</p>

<p>

Baofeng BF-50
</p>

<p>

<a href="https://www.baofengradio.com/products/5r-mini" rel="noopener noreferrer" target="_blank">
https://www.baofengradio.com/products/5r-mini</a>

</p>

<p>

<a href="https://www.youtube.com/watch?v=DWtbDtMyqMA" rel="noopener noreferrer" target="_blank">
https://www.youtube.com/watch?v=DWtbDtMyqMA</a>

</p>

<p>

</p>

<p>

Baofeng UV-5R Mini Dual-band Radio
</p>

<p>

<a href="https://www.radioddity.com/products/baofeng-uv-5r-mini" rel="noopener noreferrer" target="_blank">
https://www.radioddity.com/products/baofeng-uv-5r-mini</a>

</p>

<p>

</p>

<p>

Pi Day
</p>

<p>

<a href="https://en.wikipedia.org/wiki/Pi_Day" rel="noopener noreferrer" target="_blank">
https://en.wikipedia.org/wiki/Pi_Day</a>

</p>

<p>

</p>

<p>

GNU World Order
</p>

<p>

<a href="https://gnuworldorder.info/" rel="noopener noreferrer" target="_blank">
https://gnuworldorder.info/</a>

</p>

<p>

</p>

<p>

SDF Public Access UNIX System
</p>

<p>

<a href="https://sdf.org/" rel="noopener noreferrer" target="_blank">
https://sdf.org/</a>

</p>

<p>

</p>

<p>

NetBSD
</p>

<p>

<a href="https://www.netbsd.org/" rel="noopener noreferrer" target="_blank">
https://www.netbsd.org/</a>

</p>

<p>

<a href="https://en.wikipedia.org/wiki/NetBSD" rel="noopener noreferrer" target="_blank">
https://en.wikipedia.org/wiki/NetBSD</a>

</p>

<p>

</p>

<p>

Raspberry Pi 1 Model B+
</p>

<p>

<a href="https://www.raspberrypi.com/products/raspberry-pi-1-model-b-plus/" rel="noopener noreferrer" target="_blank">
https://www.raspberrypi.com/products/raspberry-pi-1-model-b-plus/</a>

</p>

<p>

</p>

<p>

OpenBSD
</p>

<p>

<a href="https://www.openbsd.org/" rel="noopener noreferrer" target="_blank">
https://www.openbsd.org/</a>

</p>

<p>

<a href="https://en.wikipedia.org/wiki/OpenBSD" rel="noopener noreferrer" target="_blank">
https://en.wikipedia.org/wiki/OpenBSD</a>

</p>

<p>

</p>

<p>

FreeBSD
</p>

<p>

<a href="https://www.freebsd.org/" rel="noopener noreferrer" target="_blank">
https://www.freebsd.org/</a>

</p>

<p>

<a href="https://en.wikipedia.org/wiki/FreeBSD" rel="noopener noreferrer" target="_blank">
https://en.wikipedia.org/wiki/FreeBSD</a>

</p>

<p>

</p>

<p>

Something about "ports"?
</p>

<p>

<a href="https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml" rel="noopener noreferrer" target="_blank">
https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml</a>

</p>

<p>

<a href="https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/4/html/security_guide/ch-ports" rel="noopener noreferrer" target="_blank">
https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/4/html/security_guide/ch-ports</a>

</p>

<p>

</p>

<p>

Chapter 4. Installing Applications: Packages and Ports
</p>

<p>

<a href="https://docs.freebsd.org/en/books/handbook/ports/" rel="noopener noreferrer" target="_blank">
https://docs.freebsd.org/en/books/handbook/ports/</a>

</p>

<p>

<a href="https://freebsdfoundation.org/resource/installing-a-port-on-freebsd/" rel="noopener noreferrer" target="_blank">
https://freebsdfoundation.org/resource/installing-a-port-on-freebsd/</a>

</p>

<p>

</p>

<p>

OpenBSD Ports - Working with Ports [Handbook Index]
</p>

<p>

<a href="https://www.openbsd.org/faq/ports/ports.html" rel="noopener noreferrer" target="_blank">
https://www.openbsd.org/faq/ports/ports.html</a>

</p>

<p>

</p>

<p>

SerenityOS
</p>

<p>

<a href="https://serenityos.org/" rel="noopener noreferrer" target="_blank">
https://serenityos.org/</a>

</p>

<p>

<a href="https://en.wikipedia.org/wiki/SerenityOS" rel="noopener noreferrer" target="_blank">
https://en.wikipedia.org/wiki/SerenityOS</a>

</p>

<p>

</p>

<p>

Ladybird is a brand-new browser &amp; web engine.
</p>

<p>

<a href="https://ladybird.org/" rel="noopener noreferrer" target="_blank">
https://ladybird.org/</a>

</p>

<p>

</p>

<p>

Unix
</p>

<p>

<a href="https://en.wikipedia.org/wiki/Unix" rel="noopener noreferrer" target="_blank">
https://en.wikipedia.org/wiki/Unix</a>

</p>

<p>

<a href="https://en.wikipedia.org/wiki/List_of_Unix_systems" rel="noopener noreferrer" target="_blank">
https://en.wikipedia.org/wiki/List_of_Unix_systems</a>

</p>

<p>

</p>

<p>

UNIX System V
</p>

<p>

<a href="https://en.wikipedia.org/wiki/UNIX_System_V" rel="noopener noreferrer" target="_blank">
https://en.wikipedia.org/wiki/UNIX_System_V</a>

</p>

<p>

</p>

<p>

UNIX V4 tape successfully recovered.
</p>

<p>

<a href="https://www.tomshardware.com/software/linux/recovered-unix-v4-tape-quickly-yields-a-usable-operating-system-nostalgia-addicts-can-now-boot-up-unix-v4-in-a-browser-window" rel="noopener noreferrer" target="_blank">
https://www.tomshardware.com/software/linux/recovered-unix-v4-tape-quickly-yields-a-usable-operating-system-nostalgia-addicts-can-now-boot-up-unix-v4-in-a-browser-window</a>

</p>

<p>

<a href="https://www.theregister.com/2025/12/23/unix_v4_tape_successfully_recovered/" rel="noopener noreferrer" target="_blank">
https://www.theregister.com/2025/12/23/unix_v4_tape_successfully_recovered/</a>

</p>

<p>

</p>

<p>

Newsboat is an RSS/Atom feed reader for the text console.
</p>

<p>

<a href="https://newsboat.org/index.html" rel="noopener noreferrer" target="_blank">
https://newsboat.org/index.html</a>

</p>

<p>

</p>

<p>

Podboat
</p>

<p>

<a href="https://man.archlinux.org/man/extra/newsboat/podboat.1.en" rel="noopener noreferrer" target="_blank">
https://man.archlinux.org/man/extra/newsboat/podboat.1.en</a>

</p>

<p>

</p>

<p>

EPR: Terminal/CLI Epub reader written in Python 3.6.
</p>

<p>

<a href="https://github.com/wustho/epr" rel="noopener noreferrer" target="_blank">
https://github.com/wustho/epr</a>

</p>

<p>

</p>

<p>

Ruby Programming Language
</p>

<p>

<a href="https://www.ruby-lang.org/en/" rel="noopener noreferrer" target="_blank">
https://www.ruby-lang.org/en/</a>

</p>

<p>

<a href="https://en.wikipedia.org/wiki/Ruby_(programming_language)" rel="noopener noreferrer" target="_blank">
https://en.wikipedia.org/wiki/Ruby_(programming_language)</a>

</p>

<p>

<a href="https://rubyonrails.org/" rel="noopener noreferrer" target="_blank">
https://rubyonrails.org/</a>

</p>

<p>

</p>

<p>

Crystal is a general-purpose, object-oriented programming language.
</p>

<p>

<a href="https://crystal-lang.org/" rel="noopener noreferrer" target="_blank">
https://crystal-lang.org/</a>

</p>

<p>

<a href="https://en.wikipedia.org/wiki/Crystal_(programming_language)" rel="noopener noreferrer" target="_blank">
https://en.wikipedia.org/wiki/Crystal_(programming_language)</a>

</p>

<p>

</p>

<p>

Plasma is a Desktop
</p>

<p>

<a href="https://kde.org/plasma-desktop/" rel="noopener noreferrer" target="_blank">
https://kde.org/plasma-desktop/</a>

</p>

<p>

</p>

<p>

Vim is a highly configurable text editor
</p>

<p>

<a href="https://www.vim.org/" rel="noopener noreferrer" target="_blank">
https://www.vim.org/</a>

</p>

<p>

<a href="https://en.wikipedia.org/wiki/Vim_(text_editor)" rel="noopener noreferrer" target="_blank">
https://en.wikipedia.org/wiki/Vim_(text_editor)</a>

</p>

<p>

</p>

<p>

Sublime Text
</p>

<p>

<a href="https://www.sublimetext.com/" rel="noopener noreferrer" target="_blank">
https://www.sublimetext.com/</a>

</p>

<p>

</p>

<p>

sed, a stream editor
</p>

<p>

<a href="https://www.gnu.org/software/sed/manual/sed.html" rel="noopener noreferrer" target="_blank">
https://www.gnu.org/software/sed/manual/sed.html</a>

</p>

<p>

<a href="https://en.wikipedia.org/wiki/Sed" rel="noopener noreferrer" target="_blank">
https://en.wikipedia.org/wiki/Sed</a>

</p>

<p>

</p>

<p>

English punctuation
</p>

<p>

<a href="https://en.wikipedia.org/wiki/English_punctuation" rel="noopener noreferrer" target="_blank">
https://en.wikipedia.org/wiki/English_punctuation</a>

</p>

<p>

<a href="https://en.wikipedia.org/wiki/Punctuation" rel="noopener noreferrer" target="_blank">
https://en.wikipedia.org/wiki/Punctuation</a>

</p>

<p>

</p>

<p>

List of typographical symbols and punctuation marks
</p>

<p>

<a href="https://en.wikipedia.org/wiki/List_of_typographical_symbols_and_punctuation_marks" rel="noopener noreferrer" target="_blank">
https://en.wikipedia.org/wiki/List_of_typographical_symbols_and_punctuation_marks</a>

</p>

<p>

</p>

<p>

Pluma (text editor)
</p>

<p>

<a href="https://en.wikipedia.org/wiki/Pluma_(text_editor)" rel="noopener noreferrer" target="_blank">
https://en.wikipedia.org/wiki/Pluma_(text_editor)</a>

</p>

<p>

<a href="https://github.com/mate-desktop/pluma" rel="noopener noreferrer" target="_blank">
https://github.com/mate-desktop/pluma</a>

</p>

<p>

</p>

<p>

Kate (text editor)
</p>

<p>

<a href="https://kate-editor.org/" rel="noopener noreferrer" target="_blank">
https://kate-editor.org/</a>

</p>

<p>

<a href="https://en.wikipedia.org/wiki/Kate_(text_editor)" rel="noopener noreferrer" target="_blank">
https://en.wikipedia.org/wiki/Kate_(text_editor)</a>

</p>

<p>

</p>

<p>

Vimium
</p>

<p>

<a href="https://addons.mozilla.org/en-US/firefox/addon/vimium-ff/" rel="noopener noreferrer" target="_blank">
https://addons.mozilla.org/en-US/firefox/addon/vimium-ff/</a>

</p>

<p>

<a href="https://vimium.github.io/" rel="noopener noreferrer" target="_blank">
https://vimium.github.io/</a>

</p>

<p>

<a href="https://github.com/philc/vimium" rel="noopener noreferrer" target="_blank">
https://github.com/philc/vimium</a>

</p>

<p>

</p>

<p>

Zen Browser
</p>

<p>

<a href="https://zen-browser.app/" rel="noopener noreferrer" target="_blank">
https://zen-browser.app/</a>

</p>

<p>

<a href="https://en.wikipedia.org/wiki/Zen_Browser" rel="noopener noreferrer" target="_blank">
https://en.wikipedia.org/wiki/Zen_Browser</a>

</p>

<p>

</p>

<p>

Vivaldi
</p>

<p>

<a href="https://vivaldi.com/download/" rel="noopener noreferrer" target="_blank">
https://vivaldi.com/download/</a>

</p>

<p>

</p>

<p>

Thunderbird
</p>

<p>

<a href="https://www.thunderbird.net/en-US/" rel="noopener noreferrer" target="_blank">
https://www.thunderbird.net/en-US/</a>

</p>

<p>

<a href="https://en.wikipedia.org/wiki/Thunderbird" rel="noopener noreferrer" target="_blank">
https://en.wikipedia.org/wiki/Thunderbird</a>

</p>

<p>

</p>

<p>

Uniden
</p>

<p>

<a href="https://uniden.com/" rel="noopener noreferrer" target="_blank">
https://uniden.com/</a>

</p>

<p>

</p>

<p>

Arduino
</p>

<p>

<a href="https://www.arduino.cc/" rel="noopener noreferrer" target="_blank">
https://www.arduino.cc/</a>

</p>

<p>

</p>

<p>

Raspberry Pi
</p>

<p>

<a href="https://www.raspberrypi.com/" rel="noopener noreferrer" target="_blank">
https://www.raspberrypi.com/</a>

</p>

<p>

</p>

<p>

Plex
</p>

<p>

<a href="https://www.plex.tv/" rel="noopener noreferrer" target="_blank">
https://www.plex.tv/</a>

</p>

<p>

</p>

<p>

Qualcomm to Acquire Arduino
</p>

<p>

<a href="https://www.qualcomm.com/news/releases/2025/10/qualcomm-to-acquire-arduino-accelerating-developers--access-to-i" rel="noopener noreferrer" target="_blank">
https://www.qualcomm.com/news/releases/2025/10/qualcomm-to-acquire-arduino-accelerating-developers--access-to-i</a>

</p>

<p>

<a href="https://www.arduino.cc/qualcomm" rel="noopener noreferrer" target="_blank">
https://www.arduino.cc/qualcomm</a>

</p>

<p>

<a href="https://www.jeffgeerling.com/blog/2025/qualcomms-buying-arduino--what-it-means-makers/" rel="noopener noreferrer" target="_blank">
https://www.jeffgeerling.com/blog/2025/qualcomms-buying-arduino--what-it-means-makers/</a>

</p>

<p>

</p>

<p>

Perfboard Hackduino
</p>

<p>

<a href="https://www.instructables.com/Perfboard-Hackduino-Arduino-compatible-circuit/" rel="noopener noreferrer" target="_blank">
https://www.instructables.com/Perfboard-Hackduino-Arduino-compatible-circuit/</a>

</p>

<p>

</p>

<p>

DIY Arduino
</p>

<p>

<a href="https://www.instructables.com/DIY-Arduino-UNO-How-to-Make-Your-Own-Arduino-Uno-B/" rel="noopener noreferrer" target="_blank">
https://www.instructables.com/DIY-Arduino-UNO-How-to-Make-Your-Own-Arduino-Uno-B/</a>

</p>

<p>

<a href="https://docs.arduino.cc/hardware/make-your-uno-kit/" rel="noopener noreferrer" target="_blank">
https://docs.arduino.cc/hardware/make-your-uno-kit/</a>

</p>

<p>

<a href="https://www.electronicshub.org/make-your-own-arduino-board/" rel="noopener noreferrer" target="_blank">
https://www.electronicshub.org/make-your-own-arduino-board/</a>

</p>

<p>

</p>

<p>

Notacon
</p>

<p>

<a href="https://en.wikipedia.org/wiki/Notacon" rel="noopener noreferrer" target="_blank">
https://en.wikipedia.org/wiki/Notacon</a>

</p>

<p>

</p>

<p>

hak5 / bashbunny-payloads
</p>

<p>

<a href="https://github.com/hak5/bashbunny-payloads" rel="noopener noreferrer" target="_blank">
https://github.com/hak5/bashbunny-payloads</a>

</p>

<p>

</p>


<p><a href="https://hackerpublicradio.org/eps/hpr4594/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4593: Nuclear Reactor Technology - Ep 8 Generation Four Reactors]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.


01 Introduction

This episode is the eighth and final one in an 8 part series on nuclear reactor technology. 




In this episode I will talk about future reactor technologies, particularly what are referred to as "Generation IV" reactors.

Some ...]]></description>
<link>https://tsecurity.de/de/3339862/it+sicherheit/it+podcasts/hpr4593+nuclear+reactor+technology+-+ep+8+generation+four+reactors/</link>
<pubDate>Wed, 11 Mar 2026 01:01:32 +0100</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>

<p>
01 Introduction</p>
<p>
This episode is the eighth and final one in an 8 part series on nuclear reactor technology. </p>
<p>
<br>
</p>
<p>
In this episode I will talk about future reactor technologies, particularly what are referred to as "Generation IV" reactors.</p>
<p>
Some of these will be simply additional developments of reactors that have already been discussed in this series, but this will show what technologies are seen as most promising today.</p>
<p>
<br>
</p>
<p>
03 What is Generation IV</p>
<p>
Generation IV International Forum is an international organization whose membership is composed of many of the countries that are researching advanced fission reactors.</p>
<p>
Their goal is to conduct a number of joint research projects to advance the state of the art.</p>
<p>
The members agree to participate in and share research on advanced technologies.</p>
<p>
<br>
</p>
<p>
04 Research Subjects</p>
<p>
05 Lead Fast Reactors (LFR)</p>
<p>
08 Sodium Fast Reactor (SFR)</p>
<p>
10 Gas-Cooled Fast Reactor (GFR)</p>
<p>
13 Very High Temperature Reactor (VHTR)</p>
<p>
16 Molten Salt Reactors (MSR)</p>
<p>
19 Super Critical Water Reactors (SCWR)</p>
<p>
<br>
</p>
<p>
27 Episode Conclusion</p>
<p>
In this episode we looked at the reactor types being studied under an international organization called the "Generation IV International Forum".</p>
<p>
All of these reactor types except for supercritical water reactors are not new and we have looked at them previously.</p>
<p>
<br>
</p>
<p>
Supercritical water reactors themselves represent the natural evolution of water cooled reactors.</p>
<p>
I expect that many of these research projects will not result in commercially successful results. Such is the nature of R&amp;D.</p>
<p>
<br>
</p>
<p>
The supercritical water reactors would on the surface seem to have the most promise in terms of commercial use, as they focus on bringing two very well established technologies together, water cooled reactors and supercritical water.</p>
<p>
However, I'm not an expert in this field, so I'm just making an educated guess on that.</p>
<p>
<br>
</p>
<p>
30 Series Conclusion</p>
<p>
This is the end of the series on nuclear reactor technology.</p>
<p>
<br>
</p>
<p>
Episode 1 covered nuclear basics, including basic terminology and civil versus military nuclear material.</p>
<p>
Episode 2 covered nuclear fuel, including the different types, recycling of spent fuel, uranium and thorium resources, and medical isotopes. </p>
<p>
<br>
</p>
<p>
Episode 3 covered reactor basics, including slow versus fast reactors, moderators, coolants, steam generation, refuelling methods, and the three main commercial reactor types.</p>
<p>
Episode 4 covered the less common reactor types, including types which are no longer used, some historical developmental dead ends, and some types which may possibly be making a come back.</p>
<p>
<br>
</p>
<p>
Episode 5 covered fast reactors, including the different types, some of their history, why they were developed, and why they have so far only seen limited use.</p>
<p>
Episode 6 covered thorium reactors, including what is thorium and how it differs from uranium, why there is interest in thorium, what sorts of reactors can use thorium, and why thorium has not yet seen widespread use.</p>
<p>
<br>
</p>
<p>
Episode 7 covered small modular reactors or SMRs, what the reason is for developing them, what are the different ways they may be used, and where they are currently being built.</p>
<p>
Episode 8 covered "Generator IV" reactors which is a collection of future technologies.  </p>
<p>
<br>
</p>
<p>
I hope that this series has been useful and informative on how nuclear reactors work and what the different types of reactors and different types of fuel are. </p>
<p>
I have focused on the past and present without looking very much beyond what is already developed except in this final episode.</p>
<p>
<br>
</p>
<p>
I have focused on the reactors, fuel, and medical isotopes, without much discussion of mining, refining, converting, enrichment, fuel fabrication, or disposal. </p>
<p>
I also haven't talked much about the rest of a functioning power plant, which includes cooling, steam turbines, generators, transformers, control systems, refuelling systems, switch gear, transmission grid connections, grid coordination, and many, many other things.</p>
<p>
<br>
</p>
<p>
And of course there's the entire grid itself, a very complex thing when operated at scale. </p>
<p>
<br>
</p>
<p>
None the less we count on the lights going on when we turn on the light switch while seldom thinking about all the things that go on behind the scenes to make that happen. </p>
<p>
As the recent blackout in Spain shows, that is something that we can't take for granted. </p>
<p>
<br>
</p>
<p>
With plans for "Net Zero" amounting essentially to the further electrification of everything, we need reliable sources of electrical energy to make that happen. Without reliable energy available at the touch of a switch, we don't even have a stone age civilization, let alone a modern one. </p>
<p>
<br>
</p>
<p>
So think about that the next time you turn on the lights or listen to a podcast or do nearly anything else in your daily life. </p>
<p>
<br>
</p>
<p>
This concludes the eighth and final episode of an 8 part series on nuclear reactor technology. </p>
<p>
<br>
</p>


<p><a href="https://hackerpublicradio.org/eps/hpr4593/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4592: Happy by shower # 2]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.





I also happen to be happy when I see my dogs well. They’re both a little old and have had grave sicknesses. One, the girl, is taking medication because of a problem, maybe on the spine, that interferes with walking, but in general both her and...]]></description>
<link>https://tsecurity.de/de/3337065/it+sicherheit/it+podcasts/hpr4592+happy+by+shower+2/</link>
<pubDate>Tue, 10 Mar 2026 01:02:15 +0100</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>

<p>
<br>
</p>
<p>
I also happen to be happy when I see my dogs well. They’re both a little old and have had grave sicknesses. One, the girl, is taking medication because of a problem, maybe on the spine, that interferes with walking, but in general both her and the little white male (who almost died because of stone in the ureter at around the pandemic) are today good, and I’m grateful seeing them in this state. And I suffer when they suffer.</p>
<p>
The hot weather is also more comfortable for them, so, even though we are having <em>
too much hot</em>
 weeks here in Curitiba [Brazil], it’s a soft, nice, weather.</p>
<p>
Generally I take a cup of coffee on the early morning. Sometimes I give a little run, or go cycling to my duties, without coffee and even without bread. Only then, hours later, I take the coffee and maybe eat something, hours after awake. The exercise, the bath with nothing on the stomach, and, oh, the coffee after (specially the espresso, or american, my current favourite, espresso with hot water), does good, it’s a good feeling outside of the routine.</p>
<p>
I learned to like to share things. I like to share what I judge important. As much as I appreciate doing that, they feel as a burden; an account, or a published content, are like something I’m constantly carrying, that may condemn what I come to be, or may create expectations on others that I can’t fulfil, or are “me in the world”, in a manner that I feel so unsecure. So I feel good, and safe, in erasing everything under my control some time after having created an account or published something.</p>
<p>
I feel well, and it makes me happy, to have a night of sleep in which I don’t wake up more than once. If I wake up early spontaneously, and rested, better yet, good sensation, makes me happy.</p>
<p>
To be true, when I spend the first time on the morning reading the Bible, with prayer, even when I’m not keen on doing that, man, my head and my body end up being marvellous. Martin Luther, the one of the reform, is said to having said: “I have so much to do that I will spend the first three hours praying”.</p>
<p>
A piece of opinion, unasked, if you’re constantly doing something you think it’s too easy, you may not be doing it right, or you’re not doing the right thing. Let’s see what’s wrong and do the right thing.</p>
<p>
One last thing that makes me happy is when my swimming pool is clean. It’s been for years now. As with the other facts, it’s good by itself, yeah, but has more meaning as I had many dirty problems with its water, to the point that the neighbours called sanitary authorities. I don’t want to have any more problems in this area, or in any other area of living, but I know now, and have to guide my heart to feel accordingly to what I know, that any problems that arise are to result in my good and good to other people and other living creatures too. So the difficulties, even the hardest ones, can be faced with peace, because I know the future, and being in a bad state will not help in hiking up and overcoming whatever there is here now or right ahead.</p>
<p>
Our posture, our internal condition in doing something, <em>
counts much</em>
 together with the external things, visible or invisible, that we do.</p>
<p>
I thank you for listening [reading]. Bye.</p>


<p><a href="https://hackerpublicradio.org/eps/hpr4592/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4591: A Bit of Git]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.

When attempting to push commits to a remote repository, git rejected
the push with an error. The branches had diverged! git status
Result:
On branch main
Your branch and 'origin/main' have diverged,
and have 7 and 1 different commits each, respect...]]></description>
<link>https://tsecurity.de/de/3334539/it+sicherheit/it+podcasts/hpr4591+a+bit+of+git/</link>
<pubDate>Mon, 09 Mar 2026 01:02:18 +0100</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>

<p>When attempting to push commits to a remote repository, git rejected
the push with an error. The branches had diverged! git status</p>
<p>Result:</p>
<pre><code>On branch main
Your branch and 'origin/main' have diverged,
and have 7 and 1 different commits each, respectively.

The problem:
* 79085bb (HEAD -&gt; main) Improve mobile responsiveness for very narrow viewports
* eec46f5 Improve responsive layout for narrow viewports
* 79c71eb Fix sync dialog modal instantiation
* 33fd501 Add markdown rendering to session notes in desktop app
* 1a119f7 Increase hierarchy panel bottom padding to 9rem in web app
* c557299 Constrain session notes width with word wrap
* f2ab785 Add bottom padding to hierarchy navigation panel
| * 7459345 (origin/main) fix: address bug on Desktop with Sync dialog
|/
* c8cc83d Fix routing for Dashboard action after renaming from Index</code></pre>
<p>After resolving with git rebase there was a new problem. commit
messages contained</p>
<pre><code> Generated with [Claude Code](https://claude.com/claude-code)
​
Co-Authored-By: Claude Sonnet 4.5 &lt;noreply@anthropic.com&gt;

The solution was to use interactive rebase with --exec to amend each commit:
git rebase -i 7459345 --exec 'git commit --amend -m "$(git log --format=%B -n1 | sed -e "/ Generated with/d" -e "/Co-Authored-By: Claude Sonnet/d" | sed -e :a -e "/^\n*$/{\$d;N;ba" -e "}")"'

Still the branches differed
git log --oneline --graph --all -12
* 4205e86 Improve mobile responsiveness for very narrow viewports
* a5947ee Improve responsive layout for narrow viewports
* 012a78f Add markdown rendering to session notes in desktop app
* d5227d2 Increase hierarchy panel bottom padding to 9rem in web app
* aed5405 Constrain session notes width with word wrap
* bcc32e8 Add bottom padding to hierarchy navigation panel
| * 64a4118 Improve mobile responsiveness for very narrow viewports
| * cbf2c68 Improve responsive layout for narrow viewports
| * 731eee2 Add markdown rendering to session notes in desktop app
| * 197fdb8 Increase hierarchy panel bottom padding to 9rem in web app
| * 09377c9 Constrain session notes width with word wrap
| * 6714c35 Add bottom padding to hierarchy navigation panel
|/</code></pre>
<p>The solution</p>
<p><code>git push --force</code></p>
<h1>Git Commands Reference</h1>
<p>Here are all the commands used in this adventure, in order:</p>
<h3>Check current status</h3>
<p><code>git status</code> ​</p>
<h3>Fetch latest from remote</h3>
<p><code>git fetch origin</code> ​</p>
<h3>View commit history graph</h3>
<p><code>git log --oneline --graph --all --decorate -15</code> ​</p>
<h3>View specific commit details</h3>
<p><code>git show origin/main --stat</code>
<code>git show 79c71eb WorkLog.Desktop/src/qml/main.qml</code> ​</p>
<h3>Rebase local commits onto
remote</h3>
<p><code>git rebase origin/main</code> ​</p>
<h3>During
conflict: stage resolved files and skip duplicate commit</h3>
<p><code>git add WorkLog.Desktop/src/qml/main.qml</code>
<code>git rebase --skip</code> ​</p>
<h3>Check commit message</h3>
<p><code>git show --stat HEAD</code>
<code>git log --format="%B" -1 HEAD</code> ​</p>
<h3>Attempt to filter
commit messages (didn’t work)</h3>
<p><code>git filter-branch -f --msg-filter 'sed ...' 7459345..HEAD</code>
​</p>
<h3>Interactive
rebase to amend all commits (successful)</h3>
<p><code>git rebase -i 7459345 --exec 'git commit --amend -m "$(git log --format=%B -n1 | sed ...)"'</code>
​</p>
<h3>Verify messages were cleaned</h3>
<p><code>git log --format="%B" -1 HEAD</code>
<code>git log --format="%B" -1 HEAD~3</code> ​</p>
<h3>Force push to update remote</h3>
<p><code>git push --force</code></p>



<p><a href="https://hackerpublicradio.org/eps/hpr4591/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4590: Playing Civilization V, Part 9]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.
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 t...]]></description>
<link>https://tsecurity.de/de/3329134/it+sicherheit/it+podcasts/hpr4590+playing+civilization+v+part+9/</link>
<pubDate>Fri, 06 Mar 2026 01:02:03 +0100</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>
<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>
<h2>Playing Civilization V, Part 9 - City States</h2>
<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>
<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>
<h3>City State Types</h3>
<p>With the expansions there are 5 types of City State: Militaristic, Maritime, Cultured, Mercantile, and Religious. The benefits you get are:</p>
<ul>
<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>
<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>
<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>
<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>
<li>Religious city states give you a one-time bonus of Faith when you first meet them, then provide added Faith per turn.</li>
</ul>
<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>
<h3>Managing Relations With City States</h3>
<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>
<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>
<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>
<h3>City States and War</h3>
<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>
<h3>Exploration</h3>
<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>
<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>
<h3>Links:</h3>
<ul>
<li><a href="https://civilization.fandom.com/wiki/City-state_(Civ5)">https://civilization.fandom.com/wiki/City-state_(Civ5)</a></li>
<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>
<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>
</ul>
<p><a href="https://hackerpublicradio.org/eps/hpr4590/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4589: YouTube Subscriptions 2025 #15]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.

    With permission of Ahuka the warning about
            the reserve queue was removed to the policy change on the
            mail list https://lists.hackerpublicradio.com/pipermail/hpr/2026-January/004951.html
    
    I am subscribed to a num...]]></description>
<link>https://tsecurity.de/de/3326604/it+sicherheit/it+podcasts/hpr4589+youtube+subscriptions+2025+15/</link>
<pubDate>Thu, 05 Mar 2026 01:02:04 +0100</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>

    <p><b><i>With permission of Ahuka the warning about
            the reserve queue was removed to the policy change on the
            mail list <a href="https://lists.hackerpublicradio.com/pipermail/hpr/2026-January/004951.html">https://lists.hackerpublicradio.com/pipermail/hpr/2026-January/004951.html</a></i></b><br>
    </p>
    <p>I am subscribed to a number of YouTube channels, and I am sharing
      them with you.</p>
    <h3>
      Links:</h3>
    <ul>
      <li>
        <a href="https://www.youtube.com/@TimeGhost" rel="noopener
          noreferrer" target="_blank">
          https://www.youtube.com/@TimeGhost</a>
      </li>
      <li>
        <a href="https://www.youtube.com/@timeghostpodcast4469" rel="noopener noreferrer" target="_blank">
          https://www.youtube.com/@timeghostpodcast4469</a>
      </li>
      <li>
        <a href="https://www.youtube.com/@TobyHadoke" rel="noopener
          noreferrer" target="_blank">
          https://www.youtube.com/@TobyHadoke</a>
      </li>
      <li>
        <a href="https://www.youtube.com/@TomSiddell" rel="noopener
          noreferrer" target="_blank">
          https://www.youtube.com/@TomSiddell</a>
      </li>
      <li>
        <a href="https://www.youtube.com/@touropia" rel="noopener
          noreferrer" target="_blank">
          https://www.youtube.com/@touropia</a>
      </li>
      <li>
        <a href="https://www.youtube.com/@tpmtv" rel="noopener
          noreferrer" target="_blank">
          https://www.youtube.com/@tpmtv</a>
      </li>
      <li>
        <a href="https://www.youtube.com/@TrekCulture" rel="noopener
          noreferrer" target="_blank">
          https://www.youtube.com/@TrekCulture</a>
      </li>
      <li>
        <a href="https://www.youtube.com/@TullTapes" rel="noopener
          noreferrer" target="_blank">
          https://www.youtube.com/@TullTapes</a>
      </li>
      <li>
        <a href="https://www.youtube.com/@UrsaRyan" rel="noopener
          noreferrer" target="_blank">
          https://www.youtube.com/@UrsaRyan</a>
      </li>
      <li>
        <a href="https://www.youtube.com/@VanBradley" rel="noopener
          noreferrer" target="_blank">
          https://www.youtube.com/@VanBradley</a>
      </li>
      <li>
        <a href="https://www.youtube.com/@veritasium" rel="noopener
          noreferrer" target="_blank">
          https://www.youtube.com/@veritasium</a>
      </li>
      <li>
        <a href="https://www.youtube.com/@VikingCruises" rel="noopener
          noreferrer" target="_blank">
          https://www.youtube.com/@VikingCruises</a>
      </li>
      <li>
        <a href="https://www.youtube.com/@Viking-TV" rel="noopener
          noreferrer" target="_blank">
          https://www.youtube.com/@Viking-TV</a>
      </li>
      <li>
        <a href="https://www.youtube.com/@vlogbrothers" rel="noopener
          noreferrer" target="_blank">
          https://www.youtube.com/@vlogbrothers</a>
      </li>
      <li>
        <a href="https://www.youtube.com/@washingtonmonthly9554" rel="noopener noreferrer" target="_blank">
          https://www.youtube.com/@washingtonmonthly9554</a>
      </li>
      <li>
        <a href="https://www.youtube.com/@WhoCulture" rel="noopener
          noreferrer" target="_blank">
          https://www.youtube.com/@WhoCulture</a>
      </li>
      <li>
        <a href="https://www.youtube.com/@woltersworld" rel="noopener
          noreferrer" target="_blank">
          https://www.youtube.com/@woltersworld</a>
      </li>
      <li>
        <a href="https://www.youtube.com/@WorldWarTwo" rel="noopener
          noreferrer" target="_blank">
          https://www.youtube.com/@WorldWarTwo</a>
      </li>
      <li>
        <a href="https://www.youtube.com/@xkcd_whatif" rel="noopener
          noreferrer" target="_blank">
          https://www.youtube.com/@xkcd_whatif</a>
      </li>
      <li>
        <a href="https://www.youtube.com/@YouCantUnhearThis" rel="noopener noreferrer" target="_blank">
          https://www.youtube.com/@YouCantUnhearThis</a>
      </li>
      <li>
        <a href="https://www.palain.com/" rel="noopener noreferrer" target="_blank">
          https://www.palain.com/</a>
      </li>
    </ul>
    <p>
    </p><p><a href="https://hackerpublicradio.org/eps/hpr4589/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4588: HPR Beer Garden 11 - Belgian Scotch Ale]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.


Dave and Kevie return with another episode of the Beer Garden, this time with a focus on Belgian Scotch Ales. Dave samples 
Silly Scotch
, whilst Kevie goes for 
Mc Chouffe
















Connect with the guys on Untappd:






Dave

...]]></description>
<link>https://tsecurity.de/de/3323971/it+sicherheit/it+podcasts/hpr4588+hpr+beer+garden+11+-+belgian+scotch+ale/</link>
<pubDate>Wed, 04 Mar 2026 01:02:02 +0100</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>

<p>
Dave and Kevie return with another episode of the Beer Garden, this time with a focus on Belgian Scotch Ales. Dave samples <a href="https://silly-beer.com/en/produit/silly-scotch-2/" rel="noopener noreferrer" target="_blank">
Silly Scotch</a>
, whilst Kevie goes for <a href="https://chouffe.com/en-us/our-beer/mc-chouffe" rel="noopener noreferrer" target="_blank">
Mc Chouffe</a>

</p>

<p>

</p>

<p>

<a href="https://hackerpublicradio.org/eps/hpr4588/hpr4588_image_1.png">
<img src="https://hackerpublicradio.org/eps/hpr4588/hpr4588_image_1_tn.png">
</a>

</p>

<p>
Connect with the guys on Untappd:</p>

<ul>

<li>

<a href="https://untappd.com/user/thelovebug" rel="noopener noreferrer" target="_blank">
Dave</a>

</li>

<li>

<a href="https://untappd.com/user/kevie49" rel="noopener noreferrer" target="_blank">
Kevie</a>

</li>

</ul>

<p>

</p>

<p>
The intro sounds for the show are used from:</p>

<ul>

<li>

<a href="https://freesound.org/people/mixtus/sounds/329806/" rel="noopener noreferrer" target="_blank">
https://freesound.org/people/mixtus/sounds/329806/</a>

</li>

<li>

<a href="https://freesound.org/people/j1987/sounds/123003/" rel="noopener noreferrer" target="_blank">
https://freesound.org/people/j1987/sounds/123003/</a>

</li>

<li>

<a href="https://freesound.org/people/greatsoundstube/sounds/628437/" rel="noopener noreferrer" target="_blank">
https://freesound.org/people/greatsoundstube/sounds/628437/</a>

</li>

</ul>

<p>

</p>


<p><a href="https://hackerpublicradio.org/eps/hpr4588/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[171: Melody Fraud]]></title>
<description><![CDATA[What if the music charts you see aren’t real? What if the numbers that define success can be manufactured? We talked to Andrew, a man who has spent his career on both sides of this battle. He once profited from the loopholes in streaming platforms, but now, his job is to close them. This episode ...]]></description>
<link>https://tsecurity.de/de/3321852/it+sicherheit/it+podcasts/171+melody+fraud/</link>
<pubDate>Tue, 03 Mar 2026 09:03:00 +0100</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>What if the music charts you see aren’t real? What if the numbers that define success can be manufactured? We talked to Andrew, a man who has spent his career on both sides of this battle. He once profited from the loopholes in streaming platforms, but now, his job is to close them. This episode will change the way you understand music streaming platforms from now on.</p><h3>Sponsors</h3><p>Support for this show comes from <a href="https://www.threatlocker.com/"><strong>ThreatLocker®</strong></a>. ThreatLocker® is a Zero Trust Endpoint Protection Platform that strengthens your infrastructure from the ground up. With ThreatLocker® Allowlisting and Ringfencing™, you gain a more secure approach to blocking exploits of known and unknown vulnerabilities. ThreatLocker® provides Zero Trust control at the kernel level that enables you to allow everything you need and block everything else, including ransomware! Learn more at <a href="https://www.threatlocker.com/"><strong>www.threatlocker.com</strong></a>.</p><p>Support for this show comes from <a href="https://www.adaptivesecurity.com/"><strong>Adaptive Security</strong></a>. Deepfake voices on a Zoom call. AI-written phishing emails that sound exactly like your CFO. Synthetic job applicants walking through the front door. Adaptive is built to stop these attacks. They run real-time simulations, exposing your teams to what these attacks look like to test and improve your defences. Learn more at <a href="https://www.adaptivesecurity.com/"><strong>adaptivesecurity.com</strong></a>.</p><p>This episode is sponsored by <a href="https://www.meter.com/"><strong>Meter</strong></a>, the company building networks from the ground up. Meter delivers a complete networking stack - wired, wireless, and cellular - in one solution that’s built for performance and scale. Alongside their partners, Meter designs the hardware, writes the firmware, builds the software, manages deployments, and runs support. Learn more at <a href="https://www.meter.com/"><strong>meter.com</strong></a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4587: UNIX Curio #1 - Shell Archives]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.


This is the first column in a series dedicated to exploring little-known—and occasionally useful—trinkets lurking in the dusty corners of UNIX-like operating systems.


This month's column was inspired by an 
article on the 




Linux Journal
...]]></description>
<link>https://tsecurity.de/de/3321362/it+sicherheit/it+podcasts/hpr4587+unix+curio+1+-+shell+archives/</link>
<pubDate>Tue, 03 Mar 2026 01:02:37 +0100</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>

<blockquote>
This is the first column in a series dedicated to exploring little-known—and occasionally useful—trinkets lurking in the dusty corners of UNIX-like operating systems.</blockquote>

<p>
This month's column was inspired by an <a href="https://www.linuxjournal.com/content/add-binary-payload-your-shell-scripts" rel="noopener noreferrer" target="_blank">
article on the </a>

<em>

<a href="https://www.linuxjournal.com/content/add-binary-payload-your-shell-scripts" rel="noopener noreferrer" target="_blank">
Linux Journal</a>

</em>

<a href="https://www.linuxjournal.com/content/add-binary-payload-your-shell-scripts" rel="noopener noreferrer" target="_blank">
 web site</a>

<sup>
1</sup>
 describing a custom-built script that would contain a binary tar archive and, when run, would extract the contents onto the user's system. Upon reading this, memories immediately came rushing back of the days of Usenet, before <a href="https://datatracker.ietf.org/doc/html/rfc1521" rel="noopener noreferrer" target="_blank">
MIME-encoded e-mail made sending file attachments standard</a>

<sup>
2</sup>
, and where we walked ten miles each way to school (uphill both ways!) in three feet of snow.</p>

<p>
Yes, at that time, you had to put everything into the body of your message. But what if you needed to send a bunch of files to someone? There was <code>
tar</code>
, but the format differed between systems, and e-mail and Usenet could only reliably handle 7-bit plain-text ASCII anyhow. You could send separate e-mail messages (but what if one goes missing?) or put "CUT HERE" lines to designate where one file ends and another one begins (tedious for the recipient). The solution was a shell archive created by the <code>
shar</code>
 program. This wraps all your files in a neat shell script that the recipient can just run and have the files magically pop out. All he needs is the Bourne shell and the <code>
sed</code>
 utility, both standard on any UNIX-like system.</p>

<p>
Suppose you had a directory named "foo" containing the files bar.c, bar.h, and bar.txt, and wanted to send these. All you'd need to do is run the following command, and your archive is on its way.</p>

<pre data-language="plain">
$ shar foo foo/* | mail -s "Foo 1.0 files" bob@example.com
</pre>

<p>
When the recipient runs the resulting script, it will create the foo directory and copy out the files onto his system. You can also pick and choose files; if you wanted to leave out bar.txt, you could do <code>
shar foo foo/bar.c foo/bar.h</code>
 or, more simply, <code>
shar foo foo/bar.?</code>
.</p>

<p>
Different versions of <code>
shar</code>
 have varying capabilities. For example, the <a href="https://man.freebsd.org/cgi/man.cgi?query=shar&amp;sektion=1&amp;manpath=4.4BSD+Lite2" rel="noopener noreferrer" target="_blank">
BSD</a>

<sup>
3</sup>
 and <a href="https://man.freebsd.org/cgi/man.cgi?query=shar&amp;sektion=1&amp;manpath=macOS+26.2" rel="noopener noreferrer" target="_blank">
OS X</a>

<sup>
4</sup>
 editions can only really manage plain-text files. If you had a binary object file bar.o, it'd likely get mangled somewhere along the way if you tried to include it in an archive. They also require, as in the examples above, that you name a directory before naming any files inside it (the typical way is to let the <code>
find</code>
 command do the work for you; it produces a list in the right order).</p>

<p>
The GNU implementation is more flexible and can take just a directory name, automatically including everything underneath. It can also handle binary files by using uuencode—a method for encoding data as ASCII that predated the current base64 MIME standard. GNU <code>
shar</code>
 rather nicely auto-detects whether the input file is text or binary and acts accordingly, and can even compress files if asked. However, unpacking encoded or compressed files from such an archive requires the recipient to have the corresponding decode/uncompress utility, and the <a href="https://www.gnu.org/software/sharutils/manual/sharutils.html" rel="noopener noreferrer" target="_blank">
documentation is littered with (now somewhat anachronistic) warnings about this</a>

<sup>
5</sup>
.</p>

<p>
Looking at other UNIX systems, <a href="https://support.hpe.com/hpesc/public/docDisplay?docId=c01922474&amp;docLocale=en_US" rel="noopener noreferrer" target="_blank">
the HP-UX version</a>

<sup>
6</sup>
 also can uuencode binary files, and as a special bonus adds logic to the script that will compile and use a simple uudecode tool if the recipient doesn't already have one. It will even handle device files and put the corresponding <code>
mknod</code>
 commands into the script, probably making it the most full-featured implementation of all. IBM's AIX doesn't appear to come with <code>
shar</code>
. Neither do SunOS and Solaris, which seems quite odd as original development of the program is <a href="https://www.gnu.org/software/sharutils/manual/sharutils.html#Introduction" rel="noopener noreferrer" target="_blank">
credited to James Gosling</a>

<sup>
5</sup>
!</p>

<p>
And so we bid farewell to <code>
shar</code>
. Next time you're considering rolling your own script for a particular purpose, consider whether such a tool might already exist, just waiting on your system for you to use it.</p>

<p>
References:</p>

<ol>

<li>

<a href="https://www.linuxjournal.com/content/add-binary-payload-your-shell-scripts" rel="noopener noreferrer" target="_blank">
Add a Binary Payload to your Shell Scripts</a>
 https://www.linuxjournal.com/content/add-binary-payload-your-shell-scripts</li>

<li>

<a href="https://datatracker.ietf.org/doc/html/rfc1521" rel="noopener noreferrer" target="_blank">
MIME (Multipurpose Internet Mail Extensions) Part One</a>
 https://datatracker.ietf.org/doc/html/rfc1521</li>

<li>

<a href="https://man.freebsd.org/cgi/man.cgi?query=shar&amp;sektion=1&amp;manpath=4.4BSD+Lite2" rel="noopener noreferrer" target="_blank">
BSD shar manual page</a>
 https://man.freebsd.org/cgi/man.cgi?query=shar&amp;sektion=1&amp;manpath=4.4BSD+Lite2</li>

<li>

<a href="https://man.freebsd.org/cgi/man.cgi?query=shar&amp;sektion=1&amp;manpath=macOS+26.2" rel="noopener noreferrer" target="_blank">
macOS 26.2 shar manual page</a>
 https://man.freebsd.org/cgi/man.cgi?query=shar&amp;sektion=1&amp;manpath=macOS+26.2</li>

<li>

<a href="https://www.gnu.org/software/sharutils/manual/sharutils.html" rel="noopener noreferrer" target="_blank">
GNU shar utilities manual</a>
 https://www.gnu.org/software/sharutils/manual/sharutils.html</li>

<li>

<a href="https://support.hpe.com/hpesc/public/docDisplay?docId=c01922474&amp;docLocale=en_US" rel="noopener noreferrer" target="_blank">
HP-UX Reference (11i v3 07/02) - 1 User Commands N-Z (vol 2)</a>
 https://support.hpe.com/hpesc/public/docDisplay?docId=c01922474&amp;docLocale=en_US</li>

</ol>

<p>

<em>
This article was originally written in May 2010. The podcast episode was recorded in February 2026.</em>

</p>


<p><a href="https://hackerpublicradio.org/eps/hpr4587/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4586: HPR Community News for February 2026]]></title>
<description><![CDATA[This show has been flagged as Explicit by the host.
New hosts  Welcome to our new hosts:       Vance,      not_toby.   Last Month's Shows   Id Day Date Title Host   4566 Mon 2026-02-02 HPR Community News for January 2026 HPR Volunteers   4567 Tue 2026-02-03 Movie Recommendations for Hackers Delta...]]></description>
<link>https://tsecurity.de/de/3318860/it+sicherheit/it+podcasts/hpr4586+hpr+community+news+for+february+2026/</link>
<pubDate>Mon, 02 Mar 2026 01:04:36 +0100</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Explicit by the host.</p>
<h2>New hosts</h2> <p> Welcome to our new hosts: <br>      <a href="https://hackerpublicradio.org/correspondents/0459.html" target="_blank">Vance</a>,      <a href="https://hackerpublicradio.org/correspondents/0460.html" target="_blank">not_toby</a>. </p>  <h2>Last Month's Shows</h2> <table> <tr> <th>Id</th> <th>Day</th> <th>Date</th> <th>Title</th> <th>Host</th> </tr> <tr> <td><strong><a href="https://hackerpublicradio.org/eps/hpr4566/index.html" target="_blank">4566</a></strong></td> <td>Mon</td> <td class="shrink">2026-02-02</td> <td><a href="https://hackerpublicradio.org/eps/hpr4566/index.html" target="_blank">HPR Community News for January 2026</a></td> <td><a href="https://hackerpublicradio.org/correspondents/0159.html" target="_blank">HPR Volunteers</a></td> </tr> <tr> <td><strong><a href="https://hackerpublicradio.org/eps/hpr4567/index.html" target="_blank">4567</a></strong></td> <td>Tue</td> <td class="shrink">2026-02-03</td> <td><a href="https://hackerpublicradio.org/eps/hpr4567/index.html" target="_blank">Movie Recommendations for Hackers</a></td> <td><a href="https://hackerpublicradio.org/correspondents/0194.html" target="_blank">Deltaray</a></td> </tr> <tr> <td><strong><a href="https://hackerpublicradio.org/eps/hpr4568/index.html" target="_blank">4568</a></strong></td> <td>Wed</td> <td class="shrink">2026-02-04</td> <td><a href="https://hackerpublicradio.org/eps/hpr4568/index.html" target="_blank">Book reading The Cuckoo's Egg by Cliff Stoll</a></td> <td><a href="https://hackerpublicradio.org/correspondents/0429.html" target="_blank">Henrik Hemrin</a></td> </tr> <tr> <td><strong><a href="https://hackerpublicradio.org/eps/hpr4569/index.html" target="_blank">4569</a></strong></td> <td>Thu</td> <td class="shrink">2026-02-05</td> <td><a href="https://hackerpublicradio.org/eps/hpr4569/index.html" target="_blank">Kiosk with guest mode on Linux</a></td> <td><a href="https://hackerpublicradio.org/correspondents/0078.html" target="_blank">Klaatu</a></td> </tr> <tr> <td><strong><a href="https://hackerpublicradio.org/eps/hpr4570/index.html" target="_blank">4570</a></strong></td> <td>Fri</td> <td class="shrink">2026-02-06</td> <td><a href="https://hackerpublicradio.org/eps/hpr4570/index.html" target="_blank">Playing Civilization V, Part 8</a></td> <td><a href="https://hackerpublicradio.org/correspondents/0198.html" target="_blank">Ahuka</a></td> </tr> <tr> <td><strong><a href="https://hackerpublicradio.org/eps/hpr4571/index.html" target="_blank">4571</a></strong></td> <td>Mon</td> <td class="shrink">2026-02-09</td> <td><a href="https://hackerpublicradio.org/eps/hpr4571/index.html" target="_blank">Data processing retrospective</a></td> <td><a href="https://hackerpublicradio.org/correspondents/0403.html" target="_blank">Lee</a></td> </tr> <tr> <td><strong><a href="https://hackerpublicradio.org/eps/hpr4572/index.html" target="_blank">4572</a></strong></td> <td>Tue</td> <td class="shrink">2026-02-10</td> <td><a href="https://hackerpublicradio.org/eps/hpr4572/index.html" target="_blank">Uncommon Commands, Episode 3 - strace</a></td> <td><a href="https://hackerpublicradio.org/correspondents/0194.html" target="_blank">Deltaray</a></td> </tr> <tr> <td><strong><a href="https://hackerpublicradio.org/eps/hpr4573/index.html" target="_blank">4573</a></strong></td> <td>Wed</td> <td class="shrink">2026-02-11</td> <td><a href="https://hackerpublicradio.org/eps/hpr4573/index.html" target="_blank">Nuclear Reactor Technology - Ep 6 Thorium Reactors</a></td> <td><a href="https://hackerpublicradio.org/correspondents/0455.html" target="_blank">Whiskeyjack</a></td> </tr> <tr> <td><strong><a href="https://hackerpublicradio.org/eps/hpr4574/index.html" target="_blank">4574</a></strong></td> <td>Thu</td> <td class="shrink">2026-02-12</td> <td><a href="https://hackerpublicradio.org/eps/hpr4574/index.html" target="_blank">UNIX Curio #0 - Introduction</a></td> <td><a href="https://hackerpublicradio.org/correspondents/0459.html" target="_blank">Vance</a></td> </tr> <tr> <td><strong><a href="https://hackerpublicradio.org/eps/hpr4575/index.html" target="_blank">4575</a></strong></td> <td>Fri</td> <td class="shrink">2026-02-13</td> <td><a href="https://hackerpublicradio.org/eps/hpr4575/index.html" target="_blank">Making First Contact</a></td> <td><a href="https://hackerpublicradio.org/correspondents/0030.html" target="_blank">Ken Fallon</a></td> </tr> <tr> <td><strong><a href="https://hackerpublicradio.org/eps/hpr4576/index.html" target="_blank">4576</a></strong></td> <td>Mon</td> <td class="shrink">2026-02-16</td> <td><a href="https://hackerpublicradio.org/eps/hpr4576/index.html" target="_blank">Responce to Lee/Elsbeth eps</a></td> <td><a href="https://hackerpublicradio.org/correspondents/0036.html" target="_blank">operat0r</a></td> </tr> <tr> <td><strong><a href="https://hackerpublicradio.org/eps/hpr4577/index.html" target="_blank">4577</a></strong></td> <td>Tue</td> <td class="shrink">2026-02-17</td> <td><a href="https://hackerpublicradio.org/eps/hpr4577/index.html" target="_blank">HPR Beer Garden 10 - Scotch Ale/Wee Heavy</a></td> <td><a href="https://hackerpublicradio.org/correspondents/0296.html" target="_blank">Kevie</a></td> </tr> <tr> <td><strong><a href="https://hackerpublicradio.org/eps/hpr4578/index.html" target="_blank">4578</a></strong></td> <td>Wed</td> <td class="shrink">2026-02-18</td> <td><a href="https://hackerpublicradio.org/eps/hpr4578/index.html" target="_blank">Alex's journey into Amateur Radio</a></td> <td><a href="https://hackerpublicradio.org/correspondents/0314.html" target="_blank">thelovebug</a></td> </tr> <tr> <td><strong><a href="https://hackerpublicradio.org/eps/hpr4579/index.html" target="_blank">4579</a></strong></td> <td>Thu</td> <td class="shrink">2026-02-19</td> <td><a href="https://hackerpublicradio.org/eps/hpr4579/index.html" target="_blank">Happy by shower</a></td> <td><a href="https://hackerpublicradio.org/correspondents/0441.html" target="_blank">Antoine</a></td> </tr> <tr> <td><strong><a href="https://hackerpublicradio.org/eps/hpr4580/index.html" target="_blank">4580</a></strong></td> <td>Fri</td> <td class="shrink">2026-02-20</td> <td><a href="https://hackerpublicradio.org/eps/hpr4580/index.html" target="_blank">The First Doctor, Part 4</a></td> <td><a href="https://hackerpublicradio.org/correspondents/0198.html" target="_blank">Ahuka</a></td> </tr> <tr> <td><strong><a href="https://hackerpublicradio.org/eps/hpr4581/index.html" target="_blank">4581</a></strong></td> <td>Mon</td> <td class="shrink">2026-02-23</td> <td><a href="https://hackerpublicradio.org/eps/hpr4581/index.html" target="_blank">Sharp Intake of Breath City (A.K.A.) How I learnt to stop worrying about the fork bomb</a></td> <td><a href="https://hackerpublicradio.org/correspondents/0460.html" target="_blank">not_toby</a></td> </tr> <tr> <td><strong><a href="https://hackerpublicradio.org/eps/hpr4582/index.html" target="_blank">4582</a></strong></td> <td>Tue</td> <td class="shrink">2026-02-24</td> <td><a href="https://hackerpublicradio.org/eps/hpr4582/index.html" target="_blank">Hackerpublic Radio New Years Eve Show 2026 Episode 1</a></td> <td><a href="https://hackerpublicradio.org/correspondents/0269.html" target="_blank">Honkeymagoo</a></td> </tr> <tr> <td><strong><a href="https://hackerpublicradio.org/eps/hpr4583/index.html" target="_blank">4583</a></strong></td> <td>Wed</td> <td class="shrink">2026-02-25</td> <td><a href="https://hackerpublicradio.org/eps/hpr4583/index.html" target="_blank">Nuclear Reactor Technology - Ep 7 Small Modular Reactors</a></td> <td><a href="https://hackerpublicradio.org/correspondents/0455.html" target="_blank">Whiskeyjack</a></td> </tr> <tr> <td><strong><a href="https://hackerpublicradio.org/eps/hpr4584/index.html" target="_blank">4584</a></strong></td> <td>Thu</td> <td class="shrink">2026-02-26</td> <td><a href="https://hackerpublicradio.org/eps/hpr4584/index.html" target="_blank">Recording a show, and crappy audio</a></td> <td><a href="https://hackerpublicradio.org/correspondents/0318.html" target="_blank">Archer72</a></td> </tr> <tr> <td><strong><a href="https://hackerpublicradio.org/eps/hpr4585/index.html" target="_blank">4585</a></strong></td> <td>Fri</td> <td class="shrink">2026-02-27</td> <td><a href="https://hackerpublicradio.org/eps/hpr4585/index.html" target="_blank">mpv util scripts</a></td> <td><a href="https://hackerpublicradio.org/correspondents/0454.html" target="_blank">candycanearter</a></td> </tr> </table>  <h2>Comments this month</h2>  <p>These are comments which have been made during the past month, either to shows released during the month or to past shows. There are 37 comments in total.</p> <h3>Past shows</h3> <p>There are 2 comments on 2 previous shows:</p> <ul> <li><strong><a href="https://hackerpublicradio.org/eps/hpr4562/index.html#comments" target="_blank">hpr4562</a></strong> (2026-01-27) "<em>Software development doesn't end until it's packaged</em>" by <a href="https://hackerpublicradio.org/correspondents/0078.html" target="_blank">Klaatu</a>.<br> </li><li> <ul> <li> <a href="https://hackerpublicradio.org/eps/hpr4562/index.html#comment_4576" target="_blank">Comment 1</a>: Steve Barnes on 2026-02-03: "(Yeah!)"</li></ul><br> </li><li><strong><a href="https://hackerpublicradio.org/eps/hpr4564/index.html#comments" target="_blank">hpr4564</a></strong> (2026-01-29) "<em>MakeMKV error</em>" by <a href="https://hackerpublicradio.org/correspondents/0318.html" target="_blank">Archer72</a>.<br> </li><li> <ul> <li> <a href="https://hackerpublicradio.org/eps/hpr4564/index.html#comment_4585" target="_blank">Comment 1</a>: candycanearter07 on 2026-02-05: "regression testing?"</li></ul><br> </li></ul> <h3>This month's shows</h3> <p>There are 35 comments on 11 of this month's shows:</p> <ul><li><strong><a href="https://hackerpublicradio.org/eps/hpr4566/index.html#comments" target="_blank">hpr4566</a></strong> (2026-02-02) "<em>HPR Community News for January 2026</em>" by <a href="https://hackerpublicradio.org/correspondents/0159.html" target="_blank">HPR Volunteers</a>.</li> <li> <ul><li><a href="https://hackerpublicradio.org/eps/hpr4566/index.html#comment_4578" target="_blank">Comment 1</a>: Whiskeyjack on 2026-02-03: "Community News for January - Scheduling of Episodes"</li><li><a href="https://hackerpublicradio.org/eps/hpr4566/index.html#comment_4580" target="_blank">Comment 2</a>: Ken Fallon on 2026-02-04: "response to Whiskeyjack"</li><li><a href="https://hackerpublicradio.org/eps/hpr4566/index.html#comment_4582" target="_blank">Comment 3</a>: Whiskeyjack on 2026-02-04: "response to Ken Fallon - Episode Scheduling Guidelines"</li><li><a href="https://hackerpublicradio.org/eps/hpr4566/index.html#comment_4583" target="_blank">Comment 4</a>: Ken Fallon on 2026-02-04: "You're right"</li><li><a href="https://hackerpublicradio.org/eps/hpr4566/index.html#comment_4588" target="_blank">Comment 5</a>: candycanearter07 on 2026-02-06: "my two cents"</li><li><a href="https://hackerpublicradio.org/eps/hpr4566/index.html#comment_4592" target="_blank">Comment 6</a>: Whiskeyjack on 2026-02-06: "Response to candycanearter07 on episode scheduling"</li><li><a href="https://hackerpublicradio.org/eps/hpr4566/index.html#comment_4594" target="_blank">Comment 7</a>: Ken Fallon on 2026-02-07: "re "reschedule shows which don't need to be on a specific date forwards or backwards""</li></ul><br> </li><li><strong><a href="https://hackerpublicradio.org/eps/hpr4567/index.html#comments" target="_blank">hpr4567</a></strong> (2026-02-03) "<em>Movie Recommendations for Hackers</em>" by <a href="https://hackerpublicradio.org/correspondents/0194.html" target="_blank">Deltaray</a>.</li> <li> <ul><li><a href="https://hackerpublicradio.org/eps/hpr4567/index.html#comment_4577" target="_blank">Comment 1</a>: Kinghezy on 2026-02-03: "Office space lumbergh"</li><li><a href="https://hackerpublicradio.org/eps/hpr4567/index.html#comment_4579" target="_blank">Comment 2</a>: Antoine on 2026-02-04: "An attractive invitation to watch"</li><li><a href="https://hackerpublicradio.org/eps/hpr4567/index.html#comment_4581" target="_blank">Comment 3</a>: Henrik Hemrin on 2026-02-04: "Inspiring recommendations"</li><li><a href="https://hackerpublicradio.org/eps/hpr4567/index.html#comment_4587" target="_blank">Comment 4</a>: ClaudioM on 2026-02-05: "Awesome Episode!"</li><li><a href="https://hackerpublicradio.org/eps/hpr4567/index.html#comment_4589" target="_blank">Comment 5</a>: Jim DeVore on 2026-02-06: "Great Show!"</li><li><a href="https://hackerpublicradio.org/eps/hpr4567/index.html#comment_4608" target="_blank">Comment 6</a>: hobs on 2026-02-23: "Loved the show!"</li></ul><br> </li><li><strong><a href="https://hackerpublicradio.org/eps/hpr4569/index.html#comments" target="_blank">hpr4569</a></strong> (2026-02-05) "<em>Kiosk with guest mode on Linux</em>" by <a href="https://hackerpublicradio.org/correspondents/0078.html" target="_blank">Klaatu</a>.</li> <li> <ul><li><a href="https://hackerpublicradio.org/eps/hpr4569/index.html#comment_4559" target="_blank">Comment 1</a>: operat0r on 2026-01-18: "weee"</li><li><a href="https://hackerpublicradio.org/eps/hpr4569/index.html#comment_4584" target="_blank">Comment 2</a>: candycanearter07 on 2026-02-05: "very informative!"</li><li><a href="https://hackerpublicradio.org/eps/hpr4569/index.html#comment_4590" target="_blank">Comment 3</a>: Jim DeVore on 2026-02-06: "I learned some things that I will try out"</li><li><a href="https://hackerpublicradio.org/eps/hpr4569/index.html#comment_4591" target="_blank">Comment 4</a>: candycanearter07 on 2026-02-06: "RE: I learned some things that I will try out"</li></ul><br> </li><li><strong><a href="https://hackerpublicradio.org/eps/hpr4571/index.html#comments" target="_blank">hpr4571</a></strong> (2026-02-09) "<em>Data processing retrospective</em>" by <a href="https://hackerpublicradio.org/correspondents/0403.html" target="_blank">Lee</a>.</li> <li> <ul><li><a href="https://hackerpublicradio.org/eps/hpr4571/index.html#comment_4595" target="_blank">Comment 1</a>: Henrik Hemrin on 2026-02-10: "Conversation"</li><li><a href="https://hackerpublicradio.org/eps/hpr4571/index.html#comment_4604" target="_blank">Comment 2</a>: Beeza on 2026-02-18: "A Special Episode"</li></ul><br> </li><li><strong><a href="https://hackerpublicradio.org/eps/hpr4572/index.html#comments" target="_blank">hpr4572</a></strong> (2026-02-10) "<em>Uncommon Commands, Episode 3 - strace</em>" by <a href="https://hackerpublicradio.org/correspondents/0194.html" target="_blank">Deltaray</a>.</li> <li> <ul><li><a href="https://hackerpublicradio.org/eps/hpr4572/index.html#comment_4553" target="_blank">Comment 1</a>: Ken Fallon on 2026-01-13: "My future self thanks you"</li><li><a href="https://hackerpublicradio.org/eps/hpr4572/index.html#comment_4596" target="_blank">Comment 2</a>: candycanearter07 on 2026-02-10: "fantastic learning and debugging tool!"</li><li><a href="https://hackerpublicradio.org/eps/hpr4572/index.html#comment_4597" target="_blank">Comment 3</a>: Some Guy on the Internet on 2026-02-11: "It's MAGIC!"</li><li><a href="https://hackerpublicradio.org/eps/hpr4572/index.html#comment_4603" target="_blank">Comment 4</a>: Paulj on 2026-02-18: "Great Information"</li></ul><br> </li><li><strong><a href="https://hackerpublicradio.org/eps/hpr4574/index.html#comments" target="_blank">hpr4574</a></strong> (2026-02-12) "<em>UNIX Curio #0 - Introduction</em>" by <a href="https://hackerpublicradio.org/correspondents/0459.html" target="_blank">Vance</a>.</li> <li> <ul><li><a href="https://hackerpublicradio.org/eps/hpr4574/index.html#comment_4598" target="_blank">Comment 1</a>: brian-in-ohio on 2026-02-12: "This will be a good series"</li><li><a href="https://hackerpublicradio.org/eps/hpr4574/index.html#comment_4599" target="_blank">Comment 2</a>: Vance on 2026-02-14: "Thanks, brian-in-ohio!"</li><li><a href="https://hackerpublicradio.org/eps/hpr4574/index.html#comment_4602" target="_blank">Comment 3</a>: Paulj on 2026-02-18: "Thanks for your first show, and upcoming series!"</li></ul><br> </li><li><strong><a href="https://hackerpublicradio.org/eps/hpr4576/index.html#comments" target="_blank">hpr4576</a></strong> (2026-02-16) "<em>Responce to Lee/Elsbeth eps</em>" by <a href="https://hackerpublicradio.org/correspondents/0036.html" target="_blank">operat0r</a>.</li> <li> <ul><li><a href="https://hackerpublicradio.org/eps/hpr4576/index.html#comment_4556" target="_blank">Comment 1</a>: Elsbeth on 2026-01-16: "Thank you"</li></ul><br> </li><li><strong><a href="https://hackerpublicradio.org/eps/hpr4577/index.html#comments" target="_blank">hpr4577</a></strong> (2026-02-17) "<em>HPR Beer Garden 10 - Scotch Ale/Wee Heavy</em>" by <a href="https://hackerpublicradio.org/correspondents/0296.html" target="_blank">Kevie</a>.</li> <li> <ul><li><a href="https://hackerpublicradio.org/eps/hpr4577/index.html#comment_4605" target="_blank">Comment 1</a>: Gan Ainm on 2026-02-18: ""Scotch" Ale from the Baltic Sea"</li></ul><br> </li><li><strong><a href="https://hackerpublicradio.org/eps/hpr4578/index.html#comments" target="_blank">hpr4578</a></strong> (2026-02-18) "<em>Alex's journey into Amateur Radio</em>" by <a href="https://hackerpublicradio.org/correspondents/0314.html" target="_blank">thelovebug</a>.</li> <li> <ul><li><a href="https://hackerpublicradio.org/eps/hpr4578/index.html#comment_4601" target="_blank">Comment 1</a>: Archer72 on 2026-02-17: "Congrats!"</li><li><a href="https://hackerpublicradio.org/eps/hpr4578/index.html#comment_4606" target="_blank">Comment 2</a>: Trey on 2026-02-18: "Congratulations! "</li></ul><br> </li><li><strong><a href="https://hackerpublicradio.org/eps/hpr4579/index.html#comments" target="_blank">hpr4579</a></strong> (2026-02-19) "<em>Happy by shower</em>" by <a href="https://hackerpublicradio.org/correspondents/0441.html" target="_blank">Antoine</a>.</li> <li> <ul><li><a href="https://hackerpublicradio.org/eps/hpr4579/index.html#comment_4607" target="_blank">Comment 1</a>: candycanearter07 on 2026-02-20: "timing"</li><li><a href="https://hackerpublicradio.org/eps/hpr4579/index.html#comment_4612" target="_blank">Comment 2</a>: Antoine on 2026-02-26: "Re # 1 -"</li></ul><br> </li><li><strong><a href="https://hackerpublicradio.org/eps/hpr4581/index.html#comments" target="_blank">hpr4581</a></strong> (2026-02-23) "<em>Sharp Intake of Breath City (A.K.A.) How I learnt to stop worrying about the fork bomb</em>" by <a href="https://hackerpublicradio.org/correspondents/0460.html" target="_blank">not_toby</a>.</li> <li> <ul><li><a href="https://hackerpublicradio.org/eps/hpr4581/index.html#comment_4600" target="_blank">Comment 1</a>: Archer72 on 2026-02-17: "First episode"</li><li><a href="https://hackerpublicradio.org/eps/hpr4581/index.html#comment_4609" target="_blank">Comment 2</a>: Trey on 2026-02-23: "Welcome!"</li><li><a href="https://hackerpublicradio.org/eps/hpr4581/index.html#comment_4610" target="_blank">Comment 3</a>: Steve Barnes on 2026-02-24: "Potted Plant Emoji"</li></ul><br> </li></ul>  <h2>Mailing List discussions</h2> <p> Policy decisions surrounding HPR are taken by the community as a whole. This discussion takes place on the <a href="https://lists.hackerpublicradio.com/mailman/listinfo/hpr" target="_blank">Mailing List</a> which is open to all HPR listeners and contributors. The discussions are open and available on the HPR server under <a href="https://lists.hackerpublicradio.com/pipermail/hpr">Mailman</a>. </p> <p>The threaded discussions this month can be found here:</p> <a href="https://lists.hackerpublicradio.com/pipermail/hpr/2026-February/thread.html" target="_blank">https://lists.hackerpublicradio.com/pipermail/hpr/2026-February/thread.html</a>  <h2>Events Calendar</h2> <p>With the kind permission of <strong>LWN.net</strong> we are linking to <a href="https://lwn.net/Calendar/" target="_blank">The LWN.net Community Calendar</a>.</p> <p>Quoting the site:</p> <blockquote>This is the LWN.net community event calendar, where we track events of interest to people using and developing Linux and free software. Clicking on individual events will take you to the appropriate web page.</blockquote><p><a href="https://hackerpublicradio.org/eps/hpr4586/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4585: mpv util scripts]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.


sorry about the computer fan i didnt realize how loud it was until after everything was recorded


all scripts are prefixed with a_ for personal organization






_a_props.lua


mp.observe_property("path", "native", function()
local domain...]]></description>
<link>https://tsecurity.de/de/3313472/it+sicherheit/it+podcasts/hpr4585+mpv+util+scripts/</link>
<pubDate>Fri, 27 Feb 2026 01:01:53 +0100</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>

<p>
sorry about the computer fan i didnt realize how loud it was until after everything was recorded</p>

<p>
all scripts are prefixed with a_ for personal organization</p>

<p>

</p>

<p>
_a_props.lua</p>

<pre data-language="plain">
mp.observe_property("path", "native", function()
local domain = string.match(mp.get_property_native("path") or "", ".*://w*%.*(.-)[:/]")
if domain then mp.set_property("user-data/domain-path", domain)
else mp.del_property("user-data/domain-path") end
end)

mp.observe_property("playtime-remaining", "native", function (_, tr)
if tr then mp.set_property("user-data/playtime-remaining-seconds", math.floor(tr)) end
end)
</pre>

<p>

</p>

<p>
a_aspectratio.lua</p>

<pre data-language="plain">
local targetw = 16
local targeth = 9
local marginerror = 0.1


local function resetgem()
local dim = mp.get_property_native("osd-dimensions")
if not dim or dim.w == 0 then return end
mp.set_property("geometry", dim.w .. "x" .. dim.h)
end

local function dimensionhop(_, dim)
if dim.w == 0 or dim.h == 0 then return end

local cd = dim.w / dim.h
local td = targetw / targeth

-- floating points my beloved
-- checking we're in a good range so it doesnt inf loop
-- also it updates the geometry field so profile restore can work
if cd &gt; (td - marginerror) and cd &lt; (td + marginerror) then resetgem(); return end

local setw = dim.h * td
local newdim = setw .. "x" .. dim.h
mp.set_property("geometry", newdim)
mp.osd_message("setting " .. newdim)
end

mp.observe_property("osd-dimensions", "native", dimensionhop)

mp.register_event("start-file", resetgem)
mp.register_event("end-file", resetgem)
</pre>

<p>

</p>

<p>
a_cover-visualiser.lua</p>

<pre data-language="plain">
local function resolve_missing_cover(domain)
local extico = {
["hub.hackerpublicradio.org"] = "https://hackerpublicradio.org/images/hpr_logo.png",
["yellowtealpurple.net"] = "https://yellowtealpurple.net/forums/data/assets/logo/favicon-32x32.png",
-- yes using a product picture is silly but so is not featuring your icon ANYWHERE else
["anonradio.net"] = "https://sdf.org/store/thumbs/anon3.jpg",
["hashnix.club"] = "default",
["radio.kingposs.com"] = "https://kingposs.com/assets/buttons/PossBadge.gif"
}

if domain then
local force = extico[domain]
if force == "default" then return resolve_missing_cover() end
if force and mp.commandv("video-add", force, "auto", "domainhardcode.png") then return end

local favico = "https://" .. domain .. "/favicon.ico"
if mp.commandv("video-add", favico, "auto", "favico.png") then return end
end

mp.command("video-add ~~/cover.png auto default.png")
end

local function inject_needed()
local tracks = mp.get_property_native("track-list")
local needed = true

for _, v in ipairs(tracks) do
if v.type == 'video' then
if not v.image then return end
needed = false
end
end

if needed then resolve_missing_cover(mp.get_property_native("user-data/domain-path")) end

mp.set_property("file-local-options/lavfi-complex",
"[aid1] asplit=3 [a0][a1][ao] ; " ..
"[vid1] scale=sws_dither=none:flags=neighbor:w=max(iw\,256):h=max(iw\,256):force_original_aspect_ratio=increas
e:force_divisible_by=8, scale=h=-1:w=720, split=3 [vref0][vref1][vfin] ; " ..

"[a0] showfreqs=size=hd720, hue=h=220 [rawfreq] ; " ..
"[rawfreq][vref0] scale=flags=neighbor:w=rw:h=rh/2 [freq] ; " ..
"[a1] showvolume=f=0.5:h=14 [rawvol] ; [rawvol][vref1] scale=flags=neighbor:w=(3*rw)/4:h=-1, geq=p(X\,Y):a=255
[vol] ; " ..
"[vfin][freq] overlay=y=main_h-overlay_h [prevo] ; [prevo][vol] overlay [vo] ")
end

-- mp.register_event("start-file", inject_needed)
-- mp.observe_property("current-tracks/audio", "native", inject_needed)
mp.add_hook("on_preloaded", 50, inject_needed)
</pre>

<p>

</p>

<p>
my cover.png (640x480)</p>

<p>

<a href="https://hackerpublicradio.org/eps/hpr4585/hpr4585_image_1.png">
<img src="https://hackerpublicradio.org/eps/hpr4585/hpr4585_image_1_tn.png">
</a>

</p>

<p>

</p>

<p>
example with hardcoded image</p>

<p>

<a href="https://hackerpublicradio.org/eps/hpr4585/hpr4585_image_2.png">
<img src="https://hackerpublicradio.org/eps/hpr4585/hpr4585_image_2_tn.png">
</a>

</p>

<p>
(notice theres only one volume bar because hpr is mixed to mono)</p>

<p>

</p>

<p>
example with favicon detection</p>

<p>

<a href="https://hackerpublicradio.org/eps/hpr4585/hpr4585_image_3.png">
<img src="https://hackerpublicradio.org/eps/hpr4585/hpr4585_image_3_tn.png">
</a>

</p>

<p>
(youll probably see this one a lot since its the default icon for icecast servers)</p>

<p>

</p>

<p>
example with default/no cover</p>

<p>

<a href="https://hackerpublicradio.org/eps/hpr4585/hpr4585_image_4.png">
<img src="https://hackerpublicradio.org/eps/hpr4585/hpr4585_image_4_tn.png">
</a>

</p>

<p>
(my art!!)</p>

<p>

</p>

<p>
a_playlist.lua</p>

<pre data-language="plain">
mp.register_script_message("full-clear", function()
mp.set_property("playlist-pos", -1)
mp.command("playlist-clear")
end)

mp.register_script_message("playlist-next-to-last", function()
local target = mp.get_property_native("playlist-pos")
if target &lt; 0 then return end
target = target + 1
mp.osd_message("moved " .. mp.get_property_native("playlist/" .. target .. "/filename"))
mp.commandv("playlist-move", target, 999)
end)
</pre>

<p>

</p>

<p>
a_rcfill.lua</p>

<pre data-language="plain">
-- relative cache refill
-- sets cache-pause-wait based on how fast the playback and download speed is

local function set_pause(_, incache)
if not incache then return end

-- rate of bytes incoming
local ds = mp.get_property_native("cache-speed")
if not ds then return end

-- rate of bytes consumed * 2
local kbc = (mp.get_property_native("audio-bitrate") or 0) + (mp.get_property_native("video-bitrate") or 0)
kbc = (kbc/8) * (mp.get_property_native("speed") or 1) * 3

local secs = math.min(kbc/ds, 20)
if secs &lt; 1 then secs = 2 end

mp.set_property("file-local-options/cache-pause-wait", secs)
mp.osd_message("buffering " .. math.floor(secs) .. " secs...")
end

local function jump_to_ecache(amt)
if not amt then return end
local endtime = mp.get_property_native("demuxer-cache-time")
if not endtime then return end
mp.commandv("seek", endtime - amt, "absolute")
mp.osd_message("jumped to realtime-" .. amt .. "s")
end


mp.observe_property("paused-for-cache", "native", set_pause)
mp.register_script_message("jump-to-ecache", jump_to_ecache)
</pre>

<p>

</p>

<p>
a_titlebar.lua</p>

<pre data-language="plain">
mp.set_property("user-data/dynatitle-default", mp.get_property("title") or "mpv")


local function title_update()
if not mp.get_property_native("media-title") then
mp.set_property("title", mp.get_property_native("user-data/dynatitle-default"))
return
end

local pl = mp.get_property_native("playlist-pos")
if pl ~= -1 then pl = mp.get_property_native("playlist-count") - pl - 1 end

local tr = mp.get_property_native("playtime-remaining")
if not tr then
-- file currently loading
-- since this is a slow changing value, we can just set this literally
local disp = ""
if pl ~= -1 then
disp = "( " .. pl .. " files remaining )"
end
mp.set_property("title", "loading ${media-title} " .. disp)
return
end


local progress = "${percent-pos} "
if tr &lt; 100 then
local emg = "-"
if pl &lt; 1 then emg = "-!" end
progress = emg .. "${user-data/playtime-remaining-seconds} "
end

if mp.get_property_native("paused-for-cache") then
progress = "B${cache-buffering-state} "
end

local netspeed = ""
if mp.get_property_native("demuxer-via-network") then
netspeed = "${cache-speed} "
end

local domainlabel = ""
if mp.get_property_native("user-data/domain-path") then
domainlabel = "via ${user-data/domain-path} "
end


mp.set_property("title", "${?pause==yes:P}" .. progress .. netspeed .. "${media-title} " .. domainlabel)
end

mp.observe_property("percent-pos", "native", title_update)
mp.observe_property("cache-buffering-state", "native", title_update)
mp.register_event("start-file", title_update)
mp.register_event("end-file", title_update)
mp.register_event("playback-restart", title_update)
mp.add_periodic_timer(5, title_update)
</pre>

<p>

</p>


<p><a href="https://hackerpublicradio.org/eps/hpr4585/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4584: Recording a show, and crappy audio]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.



I record on a couple of earbuds, and a Zoom Essential microphone, and compare audio quality.









Wikipedia : Microphone










Zoom Essential mic










Zoom Essential mic specs










Tozo Open Ear Earbuds wit...]]></description>
<link>https://tsecurity.de/de/3311155/it+sicherheit/it+podcasts/hpr4584+recording+a+show+and+crappy+audio/</link>
<pubDate>Thu, 26 Feb 2026 01:02:07 +0100</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>

<p>

I record on a couple of earbuds, and a Zoom Essential microphone, and compare audio quality.
</p>

<p>

</p>

<p>

<a href="https://en.wikipedia.org/wiki/Microphone" rel="noopener noreferrer" target="_blank" data-darkreader-inline-color="">
Wikipedia : Microphone</a>

</p>

<p>

</p>

<p>

<a href="https://zoomcorp.com/en/us/handheld-recorders/handheld-recorders/h1essential/" rel="noopener noreferrer" target="_blank" data-darkreader-inline-color="">
Zoom Essential mic</a>

</p>

<p>

</p>

<p>

<a href="https://www.thomannmusic.com/zoom_h1essential.htm" rel="noopener noreferrer" target="_blank" data-darkreader-inline-color="">
Zoom Essential mic specs</a>

</p>

<p>

</p>

<p>

<a href="https://www.tozostore.com/products/open-buds?variant=45649557618977%20%22Tozo%20Open%20Ear%20Earbuds%20with%20mic%22" rel="noopener noreferrer" target="_blank" data-darkreader-inline-color="">
Tozo Open Ear Earbuds with mic</a>

</p>

<p>

</p>

<p>

<a href="https://www.soundcore.com/products/soundcore-v20i?variant=44458194436286" rel="noopener noreferrer" target="_blank" data-darkreader-inline-color="">
Soundcore Open Ear Earbuds with mic</a>

</p>

<p>

</p>

<p>

Axet Audio Recorder : Alternative install F-droid no longer hosts this Android app Original app, now a 404 error
</p>

<p>

</p>

<p>

<a href="https://hackerpublicradio.org/eps/hpr4584/hpr4584_image_1.png">
<img src="https://hackerpublicradio.org/eps/hpr4584/hpr4584_image_1_tn.png">
</a>

</p>

<p>

</p>

<p>

<a href="https://fdroid.gitlab.io/jekyll-fdroid/packages/com.github.axet.audiorecorder%20%22Axet%20Audio%20Recorder%20-%20404%20page%22" rel="noopener noreferrer" target="_blank" data-darkreader-inline-color="">
Axet Audio Recorder : 404 page</a>

</p>

<p>

</p>

<p>

Axet Audio Recorder : v3.5.23 released 2025-08-16T12:36:09.841Z
</p>

<p>

</p>

<p>

<a href="https://gitlab.com/axet/android-audio-recorder/-/releases/audiorecorder-3.5.23%20%22%22" rel="noopener noreferrer" target="_blank" data-darkreader-inline-color="">
Axet Audio Recorder : v3.5.23 release page</a>

</p>

<p>

</p>

<p>

<a href="https://gitlab.com/-/project/2236356/uploads/c2e72410dea81f46ba0f0576e91ed10e/audiorecorder-universal-3.5.23-release.apk" rel="noopener noreferrer" target="_blank" data-darkreader-inline-color="">
Axet Audio Recorder : v3.5.23 apk file</a>

</p>

<p>

</p>

<p>

<a href="https://f-droid.org/packages/dev.imranr.obtainium.fdroid" rel="noopener noreferrer" target="_blank" data-darkreader-inline-color="">
F-droid : Obtainium</a>

</p>

<p>

</p>

<p>

<a href="https://hackerpublicradio.org/eps/hpr4584/hpr4584_image_2.png">
<img src="https://hackerpublicradio.org/eps/hpr4584/hpr4584_image_2_tn.png">
</a>

</p>

<p>

</p>

<p>

<a href="https://hackerpublicradio.org/eps/hpr4584/hpr4584_image_3.png">
<img src="https://hackerpublicradio.org/eps/hpr4584/hpr4584_image_3_tn.png">
</a>

</p>


<p><a href="https://hackerpublicradio.org/eps/hpr4584/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4583: Nuclear Reactor Technology - Ep 7 Small Modular Reactors]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.


01 Introduction

This episode is the seventh in an 8 part series on nuclear reactor technology. 




In this episode we will describe a topic which has been in the news in recent years, which is "small modular reactors", or SMRs for short.




03...]]></description>
<link>https://tsecurity.de/de/3308432/it+sicherheit/it+podcasts/hpr4583+nuclear+reactor+technology+-+ep+7+small+modular+reactors/</link>
<pubDate>Wed, 25 Feb 2026 01:02:23 +0100</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>

<p>
01 Introduction</p>
<p>
This episode is the seventh in an 8 part series on nuclear reactor technology. </p>
<p>
<br>
</p>
<p>
In this episode we will describe a topic which has been in the news in recent years, which is "small modular reactors", or SMRs for short.</p>
<p>
<br>
</p>
<p>
03 What is an SMR?</p>
<p>
Basic Definition</p>
<p>
A small modular reactor is a nuclear reactor that is designed to be largely built in a factory and subject to as little on-site assembly as possible.</p>
<p>
The main goal is to lower costs by reducing construction times and allowing a more rapid start of return on investment.</p>
<p>
<br>
</p>
<p>
04 Sized Based Definition</p>
<p>
Some people put a numerical size limit on SMRs, saying that they must be no larger than 300 MW to qualify as an SMR.</p>
<p>
However this limit is not universally accepted, and not all SMR designs fall within this arbitrary limit.</p>
<p>
I will ignore this numerical limit and just consider anything to be an SMR if it meets the criteria of being largely built in a factory with minimal on-site assembly.</p>
<p>
<br>
</p>
<p>
05 The Actual Goal of the SMR Idea</p>
<p>
The actual goal of the SMR idea is to build reactors rapidly and efficiently on more or less an assembly line basis rather than hand crafting each one.</p>
<p>
One engineer in the nuclear industry has compared building reactors to building ships.</p>
<p>
Traditional shipbuilding techniques involved assembling each ship from the keel up on the slipways from individual components.</p>
<p>
06</p>
<p>
Newer shipbuilding techniques assemble ships as separate "blocks" inside factory-like buildings and then join completed blocks together in a final assembly stage.</p>
<p>
This requires careful planning and tight quality control, but it results in building ships much more rapidly and economically.</p>
<p>
This engineer said that SMRs are attempting to bring this newer way of doing things to the nuclear reactor industry as well. </p>
<p>
<br>
</p>
<p>
07 SMR Categories - Small Versus Micro</p>
<p>
08 Small SMRs</p>
<p>
09 Small SMRs and Small Grids</p>
<p>
10 Micro SMRs for Micro Loads</p>
<p>
13 Micro SMRs for Large Industry</p>
<p>
14 SMRs to Power Data Centres</p>
<p>
<br>
</p>
<p>
<br>
</p>
<p>
15 What's This Nonsense About "Micro Small Modular Reactor" You Ask?</p>
<p>
17 Small Reactors and Modular Reactors That Are Not SMRs</p>
<p>
20 Standard Versus Proprietary Fuel</p>
<p>
<br>
</p>
<p>
23 Where SMRs are Currently Being Built</p>
<p>
24 HTR-PM in China</p>
<p>
28 Repurposed Ship Reactors in Russia</p>
<p>
31 300 MW BWR in Canada</p>
<p>
33 470 MW PWR in UK</p>
<p>
35 25 MW PWR in Argentina</p>
<p>
37 Various Experimental SMRs</p>
<p>
38 Modular Large Reactors</p>
<p>
<br>
</p>
<p>
40 Conclusion</p>
<p>
SMRs are a new trend in nuclear reactor design.</p>
<p>
However, they are really two different things which fill two different needs.</p>
<p>
<br>
</p>
<p>
One style is intended to adopt designs which allow for more rapid construction with more of the work being done in the factory and less on the construction site, with the overall goal of reducing costs.</p>
<p>
The other style is to provide very small reactors to power remote communities and mines, or to provide process heat to large industries.</p>
<p>
<br>
</p>
<p>
The first SMRs are in operation or under construction.</p>
<p>
The most promising grid scale designs at present are simply scaled down and simplified conventional designs that use standard commercial fuel.</p>
<p>
Larger reactors will incorporate modular construction techniques, blurring the lines between them and SMRs.</p>
<p>
<br>
</p>
<p>
In the next episode we will talk about future reactor technologies, particularly what are referred to as "Generation IV" reactors.</p>
<p>
<br>
</p>


<p><a href="https://hackerpublicradio.org/eps/hpr4583/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4582: Hackerpublic Radio New Years Eve Show 2026 Episode 1]]></title>
<description><![CDATA[This show has been flagged as Explicit by the host.



Hackerpublic Radio New Years Eve Show 2026












Episode 1








Facebook 









https://www.facebook.com/









LinkedIn








linkedin.com/








Matrix









https://matrix.org/

...]]></description>
<link>https://tsecurity.de/de/3306069/it+sicherheit/it+podcasts/hpr4582+hackerpublic+radio+new+years+eve+show+2026+episode+1/</link>
<pubDate>Tue, 24 Feb 2026 01:02:34 +0100</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Explicit by the host.</p>

<p>

Hackerpublic Radio New Years Eve Show 2026
</p>

<p>

</p>

<p>

</p>

<p>

Episode 1
</p>

<p>

</p>

<p>

Facebook 
</p>

<p>

</p>

<p>

<a href="https://www.facebook.com/" rel="noopener noreferrer" target="_blank">
https://www.facebook.com/</a>

</p>

<p>

</p>

<p>

LinkedIn
</p>

<p>

</p>

<p>

linkedin.com/
</p>

<p>

</p>

<p>

Matrix
</p>

<p>

</p>

<p>

<a href="https://matrix.org/" rel="noopener noreferrer" target="_blank">
https://matrix.org/</a>

</p>

<p>

</p>

<p>

Twitter / X
</p>

<p>

</p>

<p>

<a href="https://x.com/home" rel="noopener noreferrer" target="_blank">
https://x.com/home</a>

</p>

<p>

</p>

<p>

Telegram
</p>

<p>

</p>

<p>

<a href="https://telegram.org/" rel="noopener noreferrer" target="_blank">
https://telegram.org/</a>

</p>

<p>

</p>

<p>

Mastadon
</p>

<p>

</p>

<p>

<a href="https://joinmastodon.org/" rel="noopener noreferrer" target="_blank">
https://joinmastodon.org/</a>

</p>

<p>

</p>

<p>

India
</p>

<p>

</p>

<p>

<a href="https://www.incredibleindia.gov.in/en" rel="noopener noreferrer" target="_blank">
https://www.incredibleindia.gov.in/en</a>

</p>

<p>

</p>

<p>

Poland
</p>

<p>

</p>

<p>

<a href="https://www.poland.travel/en/" rel="noopener noreferrer" target="_blank">
https://www.poland.travel/en/</a>

</p>

<p>

</p>

<p>

Hacker Public Radio
</p>

<p>

</p>

<p>

<a href="https://hackerpublicradio.org/" rel="noopener noreferrer" target="_blank">
https://hackerpublicradio.org/</a>

</p>

<p>

</p>

<p>

Mumble
</p>

<p>

</p>

<p>

<a href="https://www.mumble.info/" rel="noopener noreferrer" target="_blank">
https://www.mumble.info/</a>

</p>

<p>

</p>

<p>

Linux Lugcast
</p>

<p>

</p>

<p>

<a href="https://linuxlugcast.com/" rel="noopener noreferrer" target="_blank">
https://linuxlugcast.com/</a>

</p>

<p>

</p>

<p>

Jitsi 
</p>

<p>

</p>

<p>

<a href="https://jitsi.org/" rel="noopener noreferrer" target="_blank">
https://jitsi.org/</a>

</p>

<p>

</p>

<p>

Ton Roosendaal (former Blender CEO)
</p>

<p>

</p>

<p>

<a href="https://en.wikipedia.org/wiki/Ton_Roosendaal" rel="noopener noreferrer" target="_blank">
https://en.wikipedia.org/wiki/Ton_Roosendaal</a>

</p>

<p>

<a href="https://www.blender.org/press/blender-foundation-announces-new-board-and-executive-director/" rel="noopener noreferrer" target="_blank">
https://www.blender.org/press/blender-foundation-announces-new-board-and-executive-director/</a>

</p>

<p>

</p>

<p>

Linus Torvalds
</p>

<p>

</p>

<p>

<a href="https://github.com/torvalds" rel="noopener noreferrer" target="_blank">
https://github.com/torvalds</a>

</p>

<p>

</p>

<p>

Hack A Day 
</p>

<p>

</p>

<p>

<a href="https://hackaday.com/" rel="noopener noreferrer" target="_blank">
https://hackaday.com/</a>

</p>

<p>

</p>

<p>

Terry Pratchett
</p>

<p>

</p>

<p>

<a href="https://terrypratchett.com/" rel="noopener noreferrer" target="_blank">
https://terrypratchett.com/</a>

</p>

<p>

</p>

<p>

UTC
</p>

<p>

</p>

<p>

<a href="https://www.timeanddate.com/time/aboututc.html" rel="noopener noreferrer" target="_blank">
https://www.timeanddate.com/time/aboututc.html</a>

</p>

<p>

</p>

<p>

DMCA
</p>

<p>

</p>

<p>

<a href="https://www.eff.org/issues/dmca" rel="noopener noreferrer" target="_blank">
https://www.eff.org/issues/dmca</a>

</p>

<p>

</p>

<p>

Spotify
</p>

<p>

</p>

<p>

<a href="https://open.spotify.com/" rel="noopener noreferrer" target="_blank">
https://open.spotify.com/</a>

</p>

<p>

</p>

<p>

Youtube
</p>

<p>

</p>

<p>

<a href="https://www.youtube.com/" rel="noopener noreferrer" target="_blank">
https://www.youtube.com/</a>

</p>

<p>

</p>

<p>

Peertube
</p>

<p>

</p>

<p>

<a href="https://joinpeertube.org/" rel="noopener noreferrer" target="_blank">
https://joinpeertube.org/</a>

</p>

<p>

</p>

<p>

Day Trading
</p>

<p>

</p>

<p>

<a href="https://www.investopedia.com/articles/trading/05/011705.asp" rel="noopener noreferrer" target="_blank">
https://www.investopedia.com/articles/trading/05/011705.asp</a>

</p>

<p>

<a href="https://www.nerdwallet.com/investing/best/online-brokers-platforms-for-day-trading" rel="noopener noreferrer" target="_blank">
https://www.nerdwallet.com/investing/best/online-brokers-platforms-for-day-trading</a>

</p>

<p>

</p>

<p>

Ogg Camp
</p>

<p>

</p>

<p>

<a href="https://www.oggcamp.org/" rel="noopener noreferrer" target="_blank">
https://www.oggcamp.org/</a>

</p>

<p>

</p>

<p>

FosDem
</p>

<p>

</p>

<p>

<a href="https://fosdem.org/2026/" rel="noopener noreferrer" target="_blank">
https://fosdem.org/2026/</a>

</p>

<p>

</p>

<p>

Brussels
</p>

<p>

</p>

<p>

<a href="https://www.visit.brussels/en/visitors" rel="noopener noreferrer" target="_blank">
https://www.visit.brussels/en/visitors</a>

</p>

<p>

</p>

<p>

Ohio Linux Fest
</p>

<p>

</p>

<p>

<a href="https://olfconference.org/" rel="noopener noreferrer" target="_blank">
https://olfconference.org/</a>

</p>

<p>

</p>

<p>

Jacksonville, Florida
</p>

<p>

</p>

<p>

<a href="https://www.visitjacksonville.com/" rel="noopener noreferrer" target="_blank">
https://www.visitjacksonville.com/</a>

</p>

<p>

</p>

<p>

Ebike
</p>

<p>

</p>

<p>

<a href="https://www.bikeradar.com/advice/buyers-guides/what-is-an-electric-bike" rel="noopener noreferrer" target="_blank">
https://www.bikeradar.com/advice/buyers-guides/what-is-an-electric-bike</a>

</p>

<p>

</p>

<p>

Electric Scooter
</p>

<p>

</p>

<p>

<a href="https://engineerfix.com/what-is-an-electric-scooter-and-how-does-it-work/" rel="noopener noreferrer" target="_blank">
https://engineerfix.com/what-is-an-electric-scooter-and-how-does-it-work/</a>

</p>

<p>

</p>

<p>

Elliptical 
</p>

<p>

</p>

<p>

<a href="https://ellipticalking.com/what-is-an-elliptical/" rel="noopener noreferrer" target="_blank">
https://ellipticalking.com/what-is-an-elliptical/</a>

</p>

<p>

</p>

<p>

Panera Bread 
</p>

<p>

</p>

<p>

<a href="https://www.panerabread.com/" rel="noopener noreferrer" target="_blank">
https://www.panerabread.com/</a>

</p>

<p>

</p>

<p>

Tech and Coffee 
</p>

<p>

</p>

<p>

<a href="https://techandcoffee.info/" rel="noopener noreferrer" target="_blank">
https://techandcoffee.info/</a>

</p>

<p>

</p>

<p>

HTC Phones
</p>

<p>

</p>

<p>

<a href="https://www.htc.com/us/smartphones-learn/" rel="noopener noreferrer" target="_blank">
https://www.htc.com/us/smartphones-learn/</a>

</p>

<p>

</p>

<p>

Apple
</p>

<p>

</p>

<p>

<a href="https://www.apple.com/" rel="noopener noreferrer" target="_blank">
https://www.apple.com/</a>

</p>

<p>

</p>

<p>

Windows 
</p>

<p>

</p>

<p>

<a href="https://www.microsoft.com/en-us/windows" rel="noopener noreferrer" target="_blank">
https://www.microsoft.com/en-us/windows</a>

</p>

<p>

</p>

<p>

LG
</p>

<p>

</p>

<p>

<a href="https://www.lg.com/us/" rel="noopener noreferrer" target="_blank">
https://www.lg.com/us/</a>

</p>

<p>

</p>

<p>

2FA (2 Factor Authentication)
</p>

<p>

</p>

<p>

<a href="https://www.investopedia.com/terms/t/twofactor-authentication-2fa.asp" rel="noopener noreferrer" target="_blank">
https://www.investopedia.com/terms/t/twofactor-authentication-2fa.asp</a>

</p>

<p>

</p>

<p>

Symantec VIP
</p>

<p>

</p>

<p>

<a href="https://vip.symantec.com/" rel="noopener noreferrer" target="_blank">
https://vip.symantec.com/</a>

</p>

<p>

</p>

<p>

Android
</p>

<p>

</p>

<p>

<a href="https://www.android.com/" rel="noopener noreferrer" target="_blank">
https://www.android.com/</a>

</p>

<p>

</p>

<p>

Discord
</p>

<p>

</p>

<p>

<a href="https://discord.com/" rel="noopener noreferrer" target="_blank">
https://discord.com/</a>

</p>

<p>

</p>

<p>

NewPipe
</p>

<p>

</p>

<p>

<a href="https://newpipe.net/" rel="noopener noreferrer" target="_blank">
https://newpipe.net/</a>

</p>

<p>

</p>

<p>

iCloud
</p>

<p>

</p>

<p>

<a href="https://www.icloud.com/" rel="noopener noreferrer" target="_blank">
https://www.icloud.com/</a>

</p>

<p>

</p>

<p>

Bloomberg Terminal
</p>

<p>

</p>

<p>

<a href="https://www.bloomberg.com/professional/terminal-introduction/" rel="noopener noreferrer" target="_blank">
https://www.bloomberg.com/professional/terminal-introduction/</a>

</p>

<p>

</p>

<p>

Linux Mint
</p>

<p>

</p>

<p>

<a href="https://linuxmint.com/" rel="noopener noreferrer" target="_blank">
https://linuxmint.com/</a>

</p>

<p>

</p>

<p>

Suse
</p>

<p>

</p>

<p>

<a href="https://www.suse.com/" rel="noopener noreferrer" target="_blank">
https://www.suse.com/</a>

</p>

<p>

</p>

<p>

EndeavourOS
</p>

<p>

</p>

<p>

<a href="https://endeavouros.com/" rel="noopener noreferrer" target="_blank">
https://endeavouros.com/</a>

</p>

<p>

</p>

<p>

Pop OS
</p>

<p>

</p>

<p>

<a href="https://system76.com/pop/" rel="noopener noreferrer" target="_blank">
https://system76.com/pop/</a>

</p>

<p>

</p>

<p>

Debian
</p>

<p>

</p>

<p>

<a href="https://www.debian.org/" rel="noopener noreferrer" target="_blank">
https://www.debian.org/</a>

</p>

<p>

</p>

<p>

Red Hat
</p>

<p>

</p>

<p>

<a href="https://www.redhat.com/en" rel="noopener noreferrer" target="_blank">
https://www.redhat.com/en</a>

</p>

<p>

</p>

<p>

EB  / Electronics Boutique / EB Games)
</p>

<p>

</p>

<p>

<a href="https://en.wikipedia.org/wiki/EB_Games" rel="noopener noreferrer" target="_blank">
https://en.wikipedia.org/wiki/EB_Games</a>

</p>

<p>

</p>

<p>

RockBox
</p>

<p>

</p>

<p>

<a href="https://www.rockbox.org/" rel="noopener noreferrer" target="_blank">
https://www.rockbox.org/</a>

</p>

<p>

</p>

<p>

Hi Fi Walker
</p>

<p>

</p>

<p>

<a href="https://hifiwalker.com/" rel="noopener noreferrer" target="_blank">
https://hifiwalker.com/</a>

</p>

<p>

</p>

<p>

MPEG 
</p>

<p>

</p>

<p>

<a href="https://www.mpeg.org/" rel="noopener noreferrer" target="_blank">
https://www.mpeg.org/</a>

</p>

<p>

</p>

<p>

MP3
</p>

<p>

</p>

<p>

<a href="https://www.magix.com/us/music-editing/audio-formats/mp3/" rel="noopener noreferrer" target="_blank">
https://www.magix.com/us/music-editing/audio-formats/mp3/</a>

</p>

<p>

</p>

<p>

MicroSD Card
</p>

<p>

</p>

<p>

<a href="https://www.businessinsider.com/reference/what-is-a-micro-sd-card" rel="noopener noreferrer" target="_blank">
https://www.businessinsider.com/reference/what-is-a-micro-sd-card</a>

</p>

<p>

</p>

<p>

RSS Feed
</p>

<p>

</p>

<p>

<a href="https://en.wikipedia.org/wiki/RSS" rel="noopener noreferrer" target="_blank">
https://en.wikipedia.org/wiki/RSS</a>

</p>

<p>

<a href="https://www.reddit.com/r/explainlikeimfive/comments/15kfcsm/eli5_what_is_rss_feed_and_how_is_it_useful/" rel="noopener noreferrer" target="_blank">
https://www.reddit.com/r/explainlikeimfive/comments/15kfcsm/eli5_what_is_rss_feed_and_how_is_it_useful/</a>

</p>

<p>

</p>

<p>

YouTube DL
</p>

<p>

</p>

<p>

<a href="https://ytdl-org.github.io/youtube-dl/index.html" rel="noopener noreferrer" target="_blank">
https://ytdl-org.github.io/youtube-dl/index.html</a>

</p>

<p>

</p>

<p>

Jupiter Extras Podcast
</p>

<p>

</p>

<p>

<a href="https://www.jupiterbroadcasting.com/show/jupiter-extras/" rel="noopener noreferrer" target="_blank">
https://www.jupiterbroadcasting.com/show/jupiter-extras/</a>

</p>

<p>

</p>

<p>

Late Night Linux Podcast
</p>

<p>

</p>

<p>

<a href="https://latenightlinux.com/" rel="noopener noreferrer" target="_blank">
https://latenightlinux.com/</a>

</p>

<p>

</p>

<p>

Sound Show Podcast
</p>

<p>

</p>

<p>

<a href="https://grokipedia.com/page/the_sound_show" rel="noopener noreferrer" target="_blank">
https://grokipedia.com/page/the_sound_show</a>

</p>

<p>

</p>

<p>

Linux Lugcast
</p>

<p>

</p>

<p>

<a href="https://linuxlugcast.com/" rel="noopener noreferrer" target="_blank">
https://linuxlugcast.com/</a>

</p>

<p>

</p>

<p>

Tux Jam
</p>

<p>

</p>

<p>

<a href="https://tuxjam.otherside.network/" rel="noopener noreferrer" target="_blank">
https://tuxjam.otherside.network/</a>

</p>

<p>

</p>

<p>

Hacker Public Radio
</p>

<p>

</p>

<p>

<a href="https://hackerpublicradio.org/" rel="noopener noreferrer" target="_blank">
https://hackerpublicradio.org/</a>

</p>

<p>

</p>

<p>

3D Printing
</p>

<p>

</p>

<p>

<a href="https://3dprinting.com/what-is-3d-printing/" rel="noopener noreferrer" target="_blank">
https://3dprinting.com/what-is-3d-printing/</a>

</p>

<p>

</p>

<p>

Raspberry Pi
</p>

<p>

</p>

<p>

<a href="https://www.raspberrypi.com/" rel="noopener noreferrer" target="_blank">
https://www.raspberrypi.com/</a>

</p>

<p>

</p>

<p>

Nextcloud
</p>

<p>

</p>

<p>

<a href="https://nextcloud.com/" rel="noopener noreferrer" target="_blank">
https://nextcloud.com/</a>

</p>

<p>

</p>

<p>

Jellyfin
</p>

<p>

</p>

<p>

<a href="https://jellyfin.org/" rel="noopener noreferrer" target="_blank">
https://jellyfin.org/</a>

</p>

<p>

</p>

<p>

DVD Ripping
</p>

<p>

</p>

<p>

<a href="https://www.tomshardware.com/software/how-to-rip-your-dvds-with-handbrake-preserve-your-dvd-library-before-bit-rot-claims-another-victim" rel="noopener noreferrer" target="_blank">
https://www.tomshardware.com/software/how-to-rip-your-dvds-with-handbrake-preserve-your-dvd-library-before-bit-rot-claims-another-victim</a>

</p>

<p>

</p>

<p>

Port Forwarding
</p>

<p>

</p>

<p>

<a href="https://www.noip.com/support/knowledgebase/general-port-forwarding-guide" rel="noopener noreferrer" target="_blank">
https://www.noip.com/support/knowledgebase/general-port-forwarding-guide</a>

</p>

<p>

</p>

<p>

NginX 
</p>

<p>

</p>

<p>

<a href="https://nginx.org/" rel="noopener noreferrer" target="_blank">
https://nginx.org/</a>

</p>

<p>

</p>

<p>

LiquidSoap
</p>

<p>

</p>

<p>

<a href="https://www.liquidsoap.info/doc-dev/" rel="noopener noreferrer" target="_blank">
https://www.liquidsoap.info/doc-dev/</a>

</p>

<p>

</p>

<p>

IceCast
</p>

<p>

</p>

<p>

<a href="https://icecast.org/" rel="noopener noreferrer" target="_blank">
https://icecast.org/</a>

</p>

<p>

</p>

<p>

DYN DNS
</p>

<p>

</p>

<p>

<a href="https://account.dyn.com/" rel="noopener noreferrer" target="_blank">
https://account.dyn.com/</a>

</p>

<p>

</p>

<p>

Etherpad
</p>

<p>

</p>

<p>

<a href="https://etherpad.org/" rel="noopener noreferrer" target="_blank">
https://etherpad.org/</a>

</p>

<p>

</p>

<p>

Audio Bookshelf
</p>

<p>

</p>

<p>

<a href="https://www.audiobookshelf.org/" rel="noopener noreferrer" target="_blank">
https://www.audiobookshelf.org/</a>

</p>

<p>

</p>

<p>

Funk Whale
</p>

<p>

</p>

<p>

<a href="https://www.funkwhale.audio/" rel="noopener noreferrer" target="_blank">
https://www.funkwhale.audio/</a>

</p>

<p>

</p>

<p>

Pixel Art
</p>

<p>

</p>

<p>

<a href="https://www.sandromaglione.com/articles/getting-started-with-pixel-art" rel="noopener noreferrer" target="_blank">
https://www.sandromaglione.com/articles/getting-started-with-pixel-art</a>

</p>

<p>

</p>

<p>

Aseprite
</p>

<p>

</p>

<p>

<a href="https://www.aseprite.org/" rel="noopener noreferrer" target="_blank">
https://www.aseprite.org/</a>

</p>

<p>

</p>

<p>

Krita
</p>

<p>

</p>

<p>

<a href="https://krita.org/en/" rel="noopener noreferrer" target="_blank">
https://krita.org/en/</a>

</p>

<p>

</p>

<p>

RPG Maker 
</p>

<p>

</p>

<p>

<a href="https://www.rpgmakerweb.com/" rel="noopener noreferrer" target="_blank">
https://www.rpgmakerweb.com/</a>

</p>

<p>

</p>

<p>

Stable Diffusion
</p>

<p>

</p>

<p>

<a href="https://stablediffusionweb.com/" rel="noopener noreferrer" target="_blank">
https://stablediffusionweb.com/</a>

</p>

<p>

</p>

<p>

GIMP
</p>

<p>

</p>

<p>

<a href="https://www.gimp.org/" rel="noopener noreferrer" target="_blank">
https://www.gimp.org/</a>

</p>

<p>

</p>

<p>

Balatro
</p>

<p>

</p>

<p>

<a href="https://www.playbalatro.com/" rel="noopener noreferrer" target="_blank">
https://www.playbalatro.com/</a>

</p>

<p>

</p>

<p>

Magic The Gathering Balatro MOD
</p>

<p>

</p>

<p>

<a href="https://balatromods.miraheze.org/wiki/Magic:_the_Jokering" rel="noopener noreferrer" target="_blank">
https://balatromods.miraheze.org/wiki/Magic:_the_Jokering</a>

</p>

<p>

</p>

<p>

Yoshi 
</p>

<p>

</p>

<p>

<a href="https://www.mariowiki.com/Yoshi" rel="noopener noreferrer" target="_blank">
https://www.mariowiki.com/Yoshi</a>

</p>

<p>

</p>

<p>

Gungeon (Enter the Gungeon)
</p>

<p>

</p>

<p>

<a href="https://enterthegungeon.fandom.com/wiki/Enter_the_Gungeon_Wiki" rel="noopener noreferrer" target="_blank">
https://enterthegungeon.fandom.com/wiki/Enter_the_Gungeon_Wiki</a>

</p>

<p>

</p>

<p>

Clover Pit
</p>

<p>

</p>

<p>

<a href="https://store.steampowered.com/app/3314790/CloverPit/" rel="noopener noreferrer" target="_blank">
https://store.steampowered.com/app/3314790/CloverPit/</a>

</p>

<p>

</p>

<p>

Trackball
</p>

<p>

</p>

<p>

<a href="https://www.techtarget.com/whatis/definition/trackball" rel="noopener noreferrer" target="_blank">
https://www.techtarget.com/whatis/definition/trackball</a>

</p>

<p>

</p>

<p>

Humble Bundle
</p>

<p>

</p>

<p>

<a href="https://www.humblebundle.com/" rel="noopener noreferrer" target="_blank">
https://www.humblebundle.com/</a>

</p>

<p>

</p>

<p>

Dungeons / Dungeons II / Dungeons III 
</p>

<p>

</p>

<p>

<a href="http://www.realmforgestudios.com/" rel="noopener noreferrer" target="_blank">
http://www.realmforgestudios.com/</a>

</p>

<p>

</p>

<p>

Deltarune
</p>

<p>

</p>

<p>

<a href="https://deltarune.com/" rel="noopener noreferrer" target="_blank">
https://deltarune.com/</a>

</p>

<p>

</p>

<p>

Undertale 
</p>

<p>

</p>

<p>

<a href="https://undertale.com/" rel="noopener noreferrer" target="_blank">
https://undertale.com/</a>

</p>

<p>

</p>

<p>

DNS
</p>

<p>

</p>

<p>

<a href="https://www.cloudflare.com/learning/dns/what-is-dns/" rel="noopener noreferrer" target="_blank">
https://www.cloudflare.com/learning/dns/what-is-dns/</a>

</p>

<p>

</p>

<p>

Universal Studios
</p>

<p>

</p>

<p>

<a href="https://www.universalorlando.com/web/en/us/theme-parks/universal-studios-florida" rel="noopener noreferrer" target="_blank">
https://www.universalorlando.com/web/en/us/theme-parks/universal-studios-florida</a>

</p>

<p>

</p>

<p>

Electric Blanket
</p>

<p>

</p>

<p>

<a href="https://www.silentnight.co.uk/blog/guides/tips-for-using-your-electric-blanket" rel="noopener noreferrer" target="_blank">
https://www.silentnight.co.uk/blog/guides/tips-for-using-your-electric-blanket</a>

</p>

<p>

</p>

<p>

Electric Vests
</p>

<p>

</p>

<p>

<a href="https://www.fieldandstream.com/outdoor-gear/hunting/hunting-apparel-and-accessories/best-heated-vests" rel="noopener noreferrer" target="_blank">
https://www.fieldandstream.com/outdoor-gear/hunting/hunting-apparel-and-accessories/best-heated-vests</a>

</p>

<p>

</p>

<p>

LG Neckband Headphones
</p>

<p>

</p>

<p>

<a href="https://www.lg.com/us/neckbands/view-all" rel="noopener noreferrer" target="_blank">
https://www.lg.com/us/neckbands/view-all</a>

</p>

<p>

</p>

<p>

Lotus Notes
</p>

<p>

</p>

<p>

<a href="https://en.wikipedia.org/wiki/HCL_Notes" rel="noopener noreferrer" target="_blank">
https://en.wikipedia.org/wiki/HCL_Notes</a>

</p>

<p>

</p>

<p>

John Deer
</p>

<p>

</p>

<p>

<a href="https://www.deere.com/en/" rel="noopener noreferrer" target="_blank">
https://www.deere.com/en/</a>

</p>

<p>

</p>

<p>

Dairy Queen
</p>

<p>

</p>

<p>

<a href="https://www.dairyqueen.com/en-us/" rel="noopener noreferrer" target="_blank">
https://www.dairyqueen.com/en-us/</a>

</p>

<p>

</p>

<p>

Alco (retail store)
</p>

<p>

</p>

<p>

<a href="https://en.wikipedia.org/wiki/ALCO_Stores" rel="noopener noreferrer" target="_blank">
https://en.wikipedia.org/wiki/ALCO_Stores</a>

</p>

<p>

</p>

<p>

AMI Pro
</p>

<p>

</p>

<p>

<a href="https://www.computinghistory.org.uk/det/18775/Ami-Pro-for-Windows/" rel="noopener noreferrer" target="_blank">
https://www.computinghistory.org.uk/det/18775/Ami-Pro-for-Windows/</a>

</p>

<p>

</p>

<p>

Disgraphia
</p>

<p>

</p>

<p>

<a href="https://my.clevelandclinic.org/health/diseases/23294-dysgraphia" rel="noopener noreferrer" target="_blank">
https://my.clevelandclinic.org/health/diseases/23294-dysgraphia</a>

</p>

<p>

</p>

<p>

Cursive
</p>

<p>

</p>

<p>

<a href="https://brainspring.com/orton-gillingham-weekly/what-is-cursive-why-is-it-used/" rel="noopener noreferrer" target="_blank">
https://brainspring.com/orton-gillingham-weekly/what-is-cursive-why-is-it-used/</a>

</p>

<p>

</p>

<p>

SUNLU Wood PLA
</p>

<p>

</p>

<p>

<a href="https://store.sunlu.com/collections/wood/products/optimized-wood-pla-3d-printer-filament-1kg-optimized-and-upgraded-wood-texture" rel="noopener noreferrer" target="_blank">
https://store.sunlu.com/collections/wood/products/optimized-wood-pla-3d-printer-filament-1kg-optimized-and-upgraded-wood-texture</a>

</p>

<p>

</p>

<p>

Hobby Lobby
</p>

<p>

</p>

<p>

<a href="https://www.hobbylobby.com/" rel="noopener noreferrer" target="_blank">
https://www.hobbylobby.com/</a>

</p>

<p>

</p>

<p>

Hobby Lobby Branded PLA 
</p>

<p>

</p>

<p>

<a href="https://www.hobbylobby.com/crafts-hobbies/kids-crafts-activities/arts-crafts-supplies/white---3d-printing-filament/p/81250151" rel="noopener noreferrer" target="_blank">
https://www.hobbylobby.com/crafts-hobbies/kids-crafts-activities/arts-crafts-supplies/white---3d-printing-filament/p/81250151</a>

</p>

<p>

</p>

<p>

Hot End
</p>

<p>

</p>

<p>

<a href="https://e3d-online.com/blogs/news/anatomy-of-a-hotend" rel="noopener noreferrer" target="_blank">
https://e3d-online.com/blogs/news/anatomy-of-a-hotend</a>

</p>

<p>

</p>

<p>

2.5 GB Network Switch
</p>

<p>

</p>

<p>

<a href="https://www.servethehome.com/the-ultimate-cheap-2-5gbe-switch-mega-round-up-buyers-guide-qnap-netgear-hasivo-mokerlink-trendnet-zyxel-tp-link/" rel="noopener noreferrer" target="_blank">
https://www.servethehome.com/the-ultimate-cheap-2-5gbe-switch-mega-round-up-buyers-guide-qnap-netgear-hasivo-mokerlink-trendnet-zyxel-tp-link/</a>

</p>

<p>

</p>

<p>

fsck
</p>

<p>

</p>

<p>

<a href="https://linux.die.net/man/8/fsck" rel="noopener noreferrer" target="_blank">
https://linux.die.net/man/8/fsck</a>

</p>

<p>

</p>

<p>

ProxMox
</p>

<p>

</p>

<p>

<a href="https://www.proxmox.com/en/" rel="noopener noreferrer" target="_blank">
https://www.proxmox.com/en/</a>

</p>

<p>

</p>

<p>

Open Media Vault
</p>

<p>

</p>

<p>

<a href="https://www.openmediavault.org/" rel="noopener noreferrer" target="_blank">
https://www.openmediavault.org/</a>

</p>

<p>

</p>

<p>

Readarr
</p>

<p>

</p>

<p>

<a href="https://github.com/Readarr/Readarr" rel="noopener noreferrer" target="_blank">
https://github.com/Readarr/Readarr</a>

</p>

<p>

</p>

<p>

RSYNC
</p>

<p>

</p>

<p>

<a href="https://linux.die.net/man/1/rsync" rel="noopener noreferrer" target="_blank">
https://linux.die.net/man/1/rsync</a>

</p>

<p>

</p>

<p>

Mario Kart T Shirt
</p>

<p>

</p>

<p>

<a href="https://www.nintendo.com/us/store/products/mario-kart-jersey-t-shirt-119900-1/" rel="noopener noreferrer" target="_blank">
https://www.nintendo.com/us/store/products/mario-kart-jersey-t-shirt-119900-1/</a>

</p>

<p>

</p>

<p>

Super Nintendo World
</p>

<p>

</p>

<p>

<a href="https://www.universalorlando.com/web/en/us/epic-universe/worlds/super-nintendo-world" rel="noopener noreferrer" target="_blank">
https://www.universalorlando.com/web/en/us/epic-universe/worlds/super-nintendo-world</a>

</p>

<p>

</p>

<p>

Mario Kart Ride (Universal Studios - Super Nintendo World)
</p>

<p>

</p>

<p>

<a href="https://www.universalorlando.com/web/en/us/things-to-do/rides-attractions/mario-kart-bowsers-challenge" rel="noopener noreferrer" target="_blank">
https://www.universalorlando.com/web/en/us/things-to-do/rides-attractions/mario-kart-bowsers-challenge</a>

</p>

<p>

</p>

<p>

Donkey Kong Country (Universal Studios - Super Nintendo World)
</p>

<p>

</p>

<p>

<a href="https://www.zeldadungeon.net/forum/threads/donkey-kong-themed-area-to-open-at-usj-dec-11-2024.77660/" rel="noopener noreferrer" target="_blank">
https://www.zeldadungeon.net/forum/threads/donkey-kong-themed-area-to-open-at-usj-dec-11-2024.77660/</a>

</p>

<p>

</p>

<p>

Donkey Kong Country (video game)
</p>

<p>

</p>

<p>

<a href="https://donkeykong.fandom.com/wiki/Donkey_Kong_Country" rel="noopener noreferrer" target="_blank">
https://donkeykong.fandom.com/wiki/Donkey_Kong_Country</a>

</p>

<p>

</p>

<p>

Mario Games
</p>

<p>

</p>

<p>

<a href="https://nintendo.fandom.com/wiki/List_of_Mario_games" rel="noopener noreferrer" target="_blank">
https://nintendo.fandom.com/wiki/List_of_Mario_games</a>

</p>

<p>

</p>

<p>

Mario World 2
</p>

<p>

</p>

<p>

<a href="https://www.mariowiki.com/Super_Mario_World_2:_Yoshi%27s_Island" rel="noopener noreferrer" target="_blank">
https://www.mariowiki.com/Super_Mario_World_2:_Yoshi%27s_Island</a>

</p>

<p>

</p>

<p>

Harry Potter Ride
</p>

<p>

</p>

<p>

<a href="https://www.universalorlando.com/web/en/us/things-to-do/rides-attractions/harry-potter-and-the-forbidden-journey" rel="noopener noreferrer" target="_blank">
https://www.universalorlando.com/web/en/us/things-to-do/rides-attractions/harry-potter-and-the-forbidden-journey</a>

</p>

<p>

</p>

<p>

Hagrid’s Magical Creatures Motorbike Adventure
</p>

<p>

</p>

<p>

<a href="https://www.universalorlando.com/web/en/us/things-to-do/rides-attractions/hagrids-magical-creatures-motorbike-adventure" rel="noopener noreferrer" target="_blank">
https://www.universalorlando.com/web/en/us/things-to-do/rides-attractions/hagrids-magical-creatures-motorbike-adventure</a>

</p>

<p>

</p>

<p>

Harry Potter Wands
</p>

<p>

</p>

<p>

<a href="https://www.universalorlando.com/web/en/us/things-to-do/shopping/potter-wands" rel="noopener noreferrer" target="_blank">
https://www.universalorlando.com/web/en/us/things-to-do/shopping/potter-wands</a>

</p>

<p>

</p>

<p>

Harry Potter Wand Holder (3D printable)
</p>

<p>

</p>

<p>

<a href="https://makerworld.com/en/models/917744-wand-stand-harry-potter#profileId-879432" rel="noopener noreferrer" target="_blank">
https://makerworld.com/en/models/917744-wand-stand-harry-potter#profileId-879432</a>

</p>

<p>

</p>

<p>

Bronze PLA 
</p>

<p>

</p>

<p>

<a href="https://www.hatchbox3d.com/products/3d-pla-1kg1-75-brnz" rel="noopener noreferrer" target="_blank">
https://www.hatchbox3d.com/products/3d-pla-1kg1-75-brnz</a>

</p>

<p>

</p>

<p>

Linux Mint
</p>

<p>

</p>

<p>

<a href="https://linuxmint.com/" rel="noopener noreferrer" target="_blank">
https://linuxmint.com/</a>

</p>

<p>

</p>

<p>

Clem (Linux Mint)
</p>

<p>

</p>

<p>

<a href="https://blog.linuxmint.com/?author=1" rel="noopener noreferrer" target="_blank">
https://blog.linuxmint.com/?author=1</a>

</p>

<p>

</p>

<p>

New Harry Potter TV Show
</p>

<p>

</p>

<p>

<a href="https://www.teenvogue.com/story/harry-potter-tv-reboot-hbo-everything-you-need-to-know" rel="noopener noreferrer" target="_blank">
https://www.teenvogue.com/story/harry-potter-tv-reboot-hbo-everything-you-need-to-know</a>

</p>

<p>

</p>

<p>

JK Rowling
</p>

<p>

</p>

<p>

<a href="https://www.jkrowling.com/" rel="noopener noreferrer" target="_blank">
https://www.jkrowling.com/</a>

</p>

<p>

</p>

<p>

HBO
</p>

<p>

</p>

<p>

<a href="https://www.hbomax.com/" rel="noopener noreferrer" target="_blank">
https://www.hbomax.com/</a>

</p>

<p>

</p>

<p>

Iraq
</p>

<p>

</p>

<p>

<a href="https://www.state.gov/countries-areas/iraq" rel="noopener noreferrer" target="_blank">
https://www.state.gov/countries-areas/iraq</a>

</p>

<p>

</p>

<p>

Arcane Casebook  (Author - Dan Willis)
</p>

<p>

</p>

<p>

<a href="https://www.goodreads.com/series/259903-arcane-casebook" rel="noopener noreferrer" target="_blank">
https://www.goodreads.com/series/259903-arcane-casebook</a>

</p>

<p>

</p>

<p>

Altered Carbon (Book)
</p>

<p>

</p>

<p>

<a href="https://elitistbookreviews.com/2018/04/05/altered-carbon/" rel="noopener noreferrer" target="_blank">
https://elitistbookreviews.com/2018/04/05/altered-carbon/</a>

</p>

<p>

</p>

<p>

Arcanum Unbounded (Author -  Brandon Sanderson)
</p>

<p>

</p>

<p>

<a href="https://www.brandonsanderson.com/blogs/blog/introducing-arcanum-unbounded" rel="noopener noreferrer" target="_blank">
https://www.brandonsanderson.com/blogs/blog/introducing-arcanum-unbounded</a>

</p>

<p>

</p>

<p>

Amazon Music
</p>

<p>

</p>

<p>

<a href="https://music.amazon.com/?referrer=https%3A%2F%2Fwww.google.com%2F" rel="noopener noreferrer" target="_blank">
https://music.amazon.com/?referrer=https%3A%2F%2Fwww.google.com%2F</a>

</p>

<p>

</p>

<p>

Richard Pryor
</p>

<p>

</p>

<p>

<a href="https://www.richardpryor.com/" rel="noopener noreferrer" target="_blank">
https://www.richardpryor.com/</a>

</p>

<p>

</p>

<p>

John Pinette
</p>

<p>

</p>

<p>

<a href="https://www.dead-frog.com/comedians/comic/john-pinette" rel="noopener noreferrer" target="_blank">
https://www.dead-frog.com/comedians/comic/john-pinette</a>

</p>

<p>

</p>

<p>

Stormlight Archive 
</p>

<p>

</p>

<p>

<a href="https://www.brandonsanderson.com/pages/the-stormlight-archive-series" rel="noopener noreferrer" target="_blank">
https://www.brandonsanderson.com/pages/the-stormlight-archive-series</a>

</p>

<p>

</p>

<p>

Mistborn Saga
</p>

<p>

</p>

<p>

<a href="https://www.brandonsanderson.com/pages/the-mistborn-saga-the-original-trilogy" rel="noopener noreferrer" target="_blank">
https://www.brandonsanderson.com/pages/the-mistborn-saga-the-original-trilogy</a>

</p>

<p>

</p>

<p>

The Last Airbender
</p>

<p>

</p>

<p>

<a href="https://avatar.fandom.com/wiki/Avatar:_The_Last_Airbender" rel="noopener noreferrer" target="_blank">
https://avatar.fandom.com/wiki/Avatar:_The_Last_Airbender</a>

</p>

<p>

</p>

<p>

Wax and Wayne
</p>

<p>

</p>

<p>

<a href="https://www.brandonsanderson.com/pages/the-mistborn-saga-the-wax-wayne-series" rel="noopener noreferrer" target="_blank">
https://www.brandonsanderson.com/pages/the-mistborn-saga-the-wax-wayne-series</a>

</p>

<p>

</p>

<p>

Tress And The Emerald Sea
</p>

<p>

</p>

<p>

<a href="https://www.brandonsanderson.com/pages/standalones-cosmere" rel="noopener noreferrer" target="_blank">
https://www.brandonsanderson.com/pages/standalones-cosmere</a>

</p>

<p>

</p>

<p>

Isles of the Amber Dark
</p>

<p>

</p>

<p>

Legion
</p>

<p>

</p>

<p>

<a href="https://www.brandonsanderson.com/pages/collections-non-cosmere" rel="noopener noreferrer" target="_blank">
https://www.brandonsanderson.com/pages/collections-non-cosmere</a>

</p>

<p>

</p>

<p>

Wheel of Time (Sanderson books)
</p>

<p>

</p>

<p>

<a href="https://www.brandonsanderson.com/pages/the-wheel-of-time-series" rel="noopener noreferrer" target="_blank">
https://www.brandonsanderson.com/pages/the-wheel-of-time-series</a>

</p>

<p>

</p>

<p>

Sunreach 
</p>

<p>

</p>

<p>

<a href="https://www.brandonsanderson.com/pages/skyward-flight" rel="noopener noreferrer" target="_blank">
https://www.brandonsanderson.com/pages/skyward-flight</a>

</p>

<p>

</p>

<p>

Benedict Jacka
</p>

<p>

</p>

<p>

<a href="https://benedictjacka.co.uk/" rel="noopener noreferrer" target="_blank">
https://benedictjacka.co.uk/</a>

</p>

<p>

</p>

<p>

</p>

<p>

Project Hail Mary (Andy Weir)
</p>

<p>

</p>

<p>

<a href="https://andyweirauthor.com/#project-hail-mary" rel="noopener noreferrer" target="_blank">
https://andyweirauthor.com/#project-hail-mary</a>

</p>

<p>

</p>

<p>

The Martian (Andy Weir)
</p>

<p>

</p>

<p>

<a href="https://andyweirauthor.com/#the-martian" rel="noopener noreferrer" target="_blank">
https://andyweirauthor.com/#the-martian</a>

</p>

<p>

</p>

<p>

Artemis  (Andy Weir)
</p>

<p>

</p>

<p>

<a href="https://andyweirauthor.com/#artemis" rel="noopener noreferrer" target="_blank">
https://andyweirauthor.com/#artemis</a>

</p>

<p>

</p>

<p>

Libby
</p>

<p>

</p>

<p>

<a href="https://libbyapp.com/interview/welcome#doYouHaveACard" rel="noopener noreferrer" target="_blank">
https://libbyapp.com/interview/welcome#doYouHaveACard</a>

</p>

<p>

</p>

<p>

Analog Hole
</p>

<p>

</p>

<p>

<a href="https://en.wikipedia.org/wiki/Analog_hole" rel="noopener noreferrer" target="_blank">
https://en.wikipedia.org/wiki/Analog_hole</a>

</p>

<p>

</p>


<p><a href="https://hackerpublicradio.org/eps/hpr4582/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4581: Sharp Intake of Breath City (A.K.A.) How I learnt to stop worrying about the fork bomb]]></title>
<description><![CDATA[This show has been flagged as Explicit by the host.


Note: The following code `:(){ :|:&amp };:` was replaced with Fork Bomb in the title.




Ever wanted to hear a middle age man waffle on incoherently for half an hour about how he went from BMX bum to BSD botherer (1) ????






Well then, you...]]></description>
<link>https://tsecurity.de/de/3303945/it+sicherheit/it+podcasts/hpr4581+sharp+intake+of+breath+city+aka+how+i+learnt+to+stop+worrying+about+the+fork+bomb/</link>
<pubDate>Mon, 23 Feb 2026 01:01:59 +0100</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Explicit by the host.</p>

<p>
<strong>Note:</strong> The following code `:(){ :|:&amp;amp };:` was replaced with <a href="https://en.wikipedia.org/wiki/Fork_bomb">Fork Bomb</a> in the title.
</p>
<hr>

<p>
Ever wanted to hear a middle age man waffle on incoherently for half an hour about how he went from BMX bum to BSD botherer (1) ????</p>

<p>

</p>

<p>
Well then, you've come to the right place :-) Behold my banal FLOSS adventure of 15 very odd years in all it's hax &amp; glory!</p>

<p>

</p>

<p>
You're got to give it away to keep it ;-)</p>

<p>

</p>

<ol>

<li>
Weirdly there is a wonderful Scottish BMX brand called BSD... If you ever want some cool BSD stickers or T-Shirts they make some funky stuff...</li>

</ol>

<p>

</p>

<p>
P.S. Apologies for the endless extravagant sharp intakes of breath... to be fair it's a better filler than "like" or "do you know what I mean"... :-/</p>





<p><a href="https://hackerpublicradio.org/eps/hpr4581/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4580: The First Doctor, Part 4]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.
This is a further look at the stories of the First Doctor, portrayed by William Hartnell, during the 1960s.
The First Doctor, Part 4
Galaxy 4
This science fiction story is focused on the idea of not judging a book by its cover. The Tardis lands on ...]]></description>
<link>https://tsecurity.de/de/3298963/it+sicherheit/it+podcasts/hpr4580+the+first+doctor+part+4/</link>
<pubDate>Fri, 20 Feb 2026 01:01:27 +0100</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>
<p>This is a further look at the stories of the First Doctor, portrayed by William Hartnell, during the 1960s.</p>
<h2>The First Doctor, Part 4</h2>
<h3><a href="https://en.wikipedia.org/wiki/Galaxy_4">Galaxy 4</a></h3>
<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>
<h3><a href="https://en.wikipedia.org/wiki/Mission_to_the_Unknown">Mission to the Unknown</a></h3>
<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>
<h3><a href="https://en.wikipedia.org/wiki/The_Myth_Makers">The Myth Makers</a></h3>
<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>
<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>
<h3><a href="https://en.wikipedia.org/wiki/The_Daleks%27_Master_Plan">The Daleks’ Master Plan</a></h3>
<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>
<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>
<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>
<h3><a href="https://en.wikipedia.org/wiki/The_Massacre_(Doctor_Who)">The Massacre of St. Bartholomew’s Eve</a></h3>
<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>
<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>
<h3><a href="https://en.wikipedia.org/wiki/The_Ark_(Doctor_Who)">The Ark</a></h3>
<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>
<h3>Links:</h3>
<ul>
<li><a href="https://en.wikipedia.org/wiki/Galaxy_4">https://en.wikipedia.org/wiki/Galaxy_4</a></li>
<li><a href="https://en.wikipedia.org/wiki/Mission_to_the_Unknown">https://en.wikipedia.org/wiki/Mission_to_the_Unknown</a></li>
<li><a href="https://www.youtube.com/watch?v=NW8yk-m5Ig8">https://www.youtube.com/watch?v=NW8yk-m5Ig8</a></li>
<li><a href="https://en.wikipedia.org/wiki/The_Myth_Makers">https://en.wikipedia.org/wiki/The_Myth_Makers</a></li>
<li><a href="https://en.wikipedia.org/wiki/Troilus_and_Cressida">https://en.wikipedia.org/wiki/Troilus_and_Cressida</a></li>
<li><a href="https://guide.doctorwhonews.net/person.php?name=JohnWiles">https://guide.doctorwhonews.net/person.php?name=JohnWiles</a></li>
<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>
<li><a href="https://www.imdb.com/title/tt0785302/">https://www.imdb.com/title/tt0785302/</a></li>
<li><a href="https://tardis.fandom.com/wiki/The_Flux">https://tardis.fandom.com/wiki/The_Flux</a></li>
<li><a href="https://en.wikipedia.org/wiki/The_Massacre_(Doctor_Who)">https://en.wikipedia.org/wiki/The_Massacre_(Doctor_Who)</a></li>
<li><a href="https://en.wikipedia.org/wiki/The_Ark_(Doctor_Who)">https://en.wikipedia.org/wiki/The_Ark_(Doctor_Who)</a></li>
<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>
</ul>
<p><a href="https://hackerpublicradio.org/eps/hpr4580/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4579: Happy by shower]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.


Hello, dear beloveds. Here with you, at HPR: Antoine.

The message of this episode is the following: life comes in waves. ~~ Circumstances are volatile. For the majority of them, we have no control of what happens. Things happen, in climate event...]]></description>
<link>https://tsecurity.de/de/3296671/it+sicherheit/it+podcasts/hpr4579+happy+by+shower/</link>
<pubDate>Thu, 19 Feb 2026 01:02:10 +0100</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>

<p>
Hello, dear beloveds. Here with you, at HPR: Antoine.</p>
<p>
The message of this episode is the following: life comes in waves. ~~ Circumstances are volatile. For the majority of them, we have no control of what happens. Things happen, in climate events, in health (ours or another one’s), financially, emotionally. Many depend on choices that others make, or outside events that we, as humans, cannot trace cause-and-effect route — <em>
hamla</em>
! [interjection], we can’t even tell the weather precisely yet.</p>
<p>
Our emotions are subject to the same phenomenon. As far as they are tied to that events, our feelings of sadness, of relief, will come and go, also, as ~~ waves! Unpredictable, impetuous, imprecise. It ruins the health. Do you listen to your heartbeat? It can be 80 or 110 bpm from one second to another by the choices of your thinking, without you moving a muscle. A basketball player can be a better player only training in his mind, in imagination, in comparison to one that does not practice al all. Your mind, and by it we mean now the choices of your thinking, have influence in your muscular abilities and in your body chemicals. These regulate basically the entirety of your sensations, and contribute to your health or lack of it.</p>
<p>
So, when one believes, he have a stable point in which to be firm. Even though the circumstances are waves, he is not floating on them. He’s anchored. That’s why, if firm (true) in this faith, he’s more stable and happier than an ordinary person, one that has no hope at all, but lives by what the world has to offer today.</p>
<p>
In summary, the instability is not beneficial. And we are taken to this thinking, for the pursuit of something we believe is worth it, and may be not. Then, when someone presents something we “need”, that may not be the case. We can think. Then, we choose: what we live for? How I choose to feel, and behave, because <em>
or</em>
 in spite of what happens around and around? and around. No matter the point of the universe one person has reached, physically or perceptually, that does not define him for eternity. Because it is not in that past, it is happening right now, has not ended, yeah?</p>
<p>
<br>
</p>
<p>
Now, a point of experience of me. I have days of very low mood and uncertainty. The feeling of serving for absolutely nothing. (Even in good days, that may feel true, but does not define me as when I go to the ground on this thinking.) I have been said things like this, from people I value, or valued then, more than family of blood. These are days I eat not healthily, I don’t have the appropriate care of my body, I don’t shower.</p>
<p>
Until recently, those were days of much suffering. But I perceived that, in the next day of each of these days, in keeping trusting the hope I have, I can have a night of rest. I can wake up and take a shower, and after all start anew, having lived the bad experience the day prior as an experience that, at that moment, I only wanted to go away as soon as possible. But after going through the entirety of it, on its full duration, I would not replace this feeling-and-learning experience by anything else. Someone has said that anguish is what makes us do something. In comfort, we only go, comfortable. The purpose, or the action, comes from the need to change. Every little experience (and not only the great and abnormal) contribute to mould someone in his trajectory.</p>
<p>
<br>
</p>
<p>
Bye bye.</p>


<p><a href="https://hackerpublicradio.org/eps/hpr4579/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4578: Alex's journey into Amateur Radio]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.


Dave interviews Alex about his journey into Amateur Radio, given that he only passed his Foundation licence at the end of December.


What we forgot to mention is that he managed to get his callsign just before Christmas, so that was a rather lo...]]></description>
<link>https://tsecurity.de/de/3294260/it+sicherheit/it+podcasts/hpr4578+alexs+journey+into+amateur+radio/</link>
<pubDate>Wed, 18 Feb 2026 01:01:36 +0100</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>

<p>
Dave interviews Alex about his journey into Amateur Radio, given that he only passed his Foundation licence at the end of December.</p>

<p>
What we forgot to mention is that he managed to get his callsign just before Christmas, so that was a rather lovely gift!</p>

<p>

</p>

<p>
Links to stuff spoken about in the episode:</p>

<p>

</p>

<ul>

<li>

<a href="https://hackerpublicradio.org/eps/hpr3473/" rel="noopener noreferrer" target="_blank">
hpr3473 :: My journey into Amateur Radio</a>
 (Dave's journey)</li>

<li>

<a href="https://maltby-madars.org.uk/" rel="noopener noreferrer" target="_blank">
Maltby and District Amateur Radio Society</a>
 (our local club)</li>

<li>

<a href="https://www.rsgbshop.org/acatalog/The-Foundation-Licence-Manual-for-Radio-Amateurs-2322.html" rel="noopener noreferrer" target="_blank">
RSGB Foundation Licence Manual</a>

</li>

<li>

<a href="https://www.essexham.co.uk/train/foundation-study-guide/" rel="noopener noreferrer" target="_blank">
HamTrain's Foundation Study Guide</a>

</li>

<li>

<a href="https://www.essexham.co.uk/" rel="noopener noreferrer" target="_blank">
Essex Ham</a>

</li>

<li>

<a href="https://rsgb.org/main/clubs-training/for-students/foundation/" rel="noopener noreferrer" target="_blank">
RSGB Foundation Licence</a>

</li>

<li>

<a href="https://en.wikipedia.org/wiki/NATO_phonetic_alphabet" rel="noopener noreferrer" target="_blank">
NATO Phonetic Alphabet</a>

</li>

<li>

<a href="https://rsgb.org/main/about-us/national-radio-centre-gb3rs/" rel="noopener noreferrer" target="_blank">
RSGB National Radio Centre (GB3RS)</a>
 at Bletchley Park</li>

</ul>

<p>

</p>

<p>
We hope you enjoyed this episode, and we'll be happy to follow up any questions!</p>

<p>

</p>

<p>
73 de Dave M7TLB and Alex M7OUO</p>

<p>

</p>

<p>

</p>

<p>

</p>


<p><a href="https://hackerpublicradio.org/eps/hpr4578/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4577: HPR Beer Garden 10 - Scotch Ale/Wee Heavy]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.


Kevie and Dave discuss the history of the Wee Heavy and also sample some of these hard to find gems. Dave samples 
Innes & Gunn Original
whilst Kevie opts for 
Traquair House 2000th Brew







Connect with the guys on Untappd:



Dave



Kevie

...]]></description>
<link>https://tsecurity.de/de/3292129/it+sicherheit/it+podcasts/hpr4577+hpr+beer+garden+10+-+scotch+alewee+heavy/</link>
<pubDate>Tue, 17 Feb 2026 01:01:32 +0100</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>

<p>
Kevie and Dave discuss the history of the Wee Heavy and also sample some of these hard to find gems. Dave samples <a href="https://www.innisandgunn.com/beer/the-original-2" rel="noopener noreferrer" target="_blank">
Innes &amp; Gunn Original</a>
whilst Kevie opts for <a href="https://www.traquair.co.uk/brewery/" rel="noopener noreferrer" target="_blank">
Traquair House 2000th Brew</a>
</p>
<p>
<a href="https://hackerpublicradio.org/eps/hpr4577/hpr4577_image_1.png">
<img src="https://hackerpublicradio.org/eps/hpr4577/hpr4577_image_1_tn.png">
</a>
</p>
<p>
Connect with the guys on Untappd:</p>
<ol>
<li data-list="bullet">
<a href="https://untappd.com/user/thelovebug" rel="noopener noreferrer" target="_blank">
Dave</a>
</li>
<li data-list="bullet">
<a href="https://untappd.com/user/kevie49" rel="noopener noreferrer" target="_blank">
Kevie</a>
</li>
</ol>
<p>
<br>
</p>
<p>
The intro sounds for the show are used from:</p>
<ol>
<li data-list="bullet">
<a href="https://freesound.org/people/mixtus/sounds/329806/" rel="noopener noreferrer" target="_blank">
https://freesound.org/people/mixtus/sounds/329806/</a>
</li>
<li data-list="bullet">
<a href="https://freesound.org/people/j1987/sounds/123003/" rel="noopener noreferrer" target="_blank">
https://freesound.org/people/j1987/sounds/123003/</a>
</li>
<li data-list="bullet">
<a href="https://freesound.org/people/greatsoundstube/sounds/628437/" rel="noopener noreferrer" target="_blank">
https://freesound.org/people/greatsoundstube/sounds/628437/</a>
</li>
</ol>
<p>
<br>
</p>


<p><a href="https://hackerpublicradio.org/eps/hpr4577/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4576: Responce to Lee/Elsbeth eps]]></title>
<description><![CDATA[This show has been flagged as Explicit by the host.


I don't even know where I went with this but the idea was just to say the stuff Elsbeth expereanced was typical for corp-o's and that some of the issues she had getting work or jobs could be exponentially compounded by the result of  neurodive...]]></description>
<link>https://tsecurity.de/de/3289997/it+sicherheit/it+podcasts/hpr4576+responce+to+leeelsbeth+eps/</link>
<pubDate>Mon, 16 Feb 2026 01:02:23 +0100</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Explicit by the host.</p>

<p>
I don't even know where I went with this but the idea was just to say the stuff Elsbeth expereanced was typical for corp-o's and that some of the issues she had getting work or jobs could be exponentially compounded by the result of  neurodiversity.
</p>
<p>
</p><p>
<a href="https://hackerpublicradio.org/eps/hpr4576/hpr4576_image_1.png"><img src="https://hackerpublicradio.org/eps/hpr4576/hpr4576_image_1_tn.png"></a>
</p>
<p>
<a href="https://hackerpublicradio.org/eps/hpr4576/hpr4576_image_2.jpeg"><img src="https://hackerpublicradio.org/eps/hpr4576/hpr4576_image_2_tn.jpeg"></a>
</p>
<p>
<a href="https://hackerpublicradio.org/eps/hpr4576/hpr4576_image_3.png"><img src="https://hackerpublicradio.org/eps/hpr4576/hpr4576_image_3_tn.png"></a>
</p>
<p>
<a href="https://hackerpublicradio.org/eps/hpr4576/hpr4576_image_4.jpeg"><img src="https://hackerpublicradio.org/eps/hpr4576/hpr4576_image_4_tn.jpeg"></a>
</p>
<p>
More private ADHD resources</p>
<p>
<br>
</p>
<p>
[   ]	12 Principles for Raising a Chi - Russell A. Barkley.epub	2024-03-08 10:43	453K	 </p>
<p>
[   ]	12 Principles for Raising a Child with ADHD - Russell A. Barkley.epub	2021-08-11 19:34	967K	 </p>
<p>
[VID]	ADD and Loving It.mp4	2023-10-24 09:11	260M	 </p>
<p>
[VID]	ADHD - Understanding the Superpowers Within [ezwOHAo3O_k].webm	2022-07-01 09:36	161M	 </p>
<p>
[IMG]	Autism+Spectrum.png	2024-03-03 08:50	520K	 </p>
<p>
[SND]	BC_200_Answering_Your_Questionsa1qb8-BC_200_Answering_Your_Questionsa1qb8.mp3	2022-12-12 17:41	71M	 </p>
<p>
[TXT]	BC_200_Answering_Your_Questionsa1qb8-BC_200_Answering_Your_Questionsa1qb8.txt	2023-01-03 10:58	32K	 </p>
<p>
[   ]	Bubble Gum Brain A Picture Book About Growth Mindset 17.epub	2024-11-13 09:37	1.0M	 </p>
<p>
[DIR]	Bubble Gum Brain_ A Picture Boo - Julia Cook/	2024-03-08 10:46	-	 </p>
<p>
[DIR]	Cognitive.Behavioral.Therapy.for.Daily.Life-xpost/	2024-06-14 10:29	-	 </p>
<p>
[VID]	Drugging Our Kids [L7lHeosq-FY].webm	2018-03-30 20:28	432M	 </p>
<p>
[SND]	Full Audiobook _ You Mean I'm Not Lazy, Stupid or Crazy [A-4-OKGaLDs].mp3	2020-11-01 18:52	49M	 </p>
<p>
[   ]	Gary Chapman - The Five Love Languages How to Express Heartfelt Commitment to Your Mate (retail) (epub).epub	2021-08-11 19:34	914K	 </p>
<p>
[   ]	Gary Chapman - The Five Love Languages How to Express Heartfelt Commitment to Your Mate (retail) (epub).pdf	2021-08-11 19:34	1.7M	 </p>
<p>
[VID]	Learning Differently (ADHD Documentary) [9JMroyfJtO4].webm	2023-09-18 22:29	463M	 </p>
<p>
[VID]	Living With ADHD BBC Documentary [5lrcxmOolB8].webm	2015-04-08 01:15	138M	 </p>
<p>
[VID]	Take Back Control - Presentation by Dr. Edward Hallowell [HhoXGXtShGs].webm	2019-10-28 18:32	163M	 </p>
<p>
[VID]	The Disorder That Will Affect Us All (Dopamine Secrets)- ADHD Documentary [48JKfl0ggPI].webm	2022-12-21 08:32	1.3G	 </p>
<p>
[VID]	The Disruptors (2021) - [WEBRIP-1080P][AAC 5.1][X264]-RARBG.mp4.mp4	2023-10-24 09:42	774M	 </p>
<p>
[   ]	The Explosive Child.pdf	2024-11-13 06:21	714K	 </p>
<p>
[TXT]	The Explosive Child.txt	2024-11-14 01:20	338K	 </p>
<p>
[SND]	The Explosive Child Audiobook.mp3	2024-11-14 09:30	161M	 </p>
<p>
[VID]	Trevor Noah on Depression, ADHD &amp; Ketamine Therapy [eKQTS-hAAcI].webm	2024-05-21 14:32	181M	 </p>
<p>
[VID]	Video by adhdoers Markiplier.mp4	2024-06-20 21:39	4.3M	 </p>
<p>
[   ]	You Mean I'm Not Lazy, Stupid o - Kate Kelly.epub</p>


<p><a href="https://hackerpublicradio.org/eps/hpr4576/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4575: Making First Contact]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.

    
      Making First Contact
    
      An amateur radio contact, more commonly referred to as simply a
      "contact", is an exchange of information between two amateur radio
      stations. The exchange usually consists of an initial call, a...]]></description>
<link>https://tsecurity.de/de/3285240/it+sicherheit/it+podcasts/hpr4575+making+first+contact/</link>
<pubDate>Fri, 13 Feb 2026 01:01:43 +0100</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>

    <h1>
      Making First Contact</h1>
    <blockquote>
      An amateur radio contact, more commonly referred to as simply a
      "contact", is an exchange of information between two amateur radio
      stations. The exchange usually consists of an initial call, a
      response by another amateur radio operator at an amateur radio
      station, and a signal report. A contact is often referred to by
      the Q code QSO. It is often limited to just a minimal exchange of
      such station IDs. Stations who have made a contact are said to
      have worked each other. An operator may also say that he has
      worked a certain country.</blockquote>
    <p>
      <a href="https://en.wikipedia.org/wiki/Contact_%28amateur_radio%29" rel="noopener noreferrer" target="_blank">
        QSO: (amateur_radio)</a>
    </p>
    <p>
      <a href="https://rsgb.org/main/get-started-in-amateur-radio/operating-your-new-station/making-your-first-qso/" rel="noopener noreferrer" target="_blank">
        Making your first QSO</a>
    </p>
    <h2>
      Kees's history</h2>
    <ol>
      <li data-list="bullet">
        1990 PD1OOY VHF/UHF only, 25 Watt, only F3E. (NED, BEL, LX, DL)</li>
      <li data-list="bullet">
        1991 PE1OOY CEPT Class II</li>
      <li data-list="bullet">
        1995 G7TWO 1st British callsign CEPT Class II</li>
      <li data-list="bullet">
        1997 PE7TWO First vanity callsign CEPT Class II</li>
      <li data-list="bullet">
        2000 M5TWO CEPT Class A+B+ CW included</li>
      <li data-list="bullet">
        2000 PA7TWO CEPT Class I + CW included</li>
      <li data-list="bullet">
        2002 M5TWO CEPT Class I + CW included</li>
    </ol>
    <h2>
      Ken's history</h2>
    <ol>
      <li data-list="bullet">
        <a href="https://en.wikipedia.org/wiki/COVID-19_lockdown_in_the_United_Kingdom" rel="noopener noreferrer" target="_blank">
          COVID-19 lockdown in the United Kingdom</a>
      </li>
      <li data-list="bullet">
        2020-08-21 <a href="https://rsgb.org/main/clubs-training/for-students/foundation/" rel="noopener noreferrer" target="_blank">
          Amateur Foundation Examination</a>
      </li>
      <li data-list="bullet">
        2021-01-28 <a href="https://rsgb.org/main/clubs-training/for-students/intermediate/" rel="noopener noreferrer" target="_blank">
          Amateur Intermediate Examination</a>
      </li>
      <li data-list="bullet">
        2021-08-05 <a href="https://rsgb.org/main/clubs-training/for-students/full/" rel="noopener noreferrer" target="_blank">
          Amateur Full Radio Licence</a>
      </li>
    </ol>
    <h2>
      <br>
    </h2>
    <p>
      <a href="https://hackerpublicradio.org/eps/hpr4575/hpr4575_image_1.jpeg">
        <img src="https://hackerpublicradio.org/eps/hpr4575/hpr4575_image_1_tn.jpeg">
      </a>
    </p>
    <p>
      <a href="https://hackerpublicradio.org/eps/hpr4575/hpr4575_image_2.jpeg">
        <img src="https://hackerpublicradio.org/eps/hpr4575/hpr4575_image_2_tn.jpeg">
      </a>
    </p>
    <p>
      <a href="https://hackerpublicradio.org/eps/hpr4575/hpr4575_image_3.jpeg">
        <img src="https://hackerpublicradio.org/eps/hpr4575/hpr4575_image_3_tn.jpeg">
      </a>
    </p>
    <p>
      <a href="https://hackerpublicradio.org/eps/hpr4575/hpr4575_image_4.jpeg">
        <img src="https://hackerpublicradio.org/eps/hpr4575/hpr4575_image_4_tn.jpeg">
      </a>
    </p>
    <p>
      <a href="https://hackerpublicradio.org/eps/hpr4575/hpr4575_image_5.jpeg">
        <img src="https://hackerpublicradio.org/eps/hpr4575/hpr4575_image_5_tn.jpeg">
      </a>
    </p>
    <p>
      <a href="https://hackerpublicradio.org/eps/hpr4575/hpr4575_image_6.jpeg">
        <img src="https://hackerpublicradio.org/eps/hpr4575/hpr4575_image_6_tn.jpeg">
      </a>
    </p>
    <p>
      <a href="https://hackerpublicradio.org/eps/hpr4575/hpr4575_image_7.jpeg">
        <img src="https://hackerpublicradio.org/eps/hpr4575/hpr4575_image_7_tn.jpeg">
      </a>
    </p>
    <p>
    </p>
    <h2>
      Links</h2>
    <ol>
      <li data-list="bullet">
        <a href="https://rsgb.org/main/operating/licensing-novs-visitors/uk-licensing/" rel="noopener noreferrer" target="_blank">
          UK Amateur Licensing</a>
      </li>
      <li data-list="bullet">
        <a href="https://www.baofengradio.com/products/5r-mini" rel="noopener noreferrer" target="_blank">
          Baofeng UV-5R Mini 5W Dual Band Radio</a>
      </li>
      <li data-list="bullet">
        <a href="https://www.banggood.com/2Pcs-BAOFENG-UV-5R-Mini-5W-Walkie-Talkie-Bluetooth-APP-Programming-Multi-Band-One-Click-Copy-Frequency-Type-C-5R-Mini-Two-Way-Radio-p-2037975.html" rel="noopener noreferrer" target="_blank">
          BangGood</a>
      </li>
      <li data-list="bullet">
        <a href="https://www.youtube.com/@TechMindsOfficial" rel="noopener noreferrer" target="_blank">
          Tech Minds</a>
        video "<a href="https://www.youtube.com/watch?v=JbTmYW1HSiY" rel="noopener noreferrer" target="_blank">
          This Baofeng UV-5R Mini Is Almost Perfect - And It's Only $25!</a>
        "</li>
      <li data-list="bullet">
        <a href="https://en.wikipedia.org/wiki/Contact_%28amateur_radio%29" rel="noopener noreferrer" target="_blank">
          QSO: amateur_radio</a>
      </li>
      <li data-list="bullet">
        <a href="https://en.wikipedia.org/wiki/QSL_card" rel="noopener
          noreferrer" target="_blank">
          QSL Card</a>
      </li>
      <li data-list="bullet">
        <a href="https://www.veron.nl/wp-content/uploads/2018/07/Region-1-bandplan_2pages_color_english_01June2016-2.pdf" rel="noopener noreferrer" target="_blank">
          IARU Region 1 HF band plan</a>
      </li>
      <li data-list="bullet">
        <a href="https://www.qrz.com/" rel="noopener noreferrer" target="_blank">
          QRZ.com</a>
      </li>
      <li data-list="bullet">
        <a href="https://clublog.org/" rel="noopener noreferrer" target="_blank">
          Club Log</a>
      </li>
      <li data-list="bullet">
        <a href="https://www.qsl.net/lz1iii/html/Modulation%20Codes.html" rel="noopener noreferrer" target="_blank">
          Modulation Codes</a>
        , <a href="https://en.wikipedia.org/wiki/Types_of_radio_emissions" rel="noopener noreferrer" target="_blank">
          Types of radio emissions</a>
      </li>
    </ol>
    <p>
      <br>
    </p><p><a href="https://hackerpublicradio.org/eps/hpr4575/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4574: UNIX Curio #0 - Introduction]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.


This series is dedicated to exploring little-known—and occasionally useful—trinkets lurking in the dusty corners of UNIX-like operating systems.




As the zeroth entry of this series, we'll have a little introduction to what it is supposed to be...]]></description>
<link>https://tsecurity.de/de/3282889/it+sicherheit/it+podcasts/hpr4574+unix+curio+0+-+introduction/</link>
<pubDate>Thu, 12 Feb 2026 01:01:50 +0100</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>

<blockquote>
This series is dedicated to exploring little-known—and occasionally useful—trinkets lurking in the dusty corners of UNIX-like operating systems.</blockquote>
<p>
<br>
</p>
<p>
As the zeroth entry of this series, we'll have a little introduction to what it is supposed to be about and why you might want to listen. So that you don't leave without getting at least one piece of useful information, it will end with a little curio that you might find helpful someday.</p>
<p>
<br>
</p>
<p>
Back in 2010, I was the editor of the newsletter, titled The Open Pitt, for the Western Pennsylvania Linux Users Group in Pittsburgh. We distributed it as a two-page PDF, so had to have enough material to fill each issue. Because we were having some trouble getting contributions, I started writing columns in a series called "UNIX Curio" to occupy the empty space. They were inspired in large part by examples I had seen of people re-inventing ways to do things when utilities for the same purpose had already existed for a long time.</p>
<p>
<br>
</p>
<p>
The obvious question is: just what is a UNIX Curio? Let's start with the first word, UNIX. While a lot of people write it "Unix" instead, I have chosen to put it in all capitals because that is the way The Open Group, which controls the trademark and the certification process to use it, spells the word<sup>
1</sup>
. The history of UNIX is complex (search online for more details<sup>
2</sup>
)—the short version is that many variants emerged, often introducing incompatibilities. Even within AT&amp;T/Bell Laboratories, two major branches came out. The Research UNIX lineage, which includes Seventh Edition (sometimes called Version 7), was often used in universities and government while System III and its more popular successor System V were clearly intended as commercial products<sup>
3</sup>
. The University of California's BSD was also very influential. My intention is to talk about things that are relatively common; ideally, they would be present on a large majority of systems so you can actually <em>
use</em>
 them.</p>
<p>
<br>
</p>
<p>
Luckily, there were people who recognized the value in compatibility, so in the mid-1980s they initiated the development of the POSIX standards<sup>
4</sup>
. Publication of these not only caused commercial UNIX versions to aim for conformance—it gave Free Software implementations of utilities and operating systems a stable base to shoot for rather than having to chase multiple moving targets. As a result, today's GNU/Linux, FreeBSD, NetBSD, and OpenBSD systems generally behave as specified in POSIX, even if they haven't officially earned the UNIX or POSIX labels, so I treat them as part of the UNIX world.</p>
<p>
<br>
</p>
<p>
Moving on to the second word, "curio," it just means "an object of curiosity, often one considered novel, rare, or bizarre." There are many well-used utilities in the UNIX world, but people forget about others because they are only useful in specific circumstances. And when those circumstances arise, these obscure ones don't always get remembered. One purpose of this series is to point out some of them and describe where they can be appropriately put to use.</p>
<p>
With the flexible tools available on UNIX systems and the ability to string them together, it shouldn't be surprising that people come up with new ways to accomplish a task. I don't want to claim that these curios are always the <em>
best</em>
 way to do something, just that it can be helpful to know they exist and see the way someone else solved the problem. Also, if you're using an unfamiliar system, sometimes programs you are accustomed to employing might not be installed so it's good to know about options that are widely available.</p>
<p>
<br>
</p>
<p>
So why am I the person to talk about this subject? I am <em>
not</em>
 a UNIX graybeard with decades of professional computing experience. If I did grow a beard, it would only be partially gray, and my working life has been spent in the engineering world mainly around safety equipment. Sadly, there I have been forced to use Windows almost exclusively. However, in my academic and personal pursuits, I have been involved with using UNIX and Linux for more than 30 years, so I do have a bit of a historical perspective. For some reason, when I encounter an unusual or obscure tool, I want to learn more about it, especially so if I find it to be useful in some way. After gaining that information, I might as well share it with you. In addition, I have been involved with Toastmasters International, a public speaking organization, for about 15 years so I have experience in presenting things orally. I was inspired to turn this article series into podcasts by murph<sup>
5</sup>
, who delivered a presentation at the 2025 OLF Conference describing how and why to contribute to Hacker Public Radio<sup>
6</sup>
.</p>
<p>
<br>
</p>
<p>
The show notes for curios 1 through 3 will consist of the articles as they were originally written (though with references added). Because some examples, especially code, can be difficult to understand when they are read out loud, the podcasts will sometimes present the information in a different way. Show notes for this curio 0 and for curios 4 and later will be written with the podcast format in mind, so they will more closely match what I say.</p>
<p>
<br>
</p>
<p>
Let's end with an actual curio to kick off the series. Have you ever needed a quick reminder about whether the file you're looking for can be found under the /usr or /var directories? On many UNIX systems, <code>
man hier</code>
 will give you an overview of how the file hierarchy is organized. This manual page is not a standard, but was present in Seventh Edition UNIX<sup>
7</sup>
 and many descendents, direct and indirect, including every Linux distribution I have ever used. There <em>
are</em>
 attempts to standardize the layout; in the Linux world, the Filesystem Hierarchy Standard (FHS)<sup>
8</sup>
, now hosted by Freedesktop.org<sup>
9</sup>
, intends to set a path to be followed. It should be noted that systemd has its own idea of how things should be laid out based on the FHS; if it is in use, try <code>
man file-hierarchy</code>
 instead as it will likely be a more accurate description.</p>
<p>
<br>
</p>
<p>
I hope this gives you a good idea of what to expect in future episodes. The first one will be about shell archives, so keep an eye on Hacker Public Radio's schedule for it to appear.</p>
<p>
<br>
</p>
<p>
References:</p>
<ol>
<li data-list="ordered">
<a href="https://www.opengroup.org/trademarks" rel="noopener noreferrer" target="_blank">
The Open Group Trademarks</a>
 https://www.opengroup.org/trademarks</li>
<li data-list="ordered">
<a href="https://en.wikipedia.org/wiki/History_of_Unix" rel="noopener noreferrer" target="_blank">
History of Unix</a>
 https://en.wikipedia.org/wiki/History_of_Unix</li>
<li data-list="ordered">
<a href="https://archive.org/details/byte-magazine-1983-10/page/n133/mode/2up" rel="noopener noreferrer" target="_blank">
The Unix Tutorial, Part 3</a>
 https://archive.org/details/byte-magazine-1983-10/page/n133/mode/2up</li>
<li data-list="ordered">
<a href="https://sites.google.com/site/jimisaak/posix-impact" rel="noopener noreferrer" target="_blank">
POSIX Impact</a>
 https://sites.google.com/site/jimisaak/posix-impact</li>
<li data-list="ordered">
<a href="https://hackerpublicradio.org/correspondents/0444.html" rel="noopener noreferrer" target="_blank">
Correspondent: murph</a>
 https://hackerpublicradio.org/correspondents/0444.html</li>
<li data-list="ordered">
<a href="https://www.youtube.com/watch?v=hyEunLtqbrA&amp;t=25882" rel="noopener noreferrer" target="_blank">
OLF Conference - December 6th, 2025</a>
 https://www.youtube.com/watch?v=hyEunLtqbrA&amp;t=25882</li>
<li data-list="ordered">
<a href="https://man.cat-v.org/unix_7th/7/hier" rel="noopener noreferrer" target="_blank">
File system hierarchy</a>
 https://man.cat-v.org/unix_7th/7/hier</li>
<li data-list="ordered">
<a href="https://lwn.net/Articles/1032947/" rel="noopener noreferrer" target="_blank">
Finding a successor to the FHS</a>
 https://lwn.net/Articles/1032947/</li>
<li data-list="ordered">
<a href="https://lwn.net/Articles/1045405/" rel="noopener noreferrer" target="_blank">
Freedesktop.org now hosts the Filesystem Hierarchy Standard</a>
 https://lwn.net/Articles/1045405/</li>
</ol>
<p>
<br>
</p>


<p><a href="https://hackerpublicradio.org/eps/hpr4574/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4573: Nuclear Reactor Technology - Ep 6 Thorium Reactors]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.


Thorium Reactors




01 Introduction

In this episode we will describe the use of thorium in nuclear power, including what thorium is, how it differs from uranium, and what sort of reactors can use it.




03 What is thorium

05 How thorium diffe...]]></description>
<link>https://tsecurity.de/de/3280491/it+sicherheit/it+podcasts/hpr4573+nuclear+reactor+technology+-+ep+6+thorium+reactors/</link>
<pubDate>Wed, 11 Feb 2026 01:03:03 +0100</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>

<p>
Thorium Reactors</p>
<p>
<br>
</p>
<p>
01 Introduction</p>
<p>
In this episode we will describe the use of thorium in nuclear power, including what thorium is, how it differs from uranium, and what sort of reactors can use it.</p>
<p>
<br>
</p>
<p>
03 What is thorium</p>
<p>
05 How thorium differs from uranium</p>
<p>
07 Sources of Thorium</p>
<p>
<br>
</p>
<p>
09 Why there is interest in using thorium as a fuel</p>
<p>
10 Abundance of Thorium</p>
<p>
11 Some Countries Have a Lot of It</p>
<p>
12 Thorium Breeder Reactors are Simpler than Uranium Breeder Reactors</p>
<p>
14 Supposed Lower Nuclear Weapons Potential</p>
<p>
<br>
</p>
<p>
16 What is Thorium Breeding</p>
<p>
20 Breeding Ratio</p>
<p>
<br>
</p>
<p>
21 What sorts of reactors can use thorium</p>
<p>
22 PHWRs - Heavy Water Reactors (Including CANDU)</p>
<p>
24 HTR - High Temperature Gas Cooled Reactors</p>
<p>
26 MSR - Molten Salt Reactors</p>
<p>
29 Light Water Reactors (PWR, BWR)</p>
<p>
31 Fast Neutron Reactors</p>
<p>
<br>
</p>
<p>
32 The Challenges Facing Thorium Fuelled Reactors</p>
<p>
<br>
</p>
<p>
37 Thorium in India - An Example Use Case</p>
<p>
39 Why is India Pursuing Using Thorium?</p>
<p>
40 How a Thorium Fuel Cycle Would Work in India</p>
<p>
43 Current Status</p>
<p>
<br>
</p>
<p>
46 Conclusion</p>
<p>
Thorium is an abundant material that is seen as an alternative to uranium in nuclear power.</p>
<p>
Experimental thorium power reactors date back to at least the 1960s.</p>
<p>
No new reactor technology is required to use thorium.</p>
<p>
Existing well proven reactor designs which have been in use for decades can use thorium as fuel.</p>
<p>
<br>
</p>
<p>
The common light water reactor designs that popular in some countries however are not well suited to using thorium. </p>
<p>
Initial interest in thorium was mainly driven by a perception that uranium would be in short supply in future, and slow neutron thorium reactors were cheaper and simpler than fast neutron uranium reactors.</p>
<p>
<br>
</p>
<p>
However, huge new high grade supplies of uranium were found in a number of countries, causing uranium prices to fall and reducing interest in finding alternatives.</p>
<p>
While some R&amp;D continues on thorium fuel in a number of countries, the mainstream of development continues to be on uranium based fuel.</p>
<p>
Some countries with abundant thorium reserves though maintain a major interest in thorium, with India being the prime example. </p>
<p>
<br>
</p>
<p>
In the next episode we will describe small modular reactors.</p>
<p>
<br>
</p>


<p><a href="https://hackerpublicradio.org/eps/hpr4573/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4572: Uncommon Commands, Episode 3 - strace]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.
     These are the commands mentioned in the You may need to use
      "sudo" to run these commands depending on how your system is
      configured.
     strace uptime
     strace ls 2>&1 | grep open
     strace -e openat ls /
     strace ls /does...]]></description>
<link>https://tsecurity.de/de/3278340/it+sicherheit/it+podcasts/hpr4572+uncommon+commands+episode+3+-+strace/</link>
<pubDate>Tue, 10 Feb 2026 01:02:42 +0100</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>
    <p> These are the commands mentioned in the You may need to use
      "sudo" to run these commands depending on how your system is
      configured.</p>
    <p> strace uptime</p>
    <p> strace ls 2&gt;&amp;1 | grep open</p>
    <p> strace -e openat ls /</p>
    <p> strace ls /does/not/exist</p>
    <p> strace -o ls-trace.log ls</p>
    <p> strace -ff -o pid12345-trace.log -p 12345<br>
    </p>
    <h3>HISTORY</h3>
    <p>
      The original strace was written by Paul Kranenburg for SunOS and
      was inspired by its trace utility. The SunOS version of strace was
      ported to Linux and enhanced by Branko Lankester,
      who also wrote the Linux kernel support. Even though Paul released
      strace 2.5 in 1992, Branko's work was based on Paul's strace 1.5
      release from 1991.
    </p>
    <p>
      In 1993, Rick Sladkey took on the project. He merged strace 2.5
      for SunOS with the second release of strace for Linux, added many
      features from SVR4's truss(1), and produced a ver‐
      sion of strace that worked on both platforms. In 1994 Rick ported
      strace to SVR4 and Solaris and wrote the automatic configuration
      support. In 1995 he ported strace to Irix (and
      became tired of writing about himself in the third person).
    </p>
    <p>
      Beginning with 1996, strace was maintained by Wichert Akkerman.
      During his tenure, strace development migrated to CVS; ports to
      FreeBSD and many architectures on Linux (including
      ARM, IA-64, MIPS, PA-RISC, PowerPC, s390, SPARC) were introduced.
    </p>
    <p>
      In 2002, responsibility for strace maintenance was transferred to
      Roland McGrath. Since then, strace gained support for several new
      Linux architectures (AMD64, s390x, SuperH), bi-
      architecture support for some of them, and received numerous
      additions and improvements in system calls decoders on Linux;
      strace development migrated to Git during that period.
    </p>
    <p>
      Since 2009, strace has been actively maintained by Dmitry Levin.
      During this period, strace has gained support for the AArch64,
      ARC, AVR32, Blackfin, C-SKY, LoongArch, Meta, Nios
      II, OpenRISC 1000, RISC-V, Tile/TileGx, and Xtensa architectures.
      In 2012, unmaintained and apparently broken support for non-Linux
      operating systems was removed. Also, in 2012
      strace gained support for path tracing and file descriptor path
      decoding. In 2014, support for stack trace printing was added. In
      2016, system call tampering was implemented.
    </p>
    <p>
      For the additional information, please refer to the NEWS file and
      strace repository commit log.
    </p>
    <h3>Links</h3>
    <ul>
      <li><a href="https://strace.io/">https://strace.io</a></li>
      <li><a href="https://en.wikipedia.org/wiki/Strace">https://en.wikipedia.org/wiki/Strace</a></li>
      <li><a href="https://www.man7.org/linux/man-pages/man1/strace.1.html">https://www.man7.org/linux/man-pages/man1/strace.1.html</a></li>
    </ul><p><a href="https://hackerpublicradio.org/eps/hpr4572/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4571: Data processing retrospective]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.


We start with 
Orwellian depictions of the future
 read about in the 1950/60s. Working in the 1970s at companies such as 
British Telecom
 and the L
urgie
. We hear about 
telex
, 
mainframes
 with 
magnetic tape
, 
type-writers
, and the upskill...]]></description>
<link>https://tsecurity.de/de/3276173/it+sicherheit/it+podcasts/hpr4571+data+processing+retrospective/</link>
<pubDate>Mon, 09 Feb 2026 01:02:47 +0100</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>

<p>
We start with <a href="https://hackerpublicradio.org/eps/hpr4571/Orwellian%20depictions%20of%20the%20future" rel="noopener noreferrer" target="_blank">
Orwellian depictions of the future</a>
 read about in the 1950/60s. Working in the 1970s at companies such as <a href="https://en.wikipedia.org/wiki/BT_Group" rel="noopener noreferrer" target="_blank">
British Telecom</a>
 and the L<a href="https://en.wikipedia.org/wiki/Lurgi" rel="noopener noreferrer" target="_blank">
urgie</a>
. We hear about <a href="https://en.wikipedia.org/wiki/Telex" rel="noopener noreferrer" target="_blank">
telex</a>
, <a href="https://en.wikipedia.org/wiki/Mainframe_computer" rel="noopener noreferrer" target="_blank">
mainframes</a>
 with <a href="https://en.wikipedia.org/wiki/Magnetic-tape_data_storage" rel="noopener noreferrer" target="_blank">
magnetic tape</a>
, <a href="https://en.wikipedia.org/wiki/Typewriter" rel="noopener noreferrer" target="_blank">
type-writers</a>
, and the upskilling of the workforce by the <a href="https://en.wikipedia.org/wiki/Labour_Exchanges_Act_1909" rel="noopener noreferrer" target="_blank">
labour-exchange</a>
. How did a cold and lack of a home telephone lead to businessmen arriving in a foreign land sans camels? Why were <a href="https://en.wikipedia.org/wiki/Filing_cabinet" rel="noopener noreferrer" target="_blank">
filing cabinets</a>
 replaced by <a href="https://en.wikipedia.org/wiki/Relational_database" rel="noopener noreferrer" target="_blank">
databases</a>
 (or were they)? We hear about gaming from a home made version of <a href="https://en.wikipedia.org/wiki/Pong" rel="noopener noreferrer" target="_blank">
Pong</a>
 all the way to <a href="https://en.wikipedia.org/wiki/Alone_in_the_Dark" rel="noopener noreferrer" target="_blank">
Alone in the Dark</a>
. Then modern times: we hear about some favourite <a href="https://www.youtube.com/" rel="noopener noreferrer" target="_blank">
youtube</a>
 streams and discover that living in the 2020s is (just about) possible without a <a href="https://en.wikipedia.org/wiki/Smartphone" rel="noopener noreferrer" target="_blank">
smartphone</a>
.</p>


<p><a href="https://hackerpublicradio.org/eps/hpr4571/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4570: Playing Civilization V, Part 8]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.


  
  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 dis...]]></description>
<link>https://tsecurity.de/de/3256153/it+sicherheit/it+podcasts/hpr4570+playing+civilization+v+part+8/</link>
<pubDate>Fri, 06 Feb 2026 01:01:51 +0100</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>


  
  <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>
<h2>Playing Civilization V, Part 8 - Diplomacy</h2>
<h3>Other Players</h3>
<p>With other players you have a relationship based on their approach to you. They are:</p>
<ul>
<li>Neutral – This is not Friendly nor is it Hostile. Trades you make with them will be fair from their point of view</li>
<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>
<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>
<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>
<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>
<li>Hostile – They hate you, and are completely open about it. Trade deals, if you can get them, will be heavily against you.</li>
<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>
</ul>
<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>
<h3>City-States</h3>
<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>
<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>
<h2>Spies and Espionage</h2>
<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>
<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>
<h3>Diplomats</h3>
<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>
<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>
<h2>Religious Pressure</h2>
<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>
<h2>Diplomatic Victory</h2>
<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>
<h2>Links:</h2>
<ul>
<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>
<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>
</ul>
<p><a href="https://hackerpublicradio.org/eps/hpr4570/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4569: Kiosk with guest mode on Linux]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.
Create a Linux kiosk at your library
Start without a guest account
The first few steps of this process don’t actually require a guest user directory to exist, so do NOT create your guest user account yet. However, you do need to choose what your gu...]]></description>
<link>https://tsecurity.de/de/3253838/it+sicherheit/it+podcasts/hpr4569+kiosk+with+guest+mode+on+linux/</link>
<pubDate>Thu, 05 Feb 2026 01:01:57 +0100</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>
<h1>Create a Linux kiosk at your library</h1>
<h2>Start without a guest account</h2>
<p>The first few steps of this process don’t actually require a guest user directory to exist, so <em>do NOT create your guest user account yet</em>. However, you do need to choose what your guest user account is going to be called. A reasonable account name for Don’s purposes is <code>libraryguest</code>. On my personal computer I call my guest account <code>guestaccount</code>, and I’ve used <code>kioskguest</code> on some installations. I avoid just the name “guest” because in modern computing the term “guest” gets used in a few other ways (such as a “guest operating system” in a virtual environment), and it’s just easier to find something unique in logs.</p>
<p>Choose a unique name for you guest account, but don’t create it yet. For this article, I’m using <code>libraryguest</code>.</p>
<h2>Create the PostSession script</h2>
<p>By default, GDM recognises several states: Init, PostLogin, PreSession, and PostSession. Each state has a directory located in <code>/etc/gdm</code>. When you place a shell script called <code>Default</code> in one of those directories, GDM runs the script when it reaches that state.</p>
<p>To trigger actions to clean up a user’s environment upon logout, create the file <code>/etc/gdm/PostSession/Default</code>. You can add whatever actions you want to run upon logout to the <code>Default</code> script. In the case of Don’s library, we wanted to clear everything from the guest’s home directory, including browser history, any LibreOffice files or GIMP files they may have created, and so on. It was important that we limited the very drastic action of removing all user data to <em>just</em> the guest user. We didn’t want the admin’s data to be erased upon logout, so whatever rule we added to <code>/etc/gdm/PostSession/Default</code> had to be limited to the guest user.</p>
<p>Here’s what we came up with:</p>
<pre><code>#!/usr/bin/sh
echo "$USER logged out at `date`" &gt;&gt; /tmp/PostSession.log
if [ "X$USER" = "Xlibraryguest" ]; then
    rm -rf "$HOME"
fi
exit 0</code></pre>
<p>The first line is for logging purposes. The <code>/tmp</code> directory gets cleared out on most distributions automatically, so we weren’t worried about creating a file that’ll grow forever and eventually crash the computer. If your distribution of choice doesn’t clean out <code>/tmp</code> automatically, <a href="https://www.both.org/?p=3685">create a cron job</a> to do that for you.</p>
<p>GDM knows what user triggered the logout process, so the <code>if</code> statement verifies that the user logging out is definitely the <code>libraryguest</code> user (that’s the literal name of the user we created for library patrons).<br>Note that the whitespace around the square brackets is important, so be precise when typing!</p>
<p>As long as it is <code>libraryguest</code>, then the script removes the <em>entire user directory</em> (<code>$HOME</code>). That can be extremely dangerous if you make a mistake, so do thorough testing on a dummy system before implementing a script like this! If you get a condition wrong, you could erase <em>your entire home directory</em> upon logout.</p>
<p>In this example, I’ve successfully limited the <code>rm</code> command to a logout action performed by user <code>libraryguest</code>. The entire <code>/home/libraryguest</code> directory is erased, and the computer returns to the GDM login screen. When a new user logs in, a fresh directory is created for the user.</p>
<p>You can put any number of commands in your script, of course. You don’t have to erase an entire directory. If all you really want to do is clear browser history and any stray data, then you can do that instead. If you need to copy specific configuration files into the environment, you can do that during the PreSession state.</p>
<p>Just be sure to test thoroughly before committing your creation to your users!</p>
<h2>What happens when the guest doesn’t log out</h2>
<p>At this point, the computer erases all of the user’s data when the user logs out, but a reboot or a shutdown is different to a logout. GDM doesn’t enter a PostSession state after a reboot signal has been received, even if the reboot occurs during an active GDM session.</p>
<p>The easiest and safest way to erase an entire home directory when there’s a cut to system power is to use a temporary RAM filesystem (<code>tmpfs</code>) to house the data in the first place. If the systems you’re configuring have 8 GB or more, and the system is exclusively used as a guest computer, you can probably afford to use RAM as the guest’s home directory. If your system doesn’t have a lot of RAM, then you can use the systemd work-around in the next section.</p>
<p>Assuming you have the RAM to spare, and that your systems are supported by a backup power supply, you can add a <code>tmpfs</code> entry in <code>/etc/fstab</code>. In this example, my <code>tmpfs</code> is mounted to <code>/home/libraryguest</code> and is just 2 GB:</p>
<pre><code>tmpfs     /home/libraryguest    tmpfs    rw,nosuid,nodev,size=2G   0 0</code></pre>
<p>That’s plenty of space for some Internet browsing and even a few LibreOffice documents to be saved while a user works.</p>
<p>Mount the new volume:</p>
<pre><code>$ sudo mount /home/libraryguest</code></pre>
<p>Next, you must create the <code>libraryguest</code> user manually in a terminal.<br>The <code>useradd</code> command creates user profiles:</p>
<pre><code>$ sudo useradd --home-dir /home/libraryguest libraryguest
useradd: warning: the home directory /home/libraryguest/ already exists.
useradd: Not copying any file from skel directory into it.</code></pre>
<p>Because you’ve already created a location for the home directory, you do get a warning after creating the user. It’s only a warning, not a fatal error, and the guest account is automatically populated later.</p>
<p>Create a password for the new user:</p>
<pre><code>$ sudo passwd libraryguest</code></pre>
<p>That’s it! You’ve created a guest account that refreshes with every logout and every reboot. You can skip over the next section of this article.</p>
<h2>Using systemd targets instead of a ramdisk</h2>
<p>Assuming you can’t create a ramdisk for temporary user data, you can instead create a systemd service that runs a script when the reboot, poweroff, and multi-user targets are triggered:</p>
<pre><code>[Unit]
Description=Kiosk cleanup
[Service]
Type=oneshot
ExecStart=/usr/local/bin/kiosk-cleanup.sh
[Install]
WantedBy=poweroff.target reboot.target multi-user.target</code></pre>
<p>Save the file to <code>/etc/systemd/system/kioskmode.service</code> and then enable it:</p>
<pre><code>$ sudo systemctl enable --now kioskmode</code></pre>
<p>The script, like the GDM script, removes the <code>libraryguest</code> directory. Unlike GDM script, this one must also recreate an empty home directory and grant it user permissions:</p>
<pre><code>#!/usr/bin/bash
rm -rf /home/libraryguest
mkdir /home/libraryguest
chown -R libraryguest:libraryguest /home/libraryguest</code></pre>
<p>Grant the script itself permission to run:</p>
<pre><code>$ sudo chmod +x /usr/local/bin/kiosk-cleanup.sh</code></pre>
<p>Now the <code>libraryguest</code> user data is erased after:</p>
<ul>
<li>Logout</li>
<li>Reboot</li>
<li>Shutdown</li>
<li>Startup</li>
</ul>
<p>Essentially, no matter how the computer loses its session or its power, the <code>libraryguest</code> account starts fresh when a new session is started.</p>
<h3>Security and privacy</h3>
<p>Using systemd to erase data at shutdown and startup isn’t strictly as secure as using a temporary ramdisk for all user data. Should the computer lose power suddenly, all saved user data in the <code>libraryguest</code> account is present during the next boot. Of course, it’s erased as soon as <code>multi-user.target</code> is called by systemd, but it is technically possible to interrupt the boot process and mine for data. You must use full drive encryption to protect data from being discovered by an interrupted boot sequence.</p>
<h2>Why not just use xguest</h2>
<p>On many Linux distributions, the <code>xguest</code> package is designed to provide the <strong>Guest</strong> account, which resets after each logout. It was an extremely useful package that I installed on every machine I owned, because it’s handy to be able to let friends use my computer without risking them making a mess of my home directory. Lately, it seems that <code>xguest</code> is failing to launch a desktop, however, presumably because it relies on X11.</p>
<p>If <code>xguest</code> works for you in your tests, then you may want to use it instead of the solution I’ve presented here. My solution offers a lot of flexibility, thanks to GDM’s autodetection of session states.</p>
<h2>Kiosks in libraries</h2>
<p>Privacy and personal information is more important than ever. Regardless of how you setup a kiosk for your library, you have an obligation to your users to keep them informed of how their data is being stored. This goes both ways. Users need to know that their data is destined to be erased as soon as they log out, and also they deserve to be assured that their data is not retained.</p>
<p>However, it’s also your responsibility to admit that glitches and exceptions could occur. Users need to understand that the computer they’re using are public computers on a public network. Encryption is being used for traffic and for data storage, but you cannot guarantee absolute privacy.</p>
<p>As long as everyone understands the arrangement, everyone can compute with confidence. Linux, GDM, and systemd are great tools to help libraries create a sustainable, robust, honest, and communal computing platform.</p>
<p>Show notes taken from <a href="https://www.both.org/?p=13327">https://www.both.org/?p=13327</a></p><p><a href="https://hackerpublicradio.org/eps/hpr4569/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4568: Book reading The Cuckoo's Egg by Cliff Stoll]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.

    
      1985, I started to work at a telecom equipment manufacturer. We
      had a main frame computer in our combined office- and lab room. We
      were four sitting in the room and it was this one terminal for all
      of us and maybe even...]]></description>
<link>https://tsecurity.de/de/3251562/it+sicherheit/it+podcasts/hpr4568+book+reading+the+cuckoos+egg+by+cliff+stoll/</link>
<pubDate>Wed, 04 Feb 2026 01:02:35 +0100</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>

    <p>
      1985, I started to work at a telecom equipment manufacturer. We
      had a main frame computer in our combined office- and lab room. We
      were four sitting in the room and it was this one terminal for all
      of us and maybe even for someone more. </p>
    <p>
      Downstairs, we at component technology department had our big
      climate controlled laboratories. I used an <a href="https://en.wikipedia.org/wiki/HP_Series_80">HP 85 computer</a>
      having the Basic programming language to automize measurements of
      resistors. And there were several more of them for other
      measurements of various electronic components. Also more advanced
      computers were used in the labs and as I recall also with other
      languages than Basic. I remember I learned briefly a bit about one
      of those languages but have forgotten which one. </p>
    <p>
      The secretary at the department could send Telex messages around
      the world. We handed a hand written manuscript to her and she
      typed it into the <a href="https://en.wikipedia.org/wiki/Telex">Telex
        system</a>. And she had a Xerox computer with big, at least the
      8 inch floppy discs. </p>
    <p>
      Not so many years later my manager got a Personal computer running
      DOS and some years later it <a href="https://en.wikipedia.org/wiki/DOS">DOS computers</a> also
      to the staff. But also very early we had a Sun Unix station. And
      for many years Unix became my daily driver at work. </p>
    <p>
      Before I started to work, in school we had some education in <a href="https://en.wikipedia.org/wiki/BASIC">Basic programming</a>.
      We were using the at least in Sweden very successful and good <a href="https://en.wikipedia.org/wiki/ABC_80">Luxor ABC 80</a>
      computer. At the end of my school time, my school got the top
      notch ABC 800 with colour screen. </p>
    <p>At home so I could get a chance to learn somewhat more about
      computers and Basic programming in my own pace, I got a <a href="https://en.wikipedia.org/wiki/ZX80">Zinclair ZX 80</a>
      computer, which I later upgraded to <a href="https://en.wikipedia.org/wiki/ZX81">ZX 81</a>. </p>
    <p>
      One summer job when I was a student I was at <a href="https://en.wikipedia.org/wiki/Televerket_(Sweden)">Televerket</a>,
      the Swedish PTT. It meant that I visited numerous of exchange
      stations. Many at the country side, some with very few subscribers
      so I could hear the relay start when someone was making a call. At
      bigger stations it was noise from relays all the time. </p>
    <p>
      As I mentioned, after studies were completed I was working with
      telecom equipment in particular for land line telephony. Not at
      least I worked with components for the line cards, the card at the
      telephone exchange that is facing towards the end user. </p>
    <p><a href="https://en.wikipedia.org/wiki/The_Cuckoo%27s_Egg_(book)">
        The book The_Cuckoo's_Egg</a> is a hacker thriller based on a
      true story that happened in the mid-1980's going on for a year. It
      was written by the hunter shortly after. </p>
    <p><a href="https://en.wikipedia.org/wiki/Clifford_Stoll">
        Cliff Stoll</a> describes Unix commands, which are similar to
      Linux. He talks about passwords, about encryption and a lot more.
      Many technical details he describes by using analogy with more
      common non technical life examples. </p>
    <p>
      A security hole in <a href="https://en.wikipedia.org/wiki/GNU_Emacs">GNU-Emacs
        software</a>, a software still around today, plays a central
      role in how the hacker could penetrate. To fix and update security
      holes are very relevant today as well.</p>
    <p>
      Many things in computers and technology have changed. But at the
      same time very much of the problems are valid today although they
      are somewhat different. And the way he describes technical details
      for the non-technical reader are relevant also today, I believe. </p>
    <p>
      At the same time as the book has many technical details, he also
      describes the daily life at home, the left wing culture he
      belonged to at the university, his long hair and the dress code he
      belonged to. And the music. He also describes his contacts to
      numerous authorities and frustration in those contacts. I am very
      impressed of his analytical research approach, his persistence,
      his skills and inventiveness including inventiveness of his girl
      friend and others.</p>
    <p>
      One take away for me is that he kept a detailed log book. It is an
      important research tool. The log book together with the print outs
      of exactly what the hacker did were core references for analyzing
      and make conclusions, retract and change conclusions when new
      information lead to that earlier assumptions were wrong. </p>
    <p>
      He also wrote a technical paper about it before he wrote the book.
      For those interested, there are several videos with him of later
      date on various topics.</p><p><a href="https://hackerpublicradio.org/eps/hpr4568/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4567: Movie Recommendations for Hackers]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.

Warning, this episode containers some spoilers for movies.


The following movies are in my cybersecurity movie library. The ones marked * are included in review in this episode.


2001: A Space Odyssey (1968) *
AntiTrust (2001)
Blackhat (2015)
Bl...]]></description>
<link>https://tsecurity.de/de/3250642/it+sicherheit/it+podcasts/hpr4567+movie+recommendations+for+hackers/</link>
<pubDate>Tue, 03 Feb 2026 15:17:49 +0100</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>
<p>
Warning, this episode containers some spoilers for movies.</p>

<p>
The following movies are in my cybersecurity movie library. The ones marked * are included in review in this episode.</p>

<ul>
<li><a href="https://en.wikipedia.org/wiki/2001:_A_Space_Odyssey">2001: A Space Odyssey (1968)</a> *</li>
<li><a href="https://en.wikipedia.org/wiki/Antitrust_%28film%29">AntiTrust (2001)</a></li>
<li><a href="https://en.wikipedia.org/wiki/Blackhat_%28film%29">Blackhat (2015)</a></li>
<li><a href="https://en.wikipedia.org/wiki/Blade_Runner">Blade Runner (1982)</a></li>
<li><a href="https://en.wikipedia.org/wiki/Catch_Me_If_You_Can">Catch Me If You Can (2002)</a></li>
<li><a href="https://en.wikipedia.org/wiki/Citizenfour">Citizenfour (2015)</a></li>
<li><a href="https://en.wikipedia.org/wiki/CSI:_Cyber">CSI: Cyber (2015)</a></li>
<li><a href="https://en.wikipedia.org/wiki/Enemy_of_the_State_%28film%29">Enemy of the State (1998)</a></li>
<li><a href="https://en.wikipedia.org/wiki/Firewall_%28film%29">Firewall (2006)</a></li>
<li><a href="https://en.wikipedia.org/wiki/Gattaca">Gattaca (1997)</a> *</li>
<li><a href="https://en.wikipedia.org/wiki/Ghost_in_the_Shell_%281995_film%29">Ghost in the Shell (1995)</a></li>
<li><a href="https://en.wikipedia.org/wiki/Hackers_%28film%29">Hackers (1995)</a> *</li>
<li><a href="https://en.wikipedia.org/wiki/Heartbreakers_%282001_film%29">Heartbreakers (2001)</a></li>
<li><a href="https://en.wikipedia.org/wiki/The_Imitation_Game">The Imitation Game (2014)</a></li>
<li><a href="https://en.wikipedia.org/wiki/I,_Robot_%28film%29">I, Robot (2004)</a></li>
<li><a href="https://en.wikipedia.org/wiki/Johnny_Mnemonic_%28film%29">Johnny Mnemonic (1995)</a></li>
<li><a href="https://en.wikipedia.org/wiki/Jurassic_Park_%28film%29">Jurassic Park (1993)</a> *</li>
<li><a href="https://www.youtube.com/watch?v=PGv5BqNL164">The KGB, the Computer and Me (1990)</a> * - <a href="https://www.youtube.com/watch?v=PGv5BqNL164" rel="noopener noreferrer" target="_blank">Youtube link</a></li>
<li><a href="https://en.wikipedia.org/wiki/The_Lives_of_Others">The Lives of Others (2006)</a> *</li>
<li><a href="https://en.wikipedia.org/wiki/Lo_and_Behold,_Reveries_of_the_Connected_World">Lo and Behold, Reveries of the Connected World (2016)</a></li>
<li><a href="https://en.wikipedia.org/wiki/The_Matrix">The Matrix (1999)</a></li>
<li><a href="https://en.wikipedia.org/wiki/The_Matrix_Reloaded">The Matrix Reloaded (2003)</a> *</li>
<li><a href="https://en.wikipedia.org/wiki/The_Matrix_Revolutions">The Matrix Revolutions (2003)</a></li>
<li><a href="https://en.wikipedia.org/wiki/Minority_Report_%28film%29">Minority Report (2002)</a></li>
<li><a href="https://en.wikipedia.org/wiki/Mission:_Impossible_%28film%29">Mission: Impossible (1996)</a> *</li>
<li><a href="https://en.wikipedia.org/wiki/Mr._Robot">Mr. Robot (2015)</a></li>
<li><a href="https://en.wikipedia.org/wiki/The_Net_%281995_film%29">The Net (1995)</a> *</li>
<li><a href="https://en.wikipedia.org/wiki/The_Net_2.0">The Net 2.0 (2006)</a></li>
<li><a href="https://en.wikipedia.org/wiki/Ocean%27s_Eleven_%282001_film%29">Ocean's Eleven (2001)</a></li>
<li><a href="https://en.wikipedia.org/wiki/Office_Space">Office Space (1999)</a> *</li>
<li><a href="https://en.wikipedia.org/wiki/Person_of_Interest_%28TV_series%29">Person of Interest (2011)</a> *</li>
<li><a href="https://en.wikipedia.org/wiki/Revolution_OS">Revolution OS (2001)</a></li>
<li><a href="https://en.wikipedia.org/wiki/The_Social_Network">The Social Network (2010)</a></li>
<li><a href="https://en.wikipedia.org/wiki/Sneakers_%281992_film%29">Sneakers (1992)</a> *</li>
<li><a href="https://en.wikipedia.org/wiki/Superman_III">Superman III (1983)</a> *</li>
<li><a href="https://en.wikipedia.org/wiki/Surrogates">Surrogates (2009)</a></li>
<li><a href="https://en.wikipedia.org/wiki/Swordfish_%28film%29">Swordfish (2001)</a></li>
<li><a href="https://en.wikipedia.org/wiki/Takedown_%282000_film%29">Takedown (2000)</a></li>
<li><a href="https://en.wikipedia.org/wiki/Tron">Tron (1982)</a> *</li>
<li><a href="https://en.wikipedia.org/wiki/WarGames">WarGames (1983)</a> *</li>
</ul>

<p>
Slashdot "Best Hacker movie" poll (August 2001): 
<a href="https://slashdot.org/poll/683/best-hacker-flick" rel="noopener noreferrer" target="_blank">
https://slashdot.org/poll/683/best-hacker-flick</a>
</p>
<p>
This episode contains short except clips from some of these movies used under free use for demonstration.</p>
<p><a href="https://hackerpublicradio.org/eps/hpr4567/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[170: Phrack]]></title>
<description><![CDATA[Phrack is legendary. It is the oldest, and arguably the most prestigious, underground hacking magazine in the world.It started in 1985 and is still running today. In this episode we interview the Phrack staff to hear some stories about what it’s like running a hacker magazine for 40 years.phrack....]]></description>
<link>https://tsecurity.de/de/3249827/it+sicherheit/it+podcasts/170+phrack/</link>
<pubDate>Tue, 03 Feb 2026 09:02:35 +0100</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Phrack is legendary. It is the oldest, and arguably the most prestigious, underground hacking magazine in the world.</p><p>It started in 1985 and is still running today. In this episode we interview the Phrack staff to hear some stories about what it’s like running a hacker magazine for 40 years.</p><p><a href="https://phrack.org/"><strong>phrack.org</strong></a></p><h3>Sponsors</h3><p>Support for this show comes from <a href="https://www.threatlocker.com/"><strong>ThreatLocker®</strong></a>. ThreatLocker® is a Zero Trust Endpoint Protection Platform that strengthens your infrastructure from the ground up. With ThreatLocker® Allowlisting and Ringfencing™, you gain a more secure approach to blocking exploits of known and unknown vulnerabilities. ThreatLocker® provides Zero Trust control at the kernel level that enables you to allow everything you need and block everything else, including ransomware! Learn more at <a href="https://www.threatlocker.com/"><strong>www.threatlocker.com</strong></a>.</p><p>Support for this show comes from <a href="https://drata.com/darknetdiaries"><strong>Drata</strong></a>. Drata is the trust management platform that uses AI-driven automation to modernize governance, risk, and compliance, helping thousands of businesses stay audit-ready and scale securely. Learn more at <a href="https://drata.com/darknetdiaries"><strong>drata.com/darknetdiaries</strong></a>.</p><p>This episode is sponsored by <a href="https://www.meter.com/"><strong>Meter</strong></a>, the company building networks from the ground up. Meter delivers a complete networking stack - wired, wireless, and cellular - in one solution that’s built for performance and scale. Alongside their partners, Meter designs the hardware, writes the firmware, builds the software, manages deployments, and runs support. Learn more at <a href="https://www.meter.com/"><strong>meter.com</strong></a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4566: HPR Community News for January 2026]]></title>
<description><![CDATA[This show has been flagged as Explicit by the host.
New hosts

Welcome to our new hosts: 

    Jim DeVore, 
    Carmen-Lisandrette.


Last Month's Shows


Id
Day
Date
Title
Host


4544
Thu
2026-01-01
Uncommon Commands, Episode 2
Deltaray


4545
Fri
2026-01-02
YouTube Subscriptions 2025 #12
Ahuka
...]]></description>
<link>https://tsecurity.de/de/3247262/it+sicherheit/it+podcasts/hpr4566+hpr+community+news+for+january+2026/</link>
<pubDate>Mon, 02 Feb 2026 01:01:47 +0100</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Explicit by the host.</p>
<h2>New hosts</h2>
<p>
Welcome to our new hosts: <br>

    <a href="https://hackerpublicradio.org/correspondents/0457.html" target="_blank">Jim DeVore</a>, 
    <a href="https://hackerpublicradio.org/correspondents/0458.html" target="_blank">Carmen-Lisandrette</a>.
</p>

<h2>Last Month's Shows</h2>
<table>
<tr>
<th>Id</th>
<th>Day</th>
<th>Date</th>
<th>Title</th>
<th>Host</th>
</tr>
<tr>
<td><strong><a href="https://hackerpublicradio.org/eps/hpr4544/index.html" target="_blank">4544</a></strong></td>
<td>Thu</td>
<td class="shrink">2026-01-01</td>
<td><a href="https://hackerpublicradio.org/eps/hpr4544/index.html" target="_blank">Uncommon Commands, Episode 2</a></td>
<td><a href="https://hackerpublicradio.org/correspondents/0194.html" target="_blank">Deltaray</a></td>
</tr>
<tr>
<td><strong><a href="https://hackerpublicradio.org/eps/hpr4545/index.html" target="_blank">4545</a></strong></td>
<td>Fri</td>
<td class="shrink">2026-01-02</td>
<td><a href="https://hackerpublicradio.org/eps/hpr4545/index.html" target="_blank">YouTube Subscriptions 2025 #12</a></td>
<td><a href="https://hackerpublicradio.org/correspondents/0198.html" target="_blank">Ahuka</a></td>
</tr>
<tr>
<td><strong><a href="https://hackerpublicradio.org/eps/hpr4546/index.html" target="_blank">4546</a></strong></td>
<td>Mon</td>
<td class="shrink">2026-01-05</td>
<td><a href="https://hackerpublicradio.org/eps/hpr4546/index.html" target="_blank">HPR Community News for December 2025</a></td>
<td><a href="https://hackerpublicradio.org/correspondents/0159.html" target="_blank">HPR Volunteers</a></td>
</tr>
<tr>
<td><strong><a href="https://hackerpublicradio.org/eps/hpr4547/index.html" target="_blank">4547</a></strong></td>
<td>Tue</td>
<td class="shrink">2026-01-06</td>
<td><a href="https://hackerpublicradio.org/eps/hpr4547/index.html" target="_blank">Cheap Yellow Display Project Part 6: The speed and timing of Morse </a></td>
<td><a href="https://hackerpublicradio.org/correspondents/0394.html" target="_blank">Trey</a></td>
</tr>
<tr>
<td><strong><a href="https://hackerpublicradio.org/eps/hpr4548/index.html" target="_blank">4548</a></strong></td>
<td>Wed</td>
<td class="shrink">2026-01-07</td>
<td><a href="https://hackerpublicradio.org/eps/hpr4548/index.html" target="_blank">YouTube Subscriptions 2025 #13</a></td>
<td><a href="https://hackerpublicradio.org/correspondents/0198.html" target="_blank">Ahuka</a></td>
</tr>
<tr>
<td><strong><a href="https://hackerpublicradio.org/eps/hpr4549/index.html" target="_blank">4549</a></strong></td>
<td>Thu</td>
<td class="shrink">2026-01-08</td>
<td><a href="https://hackerpublicradio.org/eps/hpr4549/index.html" target="_blank">[deprecated] Pomodoro Task Tool (pomotask.sh)</a></td>
<td><a href="https://hackerpublicradio.org/correspondents/0454.html" target="_blank">candycanearter</a></td>
</tr>
<tr>
<td><strong><a href="https://hackerpublicradio.org/eps/hpr4550/index.html" target="_blank">4550</a></strong></td>
<td>Fri</td>
<td class="shrink">2026-01-09</td>
<td><a href="https://hackerpublicradio.org/eps/hpr4550/index.html" target="_blank">Playing Civilization V, Part 7</a></td>
<td><a href="https://hackerpublicradio.org/correspondents/0198.html" target="_blank">Ahuka</a></td>
</tr>
<tr>
<td><strong><a href="https://hackerpublicradio.org/eps/hpr4551/index.html" target="_blank">4551</a></strong></td>
<td>Mon</td>
<td class="shrink">2026-01-12</td>
<td><a href="https://hackerpublicradio.org/eps/hpr4551/index.html" target="_blank">“Elsbeth in IT: Since ’97” (Part 2)</a></td>
<td><a href="https://hackerpublicradio.org/correspondents/0446.html" target="_blank">Elsbeth</a></td>
</tr>
<tr>
<td><strong><a href="https://hackerpublicradio.org/eps/hpr4552/index.html" target="_blank">4552</a></strong></td>
<td>Tue</td>
<td class="shrink">2026-01-13</td>
<td><a href="https://hackerpublicradio.org/eps/hpr4552/index.html" target="_blank">Printer Conspiracy</a></td>
<td><a href="https://hackerpublicradio.org/correspondents/0201.html" target="_blank">MrX</a></td>
</tr>
<tr>
<td><strong><a href="https://hackerpublicradio.org/eps/hpr4553/index.html" target="_blank">4553</a></strong></td>
<td>Wed</td>
<td class="shrink">2026-01-14</td>
<td><a href="https://hackerpublicradio.org/eps/hpr4553/index.html" target="_blank">Nuclear Reactor Technology - Ep 4 Less Common Reactor Types</a></td>
<td><a href="https://hackerpublicradio.org/correspondents/0455.html" target="_blank">Whiskeyjack</a></td>
</tr>
<tr>
<td><strong><a href="https://hackerpublicradio.org/eps/hpr4554/index.html" target="_blank">4554</a></strong></td>
<td>Thu</td>
<td class="shrink">2026-01-15</td>
<td><a href="https://hackerpublicradio.org/eps/hpr4554/index.html" target="_blank">How I do todo</a></td>
<td><a href="https://hackerpublicradio.org/correspondents/0457.html" target="_blank">Jim DeVore</a></td>
</tr>
<tr>
<td><strong><a href="https://hackerpublicradio.org/eps/hpr4555/index.html" target="_blank">4555</a></strong></td>
<td>Fri</td>
<td class="shrink">2026-01-16</td>
<td><a href="https://hackerpublicradio.org/eps/hpr4555/index.html" target="_blank">HPR Beer Garden 8 - Belgian Christmas Ales</a></td>
<td><a href="https://hackerpublicradio.org/correspondents/0296.html" target="_blank">Kevie</a></td>
</tr>
<tr>
<td><strong><a href="https://hackerpublicradio.org/eps/hpr4556/index.html" target="_blank">4556</a></strong></td>
<td>Mon</td>
<td class="shrink">2026-01-19</td>
<td><a href="https://hackerpublicradio.org/eps/hpr4556/index.html" target="_blank">Nitro man! RC Cars</a></td>
<td><a href="https://hackerpublicradio.org/correspondents/0036.html" target="_blank">operat0r</a></td>
</tr>
<tr>
<td><strong><a href="https://hackerpublicradio.org/eps/hpr4557/index.html" target="_blank">4557</a></strong></td>
<td>Tue</td>
<td class="shrink">2026-01-20</td>
<td><a href="https://hackerpublicradio.org/eps/hpr4557/index.html" target="_blank">Why I prefer tar to zip</a></td>
<td><a href="https://hackerpublicradio.org/correspondents/0078.html" target="_blank">Klaatu</a></td>
</tr>
<tr>
<td><strong><a href="https://hackerpublicradio.org/eps/hpr4558/index.html" target="_blank">4558</a></strong></td>
<td>Wed</td>
<td class="shrink">2026-01-21</td>
<td><a href="https://hackerpublicradio.org/eps/hpr4558/index.html" target="_blank">YouTube Subscriptions 2025 #14</a></td>
<td><a href="https://hackerpublicradio.org/correspondents/0198.html" target="_blank">Ahuka</a></td>
</tr>
<tr>
<td><strong><a href="https://hackerpublicradio.org/eps/hpr4559/index.html" target="_blank">4559</a></strong></td>
<td>Thu</td>
<td class="shrink">2026-01-22</td>
<td><a href="https://hackerpublicradio.org/eps/hpr4559/index.html" target="_blank">Enkele off line vertaaltools </a></td>
<td><a href="https://hackerpublicradio.org/correspondents/0030.html" target="_blank">Ken Fallon</a></td>
</tr>
<tr>
<td><strong><a href="https://hackerpublicradio.org/eps/hpr4560/index.html" target="_blank">4560</a></strong></td>
<td>Fri</td>
<td class="shrink">2026-01-23</td>
<td><a href="https://hackerpublicradio.org/eps/hpr4560/index.html" target="_blank">Arthur C. Clarke: Other Works, Part 2</a></td>
<td><a href="https://hackerpublicradio.org/correspondents/0198.html" target="_blank">Ahuka</a></td>
</tr>
<tr>
<td><strong><a href="https://hackerpublicradio.org/eps/hpr4561/index.html" target="_blank">4561</a></strong></td>
<td>Mon</td>
<td class="shrink">2026-01-26</td>
<td><a href="https://hackerpublicradio.org/eps/hpr4561/index.html" target="_blank">A bit about Mission:Libre, a new project for 11-14 year olds in free software</a></td>
<td><a href="https://hackerpublicradio.org/correspondents/0458.html" target="_blank">Carmen-Lisandrette</a></td>
</tr>
<tr>
<td><strong><a href="https://hackerpublicradio.org/eps/hpr4562/index.html" target="_blank">4562</a></strong></td>
<td>Tue</td>
<td class="shrink">2026-01-27</td>
<td><a href="https://hackerpublicradio.org/eps/hpr4562/index.html" target="_blank">Software development doesn't end until it's packaged</a></td>
<td><a href="https://hackerpublicradio.org/correspondents/0078.html" target="_blank">Klaatu</a></td>
</tr>
<tr>
<td><strong><a href="https://hackerpublicradio.org/eps/hpr4563/index.html" target="_blank">4563</a></strong></td>
<td>Wed</td>
<td class="shrink">2026-01-28</td>
<td><a href="https://hackerpublicradio.org/eps/hpr4563/index.html" target="_blank">Nuclear Reactor Technology - Ep 5 Fast Reactors</a></td>
<td><a href="https://hackerpublicradio.org/correspondents/0455.html" target="_blank">Whiskeyjack</a></td>
</tr>
<tr>
<td><strong><a href="https://hackerpublicradio.org/eps/hpr4564/index.html" target="_blank">4564</a></strong></td>
<td>Thu</td>
<td class="shrink">2026-01-29</td>
<td><a href="https://hackerpublicradio.org/eps/hpr4564/index.html" target="_blank">MakeMKV error</a></td>
<td><a href="https://hackerpublicradio.org/correspondents/0318.html" target="_blank">Archer72</a></td>
</tr>
<tr>
<td><strong><a href="https://hackerpublicradio.org/eps/hpr4565/index.html" target="_blank">4565</a></strong></td>
<td>Fri</td>
<td class="shrink">2026-01-30</td>
<td><a href="https://hackerpublicradio.org/eps/hpr4565/index.html" target="_blank">HPR Beer Garden 9 - Barley Wine</a></td>
<td><a href="https://hackerpublicradio.org/correspondents/0296.html" target="_blank">Kevie</a></td>
</tr>
</table>

<h2>Comments this month</h2>

<p>These are comments which have been made during the past month, either to shows released during the month or to past shows.
There are 20 comments in total.</p>
<h3>Past shows</h3>
<p>There are 6 comments on
5 previous shows:</p>
<ul>
<li><strong><a href="https://hackerpublicradio.org/eps/hpr4313/index.html#comments" target="_blank">hpr4313</a></strong>
(2025-02-12) "<em>Why I made a 1-episode podcast about a war story</em>"
by <a href="https://hackerpublicradio.org/correspondents/0441.html" target="_blank">Antoine</a>.<br>
</li><li>
<ul>
<li>
<a href="https://hackerpublicradio.org/eps/hpr4313/index.html#comment_4561" target="_blank">Comment 3</a>:
Ken Fallon on 2026-01-23:
"Spammer"</li></ul><br>
</li><li><strong><a href="https://hackerpublicradio.org/eps/hpr4424/index.html#comments" target="_blank">hpr4424</a></strong>
(2025-07-17) "<em>How I use Newsboat for Podcasts and Reddit</em>"
by <a href="https://hackerpublicradio.org/correspondents/0318.html" target="_blank">Archer72</a>.<br>
</li><li>
<ul>
<li>
<a href="https://hackerpublicradio.org/eps/hpr4424/index.html#comment_4547" target="_blank">Comment 7</a>:
Ken Fallon on 2026-01-03:
"Some podcast aggregators show ccdn.php as file name #321"</li>
<li>
<a href="https://hackerpublicradio.org/eps/hpr4424/index.html#comment_4548" target="_blank">Comment 8</a>:
Archer72 on 2026-01-05:
"Re: download-filename-format for HPR podcasts"</li></ul><br>
</li><li><strong><a href="https://hackerpublicradio.org/eps/hpr4532/index.html#comments" target="_blank">hpr4532</a></strong>
(2025-12-16) "<em>Cheap Yellow Display Project Part 5: Graphical User Interface </em>"
by <a href="https://hackerpublicradio.org/correspondents/0394.html" target="_blank">Trey</a>.<br>
</li><li>
<ul>
<li>
<a href="https://hackerpublicradio.org/eps/hpr4532/index.html#comment_4552" target="_blank">Comment 2</a>:
Ken Fallon on 2026-01-10:
"Possible Graphics Library"</li></ul><br>
</li><li><strong><a href="https://hackerpublicradio.org/eps/hpr4536/index.html#comments" target="_blank">hpr4536</a></strong>
(2025-12-22) "<em>Welcome to the Linux Community</em>"
by <a href="https://hackerpublicradio.org/correspondents/0194.html" target="_blank">Deltaray</a>.<br>
</li><li>
<ul>
<li>
<a href="https://hackerpublicradio.org/eps/hpr4536/index.html#comment_4549" target="_blank">Comment 6</a>:
Archer72 on 2026-01-05:
"Re: Good talk CliMagic"</li></ul><br>
</li><li><strong><a href="https://hackerpublicradio.org/eps/hpr4543/index.html#comments" target="_blank">hpr4543</a></strong>
(2025-12-31) "<em>Nuclear Reactor Technology - Ep 3 Reactor Basics</em>"
by <a href="https://hackerpublicradio.org/correspondents/0455.html" target="_blank">Whiskeyjack</a>.<br>
</li><li>
<ul>
<li>
<a href="https://hackerpublicradio.org/eps/hpr4543/index.html#comment_4546" target="_blank">Comment 2</a>:
Kevin O'Brien on 2026-01-01:
"Really enjoying this series"</li></ul><br>
</li></ul>
<h3>This month's shows</h3>
<p>There are 14 comments on 9 of this month's shows:</p>
<ul><li><strong><a href="https://hackerpublicradio.org/eps/hpr4546/index.html#comments" target="_blank">hpr4546</a></strong>
(2026-01-05) "<em>HPR Community News for December 2025</em>"
by <a href="https://hackerpublicradio.org/correspondents/0159.html" target="_blank">HPR Volunteers</a>.</li>
<li>
<ul><li><a href="https://hackerpublicradio.org/eps/hpr4546/index.html#comment_4550" target="_blank">Comment 1</a>:
Archer72 on 2026-01-06:
"Nuclear Reactor series"</li><li><a href="https://hackerpublicradio.org/eps/hpr4546/index.html#comment_4551" target="_blank">Comment 2</a>:
Henrik Hemrin on 2026-01-07:
"Linux"</li></ul><br>
</li><li><strong><a href="https://hackerpublicradio.org/eps/hpr4551/index.html#comments" target="_blank">hpr4551</a></strong>
(2026-01-12) "<em>“Elsbeth in IT: Since ’97” (Part 2)</em>"
by <a href="https://hackerpublicradio.org/correspondents/0446.html" target="_blank">Elsbeth</a>.</li>
<li>
<ul><li><a href="https://hackerpublicradio.org/eps/hpr4551/index.html#comment_4554" target="_blank">Comment 1</a>:
operat0r on 2026-01-15:
"White Male"</li></ul><br>
</li><li><strong><a href="https://hackerpublicradio.org/eps/hpr4552/index.html#comments" target="_blank">hpr4552</a></strong>
(2026-01-13) "<em>Printer Conspiracy</em>"
by <a href="https://hackerpublicradio.org/correspondents/0201.html" target="_blank">MrX</a>.</li>
<li>
<ul><li><a href="https://hackerpublicradio.org/eps/hpr4552/index.html#comment_4564" target="_blank">Comment 1</a>:
candycanearter07 on 2026-01-24:
"printer issues"</li></ul><br>
</li><li><strong><a href="https://hackerpublicradio.org/eps/hpr4554/index.html#comments" target="_blank">hpr4554</a></strong>
(2026-01-15) "<em>How I do todo</em>"
by <a href="https://hackerpublicradio.org/correspondents/0457.html" target="_blank">Jim DeVore</a>.</li>
<li>
<ul><li><a href="https://hackerpublicradio.org/eps/hpr4554/index.html#comment_4558" target="_blank">Comment 1</a>:
brian-in-ohio on 2026-01-17:
"Welcome"</li><li><a href="https://hackerpublicradio.org/eps/hpr4554/index.html#comment_4563" target="_blank">Comment 2</a>:
candycanearter07 on 2026-01-24:
"good first show!"</li></ul><br>
</li><li><strong><a href="https://hackerpublicradio.org/eps/hpr4555/index.html#comments" target="_blank">hpr4555</a></strong>
(2026-01-16) "<em>HPR Beer Garden 8 - Belgian Christmas Ales</em>"
by <a href="https://hackerpublicradio.org/correspondents/0296.html" target="_blank">Kevie</a>.</li>
<li>
<ul><li><a href="https://hackerpublicradio.org/eps/hpr4555/index.html#comment_4555" target="_blank">Comment 1</a>:
KarldaTech on 2026-01-16:
"Christmas Ale"</li></ul><br>
</li><li><strong><a href="https://hackerpublicradio.org/eps/hpr4557/index.html#comments" target="_blank">hpr4557</a></strong>
(2026-01-20) "<em>Why I prefer tar to zip</em>"
by <a href="https://hackerpublicradio.org/correspondents/0078.html" target="_blank">Klaatu</a>.</li>
<li>
<ul><li><a href="https://hackerpublicradio.org/eps/hpr4557/index.html#comment_4560" target="_blank">Comment 1</a>:
candycanearter07 on 2026-01-20:
"interesting experiment"</li></ul><br>
</li><li><strong><a href="https://hackerpublicradio.org/eps/hpr4559/index.html#comments" target="_blank">hpr4559</a></strong>
(2026-01-22) "<em>Enkele off line vertaaltools </em>"
by <a href="https://hackerpublicradio.org/correspondents/0030.html" target="_blank">Ken Fallon</a>.</li>
<li>
<ul><li><a href="https://hackerpublicradio.org/eps/hpr4559/index.html#comment_4562" target="_blank">Comment 1</a>:
ClaudioM on 2026-01-23:
"Just What I Needed!"</li><li><a href="https://hackerpublicradio.org/eps/hpr4559/index.html#comment_4565" target="_blank">Comment 2</a>:
mnw on 2026-01-26:
"Great Recommendations!"</li></ul><br>
</li><li><strong><a href="https://hackerpublicradio.org/eps/hpr4561/index.html#comments" target="_blank">hpr4561</a></strong>
(2026-01-26) "<em>A bit about Mission:Libre, a new project for 11-14 year olds in free software</em>"
by <a href="https://hackerpublicradio.org/correspondents/0458.html" target="_blank">Carmen-Lisandrette</a>.</li>
<li>
<ul><li><a href="https://hackerpublicradio.org/eps/hpr4561/index.html#comment_4566" target="_blank">Comment 1</a>:
Henrik Hemrin on 2026-01-27:
"Happy to learn about the project"</li><li><a href="https://hackerpublicradio.org/eps/hpr4561/index.html#comment_4567" target="_blank">Comment 2</a>:
candycanearter07 on 2026-01-28:
"cool project"</li></ul><br>
</li><li><strong><a href="https://hackerpublicradio.org/eps/hpr4563/index.html#comments" target="_blank">hpr4563</a></strong>
(2026-01-28) "<em>Nuclear Reactor Technology - Ep 5 Fast Reactors</em>"
by <a href="https://hackerpublicradio.org/correspondents/0455.html" target="_blank">Whiskeyjack</a>.</li>
<li>
<ul><li><a href="https://hackerpublicradio.org/eps/hpr4563/index.html#comment_4568" target="_blank">Comment 1</a>:
mnw on 2026-01-29:
"Great Series"</li><li><a href="https://hackerpublicradio.org/eps/hpr4563/index.html#comment_4569" target="_blank">Comment 2</a>:
Whiskeyjack on 2026-01-29:
"hpr4563 :: Nuclear Reactor Technology - Ep 5 Fast Reactors"</li></ul><br>
</li></ul>

<h2>Mailing List discussions</h2>
<p>
Policy decisions surrounding HPR are taken by the community as a whole. This
discussion takes place on the <a href="https://lists.hackerpublicradio.com/mailman/listinfo/hpr" target="_blank">Mailing List</a>
which is open to all HPR listeners and contributors. The discussions are open
and available on the HPR server under <a href="https://lists.hackerpublicradio.com/pipermail/hpr">Mailman</a>.
</p>
<p>The threaded discussions this month can be found here:</p>
<a href="https://lists.hackerpublicradio.com/pipermail/hpr/2026-January/thread.html" target="_blank">https://lists.hackerpublicradio.com/pipermail/hpr/2026-January/thread.html</a>

<h2>Events Calendar</h2>
<p>With the kind permission of <strong>LWN.net</strong> we are linking to
<a href="https://lwn.net/Calendar/" target="_blank">The LWN.net Community Calendar</a>.</p>
<p>Quoting the site:</p>
<blockquote>This is the LWN.net community event calendar, where we track
events of interest to people using and developing Linux and free software.
Clicking on individual events will take you to the appropriate web
page.</blockquote>
<p><a href="https://hackerpublicradio.org/eps/hpr4566/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4565: HPR Beer Garden 9 - Barley Wine]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.


With winter in full swing in the UK, Dave and Kevie continue their look at winter warmer ales with a review of a couple of British Barley Wine ales. Dave samples Ridgeway's 
Criminally Bad Elf 
whilst Kevie tries out a lmited release from Chilter...]]></description>
<link>https://tsecurity.de/de/3242979/it+sicherheit/it+podcasts/hpr4565+hpr+beer+garden+9+-+barley+wine/</link>
<pubDate>Fri, 30 Jan 2026 01:02:13 +0100</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>

<p>
With winter in full swing in the UK, Dave and Kevie continue their look at winter warmer ales with a review of a couple of British Barley Wine ales. Dave samples Ridgeway's <a href="https://www.ridgewaybrewery.co.uk/products/criminally-bad-elf" rel="noopener noreferrer" target="_blank">
Criminally Bad Elf </a>
whilst Kevie tries out a lmited release from Chiltern Brewery <a href="https://shop.chilternbrewery.co.uk/products/rodgers-bodgers-barley-wine" rel="noopener noreferrer" target="_blank">
Roger Bodger's Barley WIne.</a>
</p>
<p>
<a href="https://hackerpublicradio.org/eps/hpr4565/hpr4565_image_1.png">
<img src="https://hackerpublicradio.org/eps/hpr4565/hpr4565_image_1_tn.png">
</a>
</p>
<p>
Connect with the guys on Untappd:</p>
<ol>
<li data-list="bullet">
<a href="https://untappd.com/user/thelovebug" rel="noopener noreferrer" target="_blank">
Dave</a>
</li>
<li data-list="bullet">
<a href="https://untappd.com/user/kevie49" rel="noopener noreferrer" target="_blank">
Kevie</a>
</li>
</ol>
<p>
<br>
</p>
<p>
The intro sounds for the show are used from:</p>
<ol>
<li data-list="bullet">
<a href="https://freesound.org/people/mixtus/sounds/329806/" rel="noopener noreferrer" target="_blank">
https://freesound.org/people/mixtus/sounds/329806/</a>
</li>
<li data-list="bullet">
<a href="https://freesound.org/people/j1987/sounds/123003/" rel="noopener noreferrer" target="_blank">
https://freesound.org/people/j1987/sounds/123003/</a>
</li>
<li data-list="bullet">
<a href="https://freesound.org/people/greatsoundstube/sounds/628437/" rel="noopener noreferrer" target="_blank">
https://freesound.org/people/greatsoundstube/sounds/628437/</a>
</li>
</ol>
<p>
<br>
</p>


<p><a href="https://hackerpublicradio.org/eps/hpr4565/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4564: MakeMKV error]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.

I am using MakeMKV version 1.18.2, the most updated version of the program

USB Blu-ray drive BD-MLT UJ240AS reads a DVD or Blu-ray disc correctly

Matshita


SATA Blu-ray drive BDDVDRW CH20L stalls with ad DVD or Blu-ray disc

Hewlett Packard
The...]]></description>
<link>https://tsecurity.de/de/3240669/it+sicherheit/it+podcasts/hpr4564+makemkv+error/</link>
<pubDate>Thu, 29 Jan 2026 01:17:29 +0100</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>
<ol>
<li><p>I am using MakeMKV version 1.18.2, the most updated version of the program</p>
</li>
<li><p>USB Blu-ray drive BD-MLT UJ240AS reads a DVD or Blu-ray disc correctly</p>
<ul>
<li>Matshita</li>
</ul>
</li>
<li><p>SATA Blu-ray drive BDDVDRW CH20L stalls with ad DVD or Blu-ray disc</p>
<ul>
<li>Hewlett Packard</li>
<li>The disc does not stall with Handbrake</li>
<li>There is enough power, using an adapter that provides 12v</li>
<p>
<strong>
Before:</strong>
</p>

<p>
<a href="https://hackerpublicradio.org/eps/hpr4564/hpr4564_image_1.png">
<img src="https://hackerpublicradio.org/eps/hpr4564/hpr4564_image_1_tn.png">
</a>
</p>
</ul>
</li>
<li><p><a href="https://forum.makemkv.com/forum/viewtopic.php?t=38128" title="MakeMKV v1.18.1 linux - x64-release stuck when launched">MakeMKV v1.18.1 linux(x64-release) stuck when launched</a></p>
</li>
<li><p><a href="https://forum.makemkv.com/forum/viewtopic.php?t=17484J" title="How do I download older versions?">How do I download older versions?</a></p>
</li>
<li><p><a href="http://makemkv.com/download/old/">MakeMKV old version repo</a></p>
</li>
<li><p><a href="https://makemkv.com/download/old/makemkv-bin-1.17.7.tar.gzJ" title="makemkv-bin-1.17.7.tar.gz    2024-05-15 16:29">makemkv-bin-1.17.7.tar.gz    2024-05-15 16:29</a></p>
</li>
<li><p><a href="https://makemkv.com/download/old/makemkv-oss-1.17.7.tar.gzJ" title="makemkv-oss-1.17.7.tar.gz    2024-05-15 16:31">makemkv-oss-1.17.7.tar.gz    2024-05-15 16:31</a></p>
</li>
</ol>
<p>
<strong>
After:</strong>
</p>

<p>
<a href="https://hackerpublicradio.org/eps/hpr4564/hpr4564_image_2.png">
<img src="https://hackerpublicradio.org/eps/hpr4564/hpr4564_image_2_tn.png">
</a>
</p>


<p>
<a href="https://hackerpublicradio.org/eps/hpr4564/hpr4564_image_3.png">
<img src="https://hackerpublicradio.org/eps/hpr4564/hpr4564_image_3_tn.png">
</a>
</p>

<p>Recorded with:</p>
<p><a href="https://zoomcorp.com/en/us/handheld-recorders/handheld-recorders/h1essential" title="Zoom H1 Essential Microphone">Zoom H1 Essential Microphone</a></p>
<p>Monitored with:</p>
<p><a href="https://www.soundcore.com/products/soundcore-v20i?ref=open-ear-headphones" title="soundcore V20i open ear headphones">soundcore V20i open ear headphones</a></p>

<p><a href="https://hackerpublicradio.org/eps/hpr4564/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4563: Nuclear Reactor Technology - Ep 5 Fast Reactors]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.


Fast Reactors




03 Fast versus Slow Neutrons

"Fast neutron" reactors are ones which use the "fast neutron" reaction.

This is as opposed to "slow" or "thermal" neutron reactors which use a slow neutron reaction.

Nearly all reactors in use tod...]]></description>
<link>https://tsecurity.de/de/3238230/it+sicherheit/it+podcasts/hpr4563+nuclear+reactor+technology+-+ep+5+fast+reactors/</link>
<pubDate>Wed, 28 Jan 2026 01:02:16 +0100</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>

<p>
Fast Reactors</p>
<p>
<br>
</p>
<p>
03 Fast versus Slow Neutrons</p>
<p>
"Fast neutron" reactors are ones which use the "fast neutron" reaction.</p>
<p>
This is as opposed to "slow" or "thermal" neutron reactors which use a slow neutron reaction.</p>
<p>
Nearly all reactors in use today use a slow neutron reaction.</p>
<p>
<br>
</p>
<p>
04 Moderators</p>
<p>
06 No Moderator in Fast Neutron Reactors</p>
<p>
<br>
</p>
<p>
07 Burners versus Breeders</p>
<p>
<br>
</p>
<p>
08 Fast Fission Fuel Cycle</p>
<p>
08 "Typical" Fuel</p>
<p>
09 Other Methods</p>
<p>
10 Reprocessing</p>
<p>
<br>
</p>
<p>
11 Fuel Types</p>
<p>
11 Oxide</p>
<p>
12 Metal</p>
<p>
13 Nitride</p>
<p>
14 Carbide</p>
<p>
<br>
</p>
<p>
15 Coolant</p>
<p>
16 Liquid Sodium</p>
<p>
18 Liquid Lead or Lead-Bismuth</p>
<p>
19 Helium Gas</p>
<p>
20 Molten Salt</p>
<p>
<br>
</p>
<p>
21 History of Fast Neutron Reactors</p>
<p>
21 Origins</p>
<p>
22 Reasons for Developing Them</p>
<p>
23 Reasons They are Still Being Developed</p>
<p>
24 This is a Proven Technology</p>
<p>
25 Plutonium Stockpiles</p>
<p>
<br>
</p>
<p>
26 Pros and Cons of Fast Reactors</p>
<p>
If fast reactors are more expensive and difficult to operate than slow reactors, why is there any interest in them?</p>
<p>
<br>
</p>
<p>
27 Pros</p>
<p>
Fast neutron reactors can use all of the uranium supply by converting the U-238 to plutonium as well as using the U-235.</p>
<p>
Slow neutron reactors can only use the U-235 plus converting a very small proportion of the U-238 to plutonium.</p>
<p>
This means that a given amount of fuel will go much further when used with a fast neutron reactor than a slow one.</p>
<p>
28</p>
<p>
Some (but not all) fast neutron reactors can produce more plutonium than they use.</p>
<p>
This extra plutonium can be used to make uranium-plutonium mixed oxide (or MOX) fuel to be used in slow reactors, or it can be used to power a thorium fuel cycle. </p>
<p>
So the higher cost of the fast neutron reactors can be offset by having it produce fuel for several slow neutron or thorium reactors.</p>
<p>
29</p>
<p>
They can also use up or "burn" radioactive waste. That is, highly radioactive elements which are a byproduct of fuel use but not usable as fuel by themselves can be separated from the spent fuel and fed back into the reactor where the additional radiation will convert them into elements or isotopes which are either not radioactive or which are otherwise easier to dispose of.</p>
<p>
<br>
</p>
<p>
30 Cons</p>
<p>
There are a number of cons however, as otherwise there would be a lot more fast neutron reactors in the world.</p>
<p>
Since water, even "light" water, is a moderator, fast neutron reactors cannot use water as a coolant.</p>
<p>
Other alternative coolants must be used, and these complicate the design of the reactor and make it more difficult to operate.</p>
<p>
31</p>
<p>
Alternative compatible coolants may be corrosive, and so new materials may need to be developed for both the reactor vessel and the fuel cladding.</p>
<p>
Alternative coolants are often opaque, making it difficult to inspect the reactor.</p>
<p>
The fuel cycle requires reprocessing spent fuel, which means that reprocessing facilities have to be set up, which is an additional expense.</p>
<p>
32</p>
<p>
Fast neutron reactors were primarily developed on the premise that uranium supplies were limited and would soon become very expensive. However new very large and very high grade uranium deposits were discovered in Canada, Australia, and Kazakhstan, causing uranium prices to fall rather than rise. As a result it is much cheaper to operate a once-through fuel cycle than to build fast neutron reactors.</p>
<p>
<br>
</p>
<p>
33 Future Prospects</p>
<p>
Currently fast neutron reactors are not economically competitive with slow neutron reactors for electric power generation so there isn't a lot of interest from prospective customers.</p>
<p>
Originally interest in them was driven by a belief that the world would run short of uranium.</p>
<p>
However, higher uranium prices sparked increased mineral exploration which resulted in finding large high grade reserves of low cost uranium, undercutting the need for economizing on its use.</p>
<p>
34</p>
<p>
There is still ongoing R&amp;D though as they offer several other use cases.</p>
<p>
One is to get rid of radioactive waste elements by turning them into non-radioactive or less radioactive isotopes or elements.</p>
<p>
The other is to provide a supply of plutonium for fuelling thorium reactors.</p>
<p>
<br>
</p>
<p>
35 Conclusion</p>
<p>
This has been a short overview of fast neutron reactors, including their history, uses, and underlying design features.</p>
<p>
<br>
</p>
<p>
In the next episode we will describe the use of thorium in nuclear power, including what thorium is, how it differs from uranium, and what sort of reactors can use it.</p>
<p>
<br>
</p>


<p><a href="https://hackerpublicradio.org/eps/hpr4563/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4562: Software development doesn't end until it's packaged]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.
Development isn’t over until it’s packaged
Most software development I’ve done has been utilities for highly specific workflows. I’ve written code to ensure that metadata for a company’s custom file format gets copied along with the rest of the dat...]]></description>
<link>https://tsecurity.de/de/3235976/it+sicherheit/it+podcasts/hpr4562+software+development+doesnt+end+until+its+packaged/</link>
<pubDate>Tue, 27 Jan 2026 01:01:57 +0100</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>
<h1>Development isn’t over until it’s packaged</h1>
<p>Most software development I’ve done has been utilities for highly specific workflows. I’ve written code to ensure that metadata for a company’s custom file format gets copied along with the rest of the data when the file gets archived, code that ensures a search field doesn’t mangle input, lots of Git hooks, file converters, parsers, and of course my fair share of dirty hacks. Because most software projects I work on are designed for a specific task, very few of them have required packaging. My utilities have been either integrated into a larger code base I’m not responsible for, or else distributed across an infrastructure by an admin. It’s like a magic trick, which has made my life conveniently easier but, as magic does, it has also tricked me into thinking that my development work is done once I can prove that my code does its job. The reality is that code development isn’t actually done until you can deliver it to your users in a format they can install.</p>
<p>I don’t think I’m alone in forgetting that software delivery is the real final product. There are many reasons some developers stop short of providing an installable package for the code they’ve worked on for weeks or months or years. First of all, packaging is work, and after writing and troubleshooting code for months, sometimes you just want your work to be over just as soon as everything functions as expected. Secondly, there are a lot of software package formats out there, regardless of what platform you’re delivering to. However, I view packaging as part of quality assurance. There are lots of benefits you gain by packaging your code into an installer, and you don’t have to target every package format. In fact, you get the benefits of packaging by creating just one package.</p>
<h2>Checking for consistency</h2>
<p>When you package your code as an installable file, whether it’s an RPM file or a Bash script or a Flatpak or AppImage or EXE or MSI or anything else, you are checking your code base for consistency. Pick whatever package format you’re most comfortable with, or the one you think represents the bulk of your target audience, and you’re sure to find that the package tooling expects to be automated. Nobody wants to start packaging from scratch every time they update code, so naturally packaging tools are designed to be configured once for a specific code base and then to create updated packages each time the code base is updated. If you’re building a package for your project and discover that you have to manually intervene, then you’ve discovered a bug in your code.</p>
<p>Imagine that you’ve got a project repository with a name in camel-case. You hadn’t noticed before, but your code refers to itself in a mix of lowercase and camel-case. Your package build grinds to a halt because a variable used by the packaging tools suddenly can’t find your code base because it was set to a lowercase title but the archive of your code uses camel-case. If this happens to you, it’s also going to happen for every software packager trying to help you deliver your project to their users. Fix it for yourself, and you’ve fixed it for everyone.</p>
<h2>Discover surprise dependencies</h2>
<p>For decades, one of the most common problems of software troubleshooting has been the phrase “well, it works on my machine.” No matter how many tools we developers have at our disposal to make it easy to build and run software on a clean system, it’s still common to accidentally deliver software with surprise dependencies. It’s easy to forget to revert to a clean snapshot in a virtual machine, or to use a container that just happens to have a more recent version of a library than you’d realised, or to get the path of an important executable wrong in a script, or to forget that not all computers ship with a thing you take for granted.</p>
<p>Not all packaging tools are immune to this problem, but very robust ones (like RPM and DEB, Flatpak, and AppImage) are. I can’t count the times I’ve tried to deliver an RPM only to be reminded by <code>rpmbuild</code> that I haven’t included the <code>-devel</code> version of a dependency (many Linux distributions separate development libraries from binaries.)</p>
<p>You may not literally fix every problem with dependency management by building a single package, but you can clearly identify what your code requires. It only takes a single warning from your packaging tool for you to add a note to other packagers about what they must include in their own builds.</p>
<p>As an additional bonus, it’s also a good reminder to double check the licenses your project is using. In the haze of desperate hacking to get something to just-work-already, it’s helpful to get a gentle reminder that you’ve linked to a library with a different license than everything else. Few packaging tools (if any?) detect licensing requirements directly, but sometimes all it takes is a reminder that you’re using a library that comes from a non-standard repo for you to remember to review licensing.</p>
<h2>Every package is an example package</h2>
<p>Once you’ve packaged your code once, you create an example for everyone coming to your project to turn it into a package of their own. It doesn’t matter whether your example package is an RPM or a DEB or just a TGZ for a front-end like SlackBuild or Arch’s AUR, it’s the interaction between a packaging system and the input script that counts. Even a novice package maintainer is likely to be able to reverse engineer a packaging script enough to reuse the same logic for their own package.</p>
<p>Here’s the build and install section of the RPM for GNU Hello:</p>
<pre><code>%prep
%autosetup
%build
%configure
make %{?_smp_mflags}
%install
%make_install
%find_lang %{name}
rm -f %{buildroot}/%{_infodir}/dir
%post
/sbin/install-info %{_infodir}/%{name}.info %{_infodir}/dir || :</code></pre>
<p>Here’s the GNU Hello build script for Arch Linux:</p>
<pre><code>source=(https://ftp.gnu.org/gnu/hello/$pkgname-$pkgver.tar.gz)
md5sums=('5cf598783b9541527e17c9b5e525b7eb')
build(){
cd "$pkgname-$pkgver"
./configure --prefix=/usr
make
}
package(){
cd "$pkgname-$pkgver"
make DESTDIR="$pkgdir/" install
}</code></pre>
<p>There are differences, but you can see the shared logic. There are macros or functions that abstract some common steps of the build process, there are variables to ensure consistency, and they both benefit from using <code>automake</code> as provided by the source code. Armed with these examples, you could probably write a DEB package or Flatpak ref for GNU Hello in an afternoon.</p>
<h2>Package your code at least once</h2>
<p>Packaging is quality assurance. Even though a packaging system is really just a front-end for whatever build system your code uses anyway, the rigour of creating a repeatable and automated process for delivering your project is a helpful exercise. It benefits your project, and it benefits the people eager to deliver your project to other users. Software development isn’t over until it’s packaged.</p><p>Shownotes taken from <a href="https://www.both.org/?p=13264">https://www.both.org/?p=13264</a></p><p><a href="https://hackerpublicradio.org/eps/hpr4562/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4561: A bit about Mission:Libre, a new project for 11-14 year olds in free software]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.

    Mission:Libre is a new project for 11 to 14-year-old kids who're
    interested in free software. 
    
    Mission:Libre website: https://missionlibre.org
    
    Carmen's e-mail address: carmen@missionlibre.org
    
    "Libre!" issue 0: ht...]]></description>
<link>https://tsecurity.de/de/3233774/it+sicherheit/it+podcasts/hpr4561+a+bit+about+missionlibre+a+new+project+for+11-14+year+olds+in+free+software/</link>
<pubDate>Mon, 26 Jan 2026 01:01:35 +0100</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>

    Mission:Libre is a new project for 11 to 14-year-old kids who're
    interested in free software. <br>
    <br>
    Mission:Libre website: <a href="https://missionlibre.org/">https://missionlibre.org</a><br>
    <br>
    Carmen's e-mail address: carmen@missionlibre.org<br>
    <br>
    "Libre!" issue 0: <a href="https://missionlibre.org/files/libre0.pdf">https://missionlibre.org/files/libre0.pdf</a><br>
    <br>
    Mission:Libre's Liberapay: <a href="https://liberapay.com/MissionLibre">https://liberapay.com/MissionLibre</a><p><a href="https://hackerpublicradio.org/eps/hpr4561/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4560: Arthur C. Clarke: Other Works, Part 2]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.
This brings us to a look at some of Arthur C. Clarke'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 stor...]]></description>
<link>https://tsecurity.de/de/3229256/it+sicherheit/it+podcasts/hpr4560+arthur+c+clarke+other+works+part+2/</link>
<pubDate>Fri, 23 Jan 2026 01:02:27 +0100</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>
<p>This brings us to a look at some of Arthur C. Clarke'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's Science Fiction and we have seen a lot of good stuff here. And as a final note, we cover CLarke's Three Laws.</p>
<h3>Arthur C. Clarke: Other Works, A Time Odyssey</h3>
<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>
<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>
<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>
<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
Other Works
Tales from the White Hart</p>
<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.
The Nine Billion Names of God</p>
<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.
The Star</p>
<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>
<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?”
Dolphin Island</p>
<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.
A Meeting With Medusa</p>
<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>
<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.
Clarke’s Three Laws</p>
<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>
<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.
The 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.
Any sufficiently advanced technology <span class="hljs-keyword">is</span> indistinguishable <span class="hljs-keyword">from</span> magic.
</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>
<h2>Links:</h2>
<ul>
<li><a href="https://en.wikipedia.org/wiki/A_Time_Odyssey">https://en.wikipedia.org/wiki/A_Time_Odyssey</a></li>
<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>
<li><a href="https://en.wikipedia.org/wiki/Joseph_Jorkens">https://en.wikipedia.org/wiki/Joseph_Jorkens</a></li>
<li><a href="https://en.wikipedia.org/wiki/Baron_Munchausen">https://en.wikipedia.org/wiki/Baron_Munchausen</a></li>
<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>
<li><a href="https://en.wikipedia.org/wiki/Callahan%27s_Crosstime_Saloon">https://en.wikipedia.org/wiki/Callahan%27s_Crosstime_Saloon</a></li>
<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>
<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>
<li><a href="https://en.wikipedia.org/wiki/Dolphin_Island_(novel)">https://en.wikipedia.org/wiki/Dolphin_Island_(novel)</a></li>
<li><a href="https://en.wikipedia.org/wiki/A_Meeting_with_Medusa">https://en.wikipedia.org/wiki/A_Meeting_with_Medusa</a></li>
<li><a href="https://en.wikipedia.org/wiki/Clarke%27s_three_laws">https://en.wikipedia.org/wiki/Clarke%27s_three_laws</a></li>
<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>
</ul><p><a href="https://hackerpublicradio.org/eps/hpr4560/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4559: Enkele off line vertaaltools]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.


Offline Translator tools

Translate text offline

LocalTranslate is an offline translation application that uses Firefox's neural translation models (from the mozilla/firefox-translations-models project) to perform high-quality translations local...]]></description>
<link>https://tsecurity.de/de/3226978/it+sicherheit/it+podcasts/hpr4559+enkele+off+line+vertaaltools/</link>
<pubDate>Thu, 22 Jan 2026 01:02:11 +0100</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>

<h1>
Offline Translator tools</h1>
<h2>
Translate text offline</h2>
<p>
LocalTranslate is an offline translation application that uses Firefox's neural translation models (from the mozilla/firefox-translations-models project) to perform high-quality translations locally on your device.</p>
<p>
Note: LocalTranslate is not affiliated with The Mozilla Foundation in any way.</p>
<h3>
Links</h3>
<ol>
<li data-list="bullet">
<a href="https://flathub.org/en/apps/dev.ters.LocalTranslate" rel="noopener noreferrer" target="_blank">
LocalTranslate by Shriram Ravindranathan on flathub.org</a>
</li>
<li data-list="bullet">
<a href="https://github.com/terslang/LocalTranslate/#GPL-3.0-1-ov-file" rel="noopener noreferrer" target="_blank">
GPL-3.0 license</a>
</li>
<li data-list="bullet">
<a href="https://github.com/terslang/LocalTranslate/" rel="noopener noreferrer" target="_blank">
Source Code</a>
</li>
</ol>
<p>
<br>
</p>
<p>
<a href="https://hackerpublicradio.org/eps/hpr4559/hpr4559_image_1.png">
<img src="https://hackerpublicradio.org/eps/hpr4559/hpr4559_image_1_tn.png">
</a>
</p>
<p>
<br>
</p>
<p>
<br>
</p>
<h2>
Offline Translator - On-device translation of text and images</h2>
<p>
A translator app that performs on-device translation of text and images without sending your data to external servers.</p>
<h3>
Features:</h3>
<ol>
<li data-list="bullet">
On-device translation using Mozilla's translation models</li>
<li data-list="bullet">
Transliteration of non-latin script</li>
<li data-list="bullet">
OCR (Optical Character Recognition) for translating text in images</li>
<li data-list="bullet">
Automatic language detection</li>
<li data-list="bullet">
Image translation overlay that preserves original formatting</li>
<li data-list="bullet">
Support for multiple language pairs</li>
<li data-list="bullet">
No internet required for translation once models are downloaded</li>
<li data-list="bullet">
All translation happens locally</li>
</ol>
<h3>
Links</h3>
<ol>
<li data-list="bullet">
<a href="https://f-droid.org/en/packages/dev.davidv.translator/" rel="noopener noreferrer" target="_blank">
Offline Translator by David Ventura on F-droid</a>
</li>
<li data-list="bullet">
[GNU General Public License v3.0 or later](<a href="https://spdx.org/licenses/GPL-3.0-or-later.html" rel="noopener noreferrer" target="_blank">
https://spdx.org/licenses/GPL-3.0-or-later.html</a>
</li>
<li data-list="bullet">
<a href="https://github.com/DavidVentura/offline-translator" rel="noopener noreferrer" target="_blank">
Source Code</a>
</li>
<li data-list="bullet">
<a href="https://hackerpublicradio.org/eps/hpr3315/index.html" rel="noopener noreferrer" target="_blank">
hpr3315 :: tesseract optical character recognition</a>
</li>
</ol>
<p>
<br>
</p>
<p>
<a href="https://hackerpublicradio.org/eps/hpr4559/hpr4559_image_2.jpeg">
<img src="https://hackerpublicradio.org/eps/hpr4559/hpr4559_image_2_tn.jpeg">
</a>
</p>


<p><a href="https://hackerpublicradio.org/eps/hpr4559/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4558: YouTube Subscriptions 2025 #14]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.


I am subscribed to a number of YouTube channels, and I am sharing them with you.

Links:



https://www.youtube.com/@bulwarkmedia



https://www.youtube.com/@thefabfaux



https://www.youtube.com/@TheGreatWar



https://www.youtube.com/@TheHistor...]]></description>
<link>https://tsecurity.de/de/3224583/it+sicherheit/it+podcasts/hpr4558+youtube+subscriptions+2025+14/</link>
<pubDate>Wed, 21 Jan 2026 01:02:11 +0100</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>

<p>
I am subscribed to a number of YouTube channels, and I am sharing them with you.</p>
<h3>
Links:</h3>
<ul>
<li>
<a href="https://www.youtube.com/@bulwarkmedia" rel="noopener noreferrer" target="_blank">
https://www.youtube.com/@bulwarkmedia</a>
</li>
<li>
<a href="https://www.youtube.com/@thefabfaux" rel="noopener noreferrer" target="_blank">
https://www.youtube.com/@thefabfaux</a>
</li>
<li>
<a href="https://www.youtube.com/@TheGreatWar" rel="noopener noreferrer" target="_blank">
https://www.youtube.com/@TheGreatWar</a>
</li>
<li>
<a href="https://www.youtube.com/@TheHistoryGuyChannel" rel="noopener noreferrer" target="_blank">
https://www.youtube.com/@TheHistoryGuyChannel</a>
</li>
<li>
<a href="https://www.youtube.com/@TheImmedFamily" rel="noopener noreferrer" target="_blank">
https://www.youtube.com/@TheImmedFamily</a>
</li>
<li>
<a href="https://www.youtube.com/@TheKoreanWarbyIndyNeidell" rel="noopener noreferrer" target="_blank">
https://www.youtube.com/@TheKoreanWarbyIndyNeidell</a>
</li>
<li>
<a href="https://www.youtube.com/@TheLanguageTutor" rel="noopener noreferrer" target="_blank">
https://www.youtube.com/@TheLanguageTutor</a>
</li>
<li>
<a href="https://www.youtube.com/@TheLincolnProject" rel="noopener noreferrer" target="_blank">
https://www.youtube.com/@TheLincolnProject</a>
</li>
<li>
<a href="https://www.youtube.com/@planetarysociety" rel="noopener noreferrer" target="_blank">
https://www.youtube.com/@planetarysociety</a>
</li>
<li>
<a href="https://www.youtube.com/@TheSaxyGamer" rel="noopener noreferrer" target="_blank">
https://www.youtube.com/@TheSaxyGamer</a>
</li>
<li>
<a href="https://www.youtube.com/@JSHIPLIFE" rel="noopener noreferrer" target="_blank">
https://www.youtube.com/@JSHIPLIFE</a>
</li>
<li>
<a href="https://www.youtube.com/@thespiffingbrit" rel="noopener noreferrer" target="_blank">
https://www.youtube.com/@thespiffingbrit</a>
</li>
<li>
<a href="https://www.youtube.com/@AmyShiraTeitel" rel="noopener noreferrer" target="_blank">
https://www.youtube.com/@AmyShiraTeitel</a>
</li>
<li>
<a href="https://www.youtube.com/@thefrielsisters" rel="noopener noreferrer" target="_blank">
https://www.youtube.com/@thefrielsisters</a>
</li>
<li>
<a href="https://www.palain.com/" rel="noopener noreferrer" target="_blank">
https://www.palain.com/</a>
</li>
</ul>
<p>
<br>
</p>


<p><a href="https://hackerpublicradio.org/eps/hpr4558/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[169: MoD]]></title>
<description><![CDATA[Legion of Doom, step aside. There’s a new elite hacker group in town, and they’re calling themselves Masters of Deception (MoD). With tactics that are grittier and more sophisticated than those of the LoD, MoD has targeted high-profile entities and left an indelible mark on the internet.This is p...]]></description>
<link>https://tsecurity.de/de/3222843/it+sicherheit/it+podcasts/169+mod/</link>
<pubDate>Tue, 20 Jan 2026 09:03:43 +0100</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Legion of Doom, step aside. There’s a new elite hacker group in town, and they’re calling themselves Masters of Deception (MoD). With tactics that are grittier and more sophisticated than those of the LoD, MoD has targeted high-profile entities and left an indelible mark on the internet.</p><p>This is part 2 of the LoD/MoD series.</p><h3>Sponsors</h3><p>Support for this show comes from <a href="https://www.threatlocker.com/"><strong>ThreatLocker®</strong></a>. ThreatLocker® is a Zero Trust Endpoint Protection Platform that strengthens your infrastructure from the ground up. With ThreatLocker® Allowlisting and Ringfencing™, you gain a more secure approach to blocking exploits of known and unknown vulnerabilities. ThreatLocker® provides Zero Trust control at the kernel level that enables you to allow everything you need and block everything else, including ransomware! Learn more at <a href="https://www.threatlocker.com/"><strong>www.threatlocker.com</strong></a>.</p><p>This show is sponsored by <a href="https://redcanary.com/"><strong>Red Canary</strong></a>. Red Canary is a leading provider of Managed Detection and Response (MDR), helping nearly 1,000 organizations detect and stop threats before they cause harm. With a focus on accuracy across identities, endpoints, and cloud, we deliver trusted security operations and a world-class customer experience. Learn more at <a href="https://redcanary.com/"><strong>redcanary.com</strong></a>.</p><p>This show is sponsored by [Maze][http://mazehq.com/darknet]. Maze uses AI agents to triage and remediate cloud vulnerabilities by figuring out what’s actually exploitable, not just what’s theoretically risky. They remove the noise, prioritize vulns that matter, and manage remediation, so your team stops wasting time on meaningless vulns. Visit [MazeHQ.com/darknet][http://mazehq.com/darknet] for more information.</p><h3>Sources</h3><ul>
<li><a href="https://amzn.to/4q3O0gJ"><strong>Book: Masters of Deception</strong></a></li>
<li><a href="https://amzn.to/3N4bovY"><strong>Book: The Hacker Crackdown</strong></a></li>
<li><a href="https://content.time.com/time/subscriber/article/0,33009,982254-1,00.html"><strong>https://content.time.com/time/subscriber/article/0,33009,982254-1,00.html</strong></a></li>
<li><a href="https://www.nytimes.com/1995/01/14/nyregion/reprogramming-convicted-hacker-his-line-friends-phiber-optik-virtual-hero.html"><strong>https://www.nytimes.com/1995/01/14/nyregion/reprogramming-convicted-hacker-his-line-friends-phiber-optik-virtual-hero.html</strong></a></li>
<li><a href="https://www.gutenberg.org/cache/epub/101/pg101-images.html"><strong>https://www.gutenberg.org/cache/epub/101/pg101-images.html</strong></a></li>
<li><a href="https://phrack.org/issues/31/5"><strong>https://phrack.org/issues/31/5</strong></a></li>
<li><a href="https://www.thisamericanlife.org/2/small-scale-sin"><strong>https://www.thisamericanlife.org/2/small-scale-sin</strong></a></li>
</ul>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4557: Why I prefer tar to zip]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.

    I'm gonna talk about archiving specifically with tar and even
      more specifically why I prefer tar over zip.
    
    Shownotes at 
        https://www.both.org/?p=13268
    Provide feedback on this episode.]]></description>
<link>https://tsecurity.de/de/3222349/it+sicherheit/it+podcasts/hpr4557+why+i+prefer+tar+to+zip/</link>
<pubDate>Tue, 20 Jan 2026 01:02:07 +0100</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>

    <p>I'm gonna talk about archiving specifically with tar and even
      more specifically why I prefer tar over zip.<br>
    </p>
    <p>Shownotes at <a href="https://www.both.org/?p=13268" rel="noopener noreferrer" target="_blank">
        https://www.both.org/?p=13268</a>
    </p><p><a href="https://hackerpublicradio.org/eps/hpr4557/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4556: Nitro man! RC Cars]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.



Today it's a special Christmas episode, it's such a kind of part for the RC cars.
So we're going to have to talk to them about the Metro cars.
The Metro cars are RC cars that run off of this like 20% oil gas thing.
So the oil is in the gas, it h...]]></description>
<link>https://tsecurity.de/de/3220386/it+sicherheit/it+podcasts/hpr4556+nitro+man+rc+cars/</link>
<pubDate>Mon, 19 Jan 2026 01:02:06 +0100</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>

<p>

Today it's a special Christmas episode, it's such a kind of part for the RC cars.
So we're going to have to talk to them about the Metro cars.
The Metro cars are RC cars that run off of this like 20% oil gas thing.
So the oil is in the gas, it has a little motor and you can pay you know $800 for a motor
or you can pay, you know, the 50 bucks for a motor.
<br>
<a href="https://traxxas.com/products/models/electric/rustler-bl2s">https://traxxas.com/products/models/electric/rustler-bl2s</a> </p>
<p>
</p>
<p>
<br>
</p>


<p><a href="https://hackerpublicradio.org/eps/hpr4556/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4555: HPR Beer Garden 8 - Belgian Christmas Ales]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.


Dave and Kevie bring the HPR listeners another festive edition of the Beer Garden, with the focus turning to Belgian Christmas ales. Kevie discovered a scan of the original advert in the Journal De Charleroi from 1896




Translation: Christmas b...]]></description>
<link>https://tsecurity.de/de/3216068/it+sicherheit/it+podcasts/hpr4555+hpr+beer+garden+8+-+belgian+christmas+ales/</link>
<pubDate>Fri, 16 Jan 2026 01:02:25 +0100</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>

<p>
Dave and Kevie bring the HPR listeners another festive edition of the Beer Garden, with the focus turning to Belgian Christmas ales. Kevie discovered a scan of the original advert in the Journal De Charleroi from 1896</p>
<p>
<img src="https://hackerpublicradio.org/eps/hpr4555/hpr4555_image_1.png">
</p>
<p>
Translation: Christmas beer has arrived at the Arabian horse and the globe, these two establishments so famous for Anglaise beers. Go and taste it, because Christmas is only sold for a short time.</p>
<p>
<br>
</p>
<p>
In this episode Dave samples <a href="https://brouwerijtverzet.be/brouwsel#bootlegbeer" rel="noopener noreferrer" target="_blank">
Baby Jesus by Brouwerij 't Verzet</a>
and Kevie tries out <a href="https://brasserielabinchoise.be/our-beer/noel" rel="noopener noreferrer" target="_blank">
La Binchoise Speciale Noel</a>
.</p>
<p>
<a href="https://hackerpublicradio.org/eps/hpr4555/hpr4555_image_2.png">
<img src="https://hackerpublicradio.org/eps/hpr4555/hpr4555_image_2_tn.png">
</a>
</p>
<p>
Connect with the guys on Untappd:</p>
<ol>
<li data-list="bullet">
<a href="https://untappd.com/user/thelovebug" rel="noopener noreferrer" target="_blank">
Dave</a>
</li>
<li data-list="bullet">
<a href="https://untappd.com/user/kevie49" rel="noopener noreferrer" target="_blank">
Kevie</a>
</li>
</ol>
<p>
<br>
</p>
<p>
The intro sounds for the show are used from:</p>
<ol>
<li data-list="bullet">
<a href="https://freesound.org/people/mixtus/sounds/329806/" rel="noopener noreferrer" target="_blank">
https://freesound.org/people/mixtus/sounds/329806/</a>
</li>
<li data-list="bullet">
<a href="https://freesound.org/people/j1987/sounds/123003/" rel="noopener noreferrer" target="_blank">
https://freesound.org/people/j1987/sounds/123003/</a>
</li>
<li data-list="bullet">
<a href="https://freesound.org/people/greatsoundstube/sounds/628437/" rel="noopener noreferrer" target="_blank">
https://freesound.org/people/greatsoundstube/sounds/628437/</a>
</li>
</ol>
<p>
<br>
</p>
<p>
<br>
</p>


<p><a href="https://hackerpublicradio.org/eps/hpr4555/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4554: How I do todo]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.


References in order of first mention

Daytimer - 

https://www.daytimer.com/

 

PalmPilot - 

https://en.wikipedia.org/wiki/PalmPilot

 

Gina Trapani - 

https://en.wikipedia.org/wiki/Gina_Trapani

 

Todo landing page - 

http://todotxt.org/

...]]></description>
<link>https://tsecurity.de/de/3213776/it+sicherheit/it+podcasts/hpr4554+how+i+do+todo/</link>
<pubDate>Thu, 15 Jan 2026 01:01:54 +0100</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>

<h1>
References in order of first mention</h1>
<p>
Daytimer - <u>
<a href="https://www.daytimer.com/" rel="noopener noreferrer" target="_blank">
https://www.daytimer.com/</a>
</u>
 </p>
<p>
PalmPilot - <u>
<a href="https://en.wikipedia.org/wiki/PalmPilot" rel="noopener noreferrer" target="_blank">
https://en.wikipedia.org/wiki/PalmPilot</a>
</u>
 </p>
<p>
Gina Trapani - <u>
<a href="https://en.wikipedia.org/wiki/Gina_Trapani" rel="noopener noreferrer" target="_blank">
https://en.wikipedia.org/wiki/Gina_Trapani</a>
</u>
 </p>
<p>
Todo landing page - <u>
<a href="http://todotxt.org/" rel="noopener noreferrer" target="_blank">
http://todotxt.org/</a>
</u>
 </p>
<p>
Todo file format - <u>
<a href="https://github.com/todotxt/todo.txt" rel="noopener noreferrer" target="_blank">
https://github.com/todotxt/todo.txt</a>
</u>
 </p>
<p>
Dropbox - <u>
<a href="https://www.dropbox.com/" rel="noopener noreferrer" target="_blank">
https://www.dropbox.com/</a>
</u>
 </p>
<p>
Simpletask -<strong>
 </strong>
<u>
<a href="https://github.com/mpcjanssen/simpletask-android/" rel="noopener noreferrer" target="_blank">
https://github.com/mpcjanssen/simpletask-android/</a>
</u>
 </p>
<p>
QTodoTxt - <u>
<a href="https://github.com/QTodoTxt/QTodoTxt" rel="noopener noreferrer" target="_blank">
https://github.com/QTodoTxt/QTodoTxt</a>
</u>
 </p>
<p>
Synology DS220J NAS - <u>
<a href="https://global.download.synology.com/download/Document/Hardware/DataSheet/DiskStation/20-year/DS220j/enu/Synology_DS220j_Data_Sheet_enu.pdf" rel="noopener noreferrer" target="_blank">
https://global.download.synology.com/download/Document/Hardware/DataSheet/DiskStation/20-year/DS220j/enu/Synology_DS220j_Data_Sheet_enu.pdf</a>
</u>
 </p>
<p>
Ice_recur - <u>
<a href="https://github.com/rlpowell/todo-text-stuff" rel="noopener noreferrer" target="_blank">
https://github.com/rlpowell/todo-text-stuff</a>
</u>
 </p>
<p>
Py_recur - <u>
<a href="https://github.com/TASpinner/py_recur" rel="noopener noreferrer" target="_blank">
https://github.com/TASpinner/py_recur</a>
</u>
</p>
<p>
Microsoft todo - <u>
<a href="https://to-do.office.com/tasks/" rel="noopener noreferrer" target="_blank">
https://to-do.office.com/tasks/</a>
</u>
   </p>


<p><a href="https://hackerpublicradio.org/eps/hpr4554/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4553: Nuclear Reactor Technology - Ep 4 Less Common Reactor Types]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.


02 Less Common Reactor Types

In this episode we discuss some of the less common historical reactor types.




These are a mixture of less common commercial types and some experimental or research reactors.

I will cover advanced or future design...]]></description>
<link>https://tsecurity.de/de/3211504/it+sicherheit/it+podcasts/hpr4553+nuclear+reactor+technology+-+ep+4+less+common+reactor+types/</link>
<pubDate>Wed, 14 Jan 2026 01:01:29 +0100</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>

<p>
02 Less Common Reactor Types</p>
<p>
In this episode we discuss some of the less common historical reactor types.</p>
<p>
<br>
</p>
<p>
These are a mixture of less common commercial types and some experimental or research reactors.</p>
<p>
I will cover advanced or future designs in another episode. </p>
<p>
<br>
</p>
<p>
03 Minor Successes</p>
<p>
04 Magnox</p>
<p>
07 AGR - Advanced Gas Cooled Reactor</p>
<p>
10 LWGR - Light Water Graphite Moderated Reactor (RBMK)</p>
<p>
<br>
</p>
<p>
14 Historical Oddities or Dead Ends</p>
<p>
<br>
</p>
<p>
15 Organically Cooled Reactors</p>
<p>
16 Organically Cooled and Moderated</p>
<p>
18 Organically Cooled and Heavy Water Moderated</p>
<p>
24 HTGCR High Temperature Gas Cooled Reactor</p>
<p>
28 HWLWR - Heavy Water Light Water Reactor or SGHWR - Steam Generating Heavy Water Reactor</p>
<p>
<br>
</p>
<p>
31 Reactors Making a Comeback</p>
<p>
32 Pebble Bed Reactors</p>
<p>
33 AVR</p>
<p>
35 THTR-300</p>
<p>
36 South Africa, China, and the US</p>
<p>
39 Making a Come Back?</p>
<p>
<br>
</p>
<p>
40 MSR - Molten Salt Reactors</p>
<p>
41 Slow or Fast Neutron Reactors</p>
<p>
42 Fuel</p>
<p>
43 Salts</p>
<p>
44 Why Some Variants Use Dissolved Fuel</p>
<p>
46 History</p>
<p>
47 Types of Molten Salt Reactor</p>
<p>
48 Pros and Cons</p>
<p>
52 Overall</p>
<p>
<br>
</p>
<p>
53 Conclusion</p>
<p>
In this episode we discussed some of the less common historical reactor types.</p>
<p>
<br>
</p>
<p>
As we have seen, there have been a number of different reactor designs which were less commercially successful for one reason or another. </p>
<p>
Some of them may make a come back however, particularly as the basis for a small reactor.</p>
<p>
<br>
</p>
<p>
In the next episode we will describe fast neutron reactors.</p>
<p>
<br>
</p>
<p>
<br>
</p>


<p><a href="https://hackerpublicradio.org/eps/hpr4553/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4552: Printer Conspiracy]]></title>
<description><![CDATA[This show has been flagged as Explicit by the host.



Background 





I have a very old 
EPSON R300 inkjet printer
 It has served me well for many years. I thought it was at least 10 if not 15 years old. I got it before I even became interested in Linux. For many of those years now I have been ...]]></description>
<link>https://tsecurity.de/de/3209150/it+sicherheit/it+podcasts/hpr4552+printer+conspiracy/</link>
<pubDate>Tue, 13 Jan 2026 01:02:43 +0100</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Explicit by the host.</p>

<p>
<strong>
Background </strong>
</p>
<p>
<br>
</p>
<p>
I have a very old <a href="https://www.epson.co.uk/en_GB/support/sc/epson-stylus-photo-r300/s/s388?srsltid=AfmBOopQrZnhCh9sU7fxVN0PoLfLcKEJrT54qgbV5mkasjyqVM3AowA2" rel="noopener noreferrer" target="_blank">
EPSON R300 inkjet printer</a>
 It has served me well for many years. I thought it was at least 10 if not 15 years old. I got it before I even became interested in Linux. For many of those years now I have been using this printer extensively on Linux. </p>
<p>
<br>
</p>
<p>
It has been a really good printer and has been incredibly cheap to run. Many years ago I got a number of sets of ink for it. I think they only cost me £15! A colleague at work later on gave me more sets of ink. I ended up with a large bag full of ink cartridges which I have been working my way through ever since.</p>
<p>
<br>
</p>
<p>
I used the printer infrequently for many years. This is far from ideal for an ink jet printer as doing so tends to cause the ink jet nozzles to clog up. Unsurprisingly in later years it has become somewhat temperamental. The problems consisted of paper mis-feeds (Probably down to the rubber take up rollers going hard over time) and missing bits of print (This I assume due to infrequent use of the printer and age of ink jet cartridges all of which were well out of their expiration date).</p>
<p>
<br>
</p>
<p>
The mis-fed paper could be solved by individual feeding each sheet through the printer. The poor / missing print could be solved by a combination of running the print head clean routine or by replacing the offending cartridge.</p>
<p>
<br>
</p>
<p>
Latterly I had print problems again and as per usual after cleaning the heads and then finally changing the cartridge the printer resumed printing normally.</p>
<p>
<br>
</p>
<p>
Shortly after this I bought myself an Apple iMac mini and thought it could be useful to be able to print from it. I visited the EPSON website downloaded and installed the EPSON print driver for my trusty R300 printer.</p>
<p>
<br>
</p>
<p>
I tried printing from my iMac and received a warning stating something like some of the components within your printer are worn and may need servicing. I’d never seen a message like this before as I normally print using open source print drivers on Linux which never report such things.</p>
<p>
<br>
</p>
<p>
When I tried printing on my Apple Mac no black text was visible on the page. I tried running the head cleaning routine and this made no difference. I eventually had to resort to changing the colour of the text within the LibreOffice document. This allowed me to print text that was at least legible.</p>
<p>
<br>
</p>
<p>
At the time I was a little suspicious of all this as the printer had been working so well just a few days previous. I plugged my trusty printer back into my trusty PC running an old version of Ubuntu using the open source printer drivers. Fired up LibreOffice and tried to print a document. To my surprise the printout was very good. While it was not as good as when the printer was new the quality of the black and coloured text was actually very good. </p>
<p>
<br>
</p>
<p>
My suspicion though I can’t prove it is that the EPSON print driver has worked out that the printer is 10 plus years old and needs to be returned to EPSON for servicing (or to purchase a new printer). To ensure this the driver is crippling the output from the printer.</p>
<p>
<br>
</p>
<p>
The Open Source print drivers have none of the nefarious nonsense and allows the printer to operate. As I said I cannot prove any of this however I’ll leave this up to you decide what you think is going on here. </p>
<p>
<br>
</p>
<p>
At this point I was going to end the podcast however the story didn’t end there.</p>
<p>
<br>
</p>
<p>
<br>
</p>
<p>
<strong>
The story continues</strong>
</p>
<p>
<br>
</p>
<p>
My mother wanted me to print out some holiday insurance documents for her. She sent me a copy of her documents as I told her my printer was working again. The first page printed out slightly faintly but was readable the other pages seemed to print using invisible ink. I tried cleaning the heads but it made no difference. It’s looking a bit like my printer or at least the cartridge is past its expiry date. </p>
<p>
<br>
</p>
<p>
Clearing out our loft I found the original box for my EPSON R300 printer and discovered that it was purchased in May 2005. This means the printer is now over 20 years old! At this point I decided that it was maybe about time that I replaced our ageing printer. </p>
<p>
<br>
</p>
<p>
We use the printer very infrequently and rarely need colour. For this reason I decided this time to buy a laser printer since I believe these don’t tend to dry out like ink jet printers and are less likely to suffer with infrequent use. Only time will tell though I don’t expect this one to last 20 years!</p>
<p>
<br>
</p>
<p>
Finally after all this I am not sure if using the EPSON driver had anything to do with the final demise of my printer though who knows. As Klaatu would say I leave that up to you dear listener to decide.</p>


<p><a href="https://hackerpublicradio.org/eps/hpr4552/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4551: “Elsbeth in IT: Since ’97” (Part 2)]]></title>
<description><![CDATA[This show has been flagged as Explicit by the host.



A two-part conversation about what it’s really like being a woman in tech for almost three decades. Content Warning: The F word probably makes an appearance multiple times.





In this episode, Lee sits down with Elsbeth to talk about her lo...]]></description>
<link>https://tsecurity.de/de/3207141/it+sicherheit/it+podcasts/hpr4551+elsbeth+in+it+since+97+part+2/</link>
<pubDate>Mon, 12 Jan 2026 01:02:41 +0100</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Explicit by the host.</p>

<p>
<em>
A two-part conversation about what it’s really like being a woman in tech for almost three decades. Content Warning: The F word probably makes an appearance multiple times.</em>
</p>
<p>
<br>
</p>
<p>
In this episode, Lee sits down with Elsbeth to talk about her long, winding, sometimes ridiculous, often inspiring journey through the IT industry — starting all the way back in 1997. If you’ve ever worked helpdesk, ever had a customer say “my cup holder broke” (yes, the CD tray)… or ever felt underestimated in a room full of engineers, this one’s for you.</p>
<p>
Because we throw around some tech terms in the conversation, here are a few friendly definitions so everyone can follow along.</p>
<h2>
<br>
</h2>
<h2>
<strong>
Terms We Mentioned (in plain English)</strong>
</h2>
<h3>
<strong>
QA (Quality Assurance)</strong>
</h3>
<p>
Think of QA as the people who try to break things <em>
on purpose</em>
 so regular users don’t break them <em>
accidentally</em>
.</p>
<p>
 They test software, hardware, websites — you name it — to catch bugs before they cause chaos.</p>
<p>
 If it’s glitch-free, a QA person probably saved the day behind the scenes.</p>
<h3>
<strong>
Content Moderation</strong>
</h3>
<p>
This is the work of keeping the internet from turning into the Wild West.</p>
<p>
 Moderators review posts, comments, images, and videos to make sure they follow community rules and don’t harm users.</p>
<p>
 It’s a mix of tech tools and human judgment — and yes, it can get intense.</p>
<h3>
<strong>
Building PCs</strong>
</h3>
<p>
Where many IT careers start! Building PCs is basically grown-up Lego:</p>
<p>
<br>
</p>
<ul>
<li>
picking parts</li>
<li>
assembling them</li>
<li>
hoping you don’t zap anything with static electricity</li>
<li>
praying the cable management gods smile upon you</li>
</ul>
<p>
It’s one of the most empowering skills in tech and often the first time someone realizes,</p>
<p>
 “Oh hey… I can actually <em>
do</em>
 this.”</p>
<h3>
<strong>
Gender Equality &amp; Inequality</strong>
</h3>
<p>
Gender equality means giving everyone the same chance to succeed — no matter who they are.</p>
<p>
 Gender inequality is what happens when that <em>
doesn’t</em>
 happen.</p>
<p>
In tech, inequality often looks like:</p>
<p>
<br>
</p>
<ul>
<li>
being talked over</li>
<li>
being paid less</li>
<li>
being assumed “non-technical”</li>
<li>
having to prove yourself twice as hard</li>
<li>
being the only woman in a room… again</li>
</ul>
<p>
Elsbeth has seen all of this firsthand since 1997 — and she’s got stories.</p>
<h3>
<strong>
End-User</strong>
</h3>
<p>
The <em>
end-user</em>
 is simply the person who actually uses the product.</p>
<p>
 Not the engineer who built it.</p>
<p>
 Not the manager who approved it.</p>
<p>
 Not the QA who tested it.</p>
<p>
The end-user is the human at the end of the chain who clicks the button, pushes the key, taps the app… and finds entirely new ways to break things no one expected.</p>
<p>
Understanding them is the secret superpower of tech.</p>
<h3>
<strong>
Neurodivergence</strong>
</h3>
<p>
Neurodivergence means brains come in many beautiful varieties — like ADHD, autism, dyslexia, and more.</p>
<p>
 Neurodivergent people often bring incredible strengths to IT, including creativity, pattern spotting, hyperfocus, and out-of-the-box problem solving.</p>
<p>
They can also face misunderstandings in workplaces that weren’t designed with different brains in mind — something Elsbeth talks about openly and honestly in this episode.</p>


<p><a href="https://hackerpublicradio.org/eps/hpr4551/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4550: Playing Civilization V, Part 7]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.
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 ...]]></description>
<link>https://tsecurity.de/de/3202948/it+sicherheit/it+podcasts/hpr4550+playing+civilization+v+part+7/</link>
<pubDate>Fri, 09 Jan 2026 01:02:25 +0100</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>
<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>
<h3>Playing Civilization V, Part 7</h3>
<p>Science</p>
<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>
<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.
Buildings</p>
<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>
<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.
Scientist Specialists</p>
<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.
Wonders</p>
<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>
<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.
Great Scientists</p>
<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.
Research Agreements</p>
<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.
Policies and Ideologies</p>
<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.
Exploration and Techs</p>
<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.
Trade</p>
<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.
Choosing an Empire</p>
<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.
Conclusion</p>
<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>
<h3>Links:</h3>
<ul>
<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>
<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>
</ul>
<p><a href="https://hackerpublicradio.org/eps/hpr4550/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4549: [deprecated] Pomodoro Task Tool (pomotask.sh)]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.


lrest=0;
while true; do
    echo refreshing project list;
    tsk=$(task +PENDING _unique project | shuf);
    for x in $tsk;
    do
        echo proj:$x;
        dispmd="task proj:$x ready || task ready";
        [[ $lrest -eq 0 ]] && dispmd="ta...]]></description>
<link>https://tsecurity.de/de/3200757/it+sicherheit/it+podcasts/hpr4549+deprecated+pomodoro+task+tool+pomotasksh/</link>
<pubDate>Thu, 08 Jan 2026 01:02:59 +0100</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>
<pre>
<code>
lrest=0;
while true; do
    echo refreshing project list;
    tsk=$(task +PENDING _unique project | shuf);
    for x in $tsk;
    do
        echo proj:$x;
        dispmd="task proj:$x ready || task ready";
        [[ $lrest -eq 0 ]] &amp;&amp; dispmd="task ready";
        timeout 1500 watch $dispmd;
        ((lrest=lrest+1));
        echo "begin break with enter...";
        read;
        resttime=5;
        if [[ $lrest -gt 3 ]]; then
            resttime=15;
            lrest=0;
        fi;
        while [[ $resttime -gt 0 ]]; do
            echo $resttime minute rest;
            sleep 60;
            ((resttime=resttime-1));
        done;
        echo "break over, enter to continue...";
        read;
    done;
done
</code>
</pre>

<p><a href="https://hackerpublicradio.org/eps/hpr4549/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4548: YouTube Subscriptions 2025 #13]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.


I am subscribed to a number of YouTube channels, and I am sharing them with you.

Links:



https://www.youtube.com/@civilization



https://www.youtube.com/@sixtysymbols



https://www.youtube.com/@SophieAlloway



https://www.youtube.com/@Space...]]></description>
<link>https://tsecurity.de/de/3198504/it+sicherheit/it+podcasts/hpr4548+youtube+subscriptions+2025+13/</link>
<pubDate>Wed, 07 Jan 2026 01:02:03 +0100</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>

<p>
I am subscribed to a number of YouTube channels, and I am sharing them with you.</p>
<h3>
Links:</h3>
<ul>
<li>
<a href="https://www.youtube.com/@civilization" rel="noopener noreferrer" target="_blank">
https://www.youtube.com/@civilization</a>
</li>
<li>
<a href="https://www.youtube.com/@sixtysymbols" rel="noopener noreferrer" target="_blank">
https://www.youtube.com/@sixtysymbols</a>
</li>
<li>
<a href="https://www.youtube.com/@SophieAlloway" rel="noopener noreferrer" target="_blank">
https://www.youtube.com/@SophieAlloway</a>
</li>
<li>
<a href="https://www.youtube.com/@SpaceRocketHistoryChannel" rel="noopener noreferrer" target="_blank">
https://www.youtube.com/@SpaceRocketHistoryChannel</a>
</li>
<li>
<a href="https://www.youtube.com/@StamFine" rel="noopener noreferrer" target="_blank">
https://www.youtube.com/@StamFine</a>
</li>
<li>
<a href="https://www.youtube.com/@Stubagful" rel="noopener noreferrer" target="_blank">
https://www.youtube.com/@Stubagful</a>
</li>
<li>
<a href="https://www.youtube.com/@Suibhne" rel="noopener noreferrer" target="_blank">
https://www.youtube.com/@Suibhne</a>
</li>
<li>
<a href="https://www.youtube.com/@talkmoretalksolobeatles" rel="noopener noreferrer" target="_blank">
https://www.youtube.com/@talkmoretalksolobeatles</a>
</li>
<li>
<a href="https://www.youtube.com/@TTBFromTheRoad" rel="noopener noreferrer" target="_blank">
https://www.youtube.com/@TTBFromTheRoad</a>
</li>
<li>
<a href="https://www.youtube.com/@theark2544" rel="noopener noreferrer" target="_blank">
https://www.youtube.com/@theark2544</a>
</li>
<li>
<a href="https://www.youtube.com/@TheBeatles" rel="noopener noreferrer" target="_blank">
https://www.youtube.com/@TheBeatles</a>
</li>
<li>
<a href="https://www.palain.com/" rel="noopener noreferrer" target="_blank">
https://www.palain.com/</a>
</li>
</ul>


<p><a href="https://hackerpublicradio.org/eps/hpr4548/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[168: LoD]]></title>
<description><![CDATA[The Legion of Doom (LoD) wasn’t just a “hacker group”, it captured the essence of underground hacking in the 80s/90s. BBSes, phreaking, rival crews, and the crackdowns that changed everything. From those humble beginnings came a legacy that still echoes through modern security culture today.Spons...]]></description>
<link>https://tsecurity.de/de/3196818/it+sicherheit/it+podcasts/168+lod/</link>
<pubDate>Tue, 06 Jan 2026 09:03:03 +0100</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>The Legion of Doom (LoD) wasn’t just a “hacker group”, it captured the essence of underground hacking in the 80s/90s. BBSes, phreaking, rival crews, and the crackdowns that changed everything. From those humble beginnings came a legacy that still echoes through modern security culture today.</p><h3>Sponsors</h3><p>Support for this show comes from <a href="https://www.threatlocker.com/"><strong>ThreatLocker®</strong></a>. ThreatLocker® is a Zero Trust Endpoint Protection Platform that strengthens your infrastructure from the ground up. With ThreatLocker® Allowlisting and Ringfencing™, you gain a more secure approach to blocking exploits of known and unknown vulnerabilities. ThreatLocker® provides Zero Trust control at the kernel level that enables you to allow everything you need and block everything else, including ransomware! Learn more at <a href="https://www.threatlocker.com/"><strong>www.threatlocker.com</strong></a>.</p><p>This show is sponsored by <a href="https://www.rippling.com/darknet"><strong>Rippling</strong></a>. Rippling is the unified platform for Global HR, Payroll, IT, and Finance. They’ve helped millions replace their mess of cobbled-together tools with one system designed to give leaders clarity, speed, and control. With Rippling, you can run your entire HR, IT, and Finance operations as one, or pick and choose the products that best fill the gaps in your software stack. Learn more <a href="https://www.rippling.com/darknet"><strong>rippling.com/darknet</strong></a>.</p><p>This show is sponsored by <a href="https://meter.com/darknet"><strong>Meter</strong></a>, the company building networks from the ground up. Meter delivers a complete networking stack - wired, wireless, and cellular - in one solution that’s built for performance and scale. Meter’s full-stack solution covers everything from first site survey to ongoing support, giving you a single partner for all your connectivity needs. Go to <a href="https://meter.com/darknet"><strong>meter.com/darknet</strong></a> to book a demo now!</p><p><br></p><h3>Sources</h3><ul>
<li>
<a href="https://amzn.to/4q3O0gJ"><strong>Book: Masters of Deception</strong></a><strong> (https://amzn.to/4q3O0gJ)</strong>
</li>
<li>
<a href="https://amzn.to/3N4bovY"><strong>Book: The Hacker Crackdown</strong></a><strong> (https://amzn.to/3N4bovY)</strong>
</li>
</ul>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4547: Cheap Yellow Display Project Part 6: The speed and timing of Morse]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.



Hello, again. This is Trey. 



 



Welcome to part 6 in my Cheap Yellow Display (CYD) Project series. Thank you for hanging in there with me on this rambling series. If you wish to catch up on earlier episodes, you can find them on my 

HPR pr...]]></description>
<link>https://tsecurity.de/de/3196136/it+sicherheit/it+podcasts/hpr4547+cheap+yellow+display+project+part+6+the+speed+and+timing+of+morse/</link>
<pubDate>Tue, 06 Jan 2026 01:05:47 +0100</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>

<p>
<span>
Hello, again. This is Trey. </span>
</p>
<p>
<span>
 </span>
</p>
<p>
<span>
Welcome to part 6 in my Cheap Yellow Display (CYD) Project series. Thank you for hanging in there with me on this rambling series. If you wish to catch up on earlier episodes, you can find them on my </span>
<a href="https://www.hackerpublicradio.org/correspondents/0394.html" rel="noopener noreferrer" target="_blank">
HPR profile page</a>
<span>
 </span>
<a href="https://www.hackerpublicradio.org/correspondents/0394.html" rel="noopener noreferrer" target="_blank">
https://www.hackerpublicradio.org/correspondents/0394.html</a>
<span>
  </span>
</p>
<p>
<span>
 </span>
</p>
<p>
<span>
To 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. This is based around an ESP32 platform which comes prepackaged on a yellow PC board with a color touchscreen display, WIFI, and Bluetooth. We fondly call this contraption the Cheap Yellow Display.   </span>
</p>
<p>
<span>
 </span>
</p>
<p>
<span>
So far, I have defined the necessities, collected the required hardware, and failed miserably building the graphical user interface (GUI).  </span>
</p>
<p>
<span>
 </span>
</p>
<p>
<span>
While I sort out the technical challenges getting my GUI code to play nicely with the CYD's touchscreen, it is important that we spend some time discussing Morse code itself, and the timing standards we will need to follow. </span>
</p>
<p>
<span>
 </span>
</p>
<p>
<span>
I am not going to dive too deeply into the history behind telegraphs and Morse code, but it is very interesting. If you want to learn more, Wikipedia has the origins and evolution written out quite nicely at </span>
<a href="https://en.wikipedia.org/wiki/Morse_code" rel="noopener noreferrer" target="_blank">
https://en.wikipedia.org/wiki/Morse_code</a>
<span>
  </span>
</p>
<p>
<span>
 </span>
</p>
<p>
<span>
For our purposes, we will fast forward from the year 1820 (When telegraphy began) all the way to 1865 when the International Telecommunication Union (ITU)  standardized, what it called "International Morse Code". When I say Morse Code for the remainder of this podcast, I am referring to this ITU International Morse Code.   </span>
</p>
<p>
<span>
 </span>
</p>
<p>
<span>
Morse code typically includes the following characters: </span>
</p>
<p>
<br>
</p>
<ul>
<li>
<span>
The 26 letter basic Latin alphabet </span>
</li>
<li>
<span>
The Indo-Arabic numerals 0 to 9 </span>
</li>
</ul>
<p>
<span>
 </span>
</p>
<p>
<span>
There is also a single accented Latin letter (É), which is written as an E with an accent mark, and a handful of punctuation marks. </span>
</p>
<p>
<span>
 </span>
</p>
<p>
<span>
These characters are encoded using a sequence of short and long signals. Each short signal is referred to as a </span>
<em>
dit</em>
<span>
. Each long signal is referred to as a </span>
<em>
dah</em>
<span>
. At a young age, I began to refer to them as dots and dashes, as this is how they are usually written. For example, the letter "A" consists of a single dit followed by a single dah. When written out this would look like a period followed by a hyphen (what some might call a minus sign)   .- </span>
<span>
 </span>
</p>
<p>
<span>
 </span>
</p>
<p>
<span>
This encoding method allows messages to be sent by </span>
<span>
turning on and off an electrical signal. This could result in a light flashing or a tone sounding to the pattern of the signal. The timing of a dit and dah, along with the spacing between them is carefully defined.  </span>
<span>
 </span>
</p>
<p>
<span>
 </span>
</p>
<p>
<span>
Morsecode.world does a great job explaining the timing, and you can find their explanation at </span>
<a href="https://morsecode.world/international/timing/" rel="noopener noreferrer" target="_blank">
https://morsecode.world/international/timing/</a>
<span>
  </span>
</p>
<p>
<span>
 </span>
</p>
<p>
<span>
It all starts with the dit, or more accurately, the amount of time the dit signal is turned on. We will call this length of time 1 unit. We will get to the actual length of time for a unit later in this episode. For now, it is just one unit.</span>
<span>
 </span>
</p>
<p>
<span>
 </span>
</p>
<p>
<span>
So, 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. Also, empty space between elements of the same character is 1 unit long. The space between characters should be 3 units long.</span>
<span>
 </span>
</p>
<p>
<span>
    </span>
</p>
<p>
<span>
Let's demonstrate using the letters H, P, &amp; R.   </span>
</p>
<p>
<span>
 </span>
</p>
<p>
<span>
An "H" would be 4 dits ….</span>
<span>
 </span>
</p>
<p>
<span>
A "P" would be 1 dit followed by 2 dahs and ending with 1 dit  .--.</span>
<span>
 </span>
</p>
<p>
<span>
An "R" would be 1 dit followed by 1 dah and ending with 1 dit   .-.</span>
<span>
 </span>
</p>
<p>
<span>
 </span>
</p>
<p>
<span>
Remember when we send these grouped together like a word, we need 3 units of spacing between each character. You can hear this now. This is Morse code for the letters "HPR" at 15 words per minute  .... .--. .-. </span>
</p>
<p>
<span>
 </span>
</p>
<p>
<span>
That is the perfect segue to the next section, words per minute. </span>
</p>
<p>
<span>
 </span>
</p>
<p>
<span>
The speed of morse code is measured in "words per minute". 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>
<span>
 </span>
</p>
<p>
<span>
 </span>
</p>
<p>
<span>
And that's just letters. What about words? We have short words and long words. How can we standardize on words per minute with so much diversity of length? </span>
</p>
<p>
<span>
 </span>
</p>
<p>
<span>
Well, thanks to the French, we have a quite elegant solution to this problem. Well, not the French in general. Just PARIS. </span>
</p>
<p>
<span>
 </span>
</p>
<p>
<span>
PARIS is the standard word which has been agreed upon to be used for determining the speed of Morse code. The word PARIS is 50 units long. </span>
</p>
<p>
<span>
 </span>
</p>
<p>
<span>
"P" = dit(1) + (1) + dah(3) + (1) + dah(3) + (1) + dit(1) = 11 units</span>
<span>
 </span>
</p>
<p>
<span>
{Space between letters} = 3 units </span>
</p>
<p>
<span>
"A" = </span>
<span>
dit(1) + (1) + dah(3) = 5 units</span>
<span>
 </span>
</p>
<p>
<span>
{Space between letters} = 3 units </span>
</p>
<p>
<span>
"R" = </span>
<span>
dit(1) + (1) + dah(3) + (1) + dit(1) = 7 units</span>
<span>
 </span>
</p>
<p>
<span>
{Space between letters} = 3 units </span>
</p>
<p>
<span>
"I" = </span>
<span>
dit(1) + (1) + dit(1) = 3 units</span>
<span>
 </span>
</p>
<p>
<span>
{Space between letters} = 3 units </span>
</p>
<p>
<span>
"S" = </span>
<span>
dit(1) + (1) + dit(1) </span>
<span>
+ (1) + </span>
<span>
dit(1) </span>
<span>
= 5 units </span>
</p>
<p>
<span>
{Space between words} = 7 units </span>
</p>
<p>
<span>
 </span>
</p>
<p>
<span>
11+3+5+3+7+3+3+3+5+7 = 50 units </span>
</p>
<p>
<span>
 </span>
</p>
<p>
<span>
Here is the word PARIS sent at 15 WPM  .--. .- .-. .. ... </span>
</p>
<p>
<span>
 </span>
</p>
<p>
<span>
Morsecode.world again does a great job explaining the maths for how many milliseconds long a dit should be for a specific WPM of code (</span>
<a href="https://morsecode.world/international/timing/" rel="noopener noreferrer" target="_blank">
https://morsecode.world/international/timing/</a>
<span>
 ) But, no... We could not keep it that simple. Some guy named </span>
<span>
Donald R. "Russ" Farnsworth had to complicate things and increase the gaps between letters and words to make interpreting code much easier. There are even more maths for Farnsworth timing...</span>
<span>
 </span>
</p>
<p>
<span>
 </span>
</p>
<p>
<span>
Wait a minute. When did I start saying "Maths" instead of "Math" like a normal North American? What is the reasoning around pluralizing "Math" anyways? Which way is more original English, "Math" or "Maths"? 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>
<span>
 </span>
</p>
<p>
<span>
 </span>
</p>
<p>
<span>
ANYWAYS, there IS much more MATH about Farnsworth timing on another page on Morsecode.world. (</span>
<a href="https://morsecode.world/international/timing/farnsworth.html" rel="noopener noreferrer" target="_blank">
https://morsecode.world/international/timing/farnsworth.html</a>
<span>
 ). But I don't want to get into all of it in detail here. Not when there is a shortcut we can use in our code. 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>
<span>
 </span>
</p>
<p>
<span>
 </span>
</p>
<p>
<span>
For the 15 WPM messages you have heard throughout this episode, a dit was 1200/15 = 80 ms in length. 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>
<span>
 </span>
</p>
<p>
<span>
 </span>
</p>
<p>
<span>
This will be an important calculation for us as we develop the code we will later be using to construct our messages using the CYD.   </span>
</p>
<p>
<span>
 </span>
</p>
<p>
<span>
And this is also a good stopping point so that I can get back to trying to build that infernal GUI. </span>
</p>


<p><a href="https://hackerpublicradio.org/eps/hpr4547/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4546: HPR Community News for December 2025]]></title>
<description><![CDATA[This show has been flagged as Explicit by the host.
New hosts

There were no new hosts this month.


Last Month's Shows


Id
Day
Date
Title
Host


4521
Mon
2025-12-01
HPR Community News for November 2025
HPR Volunteers


4522
Tue
2025-12-02
Lee interviews Elsbeth about SL Shop and Hop event
Elsbe...]]></description>
<link>https://tsecurity.de/de/3193796/it+sicherheit/it+podcasts/hpr4546+hpr+community+news+for+december+2025/</link>
<pubDate>Mon, 05 Jan 2026 01:02:52 +0100</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Explicit by the host.</p>
<h2>New hosts</h2>
<p>
There were no new hosts this month.
</p>

<h2>Last Month's Shows</h2>
<table>
<tr>
<th>Id</th>
<th>Day</th>
<th>Date</th>
<th>Title</th>
<th>Host</th>
</tr>
<tr>
<td><strong><a href="https://hackerpublicradio.org/eps/hpr4521/index.html" target="_blank">4521</a></strong></td>
<td>Mon</td>
<td class="shrink">2025-12-01</td>
<td><a href="https://hackerpublicradio.org/eps/hpr4521/index.html" target="_blank">HPR Community News for November 2025</a></td>
<td><a href="https://hackerpublicradio.org/correspondents/0159.html" target="_blank">HPR Volunteers</a></td>
</tr>
<tr>
<td><strong><a href="https://hackerpublicradio.org/eps/hpr4522/index.html" target="_blank">4522</a></strong></td>
<td>Tue</td>
<td class="shrink">2025-12-02</td>
<td><a href="https://hackerpublicradio.org/eps/hpr4522/index.html" target="_blank">Lee interviews Elsbeth about SL Shop and Hop event</a></td>
<td><a href="https://hackerpublicradio.org/correspondents/0446.html" target="_blank">Elsbeth</a></td>
</tr>
<tr>
<td><strong><a href="https://hackerpublicradio.org/eps/hpr4523/index.html" target="_blank">4523</a></strong></td>
<td>Wed</td>
<td class="shrink">2025-12-03</td>
<td><a href="https://hackerpublicradio.org/eps/hpr4523/index.html" target="_blank">Nuclear Reactor Technology - Ep 1 - Nuclear Basics</a></td>
<td><a href="https://hackerpublicradio.org/correspondents/0455.html" target="_blank">Whiskeyjack</a></td>
</tr>
<tr>
<td><strong><a href="https://hackerpublicradio.org/eps/hpr4524/index.html" target="_blank">4524</a></strong></td>
<td>Thu</td>
<td class="shrink">2025-12-04</td>
<td><a href="https://hackerpublicradio.org/eps/hpr4524/index.html" target="_blank">Living the Tux Life Episode 3 - Automating the Install</a></td>
<td><a href="https://hackerpublicradio.org/correspondents/0290.html" target="_blank">Al</a></td>
</tr>
<tr>
<td><strong><a href="https://hackerpublicradio.org/eps/hpr4525/index.html" target="_blank">4525</a></strong></td>
<td>Fri</td>
<td class="shrink">2025-12-05</td>
<td><a href="https://hackerpublicradio.org/eps/hpr4525/index.html" target="_blank">Using mail merge in thunderbird</a></td>
<td><a href="https://hackerpublicradio.org/correspondents/0030.html" target="_blank">Ken Fallon</a></td>
</tr>
<tr>
<td><strong><a href="https://hackerpublicradio.org/eps/hpr4526/index.html" target="_blank">4526</a></strong></td>
<td>Mon</td>
<td class="shrink">2025-12-08</td>
<td><a href="https://hackerpublicradio.org/eps/hpr4526/index.html" target="_blank">Baofeng and SDR++</a></td>
<td><a href="https://hackerpublicradio.org/correspondents/0403.html" target="_blank">Lee</a></td>
</tr>
<tr>
<td><strong><a href="https://hackerpublicradio.org/eps/hpr4527/index.html" target="_blank">4527</a></strong></td>
<td>Tue</td>
<td class="shrink">2025-12-09</td>
<td><a href="https://hackerpublicradio.org/eps/hpr4527/index.html" target="_blank">Overly Complicated Media Ripping setup</a></td>
<td><a href="https://hackerpublicradio.org/correspondents/0318.html" target="_blank">Archer72</a></td>
</tr>
<tr>
<td><strong><a href="https://hackerpublicradio.org/eps/hpr4528/index.html" target="_blank">4528</a></strong></td>
<td>Wed</td>
<td class="shrink">2025-12-10</td>
<td><a href="https://hackerpublicradio.org/eps/hpr4528/index.html" target="_blank">Photography software</a></td>
<td><a href="https://hackerpublicradio.org/correspondents/0429.html" target="_blank">Henrik Hemrin</a></td>
</tr>
<tr>
<td><strong><a href="https://hackerpublicradio.org/eps/hpr4529/index.html" target="_blank">4529</a></strong></td>
<td>Thu</td>
<td class="shrink">2025-12-11</td>
<td><a href="https://hackerpublicradio.org/eps/hpr4529/index.html" target="_blank">yoga370 review</a></td>
<td><a href="https://hackerpublicradio.org/correspondents/0326.html" target="_blank">Brian-in-Ohio</a></td>
</tr>
<tr>
<td><strong><a href="https://hackerpublicradio.org/eps/hpr4530/index.html" target="_blank">4530</a></strong></td>
<td>Fri</td>
<td class="shrink">2025-12-12</td>
<td><a href="https://hackerpublicradio.org/eps/hpr4530/index.html" target="_blank">Playing Civilization V, Part 6</a></td>
<td><a href="https://hackerpublicradio.org/correspondents/0198.html" target="_blank">Ahuka</a></td>
</tr>
<tr>
<td><strong><a href="https://hackerpublicradio.org/eps/hpr4531/index.html" target="_blank">4531</a></strong></td>
<td>Mon</td>
<td class="shrink">2025-12-15</td>
<td><a href="https://hackerpublicradio.org/eps/hpr4531/index.html" target="_blank">HPR Beer Garden 6 - Imperial Stouts</a></td>
<td><a href="https://hackerpublicradio.org/correspondents/0296.html" target="_blank">Kevie</a></td>
</tr>
<tr>
<td><strong><a href="https://hackerpublicradio.org/eps/hpr4532/index.html" target="_blank">4532</a></strong></td>
<td>Tue</td>
<td class="shrink">2025-12-16</td>
<td><a href="https://hackerpublicradio.org/eps/hpr4532/index.html" target="_blank">Cheap Yellow Display Project Part 5: Graphical User Interface </a></td>
<td><a href="https://hackerpublicradio.org/correspondents/0394.html" target="_blank">Trey</a></td>
</tr>
<tr>
<td><strong><a href="https://hackerpublicradio.org/eps/hpr4533/index.html" target="_blank">4533</a></strong></td>
<td>Wed</td>
<td class="shrink">2025-12-17</td>
<td><a href="https://hackerpublicradio.org/eps/hpr4533/index.html" target="_blank">Nuclear Reactor Technology - Ep 2 Nuclear Fuel</a></td>
<td><a href="https://hackerpublicradio.org/correspondents/0455.html" target="_blank">Whiskeyjack</a></td>
</tr>
<tr>
<td><strong><a href="https://hackerpublicradio.org/eps/hpr4534/index.html" target="_blank">4534</a></strong></td>
<td>Thu</td>
<td class="shrink">2025-12-18</td>
<td><a href="https://hackerpublicradio.org/eps/hpr4534/index.html" target="_blank">Reviving My Kawai K4 Synthesizer</a></td>
<td><a href="https://hackerpublicradio.org/correspondents/0152.html" target="_blank">Claudio Miranda</a></td>
</tr>
<tr>
<td><strong><a href="https://hackerpublicradio.org/eps/hpr4535/index.html" target="_blank">4535</a></strong></td>
<td>Fri</td>
<td class="shrink">2025-12-19</td>
<td><a href="https://hackerpublicradio.org/eps/hpr4535/index.html" target="_blank">Living the Tux Life Episode 4 - Various software I have been using</a></td>
<td><a href="https://hackerpublicradio.org/correspondents/0290.html" target="_blank">Al</a></td>
</tr>
<tr>
<td><strong><a href="https://hackerpublicradio.org/eps/hpr4536/index.html" target="_blank">4536</a></strong></td>
<td>Mon</td>
<td class="shrink">2025-12-22</td>
<td><a href="https://hackerpublicradio.org/eps/hpr4536/index.html" target="_blank">Welcome to the Linux Community</a></td>
<td><a href="https://hackerpublicradio.org/correspondents/0194.html" target="_blank">Deltaray</a></td>
</tr>
<tr>
<td><strong><a href="https://hackerpublicradio.org/eps/hpr4537/index.html" target="_blank">4537</a></strong></td>
<td>Tue</td>
<td class="shrink">2025-12-23</td>
<td><a href="https://hackerpublicradio.org/eps/hpr4537/index.html" target="_blank">“Elsbeth in IT: Since ’97” (Part 1)</a></td>
<td><a href="https://hackerpublicradio.org/correspondents/0446.html" target="_blank">Elsbeth</a></td>
</tr>
<tr>
<td><strong><a href="https://hackerpublicradio.org/eps/hpr4538/index.html" target="_blank">4538</a></strong></td>
<td>Wed</td>
<td class="shrink">2025-12-24</td>
<td><a href="https://hackerpublicradio.org/eps/hpr4538/index.html" target="_blank">HPR Branding</a></td>
<td><a href="https://hackerpublicradio.org/correspondents/0030.html" target="_blank">Ken Fallon</a></td>
</tr>
<tr>
<td><strong><a href="https://hackerpublicradio.org/eps/hpr4539/index.html" target="_blank">4539</a></strong></td>
<td>Thu</td>
<td class="shrink">2025-12-25</td>
<td><a href="https://hackerpublicradio.org/eps/hpr4539/index.html" target="_blank">YouTube Subscriptions 2025 #11</a></td>
<td><a href="https://hackerpublicradio.org/correspondents/0198.html" target="_blank">Ahuka</a></td>
</tr>
<tr>
<td><strong><a href="https://hackerpublicradio.org/eps/hpr4540/index.html" target="_blank">4540</a></strong></td>
<td>Fri</td>
<td class="shrink">2025-12-26</td>
<td><a href="https://hackerpublicradio.org/eps/hpr4540/index.html" target="_blank">Arthur C. Clarke: Other Novels, Part 1</a></td>
<td><a href="https://hackerpublicradio.org/correspondents/0198.html" target="_blank">Ahuka</a></td>
</tr>
<tr>
<td><strong><a href="https://hackerpublicradio.org/eps/hpr4541/index.html" target="_blank">4541</a></strong></td>
<td>Mon</td>
<td class="shrink">2025-12-29</td>
<td><a href="https://hackerpublicradio.org/eps/hpr4541/index.html" target="_blank">HPR Beer Garden 7 - UK Christmas Ales</a></td>
<td><a href="https://hackerpublicradio.org/correspondents/0296.html" target="_blank">Kevie</a></td>
</tr>
<tr>
<td><strong><a href="https://hackerpublicradio.org/eps/hpr4542/index.html" target="_blank">4542</a></strong></td>
<td>Tue</td>
<td class="shrink">2025-12-30</td>
<td><a href="https://hackerpublicradio.org/eps/hpr4542/index.html" target="_blank">Can Haiku Mumble?</a></td>
<td><a href="https://hackerpublicradio.org/correspondents/0152.html" target="_blank">Claudio Miranda</a></td>
</tr>
<tr>
<td><strong><a href="https://hackerpublicradio.org/eps/hpr4543/index.html" target="_blank">4543</a></strong></td>
<td>Wed</td>
<td class="shrink">2025-12-31</td>
<td><a href="https://hackerpublicradio.org/eps/hpr4543/index.html" target="_blank">Nuclear Reactor Technology - Ep 3 Reactor Basics</a></td>
<td><a href="https://hackerpublicradio.org/correspondents/0455.html" target="_blank">Whiskeyjack</a></td>
</tr>
</table>

<h2>Comments this month</h2>

<p>These are comments which have been made during the past month, either to shows released during the month or to past shows.
There are 27 comments in total.</p>
<h3>Past shows</h3>
<p>There are 2 comments on
2 previous shows:</p>
<ul>
<li><strong><a href="https://hackerpublicradio.org/eps/hpr4424/index.html#comments" target="_blank">hpr4424</a></strong>
(2025-07-17) "<em>How I use Newsboat for Podcasts and Reddit</em>"
by <a href="https://hackerpublicradio.org/correspondents/0318.html" target="_blank">Archer72</a>.<br>
</li><li>
<ul>
<li>
<a href="https://hackerpublicradio.org/eps/hpr4424/index.html#comment_4520" target="_blank">Comment 5</a>:
Ken Fallon on 2025-12-02:
"Checking for  أحمد المحمودي to see if there are issues."</li>
<li>
<a href="https://hackerpublicradio.org/eps/hpr4424/index.html#comment_4521" target="_blank">Comment 6</a>:
أحمد المحمودي on 2025-12-03:
"download-filename-format for HPR podcasts"</li></ul><br>
</li><li><strong><a href="https://hackerpublicradio.org/eps/hpr4520/index.html#comments" target="_blank">hpr4520</a></strong>
(2025-11-28) "<em>Arthur C. Clarke: Rama and Sequels</em>"
by <a href="https://hackerpublicradio.org/correspondents/0198.html" target="_blank">Ahuka</a>.<br>
</li><li>
<ul>
<li>
<a href="https://hackerpublicradio.org/eps/hpr4520/index.html#comment_4542" target="_blank">Comment 1</a>:
morhook on 2025-12-30:
"programmer and content creator"</li>
<li>
<a href="https://hackerpublicradio.org/eps/hpr4520/index.html#comment_4543" target="_blank">Comment 2</a>:
Kevin O'Brien on 2025-12-30:
"Glad you liked it"</li></ul><br>
</li></ul>
<h3>This month's shows</h3>
<p>There are 25 comments on 11 of this month's shows:</p>
<ul><li><strong><a href="https://hackerpublicradio.org/eps/hpr4521/index.html#comments" target="_blank">hpr4521</a></strong>
(2025-12-01) "<em>HPR Community News for November 2025</em>"
by <a href="https://hackerpublicradio.org/correspondents/0159.html" target="_blank">HPR Volunteers</a>.</li>
<li>
<ul><li><a href="https://hackerpublicradio.org/eps/hpr4521/index.html#comment_4517" target="_blank">Comment 1</a>:
Archer72 on 2025-11-30:
"Silent key"</li><li><a href="https://hackerpublicradio.org/eps/hpr4521/index.html#comment_4518" target="_blank">Comment 2</a>:
Trey on 2025-12-01:
"Silent Key Archive"</li><li><a href="https://hackerpublicradio.org/eps/hpr4521/index.html#comment_4519" target="_blank">Comment 3</a>:
Trey on 2025-12-01:
"TuxJam CYD Episode"</li><li><a href="https://hackerpublicradio.org/eps/hpr4521/index.html#comment_4526" target="_blank">Comment 4</a>:
candycanearter07 on 2025-12-12:
"thoughts"</li><li><a href="https://hackerpublicradio.org/eps/hpr4521/index.html#comment_4531" target="_blank">Comment 5</a>:
Archer72 on 2025-12-19:
"Re: thoughts"</li><li><a href="https://hackerpublicradio.org/eps/hpr4521/index.html#comment_4533" target="_blank">Comment 6</a>:
candycanearter07 on 2025-12-21:
"Re: Re: Thoughts"</li></ul><br>
</li><li><strong><a href="https://hackerpublicradio.org/eps/hpr4522/index.html#comments" target="_blank">hpr4522</a></strong>
(2025-12-02) "<em>Lee interviews Elsbeth about SL Shop and Hop event</em>"
by <a href="https://hackerpublicradio.org/correspondents/0446.html" target="_blank">Elsbeth</a>.</li>
<li>
<ul><li><a href="https://hackerpublicradio.org/eps/hpr4522/index.html#comment_4527" target="_blank">Comment 1</a>:
candycanearter07 on 2025-12-13:
"peek into the community"</li></ul><br>
</li><li><strong><a href="https://hackerpublicradio.org/eps/hpr4523/index.html#comments" target="_blank">hpr4523</a></strong>
(2025-12-03) "<em>Nuclear Reactor Technology - Ep 1 - Nuclear Basics</em>"
by <a href="https://hackerpublicradio.org/correspondents/0455.html" target="_blank">Whiskeyjack</a>.</li>
<li>
<ul><li><a href="https://hackerpublicradio.org/eps/hpr4523/index.html#comment_4522" target="_blank">Comment 1</a>:
bjb on 2025-12-04:
"Love your show/series, thank you"</li><li><a href="https://hackerpublicradio.org/eps/hpr4523/index.html#comment_4523" target="_blank">Comment 2</a>:
Kevin O'Brien on 2025-12-04:
"Looking forward to more"</li><li><a href="https://hackerpublicradio.org/eps/hpr4523/index.html#comment_4524" target="_blank">Comment 3</a>:
Trey on 2025-12-09:
"Looking forward to this series"</li></ul><br>
</li><li><strong><a href="https://hackerpublicradio.org/eps/hpr4526/index.html#comments" target="_blank">hpr4526</a></strong>
(2025-12-08) "<em>Baofeng and SDR++</em>"
by <a href="https://hackerpublicradio.org/correspondents/0403.html" target="_blank">Lee</a>.</li>
<li>
<ul><li><a href="https://hackerpublicradio.org/eps/hpr4526/index.html#comment_4525" target="_blank">Comment 1</a>:
Trey on 2025-12-09:
"SDRs"</li></ul><br>
</li><li><strong><a href="https://hackerpublicradio.org/eps/hpr4529/index.html#comments" target="_blank">hpr4529</a></strong>
(2025-12-11) "<em>yoga370 review</em>"
by <a href="https://hackerpublicradio.org/correspondents/0326.html" target="_blank">Brian-in-Ohio</a>.</li>
<li>
<ul><li><a href="https://hackerpublicradio.org/eps/hpr4529/index.html#comment_4544" target="_blank">Comment 1</a>:
Paulj on 2025-12-31:
"Thanks - great show"</li></ul><br>
</li><li><strong><a href="https://hackerpublicradio.org/eps/hpr4532/index.html#comments" target="_blank">hpr4532</a></strong>
(2025-12-16) "<em>Cheap Yellow Display Project Part 5: Graphical User Interface </em>"
by <a href="https://hackerpublicradio.org/correspondents/0394.html" target="_blank">Trey</a>.</li>
<li>
<ul><li><a href="https://hackerpublicradio.org/eps/hpr4532/index.html#comment_4528" target="_blank">Comment 1</a>:
norrrist on 2025-12-16:
"starting small "</li></ul><br>
</li><li><strong><a href="https://hackerpublicradio.org/eps/hpr4533/index.html#comments" target="_blank">hpr4533</a></strong>
(2025-12-17) "<em>Nuclear Reactor Technology - Ep 2 Nuclear Fuel</em>"
by <a href="https://hackerpublicradio.org/correspondents/0455.html" target="_blank">Whiskeyjack</a>.</li>
<li>
<ul><li><a href="https://hackerpublicradio.org/eps/hpr4533/index.html#comment_4529" target="_blank">Comment 1</a>:
bjb on 2025-12-18:
"Thank the host for interesting series"</li></ul><br>
</li><li><strong><a href="https://hackerpublicradio.org/eps/hpr4535/index.html#comments" target="_blank">hpr4535</a></strong>
(2025-12-19) "<em>Living the Tux Life Episode 4 - Various software I have been using</em>"
by <a href="https://hackerpublicradio.org/correspondents/0290.html" target="_blank">Al</a>.</li>
<li>
<ul><li><a href="https://hackerpublicradio.org/eps/hpr4535/index.html#comment_4530" target="_blank">Comment 1</a>:
candycanearter07 on 2025-12-19:
"cool setup!"</li><li><a href="https://hackerpublicradio.org/eps/hpr4535/index.html#comment_4532" target="_blank">Comment 2</a>:
Archer72 on 2025-12-19:
"Tmux"</li></ul><br>
</li><li><strong><a href="https://hackerpublicradio.org/eps/hpr4536/index.html#comments" target="_blank">hpr4536</a></strong>
(2025-12-22) "<em>Welcome to the Linux Community</em>"
by <a href="https://hackerpublicradio.org/correspondents/0194.html" target="_blank">Deltaray</a>.</li>
<li>
<ul><li><a href="https://hackerpublicradio.org/eps/hpr4536/index.html#comment_4534" target="_blank">Comment 1</a>:
Archer72 on 2025-12-21:
"Brilliant!! "</li><li><a href="https://hackerpublicradio.org/eps/hpr4536/index.html#comment_4535" target="_blank">Comment 2</a>:
Torin Doyle on 2025-12-22:
"Deltaray did a fine job in covering GNU/Linux aka Linux, here."</li><li><a href="https://hackerpublicradio.org/eps/hpr4536/index.html#comment_4536" target="_blank">Comment 3</a>:
Ken Fallon on 2025-12-22:
"Agree"</li><li><a href="https://hackerpublicradio.org/eps/hpr4536/index.html#comment_4539" target="_blank">Comment 4</a>:
Deltaray on 2025-12-26:
"Thanks"</li><li><a href="https://hackerpublicradio.org/eps/hpr4536/index.html#comment_4541" target="_blank">Comment 5</a>:
Morhook on 2025-12-30:
"Good talk CliMagic"</li></ul><br>
</li><li><strong><a href="https://hackerpublicradio.org/eps/hpr4538/index.html#comments" target="_blank">hpr4538</a></strong>
(2025-12-24) "<em>HPR Branding</em>"
by <a href="https://hackerpublicradio.org/correspondents/0030.html" target="_blank">Ken Fallon</a>.</li>
<li>
<ul><li><a href="https://hackerpublicradio.org/eps/hpr4538/index.html#comment_4537" target="_blank">Comment 1</a>:
candycanearter07 on 2025-12-24:
"interesting peak of behind the scenes!!"</li><li><a href="https://hackerpublicradio.org/eps/hpr4538/index.html#comment_4538" target="_blank">Comment 2</a>:
Steve Barnes on 2025-12-24:
"Merci!"</li><li><a href="https://hackerpublicradio.org/eps/hpr4538/index.html#comment_4540" target="_blank">Comment 3</a>:
Archer72 on 2025-12-29:
"Re: candycanearter07"</li></ul><br>
</li><li><strong><a href="https://hackerpublicradio.org/eps/hpr4543/index.html#comments" target="_blank">hpr4543</a></strong>
(2025-12-31) "<em>Nuclear Reactor Technology - Ep 3 Reactor Basics</em>"
by <a href="https://hackerpublicradio.org/correspondents/0455.html" target="_blank">Whiskeyjack</a>.</li>
<li>
<ul><li><a href="https://hackerpublicradio.org/eps/hpr4543/index.html#comment_4545" target="_blank">Comment 1</a>:
L'andrew on 2025-12-31:
"Praise for this series"</li></ul><br>
</li></ul>

<h2>Mailing List discussions</h2>
<p>
Policy decisions surrounding HPR are taken by the community as a whole. This
discussion takes place on the <a href="https://lists.hackerpublicradio.com/mailman/listinfo/hpr" target="_blank">Mailing List</a>
which is open to all HPR listeners and contributors. The discussions are open
and available on the HPR server under <a href="https://lists.hackerpublicradio.com/pipermail/hpr">Mailman</a>.
</p>
<p>The threaded discussions this month can be found here:</p>
<a href="https://lists.hackerpublicradio.com/pipermail/hpr/2025-December/thread.html" target="_blank">https://lists.hackerpublicradio.com/pipermail/hpr/2025-December/thread.html</a>

<h2>Events Calendar</h2>
<p>With the kind permission of <strong>LWN.net</strong> we are linking to
<a href="https://lwn.net/Calendar/" target="_blank">The LWN.net Community Calendar</a>.</p>
<p>Quoting the site:</p>
<blockquote>This is the LWN.net community event calendar, where we track
events of interest to people using and developing Linux and free software.
Clicking on individual events will take you to the appropriate web
page.</blockquote>


<h2>Any other business</h2>
<h3>
Thanks to all 57 HPR contributors in 2025!
</h3>
<p>
</p>
<ul>
<li>
<a href="https://hackerpublicradio.org/correspondents/0198.html">Ahuka</a>,
<a href="https://hackerpublicradio.org/correspondents/0290.html">Al</a>,
<a href="https://hackerpublicradio.org/correspondents/0441.html">Antoine</a>,
<a href="https://hackerpublicradio.org/correspondents/0318.html">Archer72</a>,
<a href="https://hackerpublicradio.org/correspondents/0288.html">beni</a>,
<a href="https://hackerpublicradio.org/correspondents/0326.html">Brian-in-Ohio</a>,
<a href="https://hackerpublicradio.org/correspondents/0454.html">candycanearter</a>,
</li>
<li>
<a href="https://hackerpublicradio.org/correspondents/0407.html">Celeste</a>,
<a href="https://hackerpublicradio.org/correspondents/0152.html">Claudio Miranda</a>,
<a href="https://hackerpublicradio.org/correspondents/0382.html">Daniel Persson</a>,
<a href="https://hackerpublicradio.org/correspondents/0430.html">Dave Hingley</a>,
<a href="https://hackerpublicradio.org/correspondents/0225.html">Dave Morriss</a>,
<a href="https://hackerpublicradio.org/correspondents/0194.html">Deltaray</a>,
<a href="https://hackerpublicradio.org/correspondents/0399.html">dnt</a>,
</li>
<li>
<a href="https://hackerpublicradio.org/correspondents/0446.html">Elsbeth</a>,
<a href="https://hackerpublicradio.org/correspondents/0309.html">folky</a>,
<a href="https://hackerpublicradio.org/correspondents/0422.html">FredBlack</a>,
<a href="https://hackerpublicradio.org/correspondents/0425.html">gemlog</a>,
<a href="https://hackerpublicradio.org/correspondents/0436.html">hairylarry</a>,
<a href="https://hackerpublicradio.org/correspondents/0429.html">Henrik Hemrin</a>,
<a href="https://hackerpublicradio.org/correspondents/0269.html">Honkeymagoo</a>,
</li>
<li>
<a href="https://hackerpublicradio.org/correspondents/0159.html">HPR Volunteers</a>,
<a href="https://hackerpublicradio.org/correspondents/0440.html">iota</a>,
<a href="https://hackerpublicradio.org/correspondents/0445.html">Jerm</a>,
<a href="https://hackerpublicradio.org/correspondents/0369.html">Jeroen Baten</a>,
<a href="https://hackerpublicradio.org/correspondents/0243.html">Jezra</a>,
<a href="https://hackerpublicradio.org/correspondents/0030.html">Ken Fallon</a>,
</li>
<li>
<a href="https://hackerpublicradio.org/correspondents/0296.html">Kevie</a>,
<a href="https://hackerpublicradio.org/correspondents/0452.html">Kirbotica</a>,
<a href="https://hackerpublicradio.org/correspondents/0078.html">Klaatu</a>,
<a href="https://hackerpublicradio.org/correspondents/0447.html">ko3moc</a>,
<a href="https://hackerpublicradio.org/correspondents/0403.html">Lee</a>,
<a href="https://hackerpublicradio.org/correspondents/0434.html">Lochyboy</a>,
<a href="https://hackerpublicradio.org/correspondents/0451.html">Major_Ursa</a>,
<a href="https://hackerpublicradio.org/correspondents/0449.html">Manon</a>,
</li>
<li>
<a href="https://hackerpublicradio.org/correspondents/0443.html">Marc W. Abel</a>,
<a href="https://hackerpublicradio.org/correspondents/0379.html">mightbemike</a>,
<a href="https://hackerpublicradio.org/correspondents/0431.html">Moss Bliss</a>,
<a href="https://hackerpublicradio.org/correspondents/0201.html">MrX</a>,
<a href="https://hackerpublicradio.org/correspondents/0444.html">murph</a>,
<a href="https://hackerpublicradio.org/correspondents/0342.html">norrist</a>,
<a href="https://hackerpublicradio.org/correspondents/0036.html">operat0r</a>,
</li>
<li>
<a href="https://hackerpublicradio.org/correspondents/0448.html">oxo</a>,
<a href="https://hackerpublicradio.org/correspondents/0438.html">Paulj</a>,
<a href="https://hackerpublicradio.org/correspondents/0421.html">Reto</a>,
<a href="https://hackerpublicradio.org/correspondents/0293.html">Rho`n</a>,
<a href="https://hackerpublicradio.org/correspondents/0442.html">Shane - StrandedOutput</a>,
<a href="https://hackerpublicradio.org/correspondents/0437.html">SolusSpider</a>,
<a href="https://hackerpublicradio.org/correspondents/0391.html">Some Guy On The Internet</a>,
</li>
<li>
<a href="https://hackerpublicradio.org/correspondents/0297.html">Swift110</a>,
<a href="https://hackerpublicradio.org/correspondents/0314.html">thelovebug</a>,
<a href="https://hackerpublicradio.org/correspondents/0453.html">Thibaut</a>,
<a href="https://hackerpublicradio.org/correspondents/0394.html">Trey</a>,
<a href="https://hackerpublicradio.org/correspondents/0149.html">Trixter</a>,
<a href="https://hackerpublicradio.org/correspondents/0433.html">Trollercoaster</a>,
<a href="https://hackerpublicradio.org/correspondents/0455.html">Whiskeyjack</a>,
<a href="https://hackerpublicradio.org/correspondents/0450.html">Wojciech</a>
</li>
<p><a href="https://hackerpublicradio.org/eps/hpr4546/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p></ul>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4545: YouTube Subscriptions 2025 #12]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.


I am subscribed to a number of YouTube channels, and I am sharing them with you.


Links:




https://www.youtube.com/@RickStevesTravelTalks



https://www.youtube.com/@RickStevesEuropeOfficial



https://www.youtube.com/@ringostarr



https://ww...]]></description>
<link>https://tsecurity.de/de/3189914/it+sicherheit/it+podcasts/hpr4545+youtube+subscriptions+2025+12/</link>
<pubDate>Fri, 02 Jan 2026 01:02:30 +0100</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>

<p>
I am subscribed to a number of YouTube channels, and I am sharing them with you.</p>

<h3>
Links:</h3>

<ul>
<li>
<a href="https://www.youtube.com/@RickStevesTravelTalks" rel="noopener noreferrer" target="_blank">
https://www.youtube.com/@RickStevesTravelTalks</a>
</li>
<li>
<a href="https://www.youtube.com/@RickStevesEuropeOfficial" rel="noopener noreferrer" target="_blank">
https://www.youtube.com/@RickStevesEuropeOfficial</a>
</li>
<li>
<a href="https://www.youtube.com/@ringostarr" rel="noopener noreferrer" target="_blank">
https://www.youtube.com/@ringostarr</a>
</li>
<li>
<a href="https://www.youtube.com/@RBReich" rel="noopener noreferrer" target="_blank">
https://www.youtube.com/@RBReich</a>
</li>
<li>
<a href="https://www.youtube.com/@RobWords" rel="noopener noreferrer" target="_blank">
https://www.youtube.com/@RobWords</a>
</li>
<li>
<a href="https://www.youtube.com/@rockhall" rel="noopener noreferrer" target="_blank">
https://www.youtube.com/@rockhall</a>
</li>
<li>
<a href="https://www.youtube.com/@RowanJColeman" rel="noopener noreferrer" target="_blank">
https://www.youtube.com/@RowanJColeman</a>
</li>
<li>
<a href="https://www.youtube.com/@RoyalCaribbeanBlog" rel="noopener noreferrer" target="_blank">
https://www.youtube.com/@RoyalCaribbeanBlog</a>
</li>
<li>
<a href="https://www.youtube.com/@SabatonHistory" rel="noopener noreferrer" target="_blank">
https://www.youtube.com/@SabatonHistory</a>
</li>
<li>
<a href="https://www.youtube.com/@sassygamerlady" rel="noopener noreferrer" target="_blank">
https://www.youtube.com/@sassygamerlady</a>
</li>
<li>
<a href="https://www.youtube.com/@ScienceNewsMag" rel="noopener noreferrer" target="_blank">
https://www.youtube.com/@ScienceNewsMag</a>
</li>
<li>
<a href="https://www.youtube.com/@NASAScience" rel="noopener noreferrer" target="_blank">
https://www.youtube.com/@NASAScience</a>
</li>
<li>
<a href="https://www.youtube.com/@sciencium" rel="noopener noreferrer" target="_blank">
https://www.youtube.com/@sciencium</a>
</li>
<li>
<a href="https://www.youtube.com/@scifri" rel="noopener noreferrer" target="_blank">
https://www.youtube.com/@scifri</a>
</li>
<li>
<a href="https://www.youtube.com/@SciShow" rel="noopener noreferrer" target="_blank">
https://www.youtube.com/@SciShow</a>
</li>
<li>
<a href="https://www.youtube.com/@SciShowPsych" rel="noopener noreferrer" target="_blank">
https://www.youtube.com/@SciShowPsych</a>
</li>
<li>
<a href="https://www.youtube.com/@scishowspace" rel="noopener noreferrer" target="_blank">
https://www.youtube.com/@scishowspace</a>
</li>
<li>
<a href="https://www.youtube.com/@securitynow" rel="noopener noreferrer" target="_blank">
https://www.youtube.com/@securitynow</a>
</li>
<li>
<a href="https://www.palain.com/" rel="noopener noreferrer" target="_blank">
https://www.palain.com/</a>
</li>
</ul>


<p><a href="https://hackerpublicradio.org/eps/hpr4545/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4544: Uncommon Commands, Episode 2]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.



Refs:



https://www.tuhs.org/cgi-bin/utree.pl?file=2BSD/man/last.u






https://en.wikipedia.org/w/index.php?title=Util-linux&oldid=271104508






https://kernel.googlesource.com/pub/scm/utils/util-linux/util-linux/+/612721dba838fe37af5434212...]]></description>
<link>https://tsecurity.de/de/3188691/it+sicherheit/it+podcasts/hpr4544+uncommon+commands+episode+2/</link>
<pubDate>Thu, 01 Jan 2026 01:02:25 +0100</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>

<h2>
<strong>
Refs:</strong>
</h2>
<p>
<a href="https://www.tuhs.org/cgi-bin/utree.pl?file=2BSD/man/last.u" rel="noopener noreferrer" target="_blank">
https://www.tuhs.org/cgi-bin/utree.pl?file=2BSD/man/last.u</a>
</p>
<p>
<br>
</p>
<p>
<a href="https://en.wikipedia.org/w/index.php?title=Util-linux&amp;oldid=271104508" rel="noopener noreferrer" target="_blank">
https://en.wikipedia.org/w/index.php?title=Util-linux&amp;oldid=271104508</a>
</p>
<p>
<br>
</p>
<p>
<a href="https://kernel.googlesource.com/pub/scm/utils/util-linux/util-linux/+/612721dba838fe37af543421278416bb7acf770c/login-utils/README.admutil" rel="noopener noreferrer" target="_blank">
https://kernel.googlesource.com/pub/scm/utils/util-linux/util-linux/+/612721dba838fe37af543421278416bb7acf770c/login-utils/README.admutil</a>
</p>
<p>
<br>
</p>
<p>
<a href="https://www.linkedin.com/in/michael-haardt-9087023/details/experience/" rel="noopener noreferrer" target="_blank">
https://www.linkedin.com/in/michael-haardt-9087023/details/experience/</a>
</p>
<p>
<br>
</p>
<p>
<a href="https://www.linkedin.com/in/peterorbaek/details/experience/" rel="noopener noreferrer" target="_blank">
https://www.linkedin.com/in/peterorbaek/details/experience/</a>
</p>
<p>
<br>
</p>
<p>
<a href="https://flameshot.org/" rel="noopener noreferrer" target="_blank">
https://flameshot.org/</a>
</p>
<p>
<br>
</p>
<p>
<br>
</p>
<h2>
<strong>
commands:</strong>
</h2>
<p>
<span>
ping yahoo.com</span>
</p>
<p>
<br>
</p>
<p>
<span>
traceroute -m 100 bad.horse</span>
</p>
<p>
<span>
mtr www.yahoo.com</span>
</p>
<p>
<br>
</p>
<p>
<span>
scrot</span>
</p>
<p>
<span>
flameshot</span>
</p>
<p>
<br>
</p>
<p>
<span>
zless messages.1.gz</span>
</p>
<p>
<span>
bzless messages.1.bz</span>
</p>
<p>
<span>
xzless messages.1.xz</span>
</p>
<p>
<br>
</p>
<p>
<span>
last -10</span>
</p>
<p>
<span>
last reboot</span>
</p>
<p>
<span>
last $USER -10</span>
</p>
<p>
<br>
</p>
<p>
<br>
</p>
<h2>
<strong>
People involved:</strong>
</h2>
<p>
<span>
mtr:</span>
</p>
<p>
<span>
Matt Kimball</span>
</p>
<p>
<span>
Roger Wolff</span>
</p>
<p>
<br>
</p>
<p>
<span>
scrot:</span>
</p>
<p>
<span>
Tom Gilbert</span>
</p>
<p>
<br>
</p>
<p>
<span>
zless and related commands:</span>
</p>
<p>
<span>
Paul Eggert</span>
</p>
<p>
<br>
</p>
<p>
<span>
last command:</span>
</p>
<p>
<span>
Howard Katseff</span>
</p>
<p>
<span>
Michael Haardt</span>
</p>
<p>
<span>
Peter Orbaek</span>
</p>


<p><a href="https://hackerpublicradio.org/eps/hpr4544/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4543: Nuclear Reactor Technology - Ep 3 Reactor Basics]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.


03-Reactor-Basics




01 Introduction

In this episode we will describe the basic features and characteristics of reactors together with descriptions of the most widely used commercial reactor types.




03 Fast Versus Slow Reactors

04 Slow Neut...]]></description>
<link>https://tsecurity.de/de/3187083/it+sicherheit/it+podcasts/hpr4543+nuclear+reactor+technology+-+ep+3+reactor+basics/</link>
<pubDate>Wed, 31 Dec 2025 01:02:39 +0100</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>

<p>
03-Reactor-Basics</p>
<p>
<br>
</p>
<p>
01 Introduction</p>
<p>
In this episode we will describe the basic features and characteristics of reactors together with descriptions of the most widely used commercial reactor types.</p>
<p>
<br>
</p>
<p>
03 Fast Versus Slow Reactors</p>
<p>
04 Slow Neutron Reactors</p>
<p>
06 Fast Neutron Reactors</p>
<p>
08 Reactor Moderators</p>
<p>
10 Light Water</p>
<p>
11 Heavy Water</p>
<p>
13 Graphite</p>
<p>
14 Unmoderated</p>
<p>
<br>
</p>
<p>
15 Coolants</p>
<p>
16 Common Coolants</p>
<p>
17 Alternative Coolants</p>
<p>
18 Primary and Secondary Coolant Loops</p>
<p>
<br>
</p>
<p>
20 Steam Generation</p>
<p>
23 Brayton Cycle Gas Turbines</p>
<p>
<br>
</p>
<p>
24 Refuelling Method</p>
<p>
<br>
</p>
<p>
25 Main Commercial Reactor Types</p>
<p>
26 PWR - Pressurized Water Reactor</p>
<p>
28 BWR - Boiling Water Reactor</p>
<p>
29 PHWR - Pressurized Heavy Water Reactor</p>
<p>
<br>
</p>
<p>
33 Conclusion</p>
<p>
<br>
</p>
<p>
We have covered the main reactor characteristics. </p>
<p>
These characteristics can be mixed in various ways to give different reactor types.</p>
<p>
The characteristics also affect the types of fuel that can be used.</p>
<p>
We also covered the three main commercial power generation reactor types.</p>
<p>
<br>
</p>
<p>
In the next episode we will describe some of the less common historical reactor types.</p>
<p>
<br>
</p>


<p><a href="https://hackerpublicradio.org/eps/hpr4543/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4542: Can Haiku Mumble?]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.

    Haiku: https://www.haiku-os.org/
    BeOS: https://en.wikipedia.org/wiki/BeOS
    Mumble: https://www.mumble.info/
    HPR NYE Show: https://hackerpublicradio.org/new_year.html
    How to Connect to HPR Community Room using Mumble: https://hac...]]></description>
<link>https://tsecurity.de/de/3185230/it+sicherheit/it+podcasts/hpr4542+can+haiku+mumble/</link>
<pubDate>Tue, 30 Dec 2025 01:02:28 +0100</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>

    <p>Haiku: <a href="https://www.haiku-os.org/">https://www.haiku-os.org/</a></p>
    <p>BeOS: <a href="https://en.wikipedia.org/wiki/BeOS">https://en.wikipedia.org/wiki/BeOS</a></p>
    <p>Mumble: <a href="https://www.mumble.info/">https://www.mumble.info/</a></p>
    <p>HPR NYE Show: <a href="https://hackerpublicradio.org/new_year.html">https://hackerpublicradio.org/new_year.html</a></p>
    <p>How to Connect to HPR Community Room using Mumble: <a href="https://hackerpublicradio.org/mumble-howto">https://hackerpublicradio.org/mumble-howto</a></p><p><a href="https://hackerpublicradio.org/eps/hpr4542/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4541: HPR Beer Garden 7 - UK Christmas Ales]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.


With Christmas approaching (and actually gone by the time this is posted), Kevie, Dave and Paul try out a variety of Christmas ales from the UK. Dave opts for 
St Peters Christmas Ale
, Kevie samples 
Samuel Smith's Winter Welcome Ale
and Dave su...]]></description>
<link>https://tsecurity.de/de/3183386/it+sicherheit/it+podcasts/hpr4541+hpr+beer+garden+7+-+uk+christmas+ales/</link>
<pubDate>Mon, 29 Dec 2025 01:02:35 +0100</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>

<p>
With Christmas approaching (and actually gone by the time this is posted), Kevie, Dave and Paul try out a variety of Christmas ales from the UK. Dave opts for <a href="https://stpetersbrewery.myshopify.com/products/christmas-ale" rel="noopener noreferrer" target="_blank">
St Peters Christmas Ale</a>
, Kevie samples <a href="https://samuelsmithsbrewery.co.uk/shop/bottles/ale/winter-welcome-ale/" rel="noopener noreferrer" target="_blank">
Samuel Smith's Winter Welcome Ale</a>
and Dave supports his local brewery, Purple Moose, with a mug of <a href="https://purplemoose.co.uk/collections/merry-x-moose" rel="noopener noreferrer" target="_blank">
Merry X-Moose</a>
.</p>
<p>
<br>
</p>
<p>
<a href="https://hackerpublicradio.org/eps/hpr4541/hpr4541_image_1.png">
<img src="https://hackerpublicradio.org/eps/hpr4541/hpr4541_image_1_tn.png">
</a>
</p>
<p>
Connect with the guys on Untappd:</p>
<p>
<br>
</p>
<ul>
<li>
<a href="https://untappd.com/user/thelovebug" rel="noopener noreferrer" target="_blank">
Dave</a>
</li>
<li>
<a href="https://untappd.com/user/gorenia" rel="noopener noreferrer" target="_blank">
Paul</a>
</li>
<li>
<a href="https://untappd.com/user/kevie49" rel="noopener noreferrer" target="_blank">
Kevie</a>
</li>
</ul>
<p>
<br>
</p>
<p>
The intro sounds for the show are used from:</p>
<p>
<br>
</p>
<ul>
<li>
<a href="https://freesound.org/people/mixtus/sounds/329806/" rel="noopener noreferrer" target="_blank">
https://freesound.org/people/mixtus/sounds/329806/</a>
</li>
<li>
<a href="https://freesound.org/people/j1987/sounds/123003/" rel="noopener noreferrer" target="_blank">
https://freesound.org/people/j1987/sounds/123003/</a>
</li>
<li>
<a href="https://freesound.org/people/greatsoundstube/sounds/628437/" rel="noopener noreferrer" target="_blank">
https://freesound.org/people/greatsoundstube/sounds/628437/</a>
</li>
</ul>
<p>
<br>
</p>


<p><a href="https://hackerpublicradio.org/eps/hpr4541/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4540: Arthur C. Clarke: Other Novels, Part 1]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.

    
      This brings us to a look at some of Arthur C. Clarke's other
      stories, The Sands of Mars (1951), The Deep Range (1957), and The
      Fountains of Paradise (1979). These are just a few of his
      well-regarded stand-alone novels....]]></description>
<link>https://tsecurity.de/de/3179823/it+sicherheit/it+podcasts/hpr4540+arthur+c+clarke+other+novels+part+1/</link>
<pubDate>Fri, 26 Dec 2025 01:02:09 +0100</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>

    <p>
      This brings us to a look at some of Arthur C. Clarke's other
      stories, The Sands of Mars (1951), The Deep Range (1957), and The
      Fountains of Paradise (1979). These are just a few of his
      well-regarded stand-alone novels.</p>
    <h3>
      Links:</h3>
    <ul>
      <li>
        <a moz-do-not-send="true" href="https://www.sffworld.com/forum/threads/the-clarke-asimov-treaty.46067/">https://www.sffworld.com/forum/threads/the-clarke-asimov-treaty.46067/</a></li>
      <li><a moz-do-not-send="true" href="https://en.wikipedia.org/wiki/The_Sands_of_Mars">
          https://en.wikipedia.org/wiki/The_Sands_of_Mars</a></li>
      <li><a moz-do-not-send="true" href="https://en.wikipedia.org/wiki/Islands_in_the_Sky">
          https://en.wikipedia.org/wiki/Islands_in_the_Sky</a></li>
      <li><a moz-do-not-send="true" href="https://en.wikipedia.org/wiki/Earthlight">
          https://en.wikipedia.org/wiki/Earthlight</a></li>
      <li><a moz-do-not-send="true" href="https://en.wikipedia.org/wiki/The_Space_Trilogy">
          https://en.wikipedia.org/wiki/The_Space_Trilogy</a></li>
      <li><a moz-do-not-send="true" href="https://en.wikipedia.org/wiki/The_Deep_Range">
          https://en.wikipedia.org/wiki/The_Deep_Range</a></li>
      <li><a moz-do-not-send="true" href="https://en.wikipedia.org/wiki/Dolphin_Island_(novel)">
          https://en.wikipedia.org/wiki/Dolphin_Island_(novel)</a></li>
      <li><a moz-do-not-send="true" href="https://en.wikipedia.org/wiki/The_Ghost_from_the_Grand_Banks">
          https://en.wikipedia.org/wiki/The_Ghost_from_the_Grand_Banks</a></li>
      <li><a moz-do-not-send="true" href="https://en.wikipedia.org/wiki/The_Fountains_of_Paradise">
          https://en.wikipedia.org/wiki/The_Fountains_of_Paradise</a></li>
      <li><a moz-do-not-send="true" href="https://en.wikipedia.org/wiki/Buckminsterfullerene">
          https://en.wikipedia.org/wiki/Buckminsterfullerene</a></li>
      <li><a moz-do-not-send="true" href="https://en.wikipedia.org/wiki/The_Man_Who_Sold_the_Moon">
          https://en.wikipedia.org/wiki/The_Man_Who_Sold_the_Moon</a></li>
      <li><a moz-do-not-send="true" href="https://www.palain.com/science-fiction/the-golden-age/arthur-c-clarke-other-novels-part-1/">https://www.palain.com/science-fiction/the-golden-age/arthur-c-clarke-other-novels-part-1/</a></li>
    </ul><p><a href="https://hackerpublicradio.org/eps/hpr4540/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4539: YouTube Subscriptions 2025 #11]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.


I am subscribed to a number of YouTube channels, and I am sharing them with you.




Links:



https://www.youtube.com/@ProfessorofRock



https://www.youtube.com/@ProgAxia



https://www.youtube.com/@quill18



https://www.youtube.com/@RachelFlo...]]></description>
<link>https://tsecurity.de/de/3178517/it+sicherheit/it+podcasts/hpr4539+youtube+subscriptions+2025+11/</link>
<pubDate>Thu, 25 Dec 2025 01:02:27 +0100</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>

<p>
I am subscribed to a number of YouTube channels, and I am sharing them with you.</p>
<p>
<br>
</p>
<h3>
Links:</h3>
<ul>
<li>
<a href="https://www.youtube.com/@ProfessorofRock" rel="noopener noreferrer" target="_blank">
https://www.youtube.com/@ProfessorofRock</a>
</li>
<li>
<a href="https://www.youtube.com/@ProgAxia" rel="noopener noreferrer" target="_blank">
https://www.youtube.com/@ProgAxia</a>
</li>
<li>
<a href="https://www.youtube.com/@quill18" rel="noopener noreferrer" target="_blank">
https://www.youtube.com/@quill18</a>
</li>
<li>
<a href="https://www.youtube.com/@RachelFlowersMusic" rel="noopener noreferrer" target="_blank">
https://www.youtube.com/@RachelFlowersMusic</a>
</li>
<li>
<a href="https://www.youtube.com/@RadioFreeSkaro" rel="noopener noreferrer" target="_blank">
https://www.youtube.com/@RadioFreeSkaro</a>
</li>
<li>
<a href="https://www.youtube.com/channel/UCvpxXoojGDRVA7zLYlY-48g" rel="noopener noreferrer" target="_blank">
https://www.youtube.com/channel/UCvpxXoojGDRVA7zLYlY-48g</a>
</li>
<li>
<a href="https://www.youtube.com/@ralphtownermusic412" rel="noopener noreferrer" target="_blank">
https://www.youtube.com/@ralphtownermusic412</a>
</li>
<li>
<a href="https://www.youtube.com/@RandyRainbowOfficial" rel="noopener noreferrer" target="_blank">
https://www.youtube.com/@RandyRainbowOfficial</a>
</li>
<li>
<a href="https://www.youtube.com/@realfastspanish" rel="noopener noreferrer" target="_blank">
https://www.youtube.com/@realfastspanish</a>
</li>
<li>
<a href="https://www.youtube.com/@realtimehistory" rel="noopener noreferrer" target="_blank">
https://www.youtube.com/@realtimehistory</a>
</li>
<li>
<a href="https://www.youtube.com/@RealLifeLore" rel="noopener noreferrer" target="_blank">
https://www.youtube.com/@RealLifeLore</a>
</li>
<li>
<a href="https://www.youtube.com/@pickupchangetoe" rel="noopener noreferrer" target="_blank">
https://www.youtube.com/@pickupchangetoe</a>
</li>
<li>
<a href="https://www.youtube.com/@RichieCastellano" rel="noopener noreferrer" target="_blank">
https://www.youtube.com/@RichieCastellano</a>
</li>
<li>
<a href="https://www.youtube.com/@RickBeato" rel="noopener noreferrer" target="_blank">
https://www.youtube.com/@RickBeato</a>
</li>
<li>
<a href="https://www.youtube.com/@rickbeato2" rel="noopener noreferrer" target="_blank">
https://www.youtube.com/@rickbeato2</a>
</li>
<li>
<a href="https://www.palain.com/" rel="noopener noreferrer" target="_blank">
https://www.palain.com/</a>
</li>
</ul>
<p>
<br>
</p>


<p><a href="https://hackerpublicradio.org/eps/hpr4539/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4538: HPR Branding]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.


HPR Branding




This episode refers to the initial release of 
https://repo.anhonesthost.net/HPR/hpr_documentation/src/branch/main/branding.md
 




The Intro

Duration

It will always be 30 seconds long and in some edge cases may be slightly lo...]]></description>
<link>https://tsecurity.de/de/3176919/it+sicherheit/it+podcasts/hpr4538+hpr+branding/</link>
<pubDate>Wed, 24 Dec 2025 01:03:24 +0100</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>

<h1>
HPR Branding</h1>
<p>
<br>
</p>
<p>
This episode refers to the initial release of <a href="https://repo.anhonesthost.net/HPR/hpr_documentation/src/branch/main/branding.md" rel="noopener noreferrer" target="_blank">
https://repo.anhonesthost.net/HPR/hpr_documentation/src/branch/main/branding.md</a>
 </p>
<p>
<br>
</p>
<h2>
The Intro</h2>
<h3>
Duration</h3>
<p>
It will always be 30 seconds long and in some edge cases may be slightly longer. The following table will help put that into context. It gives the percentage of the show the intro takes related to the length of the shows.</p>
<p>
<br>
</p>
<pre class="ql-syntax" spellcheck="false">
  1.7% of an average show (29 minutes 30 seconds)
  0.1% of our longest show (7 hours 27 minutes)
187.5% of our shortest show (16 seconds)
</pre>
<h3>
Breakdown</h3>
<h3>
Generation</h3>
<p>
The intro is generated by the <a href="https://repo.anhonesthost.net/HPR/hpr-tools/src/branch/main/workflow/process_episode.bash#L1388-L1391" rel="noopener noreferrer" target="_blank">
process_episode.bash</a>
 script and uses the <a href="https://repo.anhonesthost.net/HPR/hpr_hub/src/branch/main/cms/say.php" rel="noopener noreferrer" target="_blank">
say.php</a>
 file to generate the data.</p>
<p>
The text is <a href="https://repo.anhonesthost.net/HPR/hpr-tools/src/branch/main/workflow/process_episode.bash#L1427" rel="noopener noreferrer" target="_blank">
created</a>
 using <a href="https://github.com/rhasspy/piper" rel="noopener noreferrer" target="_blank">
piper test to speech</a>
. It was previously created using <a href="https://espeak.sourceforge.net/" rel="noopener noreferrer" target="_blank">
espeak</a>
, and we are open to <a href="https://repo.anhonesthost.net/HPR/hpr_hub/issues/new" rel="noopener noreferrer" target="_blank">
suggestions</a>
 on how to improve it.</p>
<p>
The text is played over the HPR Theme Music</p>
<p>
<br>
</p>
<h3>
Theme Music Credits</h3>
<p>
The background is an arrangement by <a href="https://repo.anhonesthost.net/HPR/hpr_website/src/branch/main/www/theme/intro-ak-Maestraccio-cc-by-4.0.mp3" rel="noopener noreferrer" target="_blank">
Maestraccio</a>
 which is released under the <a href="https://creativecommons.org/licenses/by-sa/4.0/" rel="noopener noreferrer" target="_blank">
Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)</a>
 license, of the HPR Theme, composed by <a href="https://hackerpublicradio.org/correspondents/0042.html" rel="noopener noreferrer" target="_blank">
slick0</a>
 which has <a href="https://creativecommons.org/publicdomain/zero/1.0/" rel="noopener noreferrer" target="_blank">
No Copyright</a>
 applied.</p>
<p>
<br>
</p>
<h3>
Message</h3>
<p>
To effectively communicate an event it’s important to convey the answers to <strong>
Who?</strong>
, <strong>
What?</strong>
, <strong>
When?</strong>
, <strong>
Where?</strong>
, and <strong>
Why?</strong>
</p>
<p>
<br>
</p>
<blockquote>
The Five Ws is a checklist used in journalism to ensure that the lead contains all the essential points of a story. As far back as 1913, reporters were taught that the lead should answer these questions about the situation being reported.</blockquote>
<p>
<a href="https://en.wikipedia.org/wiki/Five_Ws" rel="noopener noreferrer" target="_blank">
https://en.wikipedia.org/wiki/Five_Ws</a>
</p>
<p>
<br>
</p>
<h4>
What?, When?, Where?</h4>
<p>
The first sentence is always <strong>
This is Hacker Public Radio episode (show id) for “(day of week)” the “(day number)” of “(month and year).</strong>
</p>
<p>
Saying the name of the show at the beginning of an episode is called establishing <a href="https://en.wikipedia.org/wiki/Brand_awareness#Brand_recognition" rel="noopener noreferrer" target="_blank">
brand recognition</a>
. It is standard for podcasts, TV and Radio shows as well as on broadcast networks, not to mention the pre-rolls in a movie.</p>
<p>
We started to do it because some of our Visually Impaired users appreciated knowing what show is playing. Now the same reason can be applied to everyone as the use of visual controlled <a href="https://en.wikipedia.org/wiki/User_interface" rel="noopener noreferrer" target="_blank">
User interfaces</a>
 have diminished. Most people control the playlist with headset or voice controls.</p>
<p>
Saying the show id, and date is common where there are a lot of episodes eg: news or weather shows. It is often skipped where the content is sufficient to identify the episode, eg “the last episode of the foo bar baz podcast, or the last Saturday Night Live”</p>
<p>
We include the show id and date to allow the listener to refer to the episode easily. As we have literally thousands of shows, we need to help people identify which show they are now listening to, so that it can be easily shared, or commented on.</p>
<p>
<br>
</p>
<h4>
What? Why?</h4>
<p>
We always include <strong>
Today’s show is entitled. (title)</strong>
. If the episode is part of a series then we also include <strong>
It is part of the series (series name)</strong>
. We always include the show <strong>
(synopsis)</strong>
.</p>
<p>
This tells the listener what the show is about. It allows them to skip the episode if they wish. They may wish to do this for many reasons, for example:</p>
<p>
<br>
</p>
<ul>
<li>
because they are not interested in the topic,</li>
<li>
they wish to listen to it while in front of a computer to reference the accompanying show notes,</li>
<li>
they are listening in public and the topic might not be appropriate.</li>
</ul>
<h4>
Who?</h4>
<p>
The next part will either be <strong>
It is the first show by new host (host name)</strong>
, <strong>
It is the (multiple of 10)th show of (host name)</strong>
, or <strong>
It is hosted by (host name)</strong>
</p>
<p>
We are required by the <a href="https://creativecommons.org/licenses/by-sa/4.0/" rel="noopener noreferrer" target="_blank">
Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)</a>
 license to credit our hosts, so we do.</p>
<p>
We think it’s important to highlight new hosts especially, so our community we encourage them to continue to contribute.</p>
<p>
It’s also nice to call out hosts who have been contributing a lot by highlighting each 10th show they send in.</p>
<p>
<br>
</p>
<h4>
Where?</h4>
<p>
We always include <strong>
and is about (minutes)minutes long</strong>
 to give people an idea of how long the show is.</p>
<p>
Normal broadcasts have to fit neatly into a standard TV/Radio Broadcast schedule. Many podcasters now follow the same tradition of having episodes of a predictable length. Eg: 30 minutes or an hour.</p>
<p>
On HPR, <a href="https://hackerpublicradio.org/about.html" rel="noopener noreferrer" target="_blank">
there is no restriction on how long the show can be</a>
 so it’s desirable to give the listener a way to know how long the episode is so they can plan accordingly.</p>
<p>
<br>
</p>
<h4>
Warning</h4>
<p>
We always include either <strong>
It carries a clean flag</strong>
 or <strong>
It carries an explicit flag</strong>
.</p>
<p>
This is also common for broadcasts where they are dealing with a topic that may be disturbing to some people.</p>
<p>
<br>
</p>
<h4>
What</h4>
<p>
We always include <strong>
The summary is. (summary)</strong>
.</p>
<p>
As this also tells the listener what the show is about.</p>
<p>
<br>
</p>
<h4>
License</h4>
<p>
In the event that the show is not released <a href="https://creativecommons.org/licenses/by-sa/4.0/" rel="noopener noreferrer" target="_blank">
CC-BY-SA</a>
 we include <strong>
Todays show is licensed under a (license_long_name) license.</strong>
</p>
<p>
<br>
</p>
<h2>
Outro</h2>
<h3>
Theme Music Credits</h3>
<p>
The background is an arrangement by <a href="https://repo.anhonesthost.net/HPR/hpr_website/src/branch/main/www/theme/intro-ak-Maestraccio-cc-by-4.0.mp3" rel="noopener noreferrer" target="_blank">
Maestraccio</a>
 which is released under the <a href="https://creativecommons.org/licenses/by-sa/4.0/" rel="noopener noreferrer" target="_blank">
Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)</a>
 license, of the HPR Theme, composed by <a href="https://hackerpublicradio.org/correspondents/0042.html" rel="noopener noreferrer" target="_blank">
slick0</a>
 which has <a href="https://creativecommons.org/publicdomain/zero/1.0/" rel="noopener noreferrer" target="_blank">
No Copyright</a>
 applied.</p>
<p>
Over the music is the following text recorded by <a href="https://hackerpublicradio.org/correspondents/0449.html" rel="noopener noreferrer" target="_blank">
Manon</a>
 which has <a href="https://creativecommons.org/publicdomain/zero/1.0/" rel="noopener noreferrer" target="_blank">
No Copyright</a>
 applied.</p>
<p>
You have been listening to Hacker Public Radio at <a href="https://hackerpublicradio.org/" rel="noopener noreferrer" target="_blank">
hackerpublicradio.org</a>
.</p>
<p>
Today’s show was contributed by a HPR listener like yourself.</p>
<p>
If you ever thought of recording a podcast, then click on our contribute link to find out how easy it really is.</p>
<p>
Hosting for HPR has been kindly provided by <a href="https://anhonesthost.com/" rel="noopener noreferrer" target="_blank">
anhonesthost.com</a>
, the <a href="https://archive.org/" rel="noopener noreferrer" target="_blank">
Internet Archive</a>
 and <a href="https://www.rsync.net/" rel="noopener noreferrer" target="_blank">
rsync.net</a>
.</p>
<p>
Unless otherwise stated, today’s show is released under a <a href="https://creativecommons.org/licenses/by-sa/4.0/" rel="noopener noreferrer" target="_blank">
Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)</a>
 license.</p>
<p>
<br>
</p>
<h1>
Discussions about the HPR Theme</h1>
<ul>
<li>
<a href="https://hackerpublicradio.org/eps/hpr3837/index.html#comments" rel="noopener noreferrer" target="_blank">
2023-04 intro</a>
</li>
<li>
<a href="https://hackerpublicradio.org/eps/hpr3553/index.html#comment_3378" rel="noopener noreferrer" target="_blank">
2022-03 Great Intro</a>
</li>
<li>
<a href="https://hackerpublicradio.org/eps/hpr3461/index.html#comment_3306" rel="noopener noreferrer" target="_blank">
2022-03 TTS</a>
</li>
<li>
<a href="https://hackerpublicradio.org/eps/hpr3461/index.html#comment_3377" rel="noopener noreferrer" target="_blank">
2022-03 The TTS voice</a>
</li>
<li>
<a href="https://lists.hackerpublicradio.com/pipermail/hpr/2021-November/004327.html" rel="noopener noreferrer" target="_blank">
2021-11 Theme - was “Possible cause and solution to subscriber attrition(trying again without encryption)”</a>
</li>
<li>
<a href="https://hackerpublicradio.org/eps/hpr3139/index.html#comment_3007" rel="noopener noreferrer" target="_blank">
2020-08 the voice</a>
</li>
<li>
<a href="https://hackerpublicradio.org/eps/hpr2936/index.html#comment_2799" rel="noopener noreferrer" target="_blank">
2019-11 Ken’s Voice Is Better Than espeak</a>
</li>
<li>
<a href="https://lists.hackerpublicradio.com/pipermail/hpr/2018-September/003541.html" rel="noopener noreferrer" target="_blank">
2018-09 HPR Branding</a>
</li>
<li>
<a href="https://hackerpublicradio.org/eps/hpr2625/index.html#comment_2493" rel="noopener noreferrer" target="_blank">
2018-09 Accordion outro</a>
</li>
<li>
<a href="https://hackerpublicradio.org/eps/hpr2651/index.html#comment_2515" rel="noopener noreferrer" target="_blank">
2018-10 Intro volume</a>
</li>
<li>
<a href="https://hackerpublicradio.org/eps/hpr2651/index.html#comment_2517" rel="noopener noreferrer" target="_blank">
2018-10 TTS over intro music</a>
</li>
<li>
<a href="https://lists.hackerpublicradio.com/pipermail/hpr/2016-February/002881.html" rel="noopener noreferrer" target="_blank">
2016-02 speech synthesis during intro</a>
</li>
<li>
<a href="https://lists.hackerpublicradio.com/pipermail/hpr/2015-December/002795.html" rel="noopener noreferrer" target="_blank">
2015-12 How to check if the intro and outro are added</a>
</li>
<li>
<a href="https://lists.hackerpublicradio.com/pipermail/hpr/2015-February/002515.html" rel="noopener noreferrer" target="_blank">
2015-02 Intro and Outro</a>
</li>
<li>
<a href="https://lists.hackerpublicradio.com/pipermail/hpr/2014-December/002410.html" rel="noopener noreferrer" target="_blank">
2014-12 Outro Theme</a>
</li>
<li>
<a href="https://lists.hackerpublicradio.com/pipermail/hpr/2014-December/002399.html" rel="noopener noreferrer" target="_blank">
2014-12 Bug Fix HPR Intros</a>
</li>
<li>
<a href="https://hackerpublicradio.org/eps/hpr1642/index.html#comment_991" rel="noopener noreferrer" target="_blank">
2014-11 MaryTTS, clipping</a>
</li>
<li>
<a href="https://lists.hackerpublicradio.com/pipermail/hpr/2014-November/002312.html" rel="noopener noreferrer" target="_blank">
2014-11 An HPR Theme Question, And First Time Member</a>
</li>
<li>
2014-02 What’s the word on intro and outro clips?https://lists.hackerpublicradio.com/pipermail/hpr/2014-September/002266.html</li>
<li>
<a href="https://lists.hackerpublicradio.com/pipermail/hpr/2011-September/000455.html" rel="noopener noreferrer" target="_blank">
2011-09 HPR Theme</a>
</li>
<li>
<a href="https://lists.hackerpublicradio.com/pipermail/hpr/2009-June/000084.html" rel="noopener noreferrer" target="_blank">
2009-06 my eps for HPR and intro</a>
</li>
</ul>
<p>
<br>
</p>


<p><a href="https://hackerpublicradio.org/eps/hpr4538/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[167: Threatlocker]]></title>
<description><![CDATA[A manufacturer gets hit with ransomware. A hospital too. Learn how Threatlocker stops these types of attacks. This episode is brought to you by Threatlocker.SponsorsThis episode is sponsored by ThreatLocker®. ThreatLocker® is a Zero Trust Endpoint Protection Platform that strengthens your infrast...]]></description>
<link>https://tsecurity.de/de/3175493/it+sicherheit/it+podcasts/167+threatlocker/</link>
<pubDate>Tue, 23 Dec 2025 09:03:00 +0100</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>A manufacturer gets hit with ransomware. A hospital too. Learn how Threatlocker stops these types of attacks. This episode is brought to you by Threatlocker.</p><h3>Sponsors</h3><p>This episode is sponsored by <a href="https://www.threatlocker.com/"><strong>ThreatLocker®</strong></a>. ThreatLocker® is a Zero Trust Endpoint Protection Platform that strengthens your infrastructure from the ground up. With ThreatLocker® Allowlisting and Ringfencing™, you gain a more secure approach to blocking exploits of known and unknown vulnerabilities. ThreatLocker® provides Zero Trust control at the kernel level that enables you to allow everything you need and block everything else, including ransomware! Learn more at <a href="https://www.threatlocker.com/"><strong>www.threatlocker.com</strong></a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4537: “Elsbeth in IT: Since ’97” (Part 1)]]></title>
<description><![CDATA[This show has been flagged as Explicit by the host.



A two-part conversation about what it’s really like being a woman in tech for almost three decades. Content Warning: The F word probably makes an appearance multiple times.





In this episode, Lee sits down with Elsbeth to talk about her lo...]]></description>
<link>https://tsecurity.de/de/3175015/it+sicherheit/it+podcasts/hpr4537+elsbeth+in+it+since+97+part+1/</link>
<pubDate>Tue, 23 Dec 2025 01:02:35 +0100</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Explicit by the host.</p>

<p>
<em>
A two-part conversation about what it’s really like being a woman in tech for almost three decades. Content Warning: The F word probably makes an appearance multiple times.</em>
</p>
<p>
<br>
</p>
<p>
In this episode, Lee sits down with Elsbeth to talk about her long, winding, sometimes ridiculous, often inspiring journey through the IT industry — starting all the way back in 1997. If you’ve ever worked helpdesk, ever had a customer say “my cup holder broke” (yes, the CD tray)… or ever felt underestimated in a room full of engineers, this one’s for you.</p>
<p>
Because we throw around some tech terms in the conversation, here are a few friendly definitions so everyone can follow along.</p>
<h2>
<br>
</h2>
<h2>
<strong>
Terms We Mentioned (in plain English)</strong>
</h2>
<h3>
<strong>
QA (Quality Assurance)</strong>
</h3>
<p>
Think of QA as the people who try to break things <em>
on purpose</em>
 so regular users don’t break them <em>
accidentally</em>
.</p>
<p>
 They test software, hardware, websites — you name it — to catch bugs before they cause chaos.</p>
<p>
 If it’s glitch-free, a QA person probably saved the day behind the scenes.</p>
<h3>
<strong>
Content Moderation</strong>
</h3>
<p>
This is the work of keeping the internet from turning into the Wild West.</p>
<p>
 Moderators review posts, comments, images, and videos to make sure they follow community rules and don’t harm users.</p>
<p>
 It’s a mix of tech tools and human judgment — and yes, it can get intense.</p>
<h3>
<strong>
Building PCs</strong>
</h3>
<p>
Where many IT careers start! Building PCs is basically grown-up Lego:</p>
<p>
<br>
</p>
<ul>
<li>
picking parts</li>
<li>
assembling them</li>
<li>
hoping you don’t zap anything with static electricity</li>
<li>
praying the cable management gods smile upon you</li>
</ul>
<p>
It’s one of the most empowering skills in tech and often the first time someone realizes,</p>
<p>
 “Oh hey… I can actually <em>
do</em>
 this.”</p>
<h3>
<strong>
Gender Equality &amp; Inequality</strong>
</h3>
<p>
Gender equality means giving everyone the same chance to succeed — no matter who they are.</p>
<p>
 Gender inequality is what happens when that <em>
doesn’t</em>
 happen.</p>
<p>
In tech, inequality often looks like:</p>
<p>
<br>
</p>
<ul>
<li>
being talked over</li>
<li>
being paid less</li>
<li>
being assumed “non-technical”</li>
<li>
having to prove yourself twice as hard</li>
<li>
being the only woman in a room… again</li>
</ul>
<p>
Elsbeth has seen all of this firsthand since 1997 — and she’s got stories.</p>
<h3>
<strong>
End-User</strong>
</h3>
<p>
The <em>
end-user</em>
 is simply the person who actually uses the product.</p>
<p>
 Not the engineer who built it.</p>
<p>
 Not the manager who approved it.</p>
<p>
 Not the QA who tested it.</p>
<p>
The end-user is the human at the end of the chain who clicks the button, pushes the key, taps the app… and finds entirely new ways to break things no one expected.</p>
<p>
Understanding them is the secret superpower of tech.</p>
<h3>
<strong>
Neurodivergence</strong>
</h3>
<p>
Neurodivergence means brains come in many beautiful varieties — like ADHD, autism, dyslexia, and more.</p>
<p>
 Neurodivergent people often bring incredible strengths to IT, including creativity, pattern spotting, hyperfocus, and out-of-the-box problem solving.</p>
<p>
They can also face misunderstandings in workplaces that weren’t designed with different brains in mind — something Elsbeth talks about openly and honestly in this episode.</p>


<p><a href="https://hackerpublicradio.org/eps/hpr4537/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4536: Welcome to the Linux Community]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.


Below are some links to help you find related software and resources:





Beginner-Friendly Distros



https://linuxmint.com



https://ubuntu.com



https://fedoraproject.org



https://pop.system76.com






Help & Community



Linux Questions...]]></description>
<link>https://tsecurity.de/de/3172994/it+sicherheit/it+podcasts/hpr4536+welcome+to+the+linux+community/</link>
<pubDate>Mon, 22 Dec 2025 01:01:52 +0100</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>

<p>
Below are some links to help you find related software and resources:</p>
<h3>
<br>
</h3>
<h3>
<strong>
Beginner-Friendly Distros</strong>
</h3>
<p>
<a href="https://linuxmint.com/" rel="noopener noreferrer" target="_blank">
https://linuxmint.com</a>
</p>
<p>
<a href="https://ubuntu.com/" rel="noopener noreferrer" target="_blank">
https://ubuntu.com</a>
</p>
<p>
<a href="https://fedoraproject.org/" rel="noopener noreferrer" target="_blank">
https://fedoraproject.org</a>
</p>
<p>
<a href="https://pop.system76.com/" rel="noopener noreferrer" target="_blank">
https://pop.system76.com</a>
</p>
<h3>
<br>
</h3>
<h3>
<strong>
Help &amp; Community</strong>
</h3>
<p>
<span>
Linux Questions —</span>
<a href="https://www.linuxquestions.org/" rel="noopener noreferrer" target="_blank">
 </a>
<a href="https://www.linuxquestions.org/" rel="noopener noreferrer" target="_blank">
https://www.linuxquestions.org</a>
</p>
<p>
<span>
Reddit r/linux4noobs —</span>
<a href="https://www.reddit.com/r/linux4noobs" rel="noopener noreferrer" target="_blank">
 </a>
<a href="https://www.reddit.com/r/linux4noobs" rel="noopener noreferrer" target="_blank">
https://www.reddit.com/r/linux4noobs</a>
</p>
<p>
<span>
Stack Exchange Unix/Linux —</span>
<a href="https://unix.stackexchange.com/" rel="noopener noreferrer" target="_blank">
 </a>
<a href="https://unix.stackexchange.com/" rel="noopener noreferrer" target="_blank">
https://unix.stackexchange.com</a>
</p>
<p>
<span>
Ask Fedora — https://ask.fedoraproject.org</span>
</p>
<p>
<span>
Ubuntu Forums —</span>
<a href="https://ubuntuforums.org/" rel="noopener noreferrer" target="_blank">
 </a>
<a href="https://ubuntuforums.org/" rel="noopener noreferrer" target="_blank">
https://ubuntuforums.org</a>
</p>
<p>
<br>
</p>
<h3>
<br>
</h3>
<h3>
<strong>
Local &amp; Live Community</strong>
</h3>
<p>
<a href="https://www.linux.org/forums/" rel="noopener noreferrer" target="_blank">
https://www.linux.org/forums/</a>
</p>
<p>
<a href="https://freegeek.org/" rel="noopener noreferrer" target="_blank">
https://freegeek.org/</a>
</p>
<p>
<a href="https://mastodon.social/" rel="noopener noreferrer" target="_blank">
 </a>
<a href="https://mastodon.social/" rel="noopener noreferrer" target="_blank">
https://mastodon.social</a>
</p>
<p>
<a href="https://fosstodon.org/" rel="noopener noreferrer" target="_blank">
https://fosstodon.org</a>
</p>
<h3>
<br>
</h3>
<h3>
<strong>
Software Alternatives</strong>
</h3>
<p>
<span>
GIMP (image editing) —</span>
<a href="https://www.gimp.org/" rel="noopener noreferrer" target="_blank">
 </a>
<a href="https://www.gimp.org/" rel="noopener noreferrer" target="_blank">
https://www.gimp.org</a>
</p>
<p>
<span>
Krita (digital painting) —</span>
<a href="https://krita.org/" rel="noopener noreferrer" target="_blank">
 </a>
<a href="https://krita.org/" rel="noopener noreferrer" target="_blank">
https://krita.org</a>
</p>
<p>
<span>
Inkscape (vector graphics) —</span>
<a href="https://inkscape.org/" rel="noopener noreferrer" target="_blank">
 </a>
<a href="https://inkscape.org/" rel="noopener noreferrer" target="_blank">
https://inkscape.org</a>
</p>
<p>
<span>
Blender (3D modeling &amp; animation) — https://blender.org</span>
</p>
<p>
<span>
LibreOffice (office suite) — https://libreoffice.org</span>
</p>
<p>
<span>
Ardour (audio workstation) —</span>
<a href="https://ardour.org/" rel="noopener noreferrer" target="_blank">
 </a>
<a href="https://ardour.org/" rel="noopener noreferrer" target="_blank">
https://ardour.org</a>
</p>
<p>
<span>
LMMS (music production) —</span>
<a href="https://lmms.io/" rel="noopener noreferrer" target="_blank">
 </a>
<a href="https://lmms.io/" rel="noopener noreferrer" target="_blank">
https://lmms.io</a>
</p>
<p>
<span>
Kdenlive (video editing) —</span>
<a href="https://kdenlive.org/" rel="noopener noreferrer" target="_blank">
 </a>
<a href="https://kdenlive.org/" rel="noopener noreferrer" target="_blank">
https://kdenlive.org</a>
</p>
<h3>
<br>
</h3>
<h3>
<strong>
Linux Gaming</strong>
</h3>
<p>
<span>
Steam for Linux —</span>
<a href="https://store.steampowered.com/" rel="noopener noreferrer" target="_blank">
 </a>
<a href="https://store.steampowered.com/" rel="noopener noreferrer" target="_blank">
https://store.steampowered.com</a>
</p>
<p>
<span>
ProtonDB compatibility reports —</span>
<a href="https://www.protondb.com/" rel="noopener noreferrer" target="_blank">
 </a>
<a href="https://www.protondb.com/" rel="noopener noreferrer" target="_blank">
https://www.protondb.com</a>
</p>
<p>
<span>
Lutris game launcher —</span>
<a href="https://lutris.net/" rel="noopener noreferrer" target="_blank">
 </a>
<a href="https://lutris.net/" rel="noopener noreferrer" target="_blank">
https://lutris.net</a>
</p>
<h3>
<br>
</h3>
<p>
<br>
</p>


<p><a href="https://hackerpublicradio.org/eps/hpr4536/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4535: Living the Tux Life Episode 4 - Various software I have been using]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.


Show Notes




System Monitoring & Metrics

Prometheus

Open-source monitoring and alerting toolkit for collecting and storing metrics.



Documentation
: 
https://prometheus.io/docs/prometheus/latest/installation/



Prometheus Node Exporter

Ha...]]></description>
<link>https://tsecurity.de/de/3168210/it+sicherheit/it+podcasts/hpr4535+living+the+tux+life+episode+4+-+various+software+i+have+been+using/</link>
<pubDate>Fri, 19 Dec 2025 01:02:02 +0100</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>

<h1>
Show Notes</h1>
<h2>
<br>
</h2>
<h2>
System Monitoring &amp; Metrics</h2>
<h3>
Prometheus</h3>
<p>
Open-source monitoring and alerting toolkit for collecting and storing metrics.</p>
<ul>
<li>
<strong>
Documentation</strong>
: <a href="https://prometheus.io/docs/prometheus/latest/installation/" rel="noopener noreferrer" target="_blank">
https://prometheus.io/docs/prometheus/latest/installation/</a>
</li>
</ul>
<h3>
Prometheus Node Exporter</h3>
<p>
Hardware and OS metrics exporter for Prometheus.</p>
<ul>
<li>
<strong>
Guide</strong>
: <a href="https://prometheus.io/docs/guides/node-exporter/" rel="noopener noreferrer" target="_blank">
https://prometheus.io/docs/guides/node-exporter/</a>
</li>
</ul>
<h3>
Grafana</h3>
<p>
Open-source analytics and visualization platform for monitoring metrics.</p>
<ul>
<li>
<strong>
Docker Installation</strong>
: <a href="https://grafana.com/docs/grafana/latest/setup-grafana/installation/docker/" rel="noopener noreferrer" target="_blank">
https://grafana.com/docs/grafana/latest/setup-grafana/installation/docker/</a>
</li>
</ul>
<p>
<br>
</p>
<h4>
Featured Grafana Dashboards</h4>
<ul>
<li>
<strong>
Power Information Dashboard</strong>
: <a href="https://grafana.com/grafana/dashboards/12542-power-information/" rel="noopener noreferrer" target="_blank">
https://grafana.com/grafana/dashboards/12542-power-information/</a>
</li>
<li>
<strong>
Node Exporter Full</strong>
: <a href="https://grafana.com/grafana/dashboards/1860-node-exporter-full/" rel="noopener noreferrer" target="_blank">
https://grafana.com/grafana/dashboards/1860-node-exporter-full/</a>
</li>
</ul>
<h2>
<br>
</h2>
<h2>
Power Management &amp; Battery Tools</h2>
<h3>
TLP</h3>
<p>
Advanced power management tool for Linux that optimizes battery life.</p>
<ul>
<li>
<strong>
Installation Guide</strong>
: <a href="https://linrunner.de/tlp/installation/index.html" rel="noopener noreferrer" target="_blank">
https://linrunner.de/tlp/installation/index.html</a>
</li>
</ul>
<h3>
Battery Uptime Timer Script</h3>
<p>
Custom script for monitoring battery usage and uptime.</p>
<ul>
<li>
<strong>
GitHub Repository</strong>
: <a href="https://github.com/mralc/Battery-uptime-timer" rel="noopener noreferrer" target="_blank">
https://github.com/mralc/Battery-uptime-timer</a>
</li>
</ul>
<h3>
Setting Battery Charge Threshold</h3>
<p>
Limit battery charge to extend battery lifespan:</p>
<pre class="ql-syntax" spellcheck="false">
echo 90 | sudo tee /sys/class/power_supply/BAT0/charge_stop_threshold 
</pre>
<p>
<em>
Note: Adjust the value (90%) and BAT0 according to your system.</em>
</p>
<h3>
Caffeine</h3>
<p>
Prevents your system from going to sleep or activating the screensaver.</p>
<ul>
<li>
<strong>
Project Page</strong>
: <a href="https://launchpad.net/caffeine" rel="noopener noreferrer" target="_blank">
https://launchpad.net/caffeine</a>
</li>
</ul>
<h2>
<br>
</h2>
<h2>
Backup &amp; File Sharing</h2>
<h3>
LocalSend</h3>
<p>
Open-source cross-platform alternative to AirDrop for sharing files locally.</p>
<ul>
<li>
<strong>
Website</strong>
: <a href="https://localsend.org/" rel="noopener noreferrer" target="_blank">
https://localsend.org/</a>
</li>
</ul>
<h3>
Déjà Dup</h3>
<p>
Simple backup tool for GNOME desktop environment.</p>
<ul>
<li>
<strong>
GNOME Apps</strong>
: <a href="https://apps.gnome.org/en-GB/DejaDup/" rel="noopener noreferrer" target="_blank">
https://apps.gnome.org/en-GB/DejaDup/</a>
</li>
</ul>
<p>
<br>
</p>
<h3>
FOX Clone</h3>
<p>
System backup and cloning tool for Linux.</p>
<ul>
<li>
<strong>
SourceForge</strong>
: <a href="https://sourceforge.net/projects/foxclone/" rel="noopener noreferrer" target="_blank">
https://sourceforge.net/projects/foxclone/</a>
</li>
</ul>
<h2>
<br>
</h2>
<h2>
Terminal Utilities</h2>
<h3>
Tmux</h3>
<p>
Terminal multiplexer that allows multiple terminal sessions within a single window.</p>
<ul>
<li>
<strong>
GitHub Wiki</strong>
: <a href="https://github.com/tmux/tmux/wiki" rel="noopener noreferrer" target="_blank">
https://github.com/tmux/tmux/wiki</a>
</li>
</ul>
<p>
<br>
</p>


<p><a href="https://hackerpublicradio.org/eps/hpr4535/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4534: Reviving My Kawai K4 Synthesizer]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.

    Links
    
      Kawai K4: https://en.wikipedia.org/wiki/Kawai_K4
      Kawai K4 Battery Replacement (Japanese): https://www.youtube.com/watch?v=ux3y2ClgP1I
      Neal Beard and his Machines - Kawai Battery Replacement: https://nealbeardahm.bl...]]></description>
<link>https://tsecurity.de/de/3165839/it+sicherheit/it+podcasts/hpr4534+reviving+my+kawai+k4+synthesizer/</link>
<pubDate>Thu, 18 Dec 2025 01:02:06 +0100</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>

    <h3>Links</h3>
    <ul>
      <li>Kawai K4: <a href="https://en.wikipedia.org/wiki/Kawai_K4">https://en.wikipedia.org/wiki/Kawai_K4</a></li>
      <li>Kawai K4 Battery Replacement (Japanese): <a href="https://www.youtube.com/watch?v=ux3y2ClgP1I">https://www.youtube.com/watch?v=ux3y2ClgP1I</a></li>
      <li>Neal Beard and his Machines - Kawai Battery Replacement: <a href="https://nealbeardahm.blogspot.com/2012/10/kawai-battery-replacement.html">https://nealbeardahm.blogspot.com/2012/10/kawai-battery-replacement.html</a></li>
      <li>Kawai K4r: Rack-mount module version of the K4</li>
      <li>Kawai Downloads Page: <a href="https://kawaius.com/downloads/">https://kawaius.com/downloads/</a></li>
      <li>Standard MIDI Files (SMF): <a href="https://midi.org/standard-midi-files">https://midi.org/standard-midi-files</a></li>
      <li>MIDI System Exclusive (SysEx) Messages Explained: <a href="https://blog.landr.com/midi-sysex/">https://blog.landr.com/midi-sysex/</a></li>
      <li>amidi(1): <a href="https://linux.die.net/man/1/amidi">https://linux.die.net/man/1/amidi</a></li>
      <li>Syntaur Keyboard Parts &amp; Accessories: <a href="https://syntaur.com/">https://syntaur.com/</a></li>
    </ul><p><a href="https://hackerpublicradio.org/eps/hpr4534/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4533: Nuclear Reactor Technology - Ep 2 Nuclear Fuel]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.


01 Introduction




This episode is the second in an 8 part series on nuclear reactor technology. 




This episode will cover types of nuclear fuel, recycling of nuclear fuel, uranium and thorium resources, and medical isotopes.




03 Types of ...]]></description>
<link>https://tsecurity.de/de/3163403/it+sicherheit/it+podcasts/hpr4533+nuclear+reactor+technology+-+ep+2+nuclear+fuel/</link>
<pubDate>Wed, 17 Dec 2025 01:02:24 +0100</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>

<p>
01 Introduction</p>
<p>
<br>
</p>
<p>
This episode is the second in an 8 part series on nuclear reactor technology. </p>
<p>
<br>
</p>
<p>
This episode will cover types of nuclear fuel, recycling of nuclear fuel, uranium and thorium resources, and medical isotopes.</p>
<p>
<br>
</p>
<p>
03 Types of Nuclear Fuel</p>
<p>
<br>
</p>
<p>
03 Natural Uranium</p>
<p>
04 Enriched Uranium</p>
<p>
05 Mixed Oxide Fuel, or MOX</p>
<p>
06 Thorium Fuel</p>
<p>
08 Plutonium in Uranium Cycle Reactors</p>
<p>
09 Depleted Uranium</p>
<p>
10 Oxide or Ceramic versus Metallic Fuel</p>
<p>
12 Recycling Spent Fuel</p>
<p>
13 Once Through Fuel Cycles</p>
<p>
14 Reprocessing Spent Uranium Fuel into Mixed Oxide or MOX Fuel</p>
<p>
16 Reprocessing and Thorium Fuel</p>
<p>
17 Direct Reuse of Spent Light Water Fuel in Heavy Water Moderated Reactors</p>
<p>
18 DUPIC - Direct Use of Used PWR Fuel in CANDU</p>
<p>
20 RepU - Reprocessed Uranium Fuel in CANDU</p>
<p>
21 Uranium and Thorium Resources</p>
<p>
21 Uranium Mining</p>
<p>
22 Uranium in Sea Water</p>
<p>
23 Thorium</p>
<p>
24 Medical Isotopes</p>
<p>
25 Examples of Common Medical Isotopes</p>
<p>
26 How Medical Isotopes are Made</p>
<p>
27 Producing Isotopes in Research Reactors</p>
<p>
29 Producing Isotopes in Power Reactors</p>
<p>
31 Summary</p>
<p>
The basis of nuclear fission is nuclear fuel.</p>
<p>
There are three main types of nuclear fuel in commercial use today.</p>
<p>
These are natural uranium, enriched uranium, and mixed oxide or MOX uranium-plutonium mixtures.</p>
<p>
It is possible to use thorium in a sort of thorium-plutonium or thorium-uranium MOX fuel, but this not currently economically viable at this time when uranium is so cheap and abundant. </p>
<p>
Spent fuel can be recycled and used in a reactor again.</p>
<p>
Medical isotopes are an important byproduct of the nuclear industry, and a large share of the world's population has benefited from this at one time or another.</p>
<p>
<br>
</p>
<p>
32 Conclusion</p>
<p>
In the next episode I will describe the basic features and characteristics of reactors together with descriptions of the most widely used commercial reactor types.</p>
<p>
<br>
</p>
<p>
This concludes the second episode of an 8 part series on nuclear reactor technology. </p>
<p>
<br>
</p>


<p><a href="https://hackerpublicradio.org/eps/hpr4533/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4532: Cheap Yellow Display Project Part 5: Graphical User Interface]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.



Hello, again. This is Trey. 



 



Welcome to part 5 in my Cheap Yellow Display (CYD) Project series. If you are still listening to me ramble about this project, thank you. If you wish to catch up on earlier episodes, you can find them on my 
...]]></description>
<link>https://tsecurity.de/de/3161085/it+sicherheit/it+podcasts/hpr4532+cheap+yellow+display+project+part+5+graphical+user+interface/</link>
<pubDate>Tue, 16 Dec 2025 01:02:05 +0100</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>

<p>
<span>
Hello, again. This is Trey. </span>
</p>
<p>
<span>
 </span>
</p>
<p>
<span>
Welcome to part 5 in my Cheap Yellow Display (CYD) Project series. If you are still listening to me ramble about this project, thank you. If you wish to catch up on earlier episodes, you can find them on my </span>
<a href="https://www.hackerpublicradio.org/correspondents/0394.html" rel="noopener noreferrer" target="_blank">
HPR profile page</a>
<span>
</span>
<a href="https://www.hackerpublicradio.org/correspondents/0394.html" rel="noopener noreferrer" target="_blank">
https://www.hackerpublicradio.org/correspondents/0394.html</a>
<span>
  </span>
</p>
<p>
<span>
 </span>
</p>
<p>
<span>
To 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. 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). </span>
</p>
<p>
<span>
 </span>
</p>
<p>
<span>
To 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. 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. Squareline does have a free trial and a free single user / single computer license, which I am using for this project. It will run on Windows, Linux, and Mac.</span>
<span>
 </span>
</p>
<p>
<span>
 </span>
</p>
<p>
<span>
After watching several videos about using the CYD with Squareline, I started to outline the functionality I needed. </span>
<span>
 </span>
</p>
<p>
<span>
 </span>
</p>
<p>
<span>
Squareline 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>
<span>
 </span>
</p>
<p>
<span>
 </span>
</p>
<p>
<span>
The initial page needs to have the macro buttons, with labels for the message they will send when pressed. There also needs to be navigation buttons to move from one page to others. 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. </span>
</p>
<p>
<span>
 </span>
</p>
<p>
<span>
I made a few GUI sketches on post-it-notes, then I installed Squareline Studio on my Ubuntu laptop to start designing. There is a bit of a learning curve. Even with guide videos, I found the user experience to be... challenging. </span>
<span>
 </span>
</p>
<p>
<span>
 </span>
</p>
<p>
<span>
Their own GUI leaves much to be desired. It was not designed to run on the laptop's screen size/resolution. 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. Button size adjustments, alignments, and label text did not work quite as expected. Getting things sized and aligned properly took quite a bit of fiddling. 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.  </span>
<span>
 </span>
</p>
<p>
<span>
 </span>
</p>
<p>
<span>
I am including some screenshots from Squareline for the interface I designed.  </span>
<span>
 </span>
</p>
<p>
<span>
 </span>
</p>
<p>
<a href="https://hackerpublicradio.org/eps/hpr4532/hpr4532_image_1.png">
<img src="https://hackerpublicradio.org/eps/hpr4532/hpr4532_image_1_tn.png">
</a>
</p>
<p>
<br>
</p>
<p>
<a href="https://hackerpublicradio.org/eps/hpr4532/hpr4532_image_2.png">
<img src="https://hackerpublicradio.org/eps/hpr4532/hpr4532_image_2_tn.png">
</a>
</p>
<p>
<span>
 </span>
</p>
<p>
<span>
One great feature is that you can define actions and conditions for objects in your project. 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. Actions were also valuable for the Speed (WPM) slider on the Config screen. When this slider is moved left and right, the GUI will change the actual number for WPM to the right of the slider. </span>
<span>
 </span>
</p>
<p>
<span>
 </span>
</p>
<p>
<span>
Next, there is a simulator function which can be used to test how well the GUI works. It took some trial and error, but I was able to build and successfully test, navigational actions and the WPM slider. </span>
</p>
<p>
<span>
 </span>
</p>
<p>
<span>
As 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). 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. 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. The original code (As found on </span>
<a href="https://github.com/jmharvey1/ArduinoCPO" rel="noopener noreferrer" target="_blank">
https://github.com/jmharvey1/ArduinoCPO</a>
<span>
 )</span>
<span>
 specified 12 words per minute (WPM) as the default speed, with buttons to increase or decrease this. However, I am practicing at 20 WPM. Every time I turn on the practice set, I need to turn up the speed and guess when I am close to 20. I went ahead and opened the PracticeOscilator project in Arduino IDE and updated the wpm variable to a value of 20. No, you will not see this change reflected in my own GitHub repo because:</span>
<span>
 </span>
</p>
<p>
<span>
 </span>
</p>
<p>
<span>
A) I wanted to test it locally first </span>
</p>
<p>
<span>
B) 20 WPM may be a little fast for a default </span>
</p>
<p>
<span>
C) 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. Bad Trey. </span>
</p>
<p>
<span>
D) I was distracted </span>
</p>
<p>
<span>
 </span>
</p>
<p>
<span>
ANYWAY, 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 20.04 to Ubuntu 22.04. 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. If anyone has any recommendations, I am open to suggestions.</span>
<span>
 </span>
</p>
<p>
<span>
 </span>
</p>
<p>
<span>
So, I dug out my son's old Windows 10 PC and started again. 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). Finally I was able to update the Arduino Nano with its new code, and it works perfectly.</span>
<span>
 </span>
</p>
<p>
<span>
 </span>
</p>
<p>
<span>
But this revealed the same problem for the CYD. I also could not get it to connect over USB to my Ubuntu system. Time to migrate the entire project to Windows.</span>
<span>
 </span>
</p>
<p>
<span>
 </span>
</p>
<p>
<span>
My next step was to install Squareline Studio on Windows. 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. Did I mention that I would love to find an open source, free software product to use instead? If you know of one, please ping me or post a comment.</span>
<span>
 </span>
</p>
<p>
<span>
 </span>
</p>
<p>
<span>
I 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. It would not load, and would not load. </span>
<span>
 </span>
</p>
<p>
<span>
 </span>
</p>
<p>
<span>
In the end, I started all over again.   </span>
</p>
<p>
<span>
 </span>
</p>
<p>
<span>
After much blood sweat and tears, my GUI code was working again, and this time in Windows. I was able to run it in the simulation mode and move from page to page successfully and also use the WPM slider.  I exported the UI from Squareline, and I loaded the code it generated into a new project within Arduino IE.</span>
<span>
 </span>
</p>
<p>
<span>
 </span>
</p>
<p>
<span>
Now was the moment of truth. I followed instructions found on the Pang YouTube channel video </span>
<a href="https://www.youtube.com/watch?v=aGM6gu9OpbA" rel="noopener noreferrer" target="_blank">
[ESP32 + LVGL] Configuration input device rotary encoder</a>
<span>
 (</span>
<a href="https://www.youtube.com/watch?v=aGM6gu9OpbA" rel="noopener noreferrer" target="_blank">
https://www.youtube.com/watch?v=aGM6gu9OpbA</a>
<span>
 ).  I connected the CYD and uploaded the code. SUCCESS!! </span>
</p>
<p>
<span>
 </span>
</p>
<p>
<a href="https://hackerpublicradio.org/eps/hpr4532/hpr4532_image_3.jpeg">
<img src="https://hackerpublicradio.org/eps/hpr4532/hpr4532_image_3_tn.jpeg">
</a>
</p>
<p>
<span>
 </span>
</p>
<p>
<span>
You can see my "Send" screen loaded perfectly! Now to try other screens.  </span>
</p>
<p>
<span>
 </span>
</p>
<p>
<span>
Wait. Drat. It does not seem like my navigation buttons work. Actually, it does not appear that the touch screen is responding at all.   </span>
</p>
<p>
<span>
 </span>
</p>
<p>
<span>
I spent the next several days trying to figure out what went wrong. I checked and double checked interrupt and configuration settings (Such as those described in another of Pang's videos, </span>
<a href="https://www.youtube.com/watch?v=qmR-mjJVumU" rel="noopener noreferrer" target="_blank">
[CYD + LVGL] Configuration Cheap Yellow Display | Easy Guide</a>
<span>
 (</span>
<a href="https://www.youtube.com/watch?v=qmR-mjJVumU" rel="noopener noreferrer" target="_blank">
https://www.youtube.com/watch?v=qmR-mjJVumU</a>
<span>
 ). Nothing worked. </span>
</p>
<p>
<span>
 </span>
</p>
<p>
<span>
I came to realize that I bit off more than I could chew, and I should NOT have started with such an ambitious project. 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. </span>
</p>
<p>
<span>
 </span>
</p>
<p>
<span>
Lessons learned, and a good stopping point for this episode. I am open to your feedback on what you would recommend, what I should do differently, etc. You can post simple feedback as a comment or send me an email using the address in my HPR profile. 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. </span>
</p>
<p>
<span>
 </span>
</p>
<p>
<span>
Time for an espresso. Maybe I will make it a double. Or even a triple! </span>
</p>


<p><a href="https://hackerpublicradio.org/eps/hpr4532/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4531: HPR Beer Garden 6 - Imperial Stouts]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.


Kevie and Dave continue their look at winter beers with the a look at Imperial Stouts. In this episode Kevie tries Knight of Ren by Yorkshire based microbrewery 
Tartarus
and Dave samples 
Toffee Nut Latte Imperial Stout
by Edinburgh based 
Vault...]]></description>
<link>https://tsecurity.de/de/3158734/it+sicherheit/it+podcasts/hpr4531+hpr+beer+garden+6+-+imperial+stouts/</link>
<pubDate>Mon, 15 Dec 2025 01:02:07 +0100</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>

<p>
Kevie and Dave continue their look at winter beers with the a look at Imperial Stouts. In this episode Kevie tries Knight of Ren by Yorkshire based microbrewery <a href="https://www.tartarusbeers.co.uk/" rel="noopener noreferrer" target="_blank">
Tartarus</a>
and Dave samples <a href="https://vaultcity.co.uk/products/toffee-nut-latte-imperial-stout" rel="noopener noreferrer" target="_blank">
Toffee Nut Latte Imperial Stout</a>
by Edinburgh based <a href="https://vaultcity.co.uk/" rel="noopener noreferrer" target="_blank">
Vault City</a>
.</p>
<p>
<br>
</p>
<p>
<a href="https://hackerpublicradio.org/eps/hpr4531/hpr4531_image_1.png">
<img src="https://hackerpublicradio.org/eps/hpr4531/hpr4531_image_1_tn.png">
</a>
</p>
<p>
<br>
</p>
<p>
Connect with the guys on Untappd:</p>
<p>
<br>
</p>
<ul>
<li>
<a href="https://untappd.com/user/thelovebug" rel="noopener noreferrer" target="_blank">
Dave</a>
</li>
<li>
<a href="https://untappd.com/user/kevie49" rel="noopener noreferrer" target="_blank">
Kevie</a>
</li>
</ul>
<p>
<br>
</p>


<p><a href="https://hackerpublicradio.org/eps/hpr4531/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4530: Playing Civilization V, Part 6]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.

    
      In our next look at the game mechanics for Civilization V we
      examine the topic of War and Combat. This is a complex topic, and
      we are just hitting the high points here, but we also provide a
      link to the War Academy for...]]></description>
<link>https://tsecurity.de/de/3154130/it+sicherheit/it+podcasts/hpr4530+playing+civilization+v+part+6/</link>
<pubDate>Fri, 12 Dec 2025 01:02:25 +0100</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>

    <p>
      In our next look at the game mechanics for Civilization V we
      examine the topic of War and Combat. This is a complex topic, and
      we are just hitting the high points here, but we also provide a
      link to the War Academy for furhter study.</p>
    <h3>
      Links:</h3>
    <ul>
      <li>
        <a moz-do-not-send="true" href="https://www.palain.com/gaming/civilization-v/playing-civilization-v-part-3/">https://www.palain.com/gaming/civilization-v/playing-civilization-v-part-3/</a></li>
      <li><a moz-do-not-send="true" href="https://civilization.fandom.com/wiki/Promotions_(Civ5)">
          https://civilization.fandom.com/wiki/Promotions_(Civ5)</a></li>
      <li><a moz-do-not-send="true" href="https://forums.civfanatics.com/forums/civ5-war-academy.451/">
          https://forums.civfanatics.com/forums/civ5-war-academy.451/</a></li>
      <li><a moz-do-not-send="true" href="https://www.palain.com/gaming/civilization-v/playing-civilization-v-part-6/">https://www.palain.com/gaming/civilization-v/playing-civilization-v-part-6/</a></li>
    </ul><p><a href="https://hackerpublicradio.org/eps/hpr4530/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4529: yoga370 review]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.


1 intro

═══════




 non-forth show!







2 inspiration

═════════════




 episode 4402, looking for a single device to be able to do forth work,

 read documents, some web browsing discussed the ups and downs of using

 a pinetab2 and how i ...]]></description>
<link>https://tsecurity.de/de/3151767/it+sicherheit/it+podcasts/hpr4529+yoga370+review/</link>
<pubDate>Thu, 11 Dec 2025 01:02:18 +0100</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>

<p>
1 intro</p>
<p>
═══════</p>
<p>
<br>
</p>
<p>
 non-forth show!</p>
<p>
<br>
</p>
<p>
<br>
</p>
<p>
2 inspiration</p>
<p>
═════════════</p>
<p>
<br>
</p>
<p>
 episode 4402, looking for a single device to be able to do forth work,</p>
<p>
 read documents, some web browsing discussed the ups and downs of using</p>
<p>
 a pinetab2 and how i used fluxbox and some scripts to bend the device</p>
<p>
 to my needs device was ok but underpowered</p>
<p>
<br>
</p>
<p>
 interview with david revou, episode 4491 mentioned blog section of</p>
<p>
 hardware, led me to lenovo yoga 370</p>
<p>
<br>
</p>
<p>
<br>
</p>
<p>
3 yoga 370</p>
<p>
══════════</p>
<p>
<br>
</p>
<p>
 i purchased one used on ebay, $250 USD 2 in 1 device, can be used as a</p>
<p>
 laptop or tablet 13" ips touch screen display x86_64 Intel(R) Core(TM)</p>
<p>
 i7-7600U CPU @ 2.80GHz GenuineIntel GNU/Linux 500G nvme 16G ram</p>
<p>
 suprisingly fixable, replacable battery, memory, nvme</p>
<p>
 [picture][picture]</p>
<p>
<br>
</p>
<p>
<br>
</p>
<p>
4 installing slackware</p>
<p>
══════════════════════</p>
<p>
<br>
</p>
<p>
 installing slackware: stop secure boot in the bios, reformat the</p>
<p>
 hardrive using gdisk mkfs, efi boot using elilo (not grub2)</p>
<p>
 &lt;https://superuser.com/questions/764799/how-to-create-an-efi-system-partition&gt;</p>
<p>
 had to reboot between each disk drive change. when complete the</p>
<p>
 slackware installer did all the rest of the work, installing elilo and</p>
<p>
 the boot entry after the install i did my normal slackware post</p>
<p>
 install stuff, and everything works (maybe not the fingerprint reader</p>
<p>
 but i do't use that anyway )</p>
<p>
<br>
</p>
<p>
<br>
</p>
<p>
5 scripting</p>
<p>
═══════════</p>
<p>
<br>
</p>
<p>
 modified the scripts from the pinetab2 to activate laptop (landscape)</p>
<p>
 and tablet (portrait) mode. using xrandr to rotate the screen, xinput</p>
<p>
 the touch screen, the keyboard is disabled in tablet mode created</p>
<p>
 .desktop entries and added some graphics to get buttons that i pin to</p>
<p>
 the kde task manager to activate</p>
<p>
<br>
</p>
<p>
<br>
</p>
<p>
6 setting up okular</p>
<p>
═══════════════════</p>
<p>
<br>
</p>
<p>
 a great document reader, okular. to read documents in tablet mode i</p>
<p>
 use presentation mode in the settings menu under configure okular/</p>
<p>
 presentation mode you'll find enable touch navigation and then tapping</p>
<p>
 on the left/right side of the screen will move the page forward and</p>
<p>
 backward. great for reading especially pdf's</p>
<p>
<br>
</p>
<p>
<br>
</p>
<p>
7 tablet mode software</p>
<p>
══════════════════════</p>
<p>
<br>
</p>
<p>
 xournal++, &lt;https://github.com/xournalpp/xournalpp&gt;, hand note-taking</p>
<p>
 software, exploring using this for things like d-charts for forth</p>
<p>
 developement</p>
<p>
 &lt;https://archive.org/details/flowcharting-with-d-charts-donald-d-meyero-nasa&gt;</p>
<p>
<br>
</p>
<p>
<br>
</p>
<p>
8 outro</p>
<p>
═══════</p>
<p>
<br>
</p>
<p>
 Lets all work to stamp out and abolish redundancy</p>
<p>
<br>
</p>


<p><a href="https://hackerpublicradio.org/eps/hpr4529/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4528: Photography software]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.


Today I will list and talk briefly about software related to photography that I have installed on my computer. 




DigiKam


https://www.digikam.org/


RawTherapee


https://rawtherapee.com/


GIMP


https://www.gimp.org/


Rapid Photo Downloade...]]></description>
<link>https://tsecurity.de/de/3149221/it+sicherheit/it+podcasts/hpr4528+photography+software/</link>
<pubDate>Wed, 10 Dec 2025 01:08:14 +0100</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>

<p>
Today I will list and talk briefly about software related to photography that I have installed on my computer. </p>
<p>
<br>
</p>
<p>
DigiKam</p>
<p>
<a href="https://www.digikam.org/" rel="noopener noreferrer" target="_blank">
https://www.digikam.org/</a>
</p>
<p>
RawTherapee</p>
<p>
<a href="https://rawtherapee.com/" rel="noopener noreferrer" target="_blank">
https://rawtherapee.com/</a>
</p>
<p>
GIMP</p>
<p>
<a href="https://www.gimp.org/" rel="noopener noreferrer" target="_blank">
https://www.gimp.org/</a>
</p>
<p>
Rapid Photo Downloader</p>
<p>
<a href="https://damonlynch.net/rapid/index.html" rel="noopener noreferrer" target="_blank">
https://damonlynch.net/rapid/index.html</a>
</p>
<p>
PIX</p>
<p>
<a href="https://github.com/linuxmint/pix" rel="noopener noreferrer" target="_blank">
https://github.com/linuxmint/pix</a>
</p>
<p>
VueScan</p>
<p>
<a href="https://www.hamrick.com/" rel="noopener noreferrer" target="_blank">
https://www.hamrick.com/</a>
</p>
<p>
Entangle</p>
<p>
<a href="https://entangle-photo.org/" rel="noopener noreferrer" target="_blank">
https://entangle-photo.org/</a>
</p>
<p>
DisplayCAL</p>
<p>
<a href="https://displaycal.net/" rel="noopener noreferrer" target="_blank">
https://displaycal.net/</a>
</p>
<p>
DarkTable</p>
<p>
<a href="https://www.darktable.org/" rel="noopener noreferrer" target="_blank">
https://www.darktable.org/</a>
</p>


<p><a href="https://hackerpublicradio.org/eps/hpr4528/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4527: Overly Complicated Media Ripping setup]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.
Hello, this is your host Archer72 for Hacker Public Radio. In this
episode, I share my overly complicated media ripping setup, and hope it
helps someone.
First of all, I have revised my media ripping setup since HPR3294 - Update to
MakeMKV to back ...]]></description>
<link>https://tsecurity.de/de/3146716/it+sicherheit/it+podcasts/hpr4527+overly+complicated+media+ripping+setup/</link>
<pubDate>Tue, 09 Dec 2025 01:02:13 +0100</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>
<p>Hello, this is your host Archer72 for Hacker Public Radio. In this
episode, I share my overly complicated media ripping setup, and hope it
helps someone.</p>
<p>First of all, I have revised my media ripping setup since <a href="https://hackerpublicradio.org/eps/hpr3294/index.html" title="HPR3294 - Update to MakeMKV to back up media">HPR3294 - Update to
MakeMKV to back up media</a></p>
<p>I’ve changed my mind about only using a terminal for ripping media,
and it was time to make a change. Now, I start both MakeMKV and
Handbrake from a remote GUI, either on my laptop or phone.</p>
<ul>
<li>VNC server for remote GUI
<ul>
<li>virt-manager server</li>
</ul></li>
</ul>
<pre><code>sudo apt install tigervnc-common</code></pre>
<ul>
<li><a href="https://remmina.org/" title="Remmina VNC viewer">Remmina VNC
viewer</a>, tabbed viewing
<ul>
<li>Debian desktop</li>
</ul></li>
<li>VNC Client for Android
<ul>
<li><a href="https://f-droid.org/packages/com.gaurav.avnc" title="AVNC client on F-Droid">AVNC client on F-Droid</a></li>
</ul></li>
<li>NFS server on Raspberry Pi
<ul>
<li>Remote for Intel mini PC Server</li>
</ul></li>
</ul>
<pre><code>mark-hpprodesk600g2dm
    description: Space-saving Computer
    product: HP ProDesk 600 G2 DM (Y0E36UP#ABA)
    vendor: HP
    serial: xxxxxxxx 
    width: 64 bits</code></pre>
<pre><code>sudo apt install nfs-kernel-server</code></pre>
<p>Added symbolic links to <code>/srv/</code> for ease of use</p>
<pre><code>Oct 28 05:34 dvdrip -&gt; /mnt/USBdrive-12Tb/DVDrip/
Oct 28 05:30 movies -&gt; /mnt/USBdrive-12Tb/Movies/
Oct 30 05:20 tv -&gt; /mnt/USBdrive-12Tb/TV</code></pre>
<pre><code>192.168.50.20:/mnt/USBdrive-12Tb/DVDrip /mnt/dvdrip nfs users,defaults,_netdev,nofail 0 0
192.168.50.20:/mnt/USBdrive-12Tb/TV /mnt/tv nfs
users,defaults,_netdev,nofail </code></pre>
<ul>
<li>Blu Ray writer</li>
</ul>
<pre><code>*-cdrom
     description: DVD-RAM writer
     product: BDDVDRW CH20L
     vendor: hp
     physical id: 0.0.0
     bus info: scsi@9:0.0.0
     logical name: /dev/sr1
     version: BC33
     capabilities: removable audio cd-r cd-rw dvd dvd-r dvd-ram</code></pre>
<ul>
<li><p>MakeMKV</p>
<ul>
<li><p><a href="https://forum.makemkv.com/forum/viewtopic.php?t=38872" title="DVD and Blu-ray disks won't stop loading on updated MakeMKV">Discs
won’t stop loading</a></p></li>
<li><p><a href="https://forum.makemkv.com/forum/viewtopic.php?p=178186" title="MakeMKV above v1.17.7 still broken on Linux">MakeMKV above
v1.17.7 still broken on Linux</a></p></li>
<li><p>Downgraded version</p>
<ul>
<li><a href="https://makemkv.com/download/old/" title="Old versions of MakeMKV">Old versions of MakeMKV</a></li>
<li><a href="https://makemkv.com/download/old/makemkv-bin-1.17.7.tar.gz" title="makemkv-bin-1.17.7.tar.gz">makemkv-bin-1.17.7.tar.gz</a></li>
<li><a href="https://makemkv.com/download/old/makemkv-oss-1.17.7.tar.gz" title="makemkv-oss-1.17.7.tar.gz">makemkv-oss-1.17.7.tar.gz</a></li>
</ul></li>
</ul></li>
<li><p>Tailscale</p>
<ul>
<li><a href="https://tailscale.com/kb/1626/install-debian-trixie" title="Tailscale on Debian trixie">on Debian trixie</a></li>
<li><a href="https://f-droid.org/packages/com.tailscale.ipn" title="Tailscale on F-droid">Tailscale on F-droid</a></li>
</ul></li>
</ul>
<p><a href="https://hackerpublicradio.org/eps/hpr4527/hpr4527_image_1.png" title="Screenshot of MakeMKV while using Remmina remote desktop viewer">MakeMKV
via Remmina <br><img src="https://hackerpublicradio.org/eps/hpr4527/hpr4527_image_1_tn.png"></a></p>
<p><a href="https://hackerpublicradio.org/eps/hpr4527/hpr4527_image_2.png" title="Screenshot of Handbrake video encoder, while using Remmina remote desktop viewer">Handbrake
via Remmina <br><img src="https://hackerpublicradio.org/eps/hpr4527/hpr4527_image_2_tn.png"></a></p><p><a href="https://hackerpublicradio.org/eps/hpr4527/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4526: Baofeng and SDR++]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.


























Goal: send a voice signal on VHF or UHF,  receive and record  with SDR via RTL dongle





Core Problem and Resolution





An issue may have been a 
hardware I/Q Imbalance
 in the RTL-SDR, which suppressed the desired sig...]]></description>
<link>https://tsecurity.de/de/3144395/it+sicherheit/it+podcasts/hpr4526+baofeng+and+sdr/</link>
<pubDate>Mon, 08 Dec 2025 01:05:44 +0100</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>

<p>
<a href="https://hackerpublicradio.org/eps/hpr4526/hpr4526_image_1.png">
<img src="https://hackerpublicradio.org/eps/hpr4526/hpr4526_image_1_tn.png">
</a>
</p>
<p>
<br>
</p>
<p>
<a href="https://hackerpublicradio.org/eps/hpr4526/hpr4526_image_2.png">
<img src="https://hackerpublicradio.org/eps/hpr4526/hpr4526_image_2_tn.png">
</a>
</p>
<p>
<br>
</p>
<p>
<a href="https://hackerpublicradio.org/eps/hpr4526/hpr4526_image_3.png">
<img src="https://hackerpublicradio.org/eps/hpr4526/hpr4526_image_3_tn.png">
</a>
</p>
<p>
<br>
</p>
<p>
Goal: send a voice signal on VHF or UHF,  receive and record  with SDR via RTL dongle</p>
<p>
<br>
</p>
<p>
<u>
Core Problem and Resolution</u>
</p>
<p>
<br>
</p>
<p>
An issue may have been a <strong>
hardware I/Q Imbalance</strong>
 in the RTL-SDR, which suppressed the desired signal, resulting in very low output volume that required excessive manual amplification.</p>
<p>
<br>
</p>
<ul>
<li>
<strong>
Initial Problem:</strong>
 Very quiet, barely audible recorded audio, initially on UHF 433 MHz</li>
<li>
<strong>
Key Discovery:</strong>
 An <strong>
I/Q imbalance</strong>
 caused a repeating signal "image" in the spectrum,</li>
<li>
<strong>
Frequency Change:</strong>
 Switched to the <strong>
VHF 145.500 Mhz</strong>
 band, </li>
<li>
<strong>
Gain Override: </strong>
To overcome the defect and the failing AGC, gain stages were manually adjusted:</li>
<li>
<strong>
Squelch:</strong>
 <strong>
Squelch (SQL) was set to OFF (0)</strong>
 to prevent the software from muting the quiet, legitimate signal.</li>
<li>
<strong>
Adjusted the final Sound Output/Recording Gain</strong>
 on the host OS to match the maximized digital output, achieving audible voice.</li>
</ul>
<p>
<br>
</p>
<p>
<u>
Summary of Key Radio and Software Settings</u>
</p>
<p>
<br>
</p>
<p>
<strong>
Transmitting Radio (Baofeng UV-5R):</strong>
</p>
<ul>
<li>
Operation: Simplex (direct radio-to-SDR).</li>
<li>
Mode: Narrowband FM (NFM).</li>
</ul>
<p>
<br>
</p>
<p>
<strong>
Receiving Software (SDR++):</strong>
</p>
<ul>
<li>
<strong>
AGC:</strong>
 Disabled (Crucial override).</li>
<li>
<strong>
RF/Tuner Gain:</strong>
 Adjust (Inject best signal power).</li>
<li>
<strong>
AF Gain:</strong>
 Adjust (Produce loudest digital audio).</li>
<li>
<strong>
Squelch (SQL):</strong>
 OFF (0) (Prevent muting of quiet signal).</li>
<li>
<strong>
Filter Bandwidth:</strong>
 12.5 kHz(Correct setting for NFM).</li>
</ul>
<p>
<br>
</p>
<p>
The ultimate resolution was forcing input and output gain in SDR++  and volume adjustment in Audacity</p>


<p><a href="https://hackerpublicradio.org/eps/hpr4526/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4525: Using mail merge in thunderbird]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.


As the new year show is upon us, Ken needs a way to send out some mail messages to fellow 
Free Culture Podcasters
.




Rather than just putting every one on the bcc, a more personal mail list can be done using the 
Thunderbird Mail Merge
add on...]]></description>
<link>https://tsecurity.de/de/3139641/it+sicherheit/it+podcasts/hpr4525+using+mail+merge+in+thunderbird/</link>
<pubDate>Fri, 05 Dec 2025 01:02:42 +0100</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>

<p>
As 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">
Free Culture Podcasters</a>
.</p>
<p>
<br>
</p>
<p>
Rather 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">
Thunderbird Mail Merge</a>
add on.</p>
<p>
<br>
</p>
<h3>
Install</h3>
<p>
Download it, and then open Thunderbird, select "Tools", "Add-ons and Themes".</p>
<p>
Then press the Cog icon ⚙, and select "Install Add-on From File...", </p>
<p>
Finally select the downloaded file and confirm.</p>
<p>
<br>
</p>
<h3>
Creating the CSV</h3>
<p>
To use it create a list of emails with a heading, "PrimaryEmail" in our example.</p>
<p>
<br>
</p>
<pre class="ql-syntax" spellcheck="false">
$ cat maillist2025.csv
PrimaryEmail
jblogg@example.com
missing@example.nl
janvanduck@example.nl
</pre>
<p>
<br>
</p>
<p>
Using Mail Merge</p>
<p>
<br>
</p>
<p>
Just 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">
curly brackets</a>
.</p>
<p>
In our case we add "{{PrimaryEmail}}", in the to field.</p>
<p>
<br>
</p>
<p>
<a href="https://hackerpublicradio.org/eps/hpr4525/hpr4525_image_1.png">
<img src="https://hackerpublicradio.org/eps/hpr4525/hpr4525_image_1_tn.png" alt="">
</a>
</p>
<p>
<br>
</p>
<p>
Then press the new "Mail Merge" button in the top right. </p>
<p>
Select "CSV" and select the file you prepared before.</p>
<p>
If 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>
<p>
If 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>
<p>
<br>
</p>
<p>
<br>
</p>
<h3>
Links</h3>
<ul>
<li>
<a href="https://freeculturepodcasts.org/" rel="noopener noreferrer" target="_blank">
https://freeculturepodcasts.org/</a>
</li>
<li>
<a href="https://services.addons.thunderbird.net/en-US/thunderbird/addon/mail-merge/" rel="noopener noreferrer" target="_blank">
https://services.addons.thunderbird.net/en-US/thunderbird/addon/mail-merge/</a>
</li>
<li>
Cog icon provided by <a href="https://glyph-party.wimpys.world/" rel="noopener noreferrer" target="_blank">
https://glyph-party.wimpys.world/</a>
from <a href="https://linuxmatters.sh/67/" rel="noopener noreferrer" target="_blank">
https://linuxmatters.sh/67/</a>
</li>
</ul>
<p>
<br>
</p>


<p><a href="https://hackerpublicradio.org/eps/hpr4525/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4524: Living the Tux Life Episode 3 - Automating the Install]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.






Setting up Linux Mint with Custom LVM and Luks


Linux Mint with Custom LVM on LUKS
Overview
The current Linux Mint installer doesn't support custom partitions when setting up a new machine with LUKS encryption using LVM. I prefer having a se...]]></description>
<link>https://tsecurity.de/de/3137239/it+sicherheit/it+podcasts/hpr4524+living+the+tux+life+episode+3+-+automating+the+install/</link>
<pubDate>Thu, 04 Dec 2025 01:02:09 +0100</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>

<p>
<br>
</p>
<p>
<a href="https://code.christman.uk/Linux/linux%20-mint-with-custom-lvm-on-luks" rel="noopener noreferrer" target="_blank">
Setting up Linux Mint with Custom LVM and Luks</a>
</p>

<h1>Linux Mint with Custom LVM on LUKS</h1>
<h2>Overview</h2>
<p>The current Linux Mint installer doesn't support custom partitions when setting up a new machine with LUKS encryption using LVM. I prefer having a separate partition for my home directory and a backup partition for Timeshift, so that reinstalling or fixing issues won't overwrite my home directory. </p>
<p>I found several approaches to achieve this. One method involves setting up partitions first and then using the installer to select them, but this requires extensive post-installation configuration to get boot working with the encrypted drive. </p>
<p>I discovered this <a href="https://www.dwarmstrong.org/rearrange-lvm-after-mint-install/">blog</a> which explains how to repartition your drive after installation. Combined with my guide on setting up hibernation, I created this documentation to help remember how to install a fresh copy of Linux Mint with LVM and LUKS.</p>
<p><strong>Tested on:</strong> Linux Mint 22 Cinnamon</p>
<h2>Partition Layout</h2>
<p>For this guide, I'm working with a 1TB drive that will be split into the following logical volumes:</p>
<ul>
<li><strong>Root</strong> - 100GB (system files and applications)</li>
<li><strong>Swap</strong> - 32GB (for hibernation support)</li>
<li><strong>Home</strong> - 700GB (user files and documents)</li>
<li><strong>Backup</strong> - 100GB (Timeshift snapshots)</li>
<li><strong>Unallocated</strong> - ~68GB (reserved for future expansion)</li>
</ul>
<p>This setup ensures that system snapshots and user data remain separate, making system recovery much easier.</p>
<h2>Installation Guide</h2>
<h3>Step 1: Initial Linux Mint Installation</h3>
<p>Start the Linux Mint installation process as normal:</p>
<ol>
<li>Boot from your Linux Mint installation media</li>
<li>Follow the installation wizard (language, keyboard layout, etc.)</li>
<li>When you reach the <strong>Installation type</strong> screen:<ul>
<li>Select <strong>"Erase disk and install Linux Mint"</strong></li>
<li>Click <strong>"Advanced features"</strong></li>
<li>Enable both options:<ul>
<li>✓ <strong>Use LVM with the new Linux Mint installation</strong></li>
<li>✓ <strong>Encrypt the new Linux Mint installation for security</strong></li>
</ul>
</li>
<li>Click <strong>Continue</strong></li>
</ul>
</li>
<li>Enter a strong encryption password when prompted</li>
<li>Complete the rest of the installation (timezone, user account, etc.)</li>
<li>When installation finishes, <strong>do NOT click "Restart Now"</strong> - we'll repartition first</li>
</ol>
<p><strong>Important:</strong> Do NOT reboot after installation completes. We need to repartition before the first boot.</p>
<h3>Step 2: Access Root Terminal</h3>
<p>After installation finishes, open a terminal and switch to root:</p>
<pre><code class="lang-bash"><span class="hljs-attribute">sudo -i</span>
</code></pre>
<p>This gives you administrative privileges needed for disk operations.</p>
<h3>Step 3: Check Current Disk Layout</h3>
<p>View your current partition structure:</p>
<pre><code class="lang-bash">lsblk <span class="hljs-_">-f</span>
</code></pre>
<p>This displays your filesystem layout. You should see your encrypted volume group (typically <code>vgmint</code>) with a large root partition consuming most of the space.</p>
<h3>Step 4: Resize Root Partition</h3>
<p>Shrink the root partition from its default size (nearly full disk) to 100GB:</p>
<pre><code class="lang-bash">lvresize -L <span class="hljs-number">100</span>G <span class="hljs-comment">--resizefs vgmint/root</span>
</code></pre>
<p><strong>What this does:</strong></p>
<ul>
<li><code>-L 100G</code> sets the logical volume size to exactly 100GB</li>
<li><code>--resizefs</code> automatically resizes the filesystem to match</li>
<li>This frees up ~900GB for our other partitions</li>
</ul>
<h3>Step 5: Resize Swap Partition</h3>
<p>The default swap is usually small (a few GB). We need to increase it to 32GB for hibernation:</p>
<pre><code class="lang-bash">lvresize <span class="hljs-comment">--verbose -L +32G /dev/mapper/vgmint-swap_1</span>
</code></pre>
<p><strong>What this does:</strong></p>
<ul>
<li><code>-L +32G</code> adds 32GB to the current swap size</li>
<li><code>--verbose</code> shows detailed progress information</li>
<li>This ensures enough swap space for RAM contents during hibernation</li>
</ul>
<p><strong>Note:</strong> For hibernation to work, swap should be at least equal to your RAM size. Adjust accordingly.</p>
<h3>Step 6: Create Home Partition</h3>
<p>Create a new logical volume for your home directory:</p>
<pre><code class="lang-bash">lvcreate -L <span class="hljs-number">700</span>G vgmint -n <span class="hljs-built_in">home</span>
</code></pre>
<p><strong>What this does:</strong></p>
<ul>
<li><code>-L 700G</code> creates a 700GB logical volume</li>
<li><code>vgmint</code> is the volume group name</li>
<li><code>-n home</code> names the new volume "home"</li>
</ul>
<h3>Step 7: Create Backup Partition</h3>
<p>Create a logical volume for Timeshift backups:</p>
<pre><code class="lang-bash">lvcreate -L <span class="hljs-number">100</span>G vgmint -<span class="hljs-built_in">n</span> backup
</code></pre>
<p><strong>What this does:</strong></p>
<ul>
<li>Creates a dedicated 100GB space for system snapshots</li>
<li>Keeps backups separate from user data</li>
<li>Prevents backups from filling up your home partition</li>
</ul>
<h3>Step 8: Format New Partitions</h3>
<p>Format both new partitions with the ext4 filesystem:</p>
<pre><code class="lang-bash">mkfs<span class="hljs-selector-class">.ext4</span> /dev/vgmint/backup
mkfs<span class="hljs-selector-class">.ext4</span> /dev/vgmint/home
</code></pre>
<p><strong>What this does:</strong></p>
<ul>
<li>Creates ext4 filesystems on both logical volumes</li>
<li>ext4 is the standard Linux filesystem with good performance and reliability</li>
</ul>
<h3>Step 9: Mount Partitions</h3>
<p>Create mount points and mount your partitions:</p>
<pre><code class="lang-bash">mkdir <span class="hljs-regexp">/mnt/</span>{root,home}
mount <span class="hljs-regexp">/dev/</span>vgmint<span class="hljs-regexp">/root /m</span>nt<span class="hljs-regexp">/root/</span>
mount <span class="hljs-regexp">/dev/</span>vgmint<span class="hljs-regexp">/home /m</span>nt<span class="hljs-regexp">/home/</span>
</code></pre>
<p><strong>What this does:</strong></p>
<ul>
<li>Creates temporary directories to access the filesystems</li>
<li>Mounts root and home so we can configure them</li>
</ul>
<h3>Step 10: Move Home Directory Contents</h3>
<p>Move the existing home directory contents from the root partition to the new home partition:</p>
<pre><code class="lang-bash">mv <span class="hljs-regexp">/mnt/</span>root<span class="hljs-regexp">/home/</span>* <span class="hljs-regexp">/mnt/</span>home<span class="hljs-regexp">/</span>
</code></pre>
<p><strong>What this does:</strong></p>
<ul>
<li>Transfers all user files and directories from the old location to the new home partition</li>
<li>Preserves your user account settings and any files created during installation</li>
<li>Without this step, your home directory would be empty on first boot</li>
</ul>
<h3>Step 11: Update fstab</h3>
<p>Add the home partition to the system's fstab file so it mounts automatically at boot:</p>
<pre><code class="lang-bash">echo <span class="hljs-string">"/dev/mapper/vgmint-home /home           ext4    defaults        0 2"</span> &gt;&gt; <span class="hljs-regexp">/mnt/</span>root<span class="hljs-regexp">/etc/</span>fstab
</code></pre>
<p><strong>What this does:</strong></p>
<ul>
<li>Appends a mount entry to <code>/etc/fstab</code></li>
<li>Ensures <code>/home</code> partition mounts automatically at startup</li>
<li>The <code>0 2</code> values enable filesystem checks during boot</li>
</ul>
<h3>Step 12: Clean Up and Prepare for Reboot</h3>
<p>Unmount the partitions and deactivate the volume group:</p>
<pre><code class="lang-bash">umount <span class="hljs-regexp">/mnt/</span>root
umount <span class="hljs-regexp">/mnt/</span>home
swapoff -a
lvchange -an vgmint
</code></pre>
<p><strong>What this does:</strong></p>
<ul>
<li>Safely unmounts all mounted filesystems</li>
<li>Turns off swap</li>
<li>Deactivates the volume group to prevent conflicts</li>
<li>Ensures everything is properly closed before reboot</li>
</ul>
<h3>Step 13: Reboot</h3>
<p>Now you can safely reboot into your new system:</p>
<pre><code class="lang-bash"><span class="hljs-attribute">reboot</span>
</code></pre>
<p>Enter your LUKS encryption password at boot, then log in normally.</p>
<h2>Verification</h2>
<p>After rebooting, verify your partition setup:</p>
<pre><code class="lang-bash">lsblk -<span class="hljs-built_in">f</span>
df -<span class="hljs-built_in">h</span>
</code></pre>
<p>You should see:</p>
<ul>
<li>Root (<code>/</code>) mounted with ~100GB</li>
<li>Home (<code>/home</code>) mounted with ~700GB</li>
<li>Swap available with 32GB</li>
<li>Backup partition ready for Timeshift configuration</li>
</ul>
<h2>Setting Up Timeshift</h2>
<p>To complete your backup solution:</p>
<ol>
<li>Install Timeshift (if not already installed): <code>sudo apt install timeshift</code></li>
<li>Launch Timeshift and select RSYNC mode</li>
<li>Choose the backup partition as your snapshot location</li>
<li>Configure your backup schedule (daily, weekly, monthly)</li>
<li>Create your first snapshot</li>
</ol>
<h2>Additional Resources</h2>
<ul>
<li><a href="https://www.dwarmstrong.org/rearrange-lvm-after-mint-install/">Original blog post on LVM rearrangement</a></li>
<li><a href="https://hackerpublicradio.org/eps/hpr4524/setting-up-hibernation-linux-mint.md">Setting up hibernation on Linux Mint</a></li>
</ul>
<h2>Conclusion</h2>
<p>This setup gives you the best of both worlds: the security of full-disk encryption with LUKS, and the flexibility of custom LVM partitions. Your home directory and system backups are now isolated, making system recovery and upgrades much safer and more manageable.</p>

<hr>


<p>
<br>
</p>
<p>
<a href="https://code.christman.uk/Linux/auto-setup-linuxmint-after-fresh-install" rel="noopener noreferrer" target="_blank">
Automating Your Linux Mint Setup After a Fresh Install</a>
</p>

<h1>Automating Your Linux Mint Setup After a Fresh Install</h1>
<p>Setting up a fresh Linux Mint installation can be time-consuming, especially when you want to replicate your perfect development environment. This guide will show you how to automate the entire process using Ansible and configuration backups, so you can go from a fresh install to a fully configured system in minutes.</p>
<h2>Why Automate Your Setup?</h2>
<p>Whether you're setting up a new machine, recovering from a system failure, or just want to maintain consistency across multiple computers, automation offers several key benefits:</p>
<ul>
<li><strong>Time Savings:</strong> What normally takes hours can be done in minutes</li>
<li><strong>Consistency:</strong> Identical setup across all your machines</li>
<li><strong>Documentation:</strong> Your setup becomes self-documenting</li>
<li><strong>Recovery:</strong> Quick recovery from system failures</li>
<li><strong>Reproducibility:</strong> Never forget to install that one crucial tool again</li>
</ul>
<h2>Discovering Your Installed Applications</h2>
<p>Before creating your automation setup, you need to identify which applications you've manually installed since the initial OS installation. This helps you build a complete picture of your custom environment.</p>
<h3>Finding APT and .deb Packages</h3>
<p>To see all manually installed packages (excluding those that came with the OS):</p>
<pre><code class="lang-bash">comm -<span class="hljs-number">23</span> &lt;(apt-mark showmanual | <span class="hljs-keyword">sort</span> -u) &lt;(gzip -dc <span class="hljs-regexp">/var/</span>log<span class="hljs-regexp">/installer/i</span>nitial-status.gz | sed -n <span class="hljs-string">'s/^Package: //p'</span> | <span class="hljs-keyword">sort</span> -u)
</code></pre>
<p><strong>What this does:</strong></p>
<ul>
<li><code>apt-mark showmanual</code> lists all manually installed packages</li>
<li><code>/var/log/installer/initial-status.gz</code> contains packages from the initial installation</li>
<li><code>comm -23</code> compares the two lists and shows only packages you installed after setup</li>
<li>This helps you identify exactly what to include in your Ansible playbook</li>
</ul>
<p><strong>Tip:</strong> Save this output to a file for reference:</p>
<pre><code class="lang-bash">comm -<span class="hljs-number">23</span> &lt;(apt-mark showmanual | <span class="hljs-keyword">sort</span> -u) &lt;(gzip -dc <span class="hljs-regexp">/var/</span>log<span class="hljs-regexp">/installer/i</span>nitial-status.gz | sed -n <span class="hljs-string">'s/^Package: //p'</span> | <span class="hljs-keyword">sort</span> -u) &gt; manually-installed-packages.txt
</code></pre>
<h3>Finding Flatpak Applications</h3>
<p>To list all installed Flatpak applications:</p>
<pre><code class="lang-bash">flatpak <span class="hljs-built_in">list</span> <span class="hljs-comment">--app</span>
</code></pre>
<p><strong>What this does:</strong></p>
<ul>
<li>Lists all Flatpak applications installed on your system</li>
<li>The <code>--app</code> flag filters out runtimes and shows only applications</li>
<li>Use this list to populate the Flatpak section of your Ansible playbook</li>
</ul>
<p><strong>Getting more details:</strong></p>
<pre><code class="lang-bash"><span class="hljs-comment"># Show application IDs (needed for Ansible)</span>
flatpak <span class="hljs-built_in">list</span> <span class="hljs-comment">--app --columns=application</span>

<span class="hljs-comment"># Show with origin (where it was installed from)</span>
flatpak <span class="hljs-built_in">list</span> <span class="hljs-comment">--app --columns=application,origin</span>
</code></pre>
<h3>Creating Your Package Inventory</h3>
<p>Use these commands to build a comprehensive inventory:</p>
<pre><code class="lang-bash"># Create a directory <span class="hljs-keyword">for</span> your automation files
<span class="hljs-keyword">mkdir</span> -p ~/linux-mint-automation

# <span class="hljs-keyword">Save</span> APT packages
comm -23 &lt;(apt-<span class="hljs-keyword">mark</span> showmanual | <span class="hljs-keyword">sort</span> -<span class="hljs-keyword">u</span>) &lt;(gzip -dc /<span class="hljs-keyword">var</span>/<span class="hljs-keyword">log</span>/installer/initial-status.gz | sed -<span class="hljs-keyword">n</span> 's/^Package: <span class="hljs-comment">//p' | sort -u) &gt; ~/linux-mint-automation/apt-packages.txt</span>

# <span class="hljs-keyword">Save</span> Flatpak apps
flatpak <span class="hljs-keyword">list</span> --<span class="hljs-keyword">app</span> --columns=application &gt; ~/linux-mint-automation/flatpak-apps.txt
</code></pre>
<p>Now you have a clear reference of what needs to be included in your automation setup!</p>
<h2>Overview of the Automation Strategy</h2>
<p>This guide uses a three-part approach:</p>
<ol>
<li><strong>Ansible Playbook</strong> - Automates software installation and system configuration</li>
<li><strong>Configuration Files</strong> - Backs up and restores application settings from <code>.config</code></li>
<li><strong>dconf Backup</strong> - Preserves desktop environment settings (Cinnamon/GNOME)</li>
</ol>
<p>I store all configurations in a private repository to protect any sensitive information while keeping everything version-controlled and easily accessible.</p>
<h2>Prerequisites</h2>
<p>Before you begin, make sure you have:</p>
<ul>
<li>A fresh Linux Mint installation</li>
<li>Terminal access</li>
<li>An internet connection</li>
<li>Basic familiarity with the command line</li>
</ul>
<h2>Step-by-Step Setup Process</h2>
<h3>Step 1: Update Your System</h3>
<p>First things first—let's make sure your system is up to date:</p>
<pre><code class="lang-bash">sudo apt <span class="hljs-keyword">update</span>
sudo apt <span class="hljs-keyword">upgrade</span> -y
</code></pre>
<p><strong>What this does:</strong></p>
<ul>
<li>Updates the package index to get the latest package information</li>
<li>Upgrades all installed packages to their latest versions</li>
<li>The <code>-y</code> flag automatically confirms all prompts</li>
</ul>
<h3>Step 2: Install Ansible</h3>
<p>Ansible is a powerful automation tool that will handle the bulk of our software installation. Add the official Ansible PPA and install it:</p>
<pre><code class="lang-bash">sudo apt-<span class="hljs-built_in">add</span>-repository <span class="hljs-keyword">pp</span><span class="hljs-variable">a:ansible</span>/ansible
sudo apt <span class="hljs-keyword">update</span>
sudo apt install ansible
</code></pre>
<p><strong>What this does:</strong></p>
<ul>
<li>Adds the official Ansible Personal Package Archive (PPA)</li>
<li>Refreshes package information to include Ansible packages</li>
<li>Installs the latest version of Ansible</li>
</ul>
<h3>Step 3: Create Your Ansible Playbook</h3>
<p>Create an Ansible playbook that defines your entire system configuration. This YAML file will automate software installation from multiple sources.</p>
<p>Create a file named <code>localsetup.yml</code>:</p>
<pre><code class="lang-yaml">-<span class="ruby"> <span class="hljs-symbol">hosts:</span> localhost
</span>  become: true

  vars:
    # Add any variables here (URLs, versions, etc.)

  tasks:
    # Install prerequisites
    -<span class="ruby"> <span class="hljs-symbol">name:</span> Install prerequisites <span class="hljs-keyword">for</span> Ansible to install .deb via apt <span class="hljs-class"><span class="hljs-keyword">module</span></span>
</span>      apt:
        name:
          -<span class="ruby"> xz-utils
</span>        state: present

    -<span class="ruby"> <span class="hljs-symbol">name:</span> Ensure wget <span class="hljs-keyword">and</span> gpg are installed
</span>      apt:
        name:
          -<span class="ruby"> wget
</span>          -<span class="ruby"> gpg
</span>        state: present

    # Install applications from .deb packages
    -<span class="ruby"> <span class="hljs-symbol">name:</span> Install Google Chrome
</span>      apt:
        deb: https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb

    # Add third-party repositories
    -<span class="ruby"> <span class="hljs-symbol">name:</span> Add signing key <span class="hljs-keyword">for</span> Tailscale
</span>      get_url:
        url: https://pkgs.tailscale.com/stable/ubuntu/jammy.noarmor.gpg
        dest: /usr/share/keyrings/tailscale.gpg
        mode: '0644'

    -<span class="ruby"> <span class="hljs-symbol">name:</span> Add Tailscale repository
</span>      apt_repository:
        repo: "deb [signed-by=/usr/share/keyrings/tailscale.gpg] https://pkgs.tailscale.com/stable/ubuntu jammy main"
        filename: tailscale
        state: present

    -<span class="ruby"> <span class="hljs-symbol">name:</span> Update package cache after adding repositories
</span>      ansible.builtin.apt:
        update_cache: yes

    # Install standard packages from Ubuntu/Mint repositories
    -<span class="ruby"> <span class="hljs-symbol">name:</span> Install essential applications
</span>      apt:
        pkg:
          -<span class="ruby"> tailscale
</span>          -<span class="ruby"> git
</span>          -<span class="ruby"> diodon          <span class="hljs-comment"># Clipboard manager</span>
</span>          -<span class="ruby"> pavucontrol     <span class="hljs-comment"># PulseAudio volume control</span>
</span>          -<span class="ruby"> guake           <span class="hljs-comment"># Drop-down terminal</span>
</span>          -<span class="ruby"> vim
</span>          -<span class="ruby"> curl
</span>          -<span class="ruby"> htop
</span>        state: present

    # Install Flatpak applications
    -<span class="ruby"> <span class="hljs-symbol">name:</span> Install Flatpak applications
</span>      community.general.flatpak:
        name:
          -<span class="ruby"> org.gimp.GIMP
</span>          -<span class="ruby"> org.inkscape.Inkscape
</span>        state: present
</code></pre>
<p><strong>Understanding the playbook structure:</strong></p>
<ul>
<li><strong>hosts: localhost</strong> - Runs on your local machine</li>
<li><strong>become: true</strong> - Executes tasks with sudo privileges</li>
<li><strong>tasks</strong> - List of operations to perform</li>
<li><strong>apt module</strong> - Installs packages from repositories or .deb files</li>
<li><strong>apt_repository</strong> - Adds third-party repositories</li>
<li><strong>flatpak module</strong> - Installs Flatpak applications</li>
</ul>
<p><strong>Customization tips:</strong></p>
<ul>
<li>Add more packages to the <code>pkg</code> list under "Install essential applications"</li>
<li>Include additional <code>.deb</code> packages using the <code>deb:</code> parameter</li>
<li>Add more third-party repositories following the Tailscale example</li>
<li>Extend with Flatpak apps, snap packages, or pip packages as needed</li>
</ul>
<h3>Step 4: Run the Ansible Playbook</h3>
<p>Navigate to the directory containing your <code>localsetup.yml</code> file and execute the playbook:</p>
<pre><code class="lang-bash">sudo ansible-playbook localsetup<span class="hljs-selector-class">.yml</span> --connection=local
</code></pre>
<p><strong>What this does:</strong></p>
<ul>
<li>Executes all tasks defined in your playbook</li>
<li>Installs all specified software automatically</li>
<li>Configures repositories and signing keys</li>
<li>Runs with local connection (no SSH required)</li>
</ul>
<p><strong>Note:</strong> This may take several minutes to complete, depending on your internet connection and the number of packages being installed. You'll see progress output for each task.</p>
<h3>Step 5: Restore Configuration Files</h3>
<p>Application settings are typically stored in the <code>~/.config</code> directory. If you have a backup of your configuration files, restore them:</p>
<pre><code class="lang-bash"><span class="hljs-comment"># Clone your private configuration repository</span>
git clone https:<span class="hljs-regexp">//gi</span>thub.com<span class="hljs-regexp">/yourusername/y</span>our-config-repo.git
cd your-config-repo

<span class="hljs-comment"># Copy configuration files to your home directory</span>
cp -r .config<span class="hljs-regexp">/* ~/</span>.config<span class="hljs-regexp">/</span>
</code></pre>
<p><strong>What this restores:</strong></p>
<ul>
<li>Application preferences and settings</li>
<li>Custom keyboard shortcuts</li>
<li>Editor configurations (VS Code, Vim, etc.)</li>
<li>Terminal emulator settings</li>
<li>Any other application-specific configurations</li>
</ul>
<p><strong>Tip:</strong> Press <code>Ctrl + H</code> in your file manager to show hidden files and folders (those starting with <code>.</code>).</p>
<p><strong>Important configurations to backup:</strong></p>
<ul>
<li><code>~/.config/</code> - Most modern application settings</li>
<li><code>~/.bashrc</code> or <code>~/.zshrc</code> - Shell configuration</li>
<li><code>~/.gitconfig</code> - Git configuration</li>
</ul>
<h3>Step 6: Import Desktop Environment Settings</h3>
<p>Restore your Cinnamon/GNOME desktop environment settings using dconf. This includes themes, panels, applets, and all desktop preferences.</p>
<h4>Creating a dconf Backup (do this on your working system first):</h4>
<pre><code class="lang-bash"><span class="hljs-comment"># Export all settings</span>
dconf <span class="hljs-keyword">dump</span> / &gt; my_dconf_backup.conf

<span class="hljs-comment"># Or export specific paths</span>
dconf <span class="hljs-keyword">dump</span> /org/cinnamon/ &gt; cinnamon_settings.conf
</code></pre>
<h4>Restoring dconf Settings:</h4>
<pre><code class="lang-bash"><span class="hljs-comment"># Navigate to your dconf backup location</span>
cd /path/<span class="hljs-built_in">to</span>/your/backups/dconf

<span class="hljs-comment"># Restore all settings</span>
dconf <span class="hljs-built_in">load</span> / &lt; my_dconf_backup.conf
</code></pre>
<p><strong>What this restores:</strong></p>
<ul>
<li>Desktop themes and appearance</li>
<li>Panel configuration and applets</li>
<li>Keyboard shortcuts</li>
<li>Window manager preferences</li>
<li>Display settings</li>
<li>Power management settings</li>
<li>All other desktop environment preferences</li>
</ul>
<p><strong>Note:</strong> You may need to log out and log back in for all changes to take effect.</p>
<h2>Advanced Tips and Best Practices</h2>
<h3>Maintaining Your Automation Setup</h3>
<ol>
<li><strong>Version Control:</strong> Keep your playbook and configs in a Git repository</li>
<li><strong>Regular Updates:</strong> Update your backup after making configuration changes</li>
<li><strong>Test on VMs:</strong> Test your automation on a virtual machine before using on production</li>
<li><strong>Document Changes:</strong> Add comments to your playbook explaining custom configurations</li>
</ol>
<h3>Securing Sensitive Information</h3>
<ul>
<li>Use Ansible Vault to encrypt sensitive data in your playbooks</li>
<li>Never commit SSH private keys or passwords to repositories</li>
<li>Use environment variables for sensitive configuration values</li>
<li>Keep your configuration repository private</li>
</ul>
<h3>Extending Your Automation</h3>
<p>You can extend this setup to include:</p>
<pre><code class="lang-yaml"># Install development tools
-<span class="ruby"> <span class="hljs-symbol">name:</span> Install development tools
</span>  apt:
    pkg:
      -<span class="ruby"> build-essential
</span>      -<span class="ruby"> docker.io
</span>      -<span class="ruby"> python3-pip
</span>      -<span class="ruby"> nodejs
</span>      -<span class="ruby"> npm
</span>
# Install VS Code
-<span class="ruby"> <span class="hljs-symbol">name:</span> Add VS Code repository key
</span>  apt_key:
    url: "https://packages.microsoft.com/keys/microsoft.asc"
    state: present

-<span class="ruby"> <span class="hljs-symbol">name:</span> Add VS Code repository
</span>  apt_repository:
    repo: "deb [arch=amd64] https://packages.microsoft.com/repos/vscode stable main"
    filename: vscode
    state: present

-<span class="ruby"> <span class="hljs-symbol">name:</span> Install VS Code
</span>  apt:
    name: code
    state: present

# Configure git
-<span class="ruby"> <span class="hljs-symbol">name:</span> Configure git user
</span>  community.general.git_config:
    name: "{{ item.name }}"
    value: "{{ item.value }}"
    scope: global
  loop:
    -<span class="ruby"> { <span class="hljs-symbol">name:</span> <span class="hljs-string">'user.name'</span>, <span class="hljs-symbol">value:</span> <span class="hljs-string">'Your Name'</span> }
</span>    -<span class="ruby"> { <span class="hljs-symbol">name:</span> <span class="hljs-string">'user.email'</span>, <span class="hljs-symbol">value:</span> <span class="hljs-string">'your.email@example.com'</span> }</span>
</code></pre>
<h2>Troubleshooting</h2>
<h3>Common Issues</h3>
<p><strong>Ansible not found after installation:</strong></p>
<pre><code class="lang-bash"># <span class="hljs-built_in">Verify</span> installation
ansible --version

# <span class="hljs-keyword">If</span> <span class="hljs-keyword">not</span> found, check <span class="hljs-built_in">PATH</span>
<span class="hljs-built_in">echo</span> $<span class="hljs-built_in">PATH</span>
</code></pre>
<p><strong>Permission denied errors:</strong></p>
<ul>
<li>Ensure you're running the playbook with <code>sudo</code></li>
<li>Check file permissions on your playbook: <code>chmod 644 localsetup.yml</code></li>
</ul>
<p><strong>Package conflicts:</strong></p>
<ul>
<li>Run <code>sudo apt update</code> before running the playbook</li>
<li>Check for PPA conflicts: <code>sudo apt-cache policy &lt;package-name&gt;</code></li>
</ul>
<p><strong>dconf restore doesn't seem to work:</strong></p>
<ul>
<li>Log out and log back in after restoring</li>
<li>Verify the backup file format: <code>head my_dconf_backup.conf</code></li>
<li>Try restoring specific paths instead of all settings</li>
</ul>
<h2>Conclusion</h2>
<p>Automating your Linux Mint setup transforms a tedious manual process into a quick, repeatable procedure. With Ansible handling software installation, configuration file backups preserving application settings, and dconf managing desktop preferences, you can rebuild your perfect development environment in minutes rather than hours.</p>
<p>The time invested in creating these automation scripts pays dividends every time you set up a new machine, recover from a failure, or help a colleague replicate your environment.</p>
<h2>Additional Resources</h2>
<ul>
<li><a href="https://docs.ansible.com/">Ansible Documentation</a></li>
<li><a href="https://wiki.gnome.org/Projects/dconf">dconf Manual</a></li>
<li><a href="https://linuxmint.com/documentation.php">Linux Mint Documentation</a></li>
<li><a href="https://dotfiles.github.io/">Dotfiles Management</a></li>
</ul>
<h2>Next Steps</h2>
<ul>
<li>Customize the playbook with your preferred applications</li>
<li>Create backups of your current configuration files</li>
<li>Export your current dconf settings</li>
<li>Test your automation on a virtual machine</li>
<li>Set up a private Git repository for your configurations</li>
</ul>




<p><a href="https://hackerpublicradio.org/eps/hpr4524/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4523: Nuclear Reactor Technology - Ep 1 - Nuclear Basics]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.


This episode is the first in an 8 part series on nuclear reactor technology. 




This is a politics free series and the focus is on the technology of the reactors.

This series will focus on the civil nuclear industry, with a particular focus on...]]></description>
<link>https://tsecurity.de/de/3134622/it+sicherheit/it+podcasts/hpr4523+nuclear+reactor+technology+-+ep+1+-+nuclear+basics/</link>
<pubDate>Wed, 03 Dec 2025 01:02:43 +0100</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>

<p>
This episode is the first in an 8 part series on nuclear reactor technology. </p>
<p>
<br>
</p>
<p>
This is a politics free series and the focus is on the technology of the reactors.</p>
<p>
This series will focus on the civil nuclear industry, with a particular focus on electric power generation reactors.</p>
<p>
I will discuss the technology, what it is, how it works, and some of the pros and cons of different technologies, but I will try to avoid offering too many opinions on what is the best or worst of anything. </p>
<p>
<br>
</p>
<p>
Episode 1 will cover nuclear basics, including basic terminology and civil versus military nuclear material.</p>
<p>
Episode 2 will cover nuclear fuel, including the different types, recycling of spent fuel, uranium and thorium resources, and medical isotopes. </p>
<p>
Episode 3 will cover reactor basics, including slow versus fast reactors, moderators, coolants, steam generation, refuelling methods, and the three main commercial reactor types.</p>
<p>
Episode 4 will cover the less common reactor types, including types which are no longer used, some historical developmental dead ends, and some types which may possibly be making a come back.</p>
<p>
Episode 5 will cover fast reactors, including the different types, some of their history, why they were developed, and why they have so far only seen limited use.</p>
<p>
Episode 6 will cover thorium reactors, including what is thorium and how it differs from uranium, why there is interest in thorium, what sorts of reactors can use thorium, and why thorium has not yet seen widespread use.</p>
<p>
Episode 7 will cover small modular reactors or SMRs, what the reason is for developing them, what are the different ways they may be used, and where they are currently being built.</p>
<p>
Episode 8 will cover "Generator IV" reactors which is a collection of future technologies.  </p>
<p>
<br>
</p>
<p>
<br>
</p>
<p>
08 Isotopes</p>
<p>
09 Isotopes of Uranium</p>
<p>
10 Nuclear Fission</p>
<p>
11 Half Life</p>
<p>
12 Fissile versus Fertile</p>
<p>
13 Enrichment of Isotopes</p>
<p>
14 Civil Versus Military Nuclear Material</p>
<p>
15 Uranium</p>
<p>
16 Plutonium</p>
<p>
<br>
</p>
<p>
18 Conclusion</p>
<p>
In the first episode of this series we have discussed what the series will cover,</p>
<p>
some of the basic nuclear physics terminology,</p>
<p>
and the differences between civil and military nuclear material.</p>
<p>
<br>
</p>
<p>
In the upcoming episodes we will discuss some of the basic engineering aspects of reactors,</p>
<p>
The various types of commercial reactors, including common and uncommon ones,</p>
<p>
nuclear fuel, including uranium, plutonium, and thorium,</p>
<p>
medical isotopes,</p>
<p>
small modular reactors,</p>
<p>
and the areas of research being conducted into new reactor technologies.</p>
<p>
<br>
</p>
<p>
In the next episode however we will cover types of nuclear fuel, recycling of nuclear fuel, uranium and thorium resources, and medical isotopes.</p>
<p>
<br>
</p>
<p>
This concludes the first episode of an 8 part series on nuclear reactor technology. </p>


<p><a href="https://hackerpublicradio.org/eps/hpr4523/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[166: Maxie]]></title>
<description><![CDATA[Maxie Reynolds loves an adventure, especially the kind where she’s breaking into buildings (legally). In this episode, she shares stories from her time as a professional penetration tester, including high-stakes physical intrusions, red team chaos, and the unique adrenaline of hacking the real wo...]]></description>
<link>https://tsecurity.de/de/3132768/it+sicherheit/it+podcasts/166+maxie/</link>
<pubDate>Tue, 02 Dec 2025 10:03:50 +0100</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>Maxie Reynolds loves an adventure, especially the kind where she’s breaking into buildings (legally). In this episode, she shares stories from her time as a professional penetration tester, including high-stakes physical intrusions, red team chaos, and the unique adrenaline of hacking the real world.</p><p>Her book: <a href="https://amzn.to/4ojYSVZ"><strong>The Art of Attack: Attacker Mindset for Security Professionals</strong></a><strong> (https://amzn.to/4ojYSVZ)</strong></p><p>Her data center: <a href="https://www.subseacloud.com/"><strong>www.subseacloud.com/</strong></a></p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4522: Lee interviews Elsbeth about SL Shop and Hop event]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.


In this episode, Lee sits down with Elsbeth Starling — fae-coded creator, mesh-maker, scripter, and accidental caffeine-fueled entrepreneur — to talk about what it 
really
 takes to get accepted into Second Life’s legendary 
Shop & Hop
 as a rela...]]></description>
<link>https://tsecurity.de/de/3132175/it+sicherheit/it+podcasts/hpr4522+lee+interviews+elsbeth+about+sl+shop+and+hop+event/</link>
<pubDate>Tue, 02 Dec 2025 01:02:25 +0100</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>

<p>
In this episode, Lee sits down with Elsbeth Starling — fae-coded creator, mesh-maker, scripter, and accidental caffeine-fueled entrepreneur — to talk about what it <em>
really</em>
 takes to get accepted into Second Life’s legendary <strong>
Shop &amp; Hop</strong>
 as a relatively new business owner.</p>
<p>
At just about a year and a half into her SL journey, Elsbeth breaks down the whole process:</p>
<p>
<br>
</p>
<ul>
<li>
how she applied,</li>
<li>
what the organizers look for,</li>
<li>
and why imposter syndrome is basically the unofficial application form.</li>
</ul>
<p>
Link to the last <a href="https://www.seraphimsl.com/2025/10/03/2025-halloween-shop-hop-is-spooktacular/" rel="noopener noreferrer" target="_blank">
Shop and Hop</a>
 information</p>
<p>
<br>
</p>
<p>
She shares her behind-the-scenes workflow using <a href="https://www.gimp.org/" rel="noopener noreferrer" target="_blank">
<strong>
GIMP</strong>
</a>
<strong>
, </strong>
<a href="https://www.blender.org/" rel="noopener noreferrer" target="_blank">
<strong>
Blender</strong>
</a>
<strong>
, and </strong>
<a href="https://wiki.secondlife.com/wiki/LSL_Tutorial" rel="noopener noreferrer" target="_blank">
<strong>
LSL scripting</strong>
</a>
 to turn simple mesh ideas into fully interactive creations. (Spoiler: it involves equal parts stubbornness and fairy dust.)</p>
<p>
We dive into <strong>
SLRead</strong>
, the virtual HUD-based e-reader system she and Lee created — a tool that brings the joy of real-life reading into the digital world, complete with pages, collections, and a whole lot of cozy vibes.</p>
<p>
Elsbeth also reveals her newest item premiering at Shop &amp; Hop: an <strong>
interactive story-time décor piece</strong>
 that lets ANY avatar sit down, pick one of six sweet stories, and be read to in local chat. Think “campfire storytelling,” but with lag and better fashion.</p>
<p>
We wrap up by talking through the practicals:</p>
<p>
<br>
</p>
<ul>
<li>
the cost of participating,</li>
<li>
how sales work at large SL events,</li>
<li>
the realities of being a smaller creator in a massive marketplace,</li>
<li>
and why Shop &amp; Hop can be one of the best visibility boosts for emerging designers.</li>
</ul>
<p>
If you’re an SL creator dreaming of Shop &amp; Hop — or just curious how creators bring magic into the <a href="https://secondlife.com/" rel="noopener noreferrer" target="_blank">
metaverse</a>
 — this episode is a must-listen.</p>


<p><a href="https://hackerpublicradio.org/eps/hpr4522/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4521: HPR Community News for November 2025]]></title>
<description><![CDATA[This show has been flagged as Explicit by the host.
New hosts  Welcome to our new host:       Whiskeyjack.   Last Month's Shows   Id Day Date Title Host   4501 Mon 2025-11-03 HPR Community News for October 2025 HPR Volunteers   4502 Tue 2025-11-04 Cheap Yellow Display Project Part 3: Reverse beac...]]></description>
<link>https://tsecurity.de/de/3129830/it+sicherheit/it+podcasts/hpr4521+hpr+community+news+for+november+2025/</link>
<pubDate>Mon, 01 Dec 2025 01:02:12 +0100</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Explicit by the host.</p>
<h2>New hosts</h2> <p> Welcome to our new host: <br>      <a href="https://hackerpublicradio.org/correspondents/0455.html" target="_blank">Whiskeyjack</a>. </p>  <h2>Last Month's Shows</h2> <table> <tr> <th>Id</th> <th>Day</th> <th>Date</th> <th>Title</th> <th>Host</th> </tr> <tr> <td><strong><a href="https://hackerpublicradio.org/eps/hpr4501/index.html" target="_blank">4501</a></strong></td> <td>Mon</td> <td class="shrink">2025-11-03</td> <td><a href="https://hackerpublicradio.org/eps/hpr4501/index.html" target="_blank">HPR Community News for October 2025</a></td> <td><a href="https://hackerpublicradio.org/correspondents/0159.html" target="_blank">HPR Volunteers</a></td> </tr> <tr> <td><strong><a href="https://hackerpublicradio.org/eps/hpr4502/index.html" target="_blank">4502</a></strong></td> <td>Tue</td> <td class="shrink">2025-11-04</td> <td><a href="https://hackerpublicradio.org/eps/hpr4502/index.html" target="_blank">Cheap Yellow Display Project Part 3: Reverse beacon network </a></td> <td><a href="https://hackerpublicradio.org/correspondents/0394.html" target="_blank">Trey</a></td> </tr> <tr> <td><strong><a href="https://hackerpublicradio.org/eps/hpr4503/index.html" target="_blank">4503</a></strong></td> <td>Wed</td> <td class="shrink">2025-11-05</td> <td><a href="https://hackerpublicradio.org/eps/hpr4503/index.html" target="_blank">One time passwords using oathtool</a></td> <td><a href="https://hackerpublicradio.org/correspondents/0455.html" target="_blank">Whiskeyjack</a></td> </tr> <tr> <td><strong><a href="https://hackerpublicradio.org/eps/hpr4504/index.html" target="_blank">4504</a></strong></td> <td>Thu</td> <td class="shrink">2025-11-06</td> <td><a href="https://hackerpublicradio.org/eps/hpr4504/index.html" target="_blank">YouTube Subscriptions 2025 #7</a></td> <td><a href="https://hackerpublicradio.org/correspondents/0198.html" target="_blank">Ahuka</a></td> </tr> <tr> <td><strong><a href="https://hackerpublicradio.org/eps/hpr4505/index.html" target="_blank">4505</a></strong></td> <td>Fri</td> <td class="shrink">2025-11-07</td> <td><a href="https://hackerpublicradio.org/eps/hpr4505/index.html" target="_blank">New site - looks great!</a></td> <td><a href="https://hackerpublicradio.org/correspondents/0318.html" target="_blank">Archer72</a></td> </tr> <tr> <td><strong><a href="https://hackerpublicradio.org/eps/hpr4506/index.html" target="_blank">4506</a></strong></td> <td>Mon</td> <td class="shrink">2025-11-10</td> <td><a href="https://hackerpublicradio.org/eps/hpr4506/index.html" target="_blank">The UCSD P-System Operating System</a></td> <td><a href="https://hackerpublicradio.org/correspondents/0455.html" target="_blank">Whiskeyjack</a></td> </tr> <tr> <td><strong><a href="https://hackerpublicradio.org/eps/hpr4507/index.html" target="_blank">4507</a></strong></td> <td>Tue</td> <td class="shrink">2025-11-11</td> <td><a href="https://hackerpublicradio.org/eps/hpr4507/index.html" target="_blank">What's in the bag ?</a></td> <td><a href="https://hackerpublicradio.org/correspondents/0030.html" target="_blank">Ken Fallon</a></td> </tr> <tr> <td><strong><a href="https://hackerpublicradio.org/eps/hpr4508/index.html" target="_blank">4508</a></strong></td> <td>Wed</td> <td class="shrink">2025-11-12</td> <td><a href="https://hackerpublicradio.org/eps/hpr4508/index.html" target="_blank">YouTube Subscriptions 2025 #8</a></td> <td><a href="https://hackerpublicradio.org/correspondents/0198.html" target="_blank">Ahuka</a></td> </tr> <tr> <td><strong><a href="https://hackerpublicradio.org/eps/hpr4509/index.html" target="_blank">4509</a></strong></td> <td>Thu</td> <td class="shrink">2025-11-13</td> <td><a href="https://hackerpublicradio.org/eps/hpr4509/index.html" target="_blank">HPR Beer Garden 5 - Heferweisen</a></td> <td><a href="https://hackerpublicradio.org/correspondents/0296.html" target="_blank">Kevie</a></td> </tr> <tr> <td><strong><a href="https://hackerpublicradio.org/eps/hpr4510/index.html" target="_blank">4510</a></strong></td> <td>Fri</td> <td class="shrink">2025-11-14</td> <td><a href="https://hackerpublicradio.org/eps/hpr4510/index.html" target="_blank">Playing Civilization V, Part 5</a></td> <td><a href="https://hackerpublicradio.org/correspondents/0198.html" target="_blank">Ahuka</a></td> </tr> <tr> <td><strong><a href="https://hackerpublicradio.org/eps/hpr4511/index.html" target="_blank">4511</a></strong></td> <td>Mon</td> <td class="shrink">2025-11-17</td> <td><a href="https://hackerpublicradio.org/eps/hpr4511/index.html" target="_blank">Audio-books</a></td> <td><a href="https://hackerpublicradio.org/correspondents/0403.html" target="_blank">Lee</a></td> </tr> <tr> <td><strong><a href="https://hackerpublicradio.org/eps/hpr4512/index.html" target="_blank">4512</a></strong></td> <td>Tue</td> <td class="shrink">2025-11-18</td> <td><a href="https://hackerpublicradio.org/eps/hpr4512/index.html" target="_blank">HomeAssistant - Nmap ("Network Mapper")</a></td> <td><a href="https://hackerpublicradio.org/correspondents/0421.html" target="_blank">Reto</a></td> </tr> <tr> <td><strong><a href="https://hackerpublicradio.org/eps/hpr4513/index.html" target="_blank">4513</a></strong></td> <td>Wed</td> <td class="shrink">2025-11-19</td> <td><a href="https://hackerpublicradio.org/eps/hpr4513/index.html" target="_blank">Living the Tux Life Episode 2 - Ventoy</a></td> <td><a href="https://hackerpublicradio.org/correspondents/0290.html" target="_blank">Al</a></td> </tr> <tr> <td><strong><a href="https://hackerpublicradio.org/eps/hpr4514/index.html" target="_blank">4514</a></strong></td> <td>Thu</td> <td class="shrink">2025-11-20</td> <td><a href="https://hackerpublicradio.org/eps/hpr4514/index.html" target="_blank">YouTube Subscriptions 2025 #9</a></td> <td><a href="https://hackerpublicradio.org/correspondents/0198.html" target="_blank">Ahuka</a></td> </tr> <tr> <td><strong><a href="https://hackerpublicradio.org/eps/hpr4515/index.html" target="_blank">4515</a></strong></td> <td>Fri</td> <td class="shrink">2025-11-21</td> <td><a href="https://hackerpublicradio.org/eps/hpr4515/index.html" target="_blank">Privacy? I don't have anything to hide...</a></td> <td><a href="https://hackerpublicradio.org/correspondents/0318.html" target="_blank">Archer72</a></td> </tr> <tr> <td><strong><a href="https://hackerpublicradio.org/eps/hpr4516/index.html" target="_blank">4516</a></strong></td> <td>Mon</td> <td class="shrink">2025-11-24</td> <td><a href="https://hackerpublicradio.org/eps/hpr4516/index.html" target="_blank">Browser User Agent</a></td> <td><a href="https://hackerpublicradio.org/correspondents/0429.html" target="_blank">Henrik Hemrin</a></td> </tr> <tr> <td><strong><a href="https://hackerpublicradio.org/eps/hpr4517/index.html" target="_blank">4517</a></strong></td> <td>Tue</td> <td class="shrink">2025-11-25</td> <td><a href="https://hackerpublicradio.org/eps/hpr4517/index.html" target="_blank">Cheap Yellow Display Project Part 4: The hardware </a></td> <td><a href="https://hackerpublicradio.org/correspondents/0394.html" target="_blank">Trey</a></td> </tr> <tr> <td><strong><a href="https://hackerpublicradio.org/eps/hpr4518/index.html" target="_blank">4518</a></strong></td> <td>Wed</td> <td class="shrink">2025-11-26</td> <td><a href="https://hackerpublicradio.org/eps/hpr4518/index.html" target="_blank">Cosy News Corner for Week 46 - Your source for Open Source news</a></td> <td><a href="https://hackerpublicradio.org/correspondents/0382.html" target="_blank">Daniel Persson</a></td> </tr> <tr> <td><strong><a href="https://hackerpublicradio.org/eps/hpr4519/index.html" target="_blank">4519</a></strong></td> <td>Thu</td> <td class="shrink">2025-11-27</td> <td><a href="https://hackerpublicradio.org/eps/hpr4519/index.html" target="_blank">YouTube Subscriptions 2025 #10</a></td> <td><a href="https://hackerpublicradio.org/correspondents/0198.html" target="_blank">Ahuka</a></td> </tr> <tr> <td><strong><a href="https://hackerpublicradio.org/eps/hpr4520/index.html" target="_blank">4520</a></strong></td> <td>Fri</td> <td class="shrink">2025-11-28</td> <td><a href="https://hackerpublicradio.org/eps/hpr4520/index.html" target="_blank">Arthur C. Clarke: Rama and Sequels</a></td> <td><a href="https://hackerpublicradio.org/correspondents/0198.html" target="_blank">Ahuka</a></td> </tr> </table>  <h2>Comments this month</h2>  <p>These are comments which have been made during the past month, either to shows released during the month or to past shows. There are 22 comments in total.</p> <h3>Past shows</h3> <p>There are 8 comments on 8 previous shows:</p> <ul> <li><strong><a href="https://hackerpublicradio.org/eps/hpr3753/index.html#comments" target="_blank">hpr3753</a></strong> (2022-12-21) "<em>Some thoughts on "Numeronyms"</em>" by <a href="https://hackerpublicradio.org/correspondents/0225.html" target="_blank">Dave Morriss</a>.<br> </li><li> <ul> <li> <a href="https://hackerpublicradio.org/eps/hpr3753/index.html#comment_4494" target="_blank">Comment 3</a>: Ken Fallon on 2025-11-03: "Just linked to this"</li> <li> <a href="https://hackerpublicradio.org/eps/hpr3753/index.html#comment_4499" target="_blank">Comment 4</a>: Dave Morriss on 2025-11-05: "Thanks Ken"</li></ul><br> </li><li><strong><a href="https://hackerpublicradio.org/eps/hpr4397/index.html#comments" target="_blank">hpr4397</a></strong> (2025-06-10) "<em>Transfer files from desktop to phone with qrcp</em>" by <a href="https://hackerpublicradio.org/correspondents/0078.html" target="_blank">Klaatu</a>.<br> </li><li> <ul> <li> <a href="https://hackerpublicradio.org/eps/hpr4397/index.html#comment_4509" target="_blank">Comment 2</a>: Ken Fallon on 2025-11-18: "I knew this would come in handy"</li> <li> <a href="https://hackerpublicradio.org/eps/hpr4397/index.html#comment_4511" target="_blank">Comment 3</a>: candycanearter07 on 2025-11-19: "issues with qrcp..."</li> <li> <a href="https://hackerpublicradio.org/eps/hpr4397/index.html#comment_4512" target="_blank">Comment 4</a>: Ken Fallon on 2025-11-20: "qrcp is private 0x0.st is not"</li></ul><br> </li><li><strong><a href="https://hackerpublicradio.org/eps/hpr4485/index.html#comments" target="_blank">hpr4485</a></strong> (2025-10-10) "<em>Git for Github and Gitlab</em>" by <a href="https://hackerpublicradio.org/correspondents/0318.html" target="_blank">Archer72</a>.<br> </li><li> <ul> <li> <a href="https://hackerpublicradio.org/eps/hpr4485/index.html#comment_4493" target="_blank">Comment 3</a>: Archer72 on 2025-11-01: "candycanearter07 and Sayaci: Thanks!"</li> <li> <a href="https://hackerpublicradio.org/eps/hpr4485/index.html#comment_4501" target="_blank">Comment 4</a>: candycanearter07 on 2025-11-05: "Re: candycanearter07 and Sayaci: Thanks!"</li></ul><br> </li><li><strong><a href="https://hackerpublicradio.org/eps/hpr4491/index.html#comments" target="_blank">hpr4491</a></strong> (2025-10-20) "<em>Thibaut and Ken Interview David Revoy</em>" by <a href="https://hackerpublicradio.org/correspondents/0453.html" target="_blank">Thibaut</a>.<br> </li><li> <ul> <li> <a href="https://hackerpublicradio.org/eps/hpr4491/index.html#comment_4495" target="_blank">Comment 3</a>: dnt on 2025-11-04: "Great interview"</li></ul><br> </li><li><strong><a href="https://hackerpublicradio.org/eps/hpr4493/index.html#comments" target="_blank">hpr4493</a></strong> (2025-10-22) "<em>HPR Beer Garden 4 - Weissbier</em>" by <a href="https://hackerpublicradio.org/correspondents/0296.html" target="_blank">Kevie</a>.<br> </li><li> <ul> <li> <a href="https://hackerpublicradio.org/eps/hpr4493/index.html#comment_4503" target="_blank">Comment 5</a>: TA Spinner on 2025-11-10: "Great episode, I look forward to more!"</li></ul><br> </li><li><strong><a href="https://hackerpublicradio.org/eps/hpr4494/index.html#comments" target="_blank">hpr4494</a></strong> (2025-10-23) "<em>Exploring FUTO Keyboard</em>" by <a href="https://hackerpublicradio.org/correspondents/0441.html" target="_blank">Antoine</a>.<br> </li><li> <ul> <li> <a href="https://hackerpublicradio.org/eps/hpr4494/index.html#comment_4491" target="_blank">Comment 1</a>: Archer72 on 2025-11-01: "Keyboards use"</li></ul><br> </li><li><strong><a href="https://hackerpublicradio.org/eps/hpr4498/index.html#comments" target="_blank">hpr4498</a></strong> (2025-10-29) "<em>Living the Tux Life Episode 1</em>" by <a href="https://hackerpublicradio.org/correspondents/0290.html" target="_blank">Al</a>.<br> </li><li> <ul> <li> <a href="https://hackerpublicradio.org/eps/hpr4498/index.html#comment_4505" target="_blank">Comment 1</a>: candycanearter07 on 2025-11-10: "cheers for taking the plunge!"</li></ul><br> </li><li><strong><a href="https://hackerpublicradio.org/eps/hpr4499/index.html#comments" target="_blank">hpr4499</a></strong> (2025-10-30) "<em>Greg Farough and Zoë Kooyman of the FSF interview Librephone lead developer Rob Savoye</em>" by <a href="https://hackerpublicradio.org/correspondents/0030.html" target="_blank">Ken Fallon</a>.<br> </li><li> <ul> <li> <a href="https://hackerpublicradio.org/eps/hpr4499/index.html#comment_4498" target="_blank">Comment 1</a>: Henrik Hemrin on 2025-11-05: "Good interview pod to learn more about the Librephone project"</li></ul><br> </li></ul> <h3>This month's shows</h3> <p>There are 14 comments on 8 of this month's shows:</p> <ul><li><strong><a href="https://hackerpublicradio.org/eps/hpr4501/index.html#comments" target="_blank">hpr4501</a></strong> (2025-11-03) "<em>HPR Community News for October 2025</em>" by <a href="https://hackerpublicradio.org/correspondents/0159.html" target="_blank">HPR Volunteers</a>.</li> <li> <ul><li><a href="https://hackerpublicradio.org/eps/hpr4501/index.html#comment_4492" target="_blank">Comment 1</a>: Archer72 on 2025-11-01: "If you do something cool..."</li><li><a href="https://hackerpublicradio.org/eps/hpr4501/index.html#comment_4500" target="_blank">Comment 2</a>: candycanearter07 on 2025-11-05: "Re: If you do something cool..."</li><li><a href="https://hackerpublicradio.org/eps/hpr4501/index.html#comment_4502" target="_blank">Comment 3</a>: Archer72 on 2025-11-08: "Tip from operat0r"</li></ul><br> </li><li><strong><a href="https://hackerpublicradio.org/eps/hpr4503/index.html#comments" target="_blank">hpr4503</a></strong> (2025-11-05) "<em>One time passwords using oathtool</em>" by <a href="https://hackerpublicradio.org/correspondents/0455.html" target="_blank">Whiskeyjack</a>.</li> <li> <ul><li><a href="https://hackerpublicradio.org/eps/hpr4503/index.html#comment_4504" target="_blank">Comment 1</a>: interesting, but... on 2025-11-10: "candycanearter07"</li><li><a href="https://hackerpublicradio.org/eps/hpr4503/index.html#comment_4507" target="_blank">Comment 2</a>: Whiskeyjack on 2025-11-12: "One time passwords using oathtool"</li></ul><br> </li><li><strong><a href="https://hackerpublicradio.org/eps/hpr4505/index.html#comments" target="_blank">hpr4505</a></strong> (2025-11-07) "<em>New site - looks great!</em>" by <a href="https://hackerpublicradio.org/correspondents/0318.html" target="_blank">Archer72</a>.</li> <li> <ul><li><a href="https://hackerpublicradio.org/eps/hpr4505/index.html#comment_4496" target="_blank">Comment 1</a>: folky on 2025-11-04: "Thank you"</li></ul><br> </li><li><strong><a href="https://hackerpublicradio.org/eps/hpr4506/index.html#comments" target="_blank">hpr4506</a></strong> (2025-11-10) "<em>The UCSD P-System Operating System</em>" by <a href="https://hackerpublicradio.org/correspondents/0455.html" target="_blank">Whiskeyjack</a>.</li> <li> <ul><li><a href="https://hackerpublicradio.org/eps/hpr4506/index.html#comment_4506" target="_blank">Comment 1</a>: L'andrew on 2025-11-11: "A blast from the p-code past..."</li><li><a href="https://hackerpublicradio.org/eps/hpr4506/index.html#comment_4508" target="_blank">Comment 2</a>: brian-in-ohio on 2025-11-17: "good show"</li><li><a href="https://hackerpublicradio.org/eps/hpr4506/index.html#comment_4513" target="_blank">Comment 3</a>: Trixter on 2025-11-21: "This was very well done"</li></ul><br> </li><li><strong><a href="https://hackerpublicradio.org/eps/hpr4509/index.html#comments" target="_blank">hpr4509</a></strong> (2025-11-13) "<em>HPR Beer Garden 5 - Heferweisen</em>" by <a href="https://hackerpublicradio.org/correspondents/0296.html" target="_blank">Kevie</a>.</li> <li> <ul><li><a href="https://hackerpublicradio.org/eps/hpr4509/index.html#comment_4510" target="_blank">Comment 1</a>: ClaudioM on 2025-11-19: "Both are Tasty!"</li></ul><br> </li><li><strong><a href="https://hackerpublicradio.org/eps/hpr4511/index.html#comments" target="_blank">hpr4511</a></strong> (2025-11-17) "<em>Audio-books</em>" by <a href="https://hackerpublicradio.org/correspondents/0403.html" target="_blank">Lee</a>.</li> <li> <ul><li><a href="https://hackerpublicradio.org/eps/hpr4511/index.html#comment_4497" target="_blank">Comment 1</a>: Lee on 2025-11-05: "Errata"</li></ul><br> </li><li><strong><a href="https://hackerpublicradio.org/eps/hpr4517/index.html#comments" target="_blank">hpr4517</a></strong> (2025-11-25) "<em>Cheap Yellow Display Project Part 4: The hardware </em>" by <a href="https://hackerpublicradio.org/correspondents/0394.html" target="_blank">Trey</a>.</li> <li> <ul><li><a href="https://hackerpublicradio.org/eps/hpr4517/index.html#comment_4514" target="_blank">Comment 1</a>: mirwi on 2025-11-25: "Explanation of "silent key"."</li><li><a href="https://hackerpublicradio.org/eps/hpr4517/index.html#comment_4515" target="_blank">Comment 2</a>: Trey on 2025-11-26: "Thank you, Mirwi.  Silent Key episode link"</li></ul><br> </li><li><strong><a href="https://hackerpublicradio.org/eps/hpr4518/index.html#comments" target="_blank">hpr4518</a></strong> (2025-11-26) "<em>Cosy News Corner for Week 46 - Your source for Open Source news</em>" by <a href="https://hackerpublicradio.org/correspondents/0382.html" target="_blank">Daniel Persson</a>.</li> <li> <ul><li><a href="https://hackerpublicradio.org/eps/hpr4518/index.html#comment_4516" target="_blank">Comment 1</a>: Torin Doyle on 2025-11-29: "I like this news feature."</li></ul><br> </li></ul>  <h2>Mailing List discussions</h2> <p> Policy decisions surrounding HPR are taken by the community as a whole. This discussion takes place on the <a href="https://lists.hackerpublicradio.com/mailman/listinfo/hpr" target="_blank">Mailing List</a> which is open to all HPR listeners and contributors. The discussions are open and available on the HPR server under <a href="https://lists.hackerpublicradio.com/pipermail/hpr">Mailman</a>. </p> <p>The threaded discussions this month can be found here:</p> <a href="https://lists.hackerpublicradio.com/pipermail/hpr/2025-November/thread.html" target="_blank">https://lists.hackerpublicradio.com/pipermail/hpr/2025-November/thread.html</a>  <h2>Events Calendar</h2> <p>With the kind permission of <strong>LWN.net</strong> we are linking to <a href="https://lwn.net/Calendar/" target="_blank">The LWN.net Community Calendar</a>.</p> <p>Quoting the site:</p> <blockquote>This is the LWN.net community event calendar, where we track events of interest to people using and developing Linux and free software. Clicking on individual events will take you to the appropriate web page.</blockquote><p><a href="https://hackerpublicradio.org/eps/hpr4521/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4520: Arthur C. Clarke: Rama and Sequels]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.

    
      This brings us to a look at Arthur C. Clarke's other famous
      series, Rendevous with Rama and its sequels. This is frequently
      refered to simply as the Rama series.
    
      Links:
    
      
        https://en.wikipedia.org...]]></description>
<link>https://tsecurity.de/de/3125077/it+sicherheit/it+podcasts/hpr4520+arthur+c+clarke+rama+and+sequels/</link>
<pubDate>Fri, 28 Nov 2025 01:02:05 +0100</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>

    <p>
      This brings us to a look at Arthur C. Clarke's other famous
      series, Rendevous with Rama and its sequels. This is frequently
      refered to simply as the Rama series.</p>
    <h3>
      Links:</h3>
    <ul>
      <li>
        <a moz-do-not-send="true" href="https://en.wikipedia.org/wiki/Rendezvous_with_Rama">https://en.wikipedia.org/wiki/Rendezvous_with_Rama</a></li>
      <li><a moz-do-not-send="true" href="https://en.wikipedia.org/wiki/%CA%BBOumuamua">
          https://en.wikipedia.org/wiki/%CA%BBOumuamua</a></li>
      <li><a moz-do-not-send="true" href="https://en.wikipedia.org/wiki/Rama_(video_game)">
          https://en.wikipedia.org/wiki/Rama_(video_game)</a></li>
      <li><a moz-do-not-send="true" href="https://en.wikipedia.org/wiki/Rama_II_(novel)">
          https://en.wikipedia.org/wiki/Rama_II_(novel)</a></li>
      <li><a moz-do-not-send="true" href="https://en.wikipedia.org/wiki/The_Garden_of_Rama">
          https://en.wikipedia.org/wiki/The_Garden_of_Rama</a></li>
      <li><a moz-do-not-send="true" href="https://en.wikipedia.org/wiki/Rama_Revealed">
          https://en.wikipedia.org/wiki/Rama_Revealed</a></li>
      <li><a moz-do-not-send="true" href="https://en.wikipedia.org/wiki/Gentry_Lee">
          https://en.wikipedia.org/wiki/Gentry_Lee</a></li>
      <li><a moz-do-not-send="true" href="https://www.palain.com/science-fiction/the-golden-age/arthur-c-clarke-rama-and-sequels/">https://www.palain.com/science-fiction/the-golden-age/arthur-c-clarke-rama-and-sequels/</a></li>
    </ul><p><a href="https://hackerpublicradio.org/eps/hpr4520/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4519: YouTube Subscriptions 2025 #10]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.


I am subscribed to a number of YouTube channels, and I am sharing them with you.




Links:



https://www.youtube.com/@Parlogram



https://www.youtube.com/@pwhitewick



https://www.youtube.com/@eons



https://www.youtube.com/@pbsorigins



ht...]]></description>
<link>https://tsecurity.de/de/3122803/it+sicherheit/it+podcasts/hpr4519+youtube+subscriptions+2025+10/</link>
<pubDate>Thu, 27 Nov 2025 01:02:15 +0100</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>

<p>
I am subscribed to a number of YouTube channels, and I am sharing them with you.</p>
<p>
<br>
</p>
<h3>
Links:</h3>
<ul>
<li>
<a href="https://www.youtube.com/@Parlogram" rel="noopener noreferrer" target="_blank">
https://www.youtube.com/@Parlogram</a>
</li>
<li>
<a href="https://www.youtube.com/@pwhitewick" rel="noopener noreferrer" target="_blank">
https://www.youtube.com/@pwhitewick</a>
</li>
<li>
<a href="https://www.youtube.com/@eons" rel="noopener noreferrer" target="_blank">
https://www.youtube.com/@eons</a>
</li>
<li>
<a href="https://www.youtube.com/@pbsorigins" rel="noopener noreferrer" target="_blank">
https://www.youtube.com/@pbsorigins</a>
</li>
<li>
<a href="https://www.youtube.com/@pbsspacetime" rel="noopener noreferrer" target="_blank">
https://www.youtube.com/@pbsspacetime</a>
</li>
<li>
<a href="https://www.youtube.com/@PCJLaw" rel="noopener noreferrer" target="_blank">
https://www.youtube.com/@PCJLaw</a>
</li>
<li>
<a href="https://www.youtube.com/@periodicvideos" rel="noopener noreferrer" target="_blank">
https://www.youtube.com/@periodicvideos</a>
</li>
<li>
<a href="https://www.youtube.com/@CulturePhilter" rel="noopener noreferrer" target="_blank">
https://www.youtube.com/@CulturePhilter</a>
</li>
<li>
<a href="https://www.youtube.com/@PhotoAdvanced" rel="noopener noreferrer" target="_blank">
https://www.youtube.com/@PhotoAdvanced</a>
</li>
<li>
<a href="https://www.youtube.com/@physicsgirl" rel="noopener noreferrer" target="_blank">
https://www.youtube.com/@physicsgirl</a>
</li>
<li>
<a href="https://www.youtube.com/@PoliticsGirl" rel="noopener noreferrer" target="_blank">
https://www.youtube.com/@PoliticsGirl</a>
</li>
<li>
<a href="https://www.youtube.com/@PopularCruising" rel="noopener noreferrer" target="_blank">
https://www.youtube.com/@PopularCruising</a>
</li>
<li>
<a href="https://www.youtube.com/@postmodernjukebox" rel="noopener noreferrer" target="_blank">
https://www.youtube.com/@postmodernjukebox</a>
</li>
<li>
<a href="https://www.youtube.com/@PotatoMcWhiskey" rel="noopener noreferrer" target="_blank">
https://www.youtube.com/@PotatoMcWhiskey</a>
</li>
<li>
<a href="https://www.youtube.com/@PravusGaming" rel="noopener noreferrer" target="_blank">
https://www.youtube.com/@PravusGaming</a>
</li>
<li>
<a href="https://www.palain.com/" rel="noopener noreferrer" target="_blank">
https://www.palain.com/</a>
</li>
</ul>
<p>
<br>
</p>


<p><a href="https://hackerpublicradio.org/eps/hpr4519/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
<item>
<title><![CDATA[HPR4518: Cosy News Corner for Week 46 - Your source for Open Source news]]></title>
<description><![CDATA[This show has been flagged as Clean by the host.

We just found out that Daniel Persson has his own YouTube Channel.


He'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.


The link to the video is htt...]]></description>
<link>https://tsecurity.de/de/3120611/it+sicherheit/it+podcasts/hpr4518+cosy+news+corner+for+week+46+-+your+source+for+open+source+news/</link>
<pubDate>Wed, 26 Nov 2025 01:02:30 +0100</pubDate>
<category>🎥 Podcasts</category>
<source url="https://tsecurity.de">tsecurity.de</source>
<content:encoded><![CDATA[<p>This show has been flagged as Clean by the host.</p>
<p>
We just found out that <a href="https://hackerpublicradio.org/correspondents/0382.html">Daniel Persson</a> has his own YouTube Channel.
</p>
<p>
He'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.
</p>
<p>
The link to the video is <a href="https://www.youtube.com/watch?v=5zZCa2neliA">https://www.youtube.com/watch?v=5zZCa2neliA</a>
</p>
<p>
The 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.
</p>

<code>
&lt;outline text="Daniel Persson" title="Daniel Persson" type="rss" xmlUrl="https://www.youtube.com/feeds/videos.xml?channel_id=UCnG-TN23lswO6QbvWhMtxpA"/&gt;
</code>

<p>
The 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>
</p>

<h3>Title: Debian Mandates Rust for APT, Reshaping Ubuntu and Other Linux Distros</h3>
<p>By: Steven J. Vaughan-Nichols - TheNewstack</p>
<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>
<p>The Complexity of Simplicity</p>
<p>Keynote given at TalosCon by Oxide Co-Founder and CTO Bryan Cantrill in Amsterdam on October 17, 2025.</p>
<p>"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."</p>
<p>If you have not learned Rust and you are unfamiliar with the most important thing about Rust to someone who's new to Rust is the way it handles errors, right?</p>
<p><a href="https://www.youtube.com/watch?v=Cum5uN2634o">https://www.youtube.com/watch?v=Cum5uN2634o</a></p>
<h3>Title: Ubuntu's Rust Transition Hits Another Bump as sudo-rs Security Vulnerabilities Show Up</h3>
<p>By: Sourav Rudra - It's FOSS</p>
<p><a href="https://itsfoss.com/news/sudo-rs-issue-ubuntu/">https://itsfoss.com/news/sudo-rs-issue-ubuntu/</a></p>
<h3>Title: Snapchat Open Sources Cross-Platform UI Framework</h3>
<p>By Loraine Lawson - TheNewstack</p>
<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>
<p><a href="https://github.com/Snapchat/Valdi">https://github.com/Snapchat/Valdi</a></p>
<h3>Title: # Solo.io Open Sources Agentregistry, With Support for Agent Skills</h3>
<p>By: Heather Joslyn - TheNewstack</p>
<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>
<h3>Title: FFmpeg Calls Google's AI Bug Reports "CVE Slop"</h3>
<p>By: Sourav Rudra - It's FOSS</p>
<p>By: Steven J. Vaughan-Nichols - TheNewstack</p>
<p><a href="https://itsfoss.com/news/ffmpeg-google-fiasco/">https://itsfoss.com/news/ffmpeg-google-fiasco/</a></p>
<p><a href="https://daniel.haxx.se/">https://daniel.haxx.se/</a></p>
<h3>Title: Ubuntu's New 15-Year Commitment Targets Long-Lived Enterprise Systems</h3>
<p>By: Sourav Rudra - It's FOSS</p>
<p><a href="https://itsfoss.com/news/ubuntu-15-year-support-commitment/">https://itsfoss.com/news/ubuntu-15-year-support-commitment/</a></p>
<h3>Title: Mozilla Unveils Plans for New 'AI Window' Browsing Mode in Firefox, Opens Signups</h3>
<p>By: Sourav Rudra - It's FOSS</p>
<p>By: Ajit Varma - Distilled</p>
<p><a href="https://itsfoss.com/news/mozilla-ai-window-plans/">https://itsfoss.com/news/mozilla-ai-window-plans/</a></p>
<p><a href="https://blog.mozilla.org/en/firefox/ai-window/">https://blog.mozilla.org/en/firefox/ai-window/</a></p>
<p><a href="https://www.firefox.com/en-US/ai/">https://www.firefox.com/en-US/ai/</a></p>
<h3>Title: Nitrux 5.0.0 Released: A 'New Beginning' That's Not for Everyone (By Design)</h3>
<p>By: Sourav Rudra - It's FOSS</p>
<p><a href="https://itsfoss.com/news/nitrux-5-release/">https://itsfoss.com/news/nitrux-5-release/</a></p>
<p><a href="https://nxos.org/">https://nxos.org/</a></p>
<h3>Title: You Can Play Classic D3D7 Games on Linux With This New Project, But Don’t Expect Perfection</h3>
<p>By: Sourav Rudra - It's FOSS</p>
<p><a href="https://itsfoss.com/news/play-d3d7-games-on-linux/">https://itsfoss.com/news/play-d3d7-games-on-linux/</a></p>
<p><a href="https://github.com/WinterSnowfall/d7vk">https://github.com/WinterSnowfall/d7vk</a></p>
<p><a href="https://hackerpublicradio.org/eps/hpr4518/index.html#comments">Provide <strong>feedback</strong> on this episode</a>.</p>]]></content:encoded>
</item>
</channel>
</rss>
<!-- Generated in 0,12ms -->