<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
   <channel>
      <title>Hacker Public Radio - Syndicated</title>
      <description>HPR Podcasts</description>
      <link>http://HPR-MIRROR/rss.xml</link>
      <!-- <image>
         <url>http://hackerpublicradio.org/images/hpr_logo.png</url>
         <title>Hacker Public Radio - Syndicated</title>
      </image> -->
      
      <item>
         <guid>https://hackerpublicradio.org/eps/hpr4622/index.html</guid>
         <link>https://hackerpublicradio.org/eps/hpr4622/index.html</link>
         <title>HPR4622: Hackerpublic Radio New Years Eve Show 2026 Episode 5</title>
         <description>
            <![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" style="background-color: rgb(227, 255, 234);" 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" style="background-color: rgb(227, 255, 234);" 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" style="background-color: rgb(227, 255, 234);" 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" style="background-color: rgb(227, 255, 234);" 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" style="background-color: rgb(227, 255, 234);" 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" style="background-color: rgb(227, 255, 234);" 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" style="background-color: rgb(227, 255, 234);" 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" style="background-color: rgb(227, 255, 234);" 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" style="background-color: rgb(227, 255, 234);" 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" style="background-color: rgb(227, 255, 234);" 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" style="background-color: rgb(227, 255, 234);" 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" style="background-color: rgb(227, 255, 234);" 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" style="background-color: rgb(227, 255, 234);" 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" style="background-color: rgb(227, 255, 234);" 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" style="background-color: rgb(227, 255, 234);" 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" style="background-color: rgb(227, 255, 234);" 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" style="background-color: rgb(227, 255, 234);" 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" style="background-color: rgb(227, 255, 234);" 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" style="background-color: rgb(227, 255, 234);" 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" style="background-color: rgb(227, 255, 234);" 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" style="background-color: rgb(227, 255, 234);" 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" style="background-color: rgb(227, 255, 234);" 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" style="background-color: rgb(227, 255, 234);" 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" style="background-color: rgb(227, 255, 234);" 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" style="background-color: rgb(227, 255, 234);" 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" style="background-color: rgb(227, 255, 234);" 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" style="background-color: rgb(227, 255, 234);" 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" style="background-color: rgb(227, 255, 234);" 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" style="background-color: rgb(227, 255, 234);" 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" style="background-color: rgb(227, 255, 234);" 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" style="background-color: rgb(227, 255, 234);" 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" style="background-color: rgb(227, 255, 234);" 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" style="background-color: rgb(227, 255, 234);" 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" style="background-color: rgb(227, 255, 234);" 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" style="background-color: rgb(227, 255, 234);" 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" style="background-color: rgb(227, 255, 234);" 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" style="background-color: rgb(227, 255, 234);" 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" style="background-color: rgb(227, 255, 234);" 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" style="background-color: rgb(227, 255, 234);" 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" style="background-color: rgb(227, 255, 234);" 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" style="background-color: rgb(227, 255, 234);" 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" style="background-color: rgb(227, 255, 234);" 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" style="background-color: rgb(227, 255, 234);" 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" style="background-color: rgb(227, 255, 234);" 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" style="background-color: rgb(227, 255, 234);" 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" style="background-color: rgb(227, 255, 234);" 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" style="background-color: rgb(227, 255, 234);" 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" style="background-color: rgb(227, 255, 234);" 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" style="background-color: rgb(227, 255, 234);" 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" style="background-color: rgb(227, 255, 234);" 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" style="background-color: rgb(227, 255, 234);" 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" style="background-color: rgb(227, 255, 234);" 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" style="background-color: rgb(227, 255, 234);" 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" style="background-color: rgb(227, 255, 234);" 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" style="background-color: rgb(227, 255, 234);" 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" style="background-color: rgb(227, 255, 234);" 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" style="background-color: rgb(227, 255, 234);" 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" style="background-color: rgb(227, 255, 234);" 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" style="background-color: rgb(227, 255, 234);" 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" style="background-color: rgb(227, 255, 234);" 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" style="background-color: rgb(227, 255, 234);" 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" style="background-color: rgb(227, 255, 234);" 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" style="background-color: rgb(227, 255, 234);" 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" style="background-color: rgb(227, 255, 234);" 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" style="background-color: rgb(227, 255, 234);" 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" style="background-color: rgb(227, 255, 234);" 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" style="background-color: rgb(227, 255, 234);" 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" style="background-color: rgb(227, 255, 234);" 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" style="background-color: rgb(227, 255, 234);" 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" style="background-color: rgb(227, 255, 234);" 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" style="background-color: rgb(227, 255, 234);" 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" style="background-color: rgb(227, 255, 234);" 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" style="background-color: rgb(227, 255, 234);" 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" style="background-color: rgb(227, 255, 234);" 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" style="background-color: rgb(227, 255, 234);" 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" style="background-color: rgb(227, 255, 234);" 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" style="background-color: rgb(227, 255, 234);" 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" style="background-color: rgb(227, 255, 234);" 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" style="background-color: rgb(227, 255, 234);" 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" style="background-color: rgb(227, 255, 234);" 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" style="background-color: rgb(227, 255, 234);" 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" style="background-color: rgb(227, 255, 234);" 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" style="background-color: rgb(227, 255, 234);" 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" style="background-color: rgb(227, 255, 234);" 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" style="background-color: rgb(227, 255, 234);" 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" style="background-color: rgb(227, 255, 234);" 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" style="background-color: rgb(227, 255, 234);" 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" style="background-color: rgb(227, 255, 234);" 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>
            ]]>
            </description>
         <pubDate>Tue, 21 Apr 2026 01:00:00 -0500</pubDate>
         <enclosure 
         url="https://hub.hackerpublicradio.org/ccdn.php?filename=/eps/hpr4622/hpr4622.ogg"
         length="72737616"
         type="audio/ogg"
         />
      </item>
      
      <item>
         <guid>https://hackerpublicradio.org/eps/hpr4621/index.html</guid>
         <link>https://hackerpublicradio.org/eps/hpr4621/index.html</link>
         <title>HPR4621: Android volume control help</title>
         <description>
            <![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>
            ]]>
            </description>
         <pubDate>Mon, 20 Apr 2026 01:00:00 -0500</pubDate>
         <enclosure 
         url="https://hub.hackerpublicradio.org/ccdn.php?filename=/eps/hpr4621/hpr4621.ogg"
         length="8664078"
         type="audio/ogg"
         />
      </item>
      
      <item>
         <guid>https://hackerpublicradio.org/eps/hpr4620/index.html</guid>
         <link>https://hackerpublicradio.org/eps/hpr4620/index.html</link>
         <title>HPR4620: The Second Doctor, Part 1</title>
         <description>
            <![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" rel="noreferrer noopener" target="_blank">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 id="power-daleks"><a href="https://en.wikipedia.org/wiki/The_Power_of_the_Daleks" rel="noreferrer noopener" target="_blank">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" rel="noreferrer noopener" target="_blank">YouTube</a>. </p>



<h2 id="highlanders"><a href="https://en.wikipedia.org/wiki/The_Highlanders_(Doctor_Who)" rel="noreferrer noopener" target="_blank">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 id="underwater"><a href="https://en.wikipedia.org/wiki/The_Underwater_Menace" rel="noreferrer noopener" target="_blank">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&nbsp;<em>Lost in Space</em>&nbsp;and&nbsp;<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 id="moonbase"><a href="https://en.wikipedia.org/wiki/The_Moonbase" rel="noreferrer noopener" target="_blank">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 id="macra"><a href="https://en.wikipedia.org/wiki/The_Macra_Terror" rel="noreferrer noopener" target="_blank">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" rel="noreferrer noopener" target="_blank">YouTube</a>.</p>



<h2 id="faceless"><a href="https://en.wikipedia.org/wiki/The_Faceless_Ones" rel="noreferrer noopener" target="_blank">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" rel="noreferrer noopener" target="_blank">YouTube</a>.</p>


<h3 id="links-">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>
            ]]>
            </description>
         <pubDate>Fri, 17 Apr 2026 01:00:00 -0500</pubDate>
         <enclosure 
         url="https://hub.hackerpublicradio.org/ccdn.php?filename=/eps/hpr4620/hpr4620.ogg"
         length="10113919"
         type="audio/ogg"
         />
      </item>
      
      <item>
         <guid>https://hackerpublicradio.org/eps/hpr4619/index.html</guid>
         <link>https://hackerpublicradio.org/eps/hpr4619/index.html</link>
         <title>HPR4619: HPR Beer Garden 12 - Baltic Porter</title>
         <description>
            <![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="http://hackerpublicradio.org/hpr4619_image_1.png">
<img src="http://hackerpublicradio.org/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>
            ]]>
            </description>
         <pubDate>Thu, 16 Apr 2026 01:00:00 -0500</pubDate>
         <enclosure 
         url="https://hub.hackerpublicradio.org/ccdn.php?filename=/eps/hpr4619/hpr4619.ogg"
         length="21912841"
         type="audio/ogg"
         />
      </item>
      
      <item>
         <guid>https://hackerpublicradio.org/eps/hpr4618/index.html</guid>
         <link>https://hackerpublicradio.org/eps/hpr4618/index.html</link>
         <title>HPR4618: Simple Podcasting - Episode 2 - Basic Filtering</title>
         <description>
            <![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>
            ]]>
            </description>
         <pubDate>Wed, 15 Apr 2026 01:00:00 -0500</pubDate>
         <enclosure 
         url="https://hub.hackerpublicradio.org/ccdn.php?filename=/eps/hpr4618/hpr4618.ogg"
         length="25759121"
         type="audio/ogg"
         />
      </item>
      
      <item>
         <guid>https://hackerpublicradio.org/eps/hpr4617/index.html</guid>
         <link>https://hackerpublicradio.org/eps/hpr4617/index.html</link>
         <title>HPR4617: UNIX Curio #4 - Archiving Files</title>
         <description>
            <![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>
            ]]>
            </description>
         <pubDate>Tue, 14 Apr 2026 01:00:00 -0500</pubDate>
         <enclosure 
         url="https://hub.hackerpublicradio.org/ccdn.php?filename=/eps/hpr4617/hpr4617.ogg"
         length="11570739"
         type="audio/ogg"
         />
      </item>
      
      <item>
         <guid>https://hackerpublicradio.org/eps/hpr4616/index.html</guid>
         <link>https://hackerpublicradio.org/eps/hpr4616/index.html</link>
         <title>HPR4616: Thoughts about age control and further suggestions</title>
         <description>
            <![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>
            ]]>
            </description>
         <pubDate>Mon, 13 Apr 2026 01:00:00 -0500</pubDate>
         <enclosure 
         url="https://hub.hackerpublicradio.org/ccdn.php?filename=/eps/hpr4616/hpr4616.ogg"
         length="7796500"
         type="audio/ogg"
         />
      </item>
      
      <item>
         <guid>https://hackerpublicradio.org/eps/hpr4615/index.html</guid>
         <link>https://hackerpublicradio.org/eps/hpr4615/index.html</link>
         <title>HPR4615: Clicking through an audit</title>
         <description>
            <![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="http://hackerpublicradio.org/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>
            ]]>
            </description>
         <pubDate>Fri, 10 Apr 2026 01:00:00 -0500</pubDate>
         <enclosure 
         url="https://hub.hackerpublicradio.org/ccdn.php?filename=/eps/hpr4615/hpr4615.ogg"
         length="38707702"
         type="audio/ogg"
         />
      </item>
      
      <item>
         <guid>https://hackerpublicradio.org/eps/hpr4614/index.html</guid>
         <link>https://hackerpublicradio.org/eps/hpr4614/index.html</link>
         <title>HPR4614: Dauug|18: Faster Than a ’286, but Inspectable Like a Soroban</title>
         <description>
            <![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>
            ]]>
            </description>
         <pubDate>Thu, 09 Apr 2026 01:00:00 -0500</pubDate>
         <enclosure 
         url="https://hub.hackerpublicradio.org/ccdn.php?filename=/eps/hpr4614/hpr4614.ogg"
         length="25881372"
         type="audio/ogg"
         />
      </item>
      
      <item>
         <guid>https://hackerpublicradio.org/eps/hpr4613/index.html</guid>
         <link>https://hackerpublicradio.org/eps/hpr4613/index.html</link>
         <title>HPR4613: Adding functionality to an Odoo installation</title>
         <description>
            <![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>
            ]]>
            </description>
         <pubDate>Wed, 08 Apr 2026 01:00:00 -0500</pubDate>
         <enclosure 
         url="https://hub.hackerpublicradio.org/ccdn.php?filename=/eps/hpr4613/hpr4613.ogg"
         length="14253969"
         type="audio/ogg"
         />
      </item>
      
  </channel>
</rss>