Hacker Public Radio

Follow Hacker Public Radio
Share on
Copy link to clipboard

Hacker Public Radio is an podcast that releases shows every weekday Monday through Friday. Our shows are produced by the community (you) and can be on any topic that are of interest to hackers and hobbyists.

feedback@NOSPAM-hackerpublicradio.org (HPR Feedback)


    • May 21, 2026 LATEST EPISODE
    • weekdays NEW EPISODES
    • 1,431 EPISODES


    Search for episodes from Hacker Public Radio with a specific topic:

    Latest episodes from Hacker Public Radio

    HPR4644: Response to comments on HPR4424: Newsboat...

    Play Episode Listen Later May 21, 2026


    This show has been flagged as Clean by the host. Hi this is your host, Archer72 for Hacker Public Radio. In this episode I share some of my findings about a problem with the Newsboat naming of the HPR feeds, which was brought up in comments about my Newsboat show, HPR4424. hpr4424: How I use Newsboat for Podcasts: comment #6 : download-filename-format for HPR podcasts Ken already had some findings of his own about the ccdn.php extension in the feed. hpr4424: comment #10 : Summary of findings I thought that this might be able to be fixed on an invididual basis, and set out to ask Claude.ai a few questions. But first, some colaboration from Dave Morriss about a good renaming format. This was definitely more on Dave's side than mine, but came up with this. You can tell Dave's handywork from the short variable names, which stems from his extensive experience on Unix type machines in the University days. exif-rename-hpr-dave.sh #!/bin/bash URL="$(cat /tmp/hpr-url.txt)" echo "DEBUG URL: $URL" >> /tmp/hpr-debug.log AUDIO_URL="$(curl -s "$URL" | grep -Eo 'https?://[^"]*.(ogg|mp3)' | head -1)" echo "DEBUG AUDIO: $AUDIO_URL" >> /tmp/hpr-debug.log if [[ -z "$AUDIO_URL" ]]; then echo "ERROR: Could not find audio URL from: $URL" >> /tmp/hpr-debug.log exit 1 fi # Changed destination to HPR-queue DEST=~/podcasts/hub.hackerpublicradio.org/HPR-queue/ # Record files present before download BEFORE="$(ls "$DEST"*.{ogg,mp3} 2>/dev/null | sort)" wget -nc --content-disposition -P "$DEST" "$AUDIO_URL" cd "$DEST" # Record filename just downloaded (new file not in BEFORE) AFTER="$(ls "$DEST"*.{ogg,mp3} 2>/dev/null | sort)" DOWNLOADED="$(comm -13 /dev/null | sort)" RENAMED="$(comm -13 /tmp/hpr-url.txt && ~/bin/download-and-rename-hpr.sh"; open-in-browser ; set browser "your-normal-browser" A few Claude questions later… After asking to add a function to the macro in order to add the resulting downloaded file to the queue, the file name hpr1234.ogg was being added to the queue instead of the renamed file. Two things to fix: The renamed file isn't being found because ls -t runs before the rename has fully settled, or the glob isn't matching the new filename format (which includes spaces and semicolons) The existing queue entries show the correct format: "url" "path" downloaded — we need to match that, with downloaded status and the full renamed path including extension Exif rename script #!/bin/bash # ~/bin/download-and-rename-hpr.sh URL="$(cat /tmp/hpr-url.txt)" echo "DEBUG URL: $URL" >> /tmp/hpr-debug.log AUDIO_URL="$(curl -s "$URL" | grep -Eo 'https?://[^"]*.(ogg|mp3)' | head -1)" echo "DEBUG AUDIO: $AUDIO_URL" >> /tmp/hpr-debug.log if [[ -z "$AUDIO_URL" ]]; then echo "ERROR: Could not find audio URL from: $URL" >> /tmp/hpr-debug.log exit 1 fi DEST=~/podcasts/hub.hackerpublicradio.org/HPR-newsboat-test/ # Record files present before download BEFORE="$(ls "$DEST"*.{ogg,mp3} 2>/dev/null | sort)" wget -nc --content-disposition -P "$DEST" "$AUDIO_URL" cd "$DEST" # Record filename just downloaded (new file not in BEFORE) AFTER="$(ls "$DEST"*.{ogg,mp3} 2>/dev/null | sort)" DOWNLOADED="$(comm -13 /dev/null | sort)" RENAMED="$(comm -13 /tmp/hpr-url.txt && ~/bin/download-and-rename-hpr.sh"; open-in-browser ; set browser lynx Provide feedback on this episode.

    HPR4643: HPR Beer Garden 13 - Triple IPA

    Play Episode Listen Later May 20, 2026


    This show has been flagged as Clean by the host. Dave and Kevie continue the Beer Garden series with a look at a relatively new style of IPA known as a Triple. Dave samples Triple Hazy Jane by Brewdog , whilst Kevie tries out Glory Triple IPA by Northern Monk . Connect with the guys on Untappd: Dave Kevie Provide feedback on this episode.

    HPR4642: Hackerpublic Radio New Years Eve Show 2026 Episode 7

    Play Episode Listen Later May 19, 2026


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

    HPR4641: Technical Dutch Open Source Event (T-DOSE)

    Play Episode Listen Later May 18, 2026


    This show has been flagged as Clean by the host. Technical Dutch Open Source Event (T-DOSE) Ken interviews Peter van Ginneken who is chair of the Technical Dutch Open Source Event (T-DOSE) . It is a free conference to promote the use and development of Open Source software. This event has is organized yearly since 2006 in the Brainport region, near Eindhoven, The Netherlands. During this event, Open Source projects, developers and visitors can exchange ideas and knowledge. T-DOSE wil take place on 6 and 7 June 2026 at the Weeffabriek in Geldrop (near Eindhoven). https://t-dose.org/2026/ Contact Information Peertube Libera.chat IRC, #t-dose Mastodon LinkedIn Facebook Instagram Travel Times Country Typical Travel Method Example Destination Approx Duration Typical Budget Cost (One Way) Belgium Train / Flixbus Antwerp 1–1.5h €10–25 Germany Train / Flixbus Cologne 1.5–2h €20–40 United Kingdom Ryanair flight London Stansted 1h05 €20–70 Ireland Ryanair flight Dublin 1h40 €25–80 Denmark Transavia flight Copenhagen 1h25 €40–100 Austria Ryanair flight Vienna 1h40 €30–90 Czech Republic Transavia flight Prague 1h20 €35–90 Poland Ryanair / Wizz Air Kraków 1h50 €25–80 Hungary Wizz Air Budapest 1h55 €30–90 Italy Ryanair flight Milan Bergamo 1h35 €25–85 Spain Ryanair / Transavia Barcelona 2h05 €35–120 Portugal Ryanair / Transavia Porto 2h40 €45–130 Croatia Ryanair flight Zagreb 1h50 €35–90 Slovakia Ryanair flight Bratislava 1h40 €25–70 Romania Wizz Air Cluj-Napoca 2h20 €40–110 Bulgaria Ryanair / Wizz Air Sofia 2h35 €35–100 Albania Ryanair / Wizz Air Tirana 2h30 €35–110 Provide feedback on this episode.

    HPR4640: Robert A. Heinlein

    Play Episode Listen Later May 15, 2026


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

    HPR4639: NLUUG Spring Conference 2026

    Play Episode Listen Later May 14, 2026


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

    HPR4638: Simple Podcasting - Episode 3 - Analyzing and Filtering

    Play Episode Listen Later May 13, 2026


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

    HPR4637: UNIX Curio #6 - at and batch

    Play Episode Listen Later May 12, 2026


    This show has been flagged as Clean by the host. This series is dedicated to exploring little-known—and occasionally useful—trinkets lurking in the dusty corners of UNIX-like operating systems. I would imagine that most users of UNIX-like systems have heard of cron —certainly any system administrator should have. Briefly, cron is a way of running a job repeatedly based on the time and date; for example, a job could run every hour, at 5:00am every Tuesday, or the 3rd of every month. It is commonly used for administrative or maintenance tasks that should be done on a regular schedule, such as checking for software updates, rotating log files, or updating the database for the locate command. As well-known as cron is, there is a similar utility that very few seem to be aware of: at . This is the word "at", and has nothing to do with the at symbol "@". An at job is very much like a cron job, except that an at job only runs one time. A job is submitted by running at timespec 1 , where timespec is the time and date the job is to be run. The linked POSIX specification page describes acceptable formats for timespec ; some examples are " now ", " 14:00 ", " noon tomorrow ", " 14:00 + 3 months ", and " 14:00 January 19, 2038 ". The utility then waits on standard input for you to enter a set of commands to be run in the job. You end input by typing Control-D to mark the end of text. (As an alternative to typing in the job, you could instead use the "

    HPR4636: 7 seconds memory

    Play Episode Listen Later May 11, 2026


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

    HPR4635: What did I do at work today? Part 3 Section 1

    Play Episode Listen Later May 8, 2026


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

    HPR4634: Upgrade Failsause

    Play Episode Listen Later May 7, 2026


    This show has been flagged as Clean by the host. https://rufus.ie/en/ Kasa Smart Plug Mini with Energy Monitoring, Smart Home Wi-Fi Outlet Works with Alexa, Google Home & IFTTT, Wi-Fi Simple Setup, No Hub Required (KP115), White INIT STUFF Sudoers Apps apt update && apt install -y psmisc screen net-tools snapd pipx xbindkeys xbindkeys-config git nmap mono-runtime etherwake cloudflare-ddns mlocate samba # python pipx gahh su plex - pipx install python-kasa # sudo mkdir /root/PYTHONVENV/ python3 -m venv /root/PYTHONVENV/ pipx install python-kasa pipx ensurepath # update db mount -a sed 's//media//g' -i.bak /etc/updatedb.conf updatedb Contab 0 0 * * * /usr/local/bin/cloudflare-ddns --update-now 0 7 * * * /usr/local/bin/etherwake -i enp1s0 -D "d8:bb:c1:a2:2c:0b" 0 3 * * * /usr/bin/veracrypt -d 0 0 5 * * /usr/local/sbin/BSA.sh Mounts cat /etc/fstab UUID=2317187b-c592-46a7-8d8e-45c7d1eae7fc / ext4 errors=remount-ro 0 1 UUID=61A0-586A /boot/efi vfat umask=0077 0 1 UUID=db166a45-1afb-47dc-85cd-cbfcb06a9766 none swap sw 0 0 # data UUID=dbb20dc6-9487-4510-9ab1-c7bbc3014cdb /media/data ext4 defaults,nofail,noatime 0 2 # moredata UUID=5df24408-36ae-4205-8ecb-9d523dc4d820 /media/moredata ext4 defaults,nofail,noatime 0 2 # backup UUID=c1aac0d2-73ca-4d95-883f-5e1f43b5cd13 /media/backup ext4 defaults,nofail,noatime 0 2 Tunefs sudo tune2fs -c 5 -i 7d -C 1 /dev/sdd2 sudo tune2fs -c 5 -i 7d -C 1 /dev/sdb1 sudo tune2fs -c 5 -i 7d -C 1 /dev/sda1 sudo tune2fs -c 5 -i 7d -C 1 /dev/sdc1 XFCE Autologin # /etc/lightdm/lightdm.conf [Seat:*] autologin-user=plex autologin-user-timeout=0 # Enable service systemctl enable lightdm UPower ( do not run pwrstatd ) cat ./UPower/UPower.conf [UPower] EnableWattsUpPro=false NoPollBatteries=false IgnoreLid=false UsePercentageForPolicy=true PercentageLow=10 PercentageCritical=3 PercentageAction=2 TimeLow=1200 TimeCritical=300 TimeAction=120 CriticalPowerAction=HybridSleep PLEX RESTORE/BACKUP /home/plex/Library /media/moredata/_PLEX/usr/lib/plexmediaserver/ Backup ? https://github.com/sinicide/ansible-vm/blob/master/roles/plex/files/pms-backup.sh Autostart Plex /home/plex/.config/autostart# cat PLEX_STARTUP.desktop [Desktop Entry] Encoding=UTF-8 Version=0.9.4 Type=Application Name=KODI_STARTUP Comment=KODI_STARTUP Exec=/home/plex/.local/bin/Plex.sh OnlyShowIn=XFCE; StartupNotify=false Terminal=false Hidden=false RunHook=0 OMBI Sabnsbd+ IDK ... ?!!?!?!? 251 pipx install git+https://github.com/sabnzbd/sabnzbd.git 252 pipx install sabnzbd 253 pipx inject sabnzbd feedparser configobj cherrypy portend chardet cheetah3 puremagic guessit babelfish tmdbsimple 254 pipx install sabnzbd 255 python3 -m venv venv 256 source venv/bin/activate 257 pip install -r requirements.txt 258 cat > ~/sabnzbd/sabnzbd-wrapper.sh ~/sabnzbd/sabnzbd-wrapper.sh

    HPR4633: Ham Radio Licence

    Play Episode Listen Later May 6, 2026


    This show has been flagged as Clean by the host. "The Foundation licence is your gateway to the world of amateur radio The course and exam that leads to the licence provides you with an exciting introduction to the hobby while ensuring you can operate safely and without causing issues to other radio users. The licence entitles you to a unique call sign which you use to identify yourself when transmitting. Foundation licences are issued by Ofcom, the UK's communications regulator." From: https://rsgb.org/main/clubs-training/for-students/foundation/ Provide feedback on this episode.

    HPR4632: Hackerpublic Radio New Years Eve Show 2026 Episode 6

    Play Episode Listen Later May 5, 2026


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

    HPR4631: HPR Community News for April 2026

    Play Episode Listen Later May 4, 2026


    This show has been flagged as Explicit by the host. New hosts There were no new hosts this month. Last Month's Shows Id Day Date Title Host 4608 Wed 2026-04-01 Simple Podcasting - Episode 1 - Preparation and Recording Whiskeyjack 4609 Thu 2026-04-02 Proper Date Format Ahuka 4610 Fri 2026-04-03 Playing Civilization V, Part 10 Ahuka 4611 Mon 2026-04-06 HPR Community News for March 2026 HPR Volunteers 4612 Tue 2026-04-07 Hackerpublic Radio New Years Eve Show 2026 Episode 4 Honkeymagoo 4613 Wed 2026-04-08 Adding functionality to an Odoo installation Jeroen Baten 4614 Thu 2026-04-09 Dauug|18: Faster Than a '286, but Inspectable Like a Soroban Marc W. Abel 4615 Fri 2026-04-10 Clicking through an audit Lee 4616 Mon 2026-04-13 Thoughts about age control and further suggestions Trollercoaster 4617 Tue 2026-04-14 UNIX Curio #4 - Archiving Files Vance 4618 Wed 2026-04-15 Simple Podcasting - Episode 2 - Basic Filtering Whiskeyjack 4619 Thu 2026-04-16 HPR Beer Garden 12 - Baltic Porter Kevie 4620 Fri 2026-04-17 The Second Doctor, Part 1 Ahuka 4621 Mon 2026-04-20 Android volume control help operat0r 4622 Tue 2026-04-21 Hackerpublic Radio New Years Eve Show 2026 Episode 5 Honkeymagoo 4623 Wed 2026-04-22 A brief infodump on the Broadcast Address and Routing Jon The Nice Guy 4624 Thu 2026-04-23 Cheap Yellow Display Project Part 7: GUI Trying a Simple Hello World Trey 4625 Fri 2026-04-24 Site Specific Browsers Lee 4626 Mon 2026-04-27 Cable Management / PC Speakers operat0r 4627 Tue 2026-04-28 UNIX Curio #5 - Faster, Pussycat! Kill! Kill! Vance 4628 Wed 2026-04-29 Nuclear Power Technology Follow Up Whiskeyjack 4629 Thu 2026-04-30 What did I do at work today? Part 2 Lee Comments this month Past shows hpr4424 (2025-07-17) "How I use Newsboat for Podcasts and Reddit" by Archer72. Ken Fallon said: "Summary of findings" (2026-04-05 14:09:24) Archer72 said: "Not fixed from أحمد المحمودي" (2026-04-25 11:02:26) hpr4569 (2026-02-05) "Kiosk with guest mode on Linux" by Klaatu. 0xf10e said: "Preconfiguring browsers profiles? and re-replies ;)" (2026-04-17 09:56:49) hpr4585 (2026-02-27) "mpv util scripts" by candycanearter. candycanearter07 said: "perpetually updated script(s)" (2026-04-14 20:41:28) hpr4596 (2026-03-16) "Adding voice-over audio track created using text to speech on the movie subtitles" by Ken Fallon. Windigo said: "Great usability win" (2026-04-24 19:33:03) hpr4600 (2026-03-20) "The First Doctor, Part 5" by Ahuka. Kevin O'Brien said: "Maybe I will" (2026-04-12 16:16:00) hpr4603 (2026-03-25) "On the Erosion of Freedom in Open Source Software" by HopperMCS. Trollercoaster said: "Hopper did time traveling!" (2026-04-09 05:46:52) hpr4605 (2026-03-27) "Lee locks down his wifey poo" by Elsbeth. Lee said: "Quotation" (2026-04-05 15:59:54) Paulj said: "Thanks!" (2026-04-06 16:44:28) hpr4606 (2026-03-30) "My Nerdy Childhood: From Floppy Disks to Dial-Up Dreams" by Trollercoaster. Trollercoaster said: "Damn you Nerdy Nostaliga!" (2026-04-06 15:28:34) This month's shows hpr4608 (2026-04-01) "Simple Podcasting - Episode 1 - Preparation and Recording" by Whiskeyjack. Archer72 said: "Listening ahead" (2026-04-01 10:06:46) Whiskeyjack said: "Reply to Archer72 on HPR4608" (2026-04-01 12:27:46) Reto said: "It reminds me about Solocast" (2026-04-03 07:49:58) Whiskeyjack said: "Response to Reto comment on HPR4608" (2026-04-04 18:19:25) Whiskeyjack said: "Further response to Reto comment on HPR4608" (2026-04-04 22:21:38) hpr4609 (2026-04-02) "Proper Date Format" by Ahuka. Jim DeVore said: "It is the only proper date format" (2026-04-04 14:19:15) candycanearter07 said: "sensical date format" (2026-04-06 09:37:47) hpr4611 (2026-04-06) "HPR Community News for March 2026" by HPR Volunteers. candycanearter07 said: "misattributed comment" (2026-04-06 03:24:30) Ken Fallon said: "Fixed" (2026-04-06 13:50:17) hpr4614 (2026-04-09) "Dauug|18: Faster Than a '286, but Inspectable Like a Soroban" by Marc W. Abel. Jim DeVore said: "Is this the best approach for privacy?" (2026-04-12 03:15:44) candycanearter07 said: "interesting!" (2026-04-13 16:43:22) hpr4616 (2026-04-13) "Thoughts about age control and further suggestions" by Trollercoaster. Antoine said: "'Jus'do the age verification'" (2026-04-20 01:37:33) candycanearter07 said: "good strategy" (2026-04-22 13:24:48) Trollercoaster said: "Looking forward at next steps" (2026-04-25 15:37:22) Antoine said: "Our State. The Invitation." (2026-04-26 23:55:45) hpr4618 (2026-04-15) "Simple Podcasting - Episode 2 - Basic Filtering" by Whiskeyjack. Antoine said: "Applying filters - exp. with declicking - Compression?" (2026-04-20 12:50:09) Whiskeyjack said: "Response to Antoine on de-essing in HPR 4618" (2026-04-22 15:59:57) Vance said: "Click removal" (2026-04-25 14:31:40) Whiskeyjack said: "Reply to Vance in HPR4618 - Click Removal" (2026-04-27 00:48:11) Vance said: "To Whiskeyjack - Click Removal" (2026-04-28 00:43:11) Whiskeyjack said: "Reply to Vance on Click Removal in HPR4618" (2026-04-28 17:16:54) hpr4619 (2026-04-16) "HPR Beer Garden 12 - Baltic Porter" by Kevie. Gan Ainm said: "Störtebeker - again" (2026-04-17 16:37:29) hpr4621 (2026-04-20) "Android volume control help" by operat0r. candycanearter07 said: "intended double entendre?" (2026-04-21 18:58:54) hpr4624 (2026-04-23) "Cheap Yellow Display Project Part 7: GUI Trying a Simple Hello World " by Trey. Ken Fallon said: "Great to hear your success" (2026-04-23 08:36:28) hpr4625 (2026-04-24) "Site Specific Browsers" by Lee. candycanearter07 said: "electron charged opinion" (2026-04-24 03:38:13) hpr4627 (2026-04-28) "UNIX Curio #5 - Faster, Pussycat! Kill! Kill!" by Vance. Antoine said: "kill and killall" (2026-04-29 11:57:27) candycanearter07 said: "killer episode" (2026-04-29 15:14:31) Vance said: "Glad you enjoyed it" (2026-04-29 20:58:44) candycanearter07 said: "Re: Glad you enjoyed it" (2026-04-30 18:58:50) Mailing List discussions Policy decisions surrounding HPR are taken by the community as a whole. This discussion takes place on the Mailing List which is open to all HPR listeners and contributors. The discussions are open and available on the HPR server under Mailman. The threaded discussions this month can be found here: https://lists.hackerpublicradio.com/pipermail/hpr/2026-April/thread.html Events Calendar With the kind permission of LWN.net we are linking to The LWN.net Community Calendar. Quoting the site: This is the LWN.net community event calendar, where we track events of interest to people using and developing Linux and free software. Clicking on individual events will take you to the appropriate web page. Provide feedback on this episode.

    HPR4630: Playing Civilization V, Part 11

    Play Episode Listen Later May 1, 2026


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

    HPR4629: What did I do at work today? Part 2

    Play Episode Listen Later Apr 30, 2026


    This show has been flagged as Clean by the host. This show is about developing features for a web application. The technology used is ASP.Net WebForms , the programming language is Visual Basic .Net along with HTML and CSS and the development environment is Windows 11 running under a virtual machine in Linux, with Visual Studio and SQL Server as the database. Other tools used are Git , Github , Joplin and Dropbox , Google Gemini and a tool called Beyond Compare . ResourceRowControl.ascx.vb Public WriteOnly Property ResourceObject As Resource Set(obj As Resource) If obj IsNot Nothing Then HiddenResourceID.Value = CStr(obj.ResourceID) HiddenResourceTypeID.Value = CStr(obj.ResourceTypeID) Resource.Text = obj.ResourceName Type.Text = obj.ResourceTypeName Available.Checked = obj.ResourceAvailable End If End Set End Property Private Sub Available_CheckedChanged(sender As Object, e As EventArgs) Handles Available.CheckedChanged Dim objResource As New Resource With objResource .ResourceID = ResourceID .ResourceName = Resource.Text .ResourceTypeID = ResourceTypeID .ResourceAvailable = Available.Checked End With objResource.Add() End Sub ResourceRowControl.ascx Provide feedback on this episode.

    HPR4628: Nuclear Power Technology Follow Up

    Play Episode Listen Later Apr 29, 2026


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

    HPR4627: UNIX Curio #5 - Faster, Pussycat! Kill! Kill!

    Play Episode Listen Later Apr 28, 2026


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

    HPR4626: Cable Management / PC Speakers

    Play Episode Listen Later Apr 27, 2026


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

    HPR4620: The Second Doctor, Part 1

    Play Episode Listen Later Apr 17, 2026


    This show has been flagged as Clean by the host. This starts our look at the stories of the Second Doctor, portrayed by Patrick Troughton, during the 1960s. The Second Doctor, Part 1 Patrick Troughton is the reason we are still talking about Doctor Who all these years later. He took 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 too 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. To take the place of the missing episodes we have reconstructions using telesnaps (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 . Troughton took over in the third story of Season 4, which aired in late 1966. Power of the Daleks 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 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 YouTube. The Highlanders 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. This is another story where all of the episodes are missing, though there are reconstructions available. The Underwater Menace 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. 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 Lost in Space and Land of the Giants. This story is missing two of the 4 episodes, but reconstructions exist for the two missing episodes. The Moonbase 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. 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. The Macra Terror 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. 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 YouTube. The Faceless Ones 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. 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 YouTube. Links: https://en.wikipedia.org/wiki/Patrick_Troughton https://en.wikipedia.org/wiki/The_Power_of_the_Daleks https://www.youtube.com/watch?v=gX1DN7yHneA https://en.wikipedia.org/wiki/The_Highlanders_(Doctor_Who) https://en.wikipedia.org/wiki/The_Underwater_Menace https://en.wikipedia.org/wiki/The_Moonbase https://en.wikipedia.org/wiki/The_Macra_Terror https://www.youtube.com/watch?v=unipaGm8Pbo https://en.wikipedia.org/wiki/The_Faceless_Ones https://www.youtube.com/watch?v=ovSHAcu7g4A https://www.palain.com/science-fiction/intro-to-doctor-who/the-second-doctor-part-1/ Provide feedback on this episode.

    HPR4619: HPR Beer Garden 12 - Baltic Porter

    Play Episode Listen Later Apr 16, 2026


    This show has been flagged as Clean by the host. Dave and Kevie continue the HPR Beer Garden series with a look at a less known (and maybe a hidden gem to many) style of beer that originates from the north-eastern area of Europe: the Baltic Porter. Kevie Samples Öö from the Pojala Brewery in Estonia, whilst Dave samples Wave Tactics from another Estonian Brewery: Pühaste . Connect with the guys on Untappd: Dave Kevie The intro sounds for the show are used from: https://freesound.org/people/mixtus/sounds/329806/ https://freesound.org/people/j1987/sounds/123003/ https://freesound.org/people/greatsoundstube/sounds/628437/ Provide feedback on this episode.

    HPR4618: Simple Podcasting - Episode 2 - Basic Filtering

    Play Episode Listen Later Apr 15, 2026


    This show has been flagged as Clean by the host. Basic-Filtering 01 Introduction This is the second episode in a four part series on a simple way to create your own HPR podcast episode. 02 This episode will cover the following topics: Basic filtering.. De-essing to improve voice quality. And normalizing to adjust audio levels for easier reviewing. 03 Filtering is removing unwanted noise from an audio signal. There are several ways of doing this. It is possible to do this with Audacity, but I don't know how so I won't try to describe that method. It is possible however to filter using command line tools such as FFMPEG and Sox. 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. 04 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. In this episode however I will discuss basic filtering that you can apply routinely without doing any analysis beforehand. 05 Sources of Noise A question that you may have is "why is there noise in the recording?" There are many sources of undesirable noise. 06 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. 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. 07 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. Good quality audio hardware may filter all or most of this out, but it is present in a lot of consumer grade hardware. 08 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. 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. 09 Audio Frequency Range Let's start with some basics. A good quality stereo of the type you may have at home is typically rated to perform between 20 Hz and 20 kHz. This is the widest possible range that we need to consider. In reality, this is a far wider range than is needed for a voice oriented podcast. It is also well beyond the range of the hardware that many of your listeners will be using to listen to the podcast. 10 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. 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. 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. 11 You can get a good idea of what different frequencies sound like by generating sine waves using either FFMPEG or Sox. Here's an example of generating a 1 kHz sine wave using FFMPEG. A copy of this will be in the show notes. ffmpeg -f lavfi -i "sine=frequency=1000:sample_rate=44100:duration=3" 01000hz.flac 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 12 Here's the same using Sox. sox -n -r 44100 -b 16 01000hz.flac synth 3 sine 1000 The -b 16 specifies using 16 bit audio to encode it, and the "sine 1000" element specifies the frequency in hertz. 13 You can test this out at different frequencies to get a feel for how your hardware responds. 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. 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. 14 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. 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. 15 Simple Filters We will now create some simple filters using the same command line software mentioned in a previous episode in this series. These are FFMPEG and Sox. 16 First let's define some terminology. A high pass filter passes through frequencies which fall above a certain threshold and blocks frequencies which are below that frequency. A low pass filter passes through frequencies which fall below a certain threshold and blocks frequencies which are above that frequency. 17 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. 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. 18 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. The sharpness of this cut off can be adjusted, but we won't be fiddling with it in that sort of detail. 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. 19 Here is a typical high pass filter using ffmpeg which filters out frequencies below 80 hertz. # High pass filter. ffmpeg -i inputfile.flac -af "highpass=f=80" outputfile.flac Here is a typical low pass filter using ffmpeg which filters out frequencies above 12 kHz. # Low pass filter. ffmpeg -i inputfile.flac -af "lowpass=f=12000" outputfile.flac 20 Here is a filter which combines the two. # Combined filters. ffmpeg -i inputfile.flac -af "highpass=f=80, lowpass=f=12000" outputfile.flac And here is the same thing using Sox. sox inputfile.flac outputfile.flac highpass 80 lowpass 12000 21 Filtering Out Specific Frequencies 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. 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. 22 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. That by the way includes you not being able to hear it either when you review your recording before uploading it. 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. That suggests that we ought to do something about it just in case. 23 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. 24 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. 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. 25 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. 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. 26 Here's the FFMPEG version. # Using ffmpeg 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 27 This as the following elements A high pass filter at 80 Hz, A low pass filter at 12 kHz, A band reject filter centred at 60 Hz and with a width of 20 hertz. A similar band reject filter centred at 50 Hz. 28 Here's the Sox version. # Sox version. sox input.flac output.flac highpass 80 lowpass 12000 bandreject 60 20 bandreject 50 20 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. 29 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. 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. 30 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. -------------------- 31 De-Essing An additional type of filtering is "de-essing". When recording audio, the microphone or environment may result in "s", "sh", "ch" and possibly other sounds to be exaggerated. These are all higher frequency elements of voice recordings. "De-essing" attempts to soften these sounds by selectively reducing the volume on the frequency band which contains these sounds. 32 Software Filters De-essing is accomplished via software filters. FFMPEG and Sox both have de-essing filters. For FFMPEG, the de-essing filter is built in. 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. 33 Do You Need De-Essing? The first thing to make clear however, is that you may not need to worry about this. If you think the audio sounds just fine the way it is, you don't need to do any de-essing to it. 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. I didn't know that a thing called de-essing even existed before I started doing the research to make this podcast episode. However, at this point we are doing things more for fun than out of necessity, so I'll describe it anyway. 34 De-Essing with FFMPEG De-essing with FFMPEG is relatively simple. The filter is built in, and there are just three values to adjust. On the other hand, it is not really obvious what these values mean in practical terms. 35 I will however warn you to not rely on the AI search results from Google to understand this feature. 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. I found that the only useful information came from FFMPEG's own web site, and from examples written by actual humans. 36 I then experimented with different values to see what effects they had. 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. I will provide the parameters that I found useful for me, and I suspect they would probably work for you as well. 37 Here is a typical de-essing command. 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 38 The important arguments are i, m, and f. i is intensity for triggering de-essing. The allowed range is 0 to 1. The default is 0. By experimentation I found that "0" means no de-essing, and "1" is maximum de-essing. I found that setting it to "0.5" gave satisfactory results. 39 m is the amount of "ducking on the treble part of sound". The allowed range is 0 to 1. The default is 0.5. By experimentation I found that "1" means no de-essing, and "0" is maximum de-essing. I found that setting it to "0.5" gave satisfactory results. 40 f is how much of the original frequency content to keep when de-essing. The allowed range is 0 to 1. The default is 0.5. By experimentation I found that "1" means no de-essing, and "0" is maximum de-essing. I found that setting it to "0.5" gave satisfactory results. 41 Setting "m" or "f" too high can result in a distorted output as too much of the original sound is cut out. The defaults of 0.5 in both cases gave audible improvements without noticeable distortion. 42 There is an additional parameter called "s". This controls whether the de-essing filter does anything. Setting it to "o" is the normal and default mode. 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. 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. 43 There are two other elements of the command which were included but are not strictly speaking part of the de-essing filter itself . These are " -b:a 336k" and "-sample_fmt s16". " -b:a 336k" sets the audio bit rate to 336k. "-sample_fmt s16" sets the audio sample format to 16 bit. I found it necessary to specify these in order to prevent the de-essing filter from changing formats. They are not part of de-essing however. 44 De-Essing with Sox You can also de-ess with Sox. However, this is more complex for several reasons. 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. The actual plug in may vary depending on what operating system you are using. The other reason is that it deals with the issue in fairly low level parameters, and so is a bit more complex to describe. 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. 45 Sox De-Essing Overview To de-ess with Sox, you first need to install the plug-ins. On Linux, these will be the TAP ladspa plug-ins. TAP stands for "Tom's Audio Processing" plugins. ladspa stands for "Linux Audio Developer's Simple Plugin API" To install the TAP plugins on Ubuntu, using the following command. sudo apt install tap-plugins The plug-in we need is called "tap_deesser.so". 46 In order to use the plug-ins, you need to set the path as a variable. On Ubuntu this is. export LADSPA_PATH="/usr/lib/ladspa:" I put the above in the shell script which calls the Sox de-esser. 47 To use the Sox de-esser, you do the following: sox inputfile.flac outputfile.flac ladspa tap_deesser tap_deesser -30 4500 48 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. -30 is the threshold in dB at which to start to apply the filter. 4500 is the frequency in Hz that the filter centres around. 49 The TAP web page has a table of recommended frequencies. These are: Male 'ess' 4500 Hz Male 'ssh' 3400 Hz Female 'ess' 6800 Hz Female 'ssh' 5100 Hz You will need to do some trial and error to find what works best for you. 50 De-Essing Summary De-essing can be used to make minor improvements to voice quality by reducing certain harsh sounds which may be exaggerated by a microphone. If it sounds like a lot of work you can probably simply not bother with it and not really miss it. -------------------- 51 Normalizing Normalizing a signal means adjusting it to meet a specified level. For audio it means adjusting the volume or sound level. You may wish to normalize the audio of your recording to make it easier to listen to when reviewing it. The copy that you send to HPR however should be the original un-normalized version. 52 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. In both cases the measured value is a negative number, with numbers smaller in magnitude being louder. Smaller in magnitude means closer to zero. 53 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. In my case full volume on the audio system input produced a sound level which was much lower than a typical HPR episode. However, the volume level in the flac file itself can be adjusted using ffmpeg. 54 Measuring Volume Level First we need to see what the volume level is for a typical HPR podcast. To do this we use ffmpeg. In this example we are using an episode named "hprpodcast.mp3". Pick an episode which you think is suitable and copy the file to the working directory. 55 In the following script we use a volumedetect filter. 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. We then grep for the string "I:". This will have the average volume level in "loudness units" (LUFS). Then we extract the number, giving us a target LUFS level. 56 ffmpeg -i hprpodcast.mp3 -filter:a ebur128=framelog=quiet -f null /dev/null 2>&1 | grep "I:" | cut -d: -f2 57 Unfortunately I can't find a Sox feature which handles EBU loudness, so we need to work in dB instead. Here is the sox version. However, note that this may not work on mp3s if sox mp3 handing is not installed. 58 sox hprpodcast.mp3 -n stats 2>&1 | grep "RMS lev dB" | rev | cut -d" " -f1 | rev 59 You can use either of these for measuring the volume or sound level of an audio file. 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. -------------------- 60 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. 61 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. 62 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. -------------------- 63 The nice thing about using the EBU filter in FFMPEG is that this is very simple. Here is the FFMPEG version. 64 ffmpeg -i inputfile.flac -af loudnorm=I=-17:TP=-2.0:LRA=7.0 -ar 44.1k outputfile.flac 65 "I" is the LUFS target. LRA is the loudness range target. The default value is 7.0 so I used that. TP sets the maximum true peak. The default value is -2.0. so I used that. -------------------- 66 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. 67 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. Bash by itself normally just does integer math. However, we would like to have at least one decimal point of resolution to work with. The simple solution is to do this calculation using bc, the shell arbitrary precision calculator. 68 Then take this new value and use it in a "volume" filter. The number which we give sox is the amount to increase or decrease the volume by. Sox will then output a new file with the new volume level. 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 This helps when listening to the file for any problems before you upload it. 69 Rather than reading 5 lines of complex shell script to you, I will put a copy of it in the show notes. level=$( sox $inputfile -n stats 2>&1 | grep "RMS lev dB" ) leveldb=$( echo "$level" | rev | cut -d" " -f1 | rev ) targetdb="-18.9" volumechange=$(echo "scale=2 ; $targetdb - $leveldb" | bc ) sox $inputfile $outputname gain "$volumechange" -------------------- 70 Normalization should be the last thing you do to the file. It should be done after any noise filtering, such as low pass, high pass, bandreject, etc. If you normalize first, you will be amplifying the noise as well as the desired signal. 71 The exact normalization level used for review purposes doesn't matter, as HPR will apply their own later. 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. 72 When you send your file to HPR, send the original *unnormalized* version, not the normalized version. When you normalize an audio signal, if you are not careful you may introduce things which cause problems with later additional processing. 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. -------------------- 73 If at this point you are happy with the recording as is, you are ready to send the *unnormalized* version to HPR. The scripts to implement the features discussed in this episode will be in the show notes. 74 Conclusion In this episode we covered basic filtering using ffmpeg and sox. We discussed what noise was and some of the origins of noise. We talked about the audio frequency range and the limitations of common hardware used to record and listen to podcasts. 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. 75 We discussed specific filters to eliminate 50 and 60 Hz electrical power noise. We talked about de-essing, what it was, why you may wish to use it, and some basic de-essing filter implementation details. We discussed normalizing, what it is, why you may wish to use it, and how it relates to podcasting conventions. 76 In the next episode we will discuss analyzing audio signals to help find the sources of noise problems. We will also discuss creating filters to eliminate any problems that we found. 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. 77 This has been the second episode in a four part series on simple podcasting. -------------------- EBU R128 Loudness Measurement using FFMPEG #!/bin/bash echo "EBU r128 loudness measurement using FFMPEG" for inputfile in *.flac *.mp3 ; do level=$( ffmpeg -i $inputfile -filter:a ebur128=framelog=quiet -f null /dev/null 2>&1 | grep "I:" | cut -d: -f2 ) echo $inputfile $level done -------------------- DB Sound Level Measurement using Sox #!/bin/bash # Sox version. May not work for mp3 if an mp3 format handling is not installed. echo "dB sound level measurement using Sox." for inputfile in *.flac *.mp3 ; do level=$( sox $inputfile -n stats 2>&1 | grep "RMS lev dB" ) leveldb=$( echo "$level" | rev | cut -d" " -f1 | rev ) echo $inputfile $leveldb done -------------------- EBU R128 Loudness Normalization using FFMPEG #!/bin/bash # Adjust the volume to a desired level. for inputfile in *.flac ; do j=$( basename $inputfile ".flac" ) outputname="$j""-normff.flac" ffmpeg -i $inputfile -af loudnorm=I=-17:TP=-2.0:LRA=4.0 -ar 44.1k $outputname echo $outputname done -------------------- DB Sound Level Normalization using Sox #!/bin/bash # Adjust the volume to a desired level. for inputfile in *.flac ; do j=$( basename $inputfile ".flac" ) outputname="$j""-normff.flac" # Measure the volume level and extract the mean volume. level=$( sox $inputfile -n stats 2>&1 | grep "RMS lev dB" ) leveldb=$( echo "$level" | rev | cut -d" " -f1 | rev ) # Calculate the difference in dB desired. Scale specifies the number of decimal places. # Target db is the volume measured on hpr4506 (UCSD-P-System). targetdb="-18.9" volumechange=$(echo "scale=2 ; $targetdb - $leveldb" | bc ) echo "Using sox: File: $inputfile Original level: $leveldb Change by: $volumechange" # Adjust the volume. sox $inputfile $outputname gain "$volumechange" done -------------------- Full processing pipeline for making simple podcasts using FFMPEG #!/bin/bash #!/bin/bash # Full processing pipeline for making simple podcasts. # ====================================================================== # Concatenate multiple flac files into a single flac file. # This is used to combine podcast recorded segments into a single # flac file for uploading to HPR. concataudio () { outputname="$1" # First create the list file. printf "file '%s'n" [0-9][0-9].flac > podseglist.txt # Now concatenate them ffmpeg -f concat -safe 0 -i podseglist.txt "$outputname" rm podseglist.txt } # ====================================================================== # Basic filters. filter () { inputfile=$1 outputname=$2 # Using ffmpeg. # The high and low pass filters. hlpfil="highpass=f=80, lowpass=f=12000" # Band reject filters filter for 60Hz and another for 50Hz. linefil="bandreject=f=60:width_type=h:w=20, bandreject=f=50:width_type=h:w=20" # Using ffmpeg ffmpeg -i $inputfile -af "$hlpfil, $linefil" $outputname } # ====================================================================== # De-Essing. deessing () { inputfile=$1 outputname=$2 option=$3 # De-essing filter. ffmpeg -i $inputfile -filter_complex "deesser=i=0.5:m=0.5:f=0.5:s=$option" -b:a 336k -sample_fmt s16 $outputname } # ====================================================================== # Normalizing the audio to EBU R128 standard for review using ffmpeg. normffmpeg () { inputfile=$1 outputname=$2 # Normalize to EBU R128 standard. ffmpeg -i $inputfile -af loudnorm=I=-17:TP=-2.0:LRA=4.0 -ar 44.1k $outputname } # ====================================================================== # Output an MP3 version to help with reviewing. mp3convert () { inputfile=$1 # Get the name of the file and then create the output file name. j=$( basename $inputfile ".flac" ) outputname="$j"".mp3" # Convert to MP3. ffmpeg -i $inputfile $outputname } # ====================================================================== # Concatenate the separate audio files. concataudio fullpod-unfiltered.flac # Basic filtering. filter fullpod-unfiltered.flac filtered.flac # De-essing. This is the version to send for publishing. # The third argument should be "o" for de-essing, or "i" for pass through without de-essing. deessing filtered.flac fullpod.flac o # Normalized for review. normffmpeg fullpod.flac fullpod-norm.flac # Output an MP3 copy for review. mp3convert fullpod-norm.flac -------------------- -------------------- Provide feedback on this episode.

    HPR4617: UNIX Curio #4 - Archiving Files

    Play Episode Listen Later Apr 14, 2026


    This show has been flagged as Clean by the host. This series is dedicated to exploring little-known—and occasionally useful—trinkets lurking in the dusty corners of UNIX-like operating systems. When you think about creating and managing archives on a UNIX system, tar is probably the utility that comes to mind. But this was not the first archiving program; ar was in First Edition UNIX 1 and cpio also pre-dates it, sort of 2 . According to the NetBSD manual page, cpio was developed within AT&T before tar , but did not get widely released until System III UNIX after tar was already well known from the earlier release of Seventh Edition UNIX (a.k.a. Version 7). You might think that ar and cpio are old and irrelevant these days, but these formats do live on. Each Debian package file 3 is an ar archive which in turn contains two tar files. On Red Hat, Fedora, SUSE, and some other distributions, each .rpm package file 4 contains a cpio payload. So these may very well still be in use on your modern Linux system. But let's get back to the subject of what you might want to use to create archives today. The tar 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 tar , however, is that it has not kept a consistent file format. Also, different implementations have used differing syntax at times. There are excellent reasons for the file format changing 5 . The names people give files have gotten longer over time, and the original Seventh Edition tar 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. As a result, the tar format had to evolve over the years. One important version was the ustar format, created for the 1988 POSIX standard. The POSIX committee wanted to try standardizing both the file format and syntax for the tar command. While the ustar 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 tar utility and came up with a new format and utility, which is our actual UNIX Curio for this episode: pax 6 . Since the pax 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 tar implementations had been reluctant to change away from their historical option syntax to the standard. The pax utility was also an attempt to avoid taking sides between those who advocated for tar and fans of cpio . The pax file format was an extension of ustar 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 tar that could handle the ustar format should still be able to process pax archives, but might not know what to do with the extra attributes. GNU tar developed its current archive format 7 alongside the standardization of the ustar format. The GNU format was based on an early draft which later underwent incompatible changes, so the two unfortunately are not interchangable. Unlike ustar , the GNU format has no limits on the size of files or the length of their names. In addition to its own format, GNU tar is able to detect and correctly process both ustar and pax 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 tar will automatically output the pax format instead (called "posix" in documentation). However, it still uses the GNU format by default, though the documentation has been threatening to move to the POSIX format for at least 20 years 8 . The good news is that the ustar , pax , GNU tar , and Seventh Edition tar formats are well documented and utilities across many UNIX-like systems 2,7,9,10,11 are able to handle these, depending on which formats existed when the utility was developed. While your system may not have pax itself installed, there are other archiving utilities that can read the file format, including GNU tar . (Somewhat amusingly, Debian and some other Free Software operating systems package a pax utility developed by MirBSD 12 which largely follows the POSIX-specified interface, but doesn't support reading or writing archives in pax format!) Look at the manual page for the tar , cpio , or pax utilities on your system to see if they can handle pax archives. Perhaps one aspect that has worked in favor of tar 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 after 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. So which format should you use when creating an archive? Unfortunately, there is no single answer that applies in all circumstances. The pax 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 tar format (often called "v7") is widely supported, including by older systems, but has limitations in what it can contain as described earlier. Moving beyond the UNIX world, things get even more complicated. Apple's macOS, with its FreeBSD underpinnings, easily handles tar 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. PKZIP 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 ISO/IEC standard for .zip 13 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. Windows' File Explorer, starting with Windows XP, can natively extract .zip files 14 . The Info-ZIP program 15 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 unzip 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 Hacker Public Radio episode 4557 16 , .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. While pax 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 pax interface, preferring to stick with the tar utility on the command line, but usually have good support for archive files in the pax 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. References: Archive (library) file format https://man.cat-v.org/unix-1st/5/archive NetBSD 10.0 cpio manual page https://man.netbsd.org/NetBSD-10.0/cpio.1 Debian binary package format https://manpages.debian.org/trixie/dpkg-dev/deb.5.en.html RPM V6 Package format https://rpm.org/docs/6.0.x/manual/format_v6.html NetBSD 10.0 libarchive-formats manual page https://man.netbsd.org/NetBSD-10.0/libarchive-formats.5 Pax specification https://pubs.opengroup.org/onlinepubs/009695399/utilities/pax.html GNU tar manual https://www.gnu.org/software/tar/manual/tar.html GNU tar manual for version 1.15.90 https://web.cvs.savannah.gnu.org/viewvc/*checkout*/tar/tar/manual/tar.html?revision=1.3 FreeBSD 15.0 libarchive-formats manual page https://man.freebsd.org/cgi/man.cgi?query=libarchive-formats&sektion=5&apropos=0&manpath=FreeBSD+15.0-RELEASE+and+Ports OpenBSD 7.8 tar manual page https://man.openbsd.org/OpenBSD-7.8/tar HP-UX Reference (11i v3 07/02) - 1 User Commands N-Z (vol 2) https://support.hpe.com/hpesc/public/docDisplay?docId=c01922474&docLocale=en_US MirBSD pax(1) manual page http://www.mirbsd.org/htman/i386/man1/pax.htm#Sh.STANDARDS ISO/IEC 21320-1:2015 Information technology - Document Container File Part 1: Core https://www.iso.org/standard/60101.html Mastering File Compression on Windows https://windowsforum.com/threads/mastering-file-compression-on-windows-how-to-zip-and-unzip-files-effortlessly.369235/ About Info-ZIP https://infozip.sourceforge.net/ HPR4557::Why I prefer tar to zip https://hackerpublicradio.org/eps/hpr4557/index.html Provide feedback on this episode.

    HPR4616: Thoughts about age control and further suggestions

    Play Episode Listen Later Apr 13, 2026


    This show has been flagged as Explicit by the host. HPR EXCLUSIVE: THE INTERVIEW THAT WILL SAVE CIVILIZATION (OR AT LEAST YOUR KITCHEN DRAWER) Hopper sits down with the legendary Trollercoaster for a completely serious policy discussion with absolutely zero sarcasm whatsoever 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? WELL, WORRY NO MORE. In this landmark interview, visionary tech policy thinker Trollercoaster lays out the roadmap to a safer tomorrow — one age-verified gunshot wound at a time. Topics covered include: System 76's courageous capitulation — actually a 5D chess move to manufacture the next generation of hackers by making Linux mildly annoying again Two-factor authentication for firearms — SMS-based triggers considered, reluctantly rejected (reception is bad at most crime scenes) GPS injections at birth — like circumcision, but for helicopter parents. Kids won't remember. Probably. Kitchen-as-a-Service (KaaS™) — powered by Microsoft, mandated by your government, billed monthly, support tickets routed to Bangalore Biannual maturity exams — because some people's brains start "deteriorating" and they end up making sarcastic podcasts that lawmakers might accidentally take seriously The liability framework is elegant in its simplicity: if anything bad ever happens to anyone, sue the manufacturer . Philips. IKEA. Smith & Wesson. Your kitchen. It doesn't matter. Someone made a thing, someone got hurt, somebody owes somebody lunch money. If you agree with any of this: contact your lawmakers immediately. They are waiting by the phone. If you disagree : too late, buddy. The lobbyists are already having the soup course. The lawmakers need your insights. They are, as noted, extremely narrow-minded. The comment section is open. Provide feedback on this episode.

    HPR4615: Clicking through an audit

    Play Episode Listen Later Apr 10, 2026


    This show has been flagged as Explicit by the host. ISO 27001 from Wikipedia.org: ISO/IEC 27001 is an information security standard . It specifies the requirements for establishing, implementing, maintaining and continually improving an information security management system (ISMS). Organizations with an ISMS that meet the standard's requirements can choose to have it certified by an accredited certification body following successful completion of an audit . Information security audit from Wikipedia.org: An information security audit is an audit of the level of information security 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. Factors contributing to cybersecurity fatigue Source: Adapted from Factors contributing to cybersecurity fatigue by L. J. J. S. (2024), Abertay University. Available at: https://rke.abertay.ac.uk/en/publications/factors-contributing-to-cybersecurity-fatigue/ In cloud-based environments, the push for high-security standards often leads to "cybersecurity fatigue," which creates unintended psychological strain on employees. Constant interruptions from repetitive access requests. Overload of security checks and decision fatigue. Lack of clear understanding regarding actual cybersecurity risks. Impact on Behavior Fatigue frequently leads to negative outcomes, including the bypassing of security protocols, abandonment of necessary tasks, and total disengagement from mandatory training. Key Concept The study highlights "attitudinal fatigue" (an employee's negative mindset toward security) as a major barrier to organizational resilience and compliance. Strategic Recommendations: Transition to "contextualized training" that uses relatable, real-world scenarios. Streamline security workflows to minimize disruption to daily productivity. Develop targeted interventions. National Institute of Standards and Technology 2011 Report: Information Security Continuous Monitoring (ISCM) for Federal Information Systems and Organizations (Tangentially ) related Episodes hpr3779 :: Just Because You Can Do a Thing... - Trey hpr0061 :: Punk Computing - Klattu hpr0002 :: Customization the Lost Reason - Deepgeek Provide feedback on this episode.

    HPR4614: Dauug|18: Faster Than a '286, but Inspectable Like a Soroban

    Play Episode Listen Later Apr 9, 2026


    This show has been flagged as Clean by the host. In this show, Marc Abel presents an introduction to Dauug|18, an 18-bit controller developed by The Dauug House. About the size of a postcard, Dauug|18 avoids the use of complex VLSI such as microprocessors, FPGAs, PLDs, ASICs, and DRAM. Instead, 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. 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. 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. Anticipated uses for Dauug|18 include privacy assertion, critical infrastructure, and curricula for fields relating to computer engineering. 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. More information, technical documentation, and updates on related projects like Dauug|36 can be found at https://dauug.org. Provide feedback on this episode.

    HPR4613: Adding functionality to an Odoo installation

    Play Episode Listen Later Apr 8, 2026


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

    HPR4612: Hackerpublic Radio New Years Eve Show 2026 Episode 4

    Play Episode Listen Later Apr 7, 2026


    This show has been flagged as Explicit by the host. Aldi https://www.aldi.us/ https://en.wikipedia.org/wiki/Aldi Does Aldi's Summit Diet Cola Contain Aspartame? https://www.thedailymeal.com/1465489/does-aldi-cola-contain-aspartame/ Aspartame and Other Sweeteners in Food https://en.wikipedia.org/wiki/Aspartame https://www.fda.gov/food/food-additives-petitions/aspartame-and-other-sweeteners-food https://pmc.ncbi.nlm.nih.gov/articles/PMC8227014/ Sugar: THE BITTER TRUTH https://www.youtube.com/watch?v=dBnniua6-oM How to Make Up Comebacks when Somebody Calls You Fat https://www.wikihow.com/Make-Up-Comebacks-when-Somebody-Calls-You-Fat Swimming With Men - You Calling Me Fat? https://www.youtube.com/watch?v=JbD_sk0ih0g "Weird Al" Yankovic - Fat (Official Video) https://www.youtube.com/watch?v=t2mU6USTBRE Sam's Club https://www.samsclub.com/ 3rd Rock from the Sun https://en.wikipedia.org/wiki/3rd_Rock_from_the_Sun Interstate Highway System https://en.wikipedia.org/wiki/Interstate_Highway_System History of the Interstate Highway System https://highways.dot.gov/highway-history/interstate-system/50th-anniversary/history-interstate-highway-system https://www.gbcnet.com/ushighways/history.html https://www.history.com/articles/interstate-highway-system https://www.historicushighways.com/history-of-us-highways https://vividmaps.com/evolution-interstate-highway-system/ https://www.youtube.com/watch?v=SF16uDPGi14 99% Invisible https://99percentinvisible.org/ https://en.wikipedia.org/wiki/99%25_Invisible Devhack is a Queer-focused hackerspace https://wiki.hackerspaces.org/%E2%88%95dev/hack https://devhack.net/ Beyond The Exit https://www.youtube.com/@BTE4172/videos Amtrak https://www.amtrak.com/home Palmer Raids https://en.wikipedia.org/wiki/Palmer_Raids Mumble project https://www.mumble.info/ LinuxLugCast https://linuxlugcast.com/ n scale piedmont northern boxcar https://www.worthpoint.com/worthopedia/scale-kadee-piedmont-northern-40-1840448079 N scale https://en.wikipedia.org/wiki/N_scale HO scale https://en.wikipedia.org/wiki/HO_scale Rail transport modelling scales https://en.wikipedia.org/wiki/Rail_transport_modelling_scales Navy Pier https://en.wikipedia.org/wiki/Navy_Pier https://navypier.org/ The IT Crowd https://en.wikipedia.org/wiki/The_IT_Crowd https://www.imdb.com/title/tt0487831/ A Christmas Story https://en.wikipedia.org/wiki/A_Christmas_Story Die Hard https://www.imdb.com/title/tt0095016/ https://theconversation.com/nine-reasons-why-die-hard-really-is-a-christmas-film-173801 The Fifth Element https://en.wikipedia.org/wiki/The_Fifth_Element Footloose https://en.wikipedia.org/wiki/Footloose Tom Cruise's Couch Jump https://people.com/tom-cruise-couch-jump-on-oprah-is-20-years-old-11737728 Cruise control https://en.wikipedia.org/wiki/Cruise_control Blind spot monitor https://en.wikipedia.org/wiki/Blind_spot_monitor Kenworth T680 https://www.kenworth.com/trucks/T680/ https://www.youtube.com/watch?v=Ze05NW6UJOE Knight Rider https://en.wikipedia.org/wiki/Knight_Rider_(1982_TV_series) https://en.wikipedia.org/wiki/KITT Christine (King novel) https://en.wikipedia.org/wiki/Christine_(King_novel) SWAT https://en.wikipedia.org/wiki/SWAT The Blues Brothers (film) https://en.wikipedia.org/wiki/The_Blues_Brothers_(film) https://www.imdb.com/title/tt0080455 Speed limits in the United States https://en.wikipedia.org/wiki/Speed_limits_in_the_United_States Provide feedback on this episode.

    HPR4611: HPR Community News for March 2026

    Play Episode Listen Later Apr 6, 2026


    This show has been flagged as Explicit by the host. New hosts There were no new hosts this month. Last Month's Shows Id Day Date Title Host 4586 Mon 2026-03-02 HPR Community News for February 2026 HPR Volunteers 4587 Tue 2026-03-03 UNIX Curio #1 - Shell Archives Vance 4588 Wed 2026-03-04 HPR Beer Garden 11 - Belgian Scotch Ale Kevie 4589 Thu 2026-03-05 YouTube Subscriptions 2025 #15 Ahuka 4590 Fri 2026-03-06 Playing Civilization V, Part 9 Ahuka 4591 Mon 2026-03-09 A Bit of Git Lee 4592 Tue 2026-03-10 Happy by shower # 2 Antoine 4593 Wed 2026-03-11 Nuclear Reactor Technology - Ep 8 Generation Four Reactors Whiskeyjack 4594 Thu 2026-03-12 Hackerpublic Radio New Years Eve Show 2026 Episode 2 Honkeymagoo 4595 Fri 2026-03-13 WATER WATER EVERYWHERE! operat0r 4596 Mon 2026-03-16 Adding voice-over audio track created using text to speech on the movie subtitles Ken Fallon 4597 Tue 2026-03-17 UNIX Curio #2 - fgrep Vance 4598 Wed 2026-03-18 Recording good audio using open source tools Shane - StrandedOutput 4599 Thu 2026-03-19 Women in digital and games event Dave Hingley 4600 Fri 2026-03-20 The First Doctor, Part 5 Ahuka 4601 Mon 2026-03-23 How to be a better writer enistello 4602 Tue 2026-03-24 Hackerpublic Radio New Years Eve Show 2026 Episode 3 Honkeymagoo 4603 Wed 2026-03-25 On the Erosion of Freedom in Open Source Software HopperMCS 4604 Thu 2026-03-26 Quick Tips for January 20 26 operat0r 4605 Fri 2026-03-27 Lee locks down his wifey poo Elsbeth 4606 Mon 2026-03-30 My Nerdy Childhood: From Floppy Disks to Dial-Up Dreams Trollercoaster 4607 Tue 2026-03-31 UNIX Curio #3 - basename and dirname Vance Comments this month Past shows hpr3711 (2022-10-24) "Cars" by Zen_Floater2. m0dese7en said: "Additional details on cars" (2026-03-13 16:44:12) hpr4333 (2025-03-12) "A Radically Transparent Computer Without Complex VLSI" by Marc W. Abel. Marc said: "New online home for Dauug|36 and Dauug|18" (2026-03-25 15:18:15) hpr4424 (2025-07-17) "How I use Newsboat for Podcasts and Reddit" by Archer72. أحمد المحمودي said: "Not fixed" (2026-03-31 00:54:19) hpr4509 (2025-11-13) "HPR Beer Garden 5 - Heferweisen" by Kevie. Gan Ainm said: "Hefeweizen" (2026-03-04 06:47:39) Kevie said: "Thanks Gan" (2026-03-13 15:28:45) hpr4553 (2026-01-14) "Nuclear Reactor Technology - Ep 4 Less Common Reactor Types" by Whiskeyjack. Antoine said: "Were/are the designs patented?" (2026-03-18 12:41:35) Whiskeyjack said: "Reply to Antoine" (2026-03-19 03:31:50) Antoine said: "I will" (2026-03-21 02:30:29) hpr4565 (2026-01-30) "HPR Beer Garden 9 - Barley Wine" by Kevie. Aleman said: "Beer Garden" (2026-03-06 19:25:26) hpr4571 (2026-02-09) "Data processing retrospective" by Lee. Archer72 said: "previous generation" (2026-03-03 15:44:12) hpr4573 (2026-02-11) "Nuclear Reactor Technology - Ep 6 Thorium Reactors" by Whiskeyjack. Archer72 said: "Interesting series" (2026-02-28 16:59:15) Whiskeyjack said: "Reply to Archer72" (2026-02-28 23:06:46) Clinton said: "Modern situation." (2026-03-07 11:30:14) Whiskeyjack said: "Reply to Clinton" (2026-03-07 18:42:23) hpr4574 (2026-02-12) "UNIX Curio #0 - Introduction" by Vance. murph said: "Great show, looking forward to more." (2026-03-01 19:21:46) hpr4575 (2026-02-13) "Making First Contact" by Ken Fallon. Archer72 said: "Good to hear 73's" (2026-02-28 15:51:52) hpr4576 (2026-02-16) "Responce to Lee/Elsbeth eps" by operat0r. candycanearter07 said: "relatable episode" (2026-03-10 01:39:18) hpr4577 (2026-02-17) "HPR Beer Garden 10 - Scotch Ale/Wee Heavy" by Kevie. Kevie said: "Upcoming beers" (2026-02-26 18:14:16) hpr4583 (2026-02-25) "Nuclear Reactor Technology - Ep 7 Small Modular Reactors" by Whiskeyjack. brian-in-ohio said: "good shows" (2026-03-02 21:10:12) Whiskeyjack said: "Response to brian-in-ohio for HPR4583 Small Modular Reactors" (2026-03-03 23:38:55) hpr4584 (2026-02-26) "Recording a show, and crappy audio" by Archer72. Dave Lee (thelovebug) said: "Audio quality" (2026-02-27 08:33:24) Kevin O'Brien said: "The Zoom was perfect" (2026-02-27 17:29:43) Archer72 said: "Bad mic" (2026-03-03 15:08:13) jezra said: "false advertising! " (2026-04-03 17:28:05) hpr4585 (2026-02-27) "mpv util scripts" by candycanearter. Windigo said: "mpv fanclub" (2026-02-28 01:55:28) Windigo said: "Re: mpv fanclub" (2026-03-01 05:07:24) Archer72 said: "Second in mpv fanclub" (2026-03-01 08:52:41) candycanearter07 said: "updated script" (2026-03-01 22:35:38) This month's shows hpr4586 (2026-03-02) "HPR Community News for February 2026" by HPR Volunteers. candycanearter07 said: "41:40" (2026-03-01 23:39:18) Whiskeyjack said: "HPR Commnity News discussion on audio" (2026-03-03 23:11:25) hpr4587 (2026-03-03) "UNIX Curio #1 - Shell Archives" by Vance. Archer72 said: "Continuing series" (2026-03-03 15:15:19) xmanmonk said: "uuencode/uudecode on Solaris" (2026-03-05 01:47:53) Vance said: "Thanks, and Solaris" (2026-03-07 20:10:08) Jim DeVore said: "Thanks for the trip down memory lane!" (2026-03-17 01:19:46) hpr4591 (2026-03-09) "A Bit of Git" by Lee. candycanearter07 said: "anecdotal teaching is the best kind" (2026-03-09 04:58:24) hpr4592 (2026-03-10) "Happy by shower # 2" by Antoine. candycanearter07 said: "interesting!" (2026-03-10 04:20:16) Antoine said: "Sharing (response to candycanearter07)" (2026-03-21 02:27:17) hpr4593 (2026-03-11) "Nuclear Reactor Technology - Ep 8 Generation Four Reactors" by Whiskeyjack. Jim DeVore said: "Great series!" (2026-03-17 01:13:51) Whiskeyjack said: "Response to Jim DeVore" (2026-03-17 13:46:31) hpr4596 (2026-03-16) "Adding voice-over audio track created using text to speech on the movie subtitles" by Ken Fallon. folky said: "Interesting solution, but annoying " (2026-02-05 11:54:36) Carsten said: "Amazing project" (2026-02-25 00:29:08) candycanearter07 said: "interesting!!" (2026-03-16 13:38:03) hpr4597 (2026-03-17) "UNIX Curio #2 - fgrep" by Vance. Ken Fallon said: "Time to active use" (2026-03-05 05:58:31) L'andrew said: "Nice job explaining *grep features." (2026-03-18 03:34:11) candycanearter07 said: "informative" (2026-03-18 03:52:52) Vance said: "Expressions" (2026-03-20 18:16:09) hpr4598 (2026-03-18) "Recording good audio using open source tools" by Shane - StrandedOutput. Archer72 said: "Great tips!" (2026-03-19 10:39:24) Ole Aamot said: "GarageJam 6.0.1" (2026-03-24 01:50:51) hpr4600 (2026-03-20) "The First Doctor, Part 5" by Ahuka. Kevie said: "Great series" (2026-03-21 15:22:59) Kevin O'Brien said: "I think I will" (2026-03-21 21:23:38) Archer72 said: "Great series and 2nd continuation " (2026-03-21 22:35:05) hpr4605 (2026-03-27) "Lee locks down his wifey poo" by Elsbeth. Ken Fallon said: "Congratulations" (2026-03-18 11:09:45) Elsbeth said: "Thank you!" (2026-03-27 11:10:10) Trollercoaster said: "Congrats - and now we want all the fun puns!" (2026-03-27 12:58:38) Antoine said: "=)" (2026-03-29 22:39:06) ClaudioM said: "Congratulations to You Both!" (2026-03-30 13:22:43) Paulj said: "Congratulations" (2026-04-04 19:52:01) hpr4606 (2026-03-30) "My Nerdy Childhood: From Floppy Disks to Dial-Up Dreams" by Trollercoaster. Trey said: "Trip down memory lane..." (2026-03-30 14:24:54) xmanmonk said: "Great Episode!" (2026-03-30 16:23:43) Trollercoaster said: "Back to you..." (2026-03-31 08:24:58) Trollercoaster said: "Not to janitors" (2026-03-31 08:26:06) ClaudioM said: "Nerdy Nostalgia!" (2026-03-31 17:20:34) hpr4607 (2026-03-31) "UNIX Curio #3 - basename and dirname" by Vance. xmanmonk said: "Great episode!" (2026-03-31 14:19:12) Mailing List discussions Policy decisions surrounding HPR are taken by the community as a whole. This discussion takes place on the Mailing List which is open to all HPR listeners and contributors. The discussions are open and available on the HPR server under Mailman. The threaded discussions this month can be found here: https://lists.hackerpublicradio.com/pipermail/hpr/2026-March/thread.html Events Calendar With the kind permission of LWN.net we are linking to The LWN.net Community Calendar. Quoting the site: This is the LWN.net community event calendar, where we track events of interest to people using and developing Linux and free software. Clicking on individual events will take you to the appropriate web page. Provide feedback on this episode.

    HPR4610: Playing Civilization V, Part 10

    Play Episode Listen Later Apr 3, 2026


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

    HPR4609: Proper Date Format

    Play Episode Listen Later Apr 2, 2026


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

    HPR4606: My Nerdy Childhood: From Floppy Disks to Dial-Up Dreams

    Play Episode Listen Later Mar 30, 2026


    This show has been flagged as Explicit by the host. It all started at Flanders Technology International in 1987... a tech expo where an eleven-year-old watched a wooden block move across a desk and an arrow follow it on screen. That was it. That was the moment. He had to have a computer with a mouse. What followed was a story of after-school showroom squatting, summer jobs, game piracy, a modem bill that nearly gave his parents a heart attack, and an education in computing that no school could have provided. From the Amstrad PC1512 and the GEM windowing system, to the Schneider Euro PC with its infamous Turbo button that turned Ms. Pac-Man into a half-second blur — this episode is a love letter to the glorious chaos of home computing in the late 1980s. Along the way: the satisfying clatter of a matrix printer , the dark arts of config.sys and autoexec.bat , Digger , the allure of the Commodore 64 , forbidden floppy disks at computer club, a 2400-baud modem, and the very first taste of online community — long before anyone called it the internet. The computers Amstrad PC1512 — the showroom machine that started it all Schneider Euro PC — the computer-in-a-keyboard with the infamous Turbo button Commodore 64 — legendary sounds, legendary forbidden floppy disks Play the games Digger — play in your browser Ms. Pac-Man — play in your browser Samantha Fox Strip Poker (C64) Leisure Suit Larry — Looking for Love in All the Wrong Places — play in your browser Provide feedback on this episode.

    HPR4605: Lee locks down his wifey poo

    Play Episode Listen Later Mar 27, 2026


    This show has been flagged as Clean by the host. Two geeky people, both HPR hosts, decide to sign on the dotted line and do the darn thing and get married. Provide feedback on this episode.

    HPR4604: Quick Tips for January 20 26

    Play Episode Listen Later Mar 26, 2026


    This show has been flagged as Clean by the host. It's going to be pretty short, I'm going to go through my quick tips. Looks like I've got enough to kind of do a little short episode for you guys. Quick tips are basically just, you know, kind of things that I think about, that add value, kind of like those stupid viral videos on social media where they show, like how to make a pancake with a square, like it, you know. Prevent messiness when making Matcha Baking soda and super glue to get an epoxy type of seal. "Tile batter pad on top of speaker in middle" - even operat0r has no clue ! How to blowing out a candle Request for more shows on rsync inspired by hpr4341 :: Transferring Large Data Sets sent in by hairylarry How to make a foam machine Fixing garden chairs by replacing the Vinyl straps How to use a Fabric belt YTDLnis Full Featured Downloader using yt-dlp, available on F-Droid Use a wet paper towel over Microwave food. Use binder clips instead of chip clips Things To Get Me since Amazon got rid of their add arbitrary item to wish list feature. Provide feedback on this episode.

    HPR4603: On the Erosion of Freedom in Open Source Software

    Play Episode Listen Later Mar 25, 2026


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

    HPR4602: Hackerpublic Radio New Years Eve Show 2026 Episode 3

    Play Episode Listen Later Mar 24, 2026


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

    HPR4601: How to be a better writer

    Play Episode Listen Later Mar 23, 2026


    This show has been flagged as Clean by the host. Some tips on how the text you write can be improved. With the pestilence of AI spreading out over the once-human internet, doing what LLMs don't is a pretty good starting point to improve one's own writing. Make mistakes. Edit yourself. Avoid the tics that are dangerously close to becoming the norm. See this Wikipedia page, aimed at editors of user submissions: https://en.wikipedia.org/wiki/Wikipedia:Signs_of_AI_writing The sections on content, language & grammar, and style are particularly relevant. Provide feedback on this episode.

    HPR4600: The First Doctor, Part 5

    Play Episode Listen Later Mar 20, 2026


    This show has been flagged as Clean by the host. This is a further look at the stories of the First Doctor, portrayed by William Hartnell, during the 1960s. The First Doctor, Part 5 The Celestial Toymaker This is a wonderful story, and the Toymaker is another foe many Doctor Who fans wanted to see return, and in 2023 it happened. In the story The Giggle he returned, played this time by Neil Patrick Harris, and it is a very good story. But in this introduction of the character he is played by Michael Gough in a Fu Manchu-like costume, and he has great powers, but is bound by certain rules, which makes this interesting. When the Tardis lands in his world, he sets them games they have to survive to escape. They are games based on children's games you might be familiar with, but they have a twist. The Doctor is told he must solve the Trilogic puzzle in exactly 1023 moves, and Steven and Dodo must win their games before the Doctor wins his. This story is pure entertainment but very well done. But Hartnell's decline continued. In this story there are scenes of The Trilogic Puzzle where a hand moves a piece, but it is not Hartnell's hand, it is another actor. And Hartnell does not appear at all in episodes 2 & 3. Producer John Wiles had a plan to replace Hartnell whose contract was up at the end of the season, but he was over-ruled by BBC Head of Serials, Gerald Savory, who extended Hartnell's contract, leading to John Wiles quitting the production. Hartnell would continue for now, but something would have to happen eventually. The Gunfighters) This is another historical story, but is embarrassingly bad. It takes the Tardis to Tombstone, Arizona at the time of the famous Gunfight at the OK Corral. Steven Taylor is mostly silly trying to act out childish fantasies of cowboys. The set up comes from the end of the previous story when the Doctor bites into a candy and yells in pain. He needs to see a dentist, and Doc Holliday, aside from being a gunfighter, is a dentist. Mistaken identities happen all over. This is light fluff, but is enjoyable if you give in to the silliness. The Savages) This is another story about who are the bad guys really, similar to Galaxy Four. In this case, Dodo and Steven are captured by what appear to be Stone Age savages. The Doctor, meanwhile, is taken to the city of the Elders, is greeted warmly. It seems they have been following his travels for some time and are great admirers of him. Steven and Dodo are rescued by soldiers from the City, and reunited with the Doctor. Then Dodo slips away and stumbles on experiments being conducted on human beings. So the Elders turn out to be the real Savages here. The lab is destroyed, the two groups decide to live together in peace, but they realize they need a leader who is from neither group and choose Steven to be their leader. So another companion goes. Only Dodo is left. The War Machines This is an “AI gone bad” story. A professor has built a computer to help manage the communications in the new Post Office Tower, which in fact was a new building in London. But the computer turns out to be more than anyone realized. But Doctor gets it right away when the computer correctly gives the meaning of TARDIS. Then it turns out that the computer can hypnotize people and make them its slaves. It does this to several of the professors involved, and has them build the War Machines that will enable it to take over the world. Dodo is hypnotized and tries to trap the Doctor, but he figures it out and restores her, then she is sent away to recuperate. We won't ever see her again. Meanwhile the secretary to one of the professors, by the name of Polly, and young sailor named Ben, join up with the Doctor, and they defeat the computer. At the end, they realize they have Dodo's TARDIS key and enter just before it takes off. So now we have two new companions. This is a fun episode. The props are the usual for this time in Doctor Who, cheap. But the writing is good, and story has enough twists and turns to carry you right along. Hartnell was really good in this story despite the problems he was having. The Smugglers This is another historical story, but instead of being based on any particular incident it tells of a general occurrence in English history. The English government chose to support itself primarily through customs duties on imports, which of course created an incentive to avoid those duties by smuggling, and that definitely happened a lot in the Cornwall area. It was also one the issues that started the American Revolution, but that is not our story here. The TARDIS crew encounters a former pirate, now turned church warden, who tells them a secret before being killed by another pirate. Ben and Polly capture a man who they think is the murderer, but he is in fact an undercover Revenue agent, and in the end helps to defeat the pirates. It is a good story, and the most memorable character has to be Cherub, the pirate who murdered the church warden and who kills other people and is very sinister. This is a story where all episodes have been lost, so I had to get it through reconstructions. The Tenth Planet This is Hartnell's final story, and it takes the TARDIS to Antarctica, where the travelers are taken to the Snowcap base of the International Space Command. They are managing the return of the manned space mission Zeus IV, and everything goes wrong when a new planet appears, dooming the mission. Then we meet the second most memorable enemies of the Doctor, the Cybermen. They explain that they are from the planet Mondas, which is Earth's twin (hence the Tenth Planet), and need the energy from the Earth to keep their planet going. The General running the base is of course pig-headed and does everything possible to make things worse than they have to be. This adventure turns out to be too much for the Doctor, who explains that his old body is just wearing out, and when they get back to the TARDIS he collapses and starts to change. In the end his replaced by the of Patrick Troughton. Hartnell was becoming increasingly difficult to work with as far back as The Time Meddler, where you could really see him losing his lines, and there are lots of stories about him hiding notes to remind himself of what he was supposed to say. But the BBC didn't want the show to end, so they did something unprecedented and replaced the lead actor in a popular series. To explain it away, they invented regeneration, something the Doctor's race could do. We now call them the Time Lords of Gallifrey, but that part did not appear until the end of Troughton's run as the Doctor. For now, the Doctor was just a member of an unspecified alien race, and the only other member we had met was the Meddling Monk. At least we assume he is of the same race since he has a TARDIS. The First Doctor Era Whatever else you might want to say about Hartnell he created a franchise that has lasted for over 60 years at the time I write this. And after a slow start, he really developed the character and became identified with it. In the beginning he was a very stubborn and unlikable old man, but as the series progressed he mellowed and his humor started to come through even more. Hartnell himself returned to the role one more time in the Third Doctor story The Three Doctors (1973), which was the first time Doctor Who had a story featuring multiple incarnations of the character, in the case the First Doctor (William Hartnell), the Second Doctor (Patrick Troughton), and the Third Doctor (Jon Pertwee). But due to his declining health he has a limited role appearing only on a TV Screen. He passed away in 1975. He was portrayed by Richard Hurndall in another multiple Doctor story, _The Five Doctors_ (1983), which was broadcast for the 20th anniversary of the program during Peter Davison's run as the Fifth Doctor. In recent times David Bradley has portrayed the First Doctor, particularly in the docudrama An Adventure in Space and Time (2013) which was produced in honor of the 50th anniversary of the program. This show tells the story of the First Doctor and the how the program came together in a dramatic form, and I recommend it highly. Bradley would reprise the role in 2017 in _The Doctor Falls and Twice Upon A Time) where he played opposite Peter Capaldi's 12th Doctor, and then again in The Power of the Doctor_ (2022), where he appears alongside other previous Doctors. It is perhaps notable that the first three Doctors, William Hartnell, Patrick Troughton, and Jon Pertwee, have all passed away, but only Hartnell's First doctor has been revived so often. Links: https://en.wikipedia.org/wiki/The_Celestial_Toymaker https://en.wikipedia.org/wiki/The_Gunfighters_(Doctor_Who) https://en.wikipedia.org/wiki/The_Savages_(Doctor_Who) https://en.wikipedia.org/wiki/The_War_Machines https://en.wikipedia.org/wiki/The_Smugglers https://en.wikipedia.org/wiki/The_Tenth_Planet https://en.wikipedia.org/wiki/The_Three_Doctors_(Doctor_Who) https://en.wikipedia.org/wiki/The_Five_Doctors https://en.wikipedia.org/wiki/An_Adventure_in_Space_and_Time https://en.wikipedia.org/wiki/The_Doctor_Falls https://en.wikipedia.org/wiki/Twice_Upon_a_Time_(Doctor_Who) https://en.wikipedia.org/wiki/The_Power_of_the_Doctor https://www.palain.com/science-fiction/intro-to-doctor-who/the-first-doctor-part-5/ Provide feedback on this episode.

    HPR4599: Women in digital and games event

    Play Episode Listen Later Mar 19, 2026


    This show has been flagged as Clean by the host. Women in Digital and Games By Digital and Creative Technologies - West Suffolk College 73 Western WayBury St Edmunds, England Friday, Mar 27 from 6 pm to 8 pm Join us in person to celebrate and empower Women in Digital and Games with talks, networking, and fun! Get ready to connect, learn, and be inspired at this awesome in-person event celebrating amazing women in the digital and games industries. Whether you're a student, professional, or just curious, come hang out, hear stories, and boost your network. Don't miss out on an empowering evening filled with energy and inspiration! Source: Eventbrite https://share.google/SXD66BhsftLmQ3Yfx https://share.google/SXD66BhsftLmQ3Yfx https://camjam.me/ https://www.computinghistory.org.uk/ Provide feedback on this episode.

    HPR4598: Recording good audio using open source tools

    Play Episode Listen Later Mar 18, 2026


    This show has been flagged as Explicit by the host. Here is some no nonsense advice for recording decent sounding audio using Linux and open-source software! Some of my links: Mastodon: https://indieweb.social/@stranded_output PeerTube: https://peertube.wtf/c/strandedoutput/videos Linux Lads podcast: https://linuxlads.com/ YouTube channel: https://www.youtube.com/@strandedoutput2916 Personal site: https://strandedoutput.com/ Provide feedback on this episode.

    HPR4597: UNIX Curio #2 - fgrep

    Play Episode Listen Later Mar 17, 2026


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

    HPR4596: Adding voice-over audio track created using text to speech on the movie subtitles

    Play Episode Listen Later Mar 16, 2026


    This show has been flagged as Clean by the host. We'll explain why we're doing it, what it is, and cover some useful tools along the way. I've been watching movies recommended to me by my colleagues. As I work for a global company, the recommendations are often “Foreign Language”, which by definition is every movie to someone. It's often difficult to read the subtitles, or they are distracting from the acting. So I thought of converting the subtitles to speech for inclusion as an audio track, to produce a Voice Over or Lectoring audio track. Lectoring aka Voice Over Translations First used is soviet countries to read the news and propaganda from a lectors - the first podcasts ? In Polish, lektor is also used to mean “off-screen reader” or “voice-over artist”. A lektor is a (usually male) reader who provides the Polish voice-over on foreign-language programmes and films where the voice-over translation technique is used. This is the standard localization technique on Polish television and (as an option) on many DVDs; full dubbing is generally reserved for children's material. https://en.wikipedia.org/wiki/Lector#Television Example: Night of the Living Dead To give you an idea of what this sounds like I'm going to play you an example of the out of copyright movie, Night of the Living Dead . In the United States, Night of the Living Dead was mistakenly released into the public domain because the original distributor failed to replace the copyright notice when changing the film's name Original First the original sound track, then the same clip with the voice over track. Voice Over Proof of Concept As a native English speaker I find it difficult to follow those Voice Over tracks as I am trying to focus on the underlying audio. In discussions with Polish friends, it seems that this is not a problem when Polish is your native language. To put that to the test I wanted to try it out on a movie to see if that were indeed the case. I asked on Mastodon for a non English movie that was Creative Commons but did have English Subtitles, and HPR host Windigo had the answer. 2009 Nasty Old People is a 2009 Swedish film directed by Hanna Sköld, Tangram Film. It premiered on 10 October 2009 at Kontrapunkt in Malmö, and on file sharing site The Pirate Bay. The film is available as an authorized and legal download under the Creative Commons license CC BY-NC-SA. So my idea was to take each bit of subtitle text, convert it to audio, then have the generated audio play at the same time the subtitle appears on the screen. We use piper to process shows here on HPR, and we also generate srt, or SubRip subtitle files for each show. SRT or SubRip files are the easiest subtitle file to work with. From https://en.wikipedia.org/wiki/SubRip The SubRip file format is described on the Matroska multimedia container format website as “perhaps the most basic of all subtitle formats.” SubRip (SubRip Text) files are named with the extension .srt , and contain formatted lines of plain text in groups separated by a blank line. Subtitles are numbered sequentially, starting at 1. The timecode format used is hours:minutes:seconds,milliseconds with time units fixed to two zero-padded digits and fractions fixed to three zero-padded digits (00:00:00,000). The comma (,) is used for fractional separator . A numeric counter identifying each sequential subtitle The time that the subtitle should appear on the screen, followed by –> and the time it should disappear Subtitle text itself on one or more lines A blank line containing no text, indicating the end of this subtitle I downloaded the movie from the Internet Archive , and then used Piper voice to convert a minutes worth of subtitles. piper_voice: A fast and local neural text-to-speech engine that embeds espeak-ng for phonemization. GPL-3.0 license Once I had the audio prepared for a sample of the subtitles, it was over to audacity to create a new subtitle audio track. Audacity is the world's most popular audio editing and recording app GPL v2 or later, Timing the segments would be a problem, if it were not for the fact that Audacity supports srt files as Labels. File > Import > Lables. Then select the srt file The subtitle track with the text of the audio will be displayed. I could then Import each Audio segment and line them up with the subtitle track for to get the correct timing. Each subtitles segment created a new separate audio file which I then exported. I then used Kdenlive to open the video and import the audio and subtitle tracks. Kdenlive: is the acronym for KDE Non-Linear Video Editor. It works on Linux, Windows, macOS, and BSD. GPL-3.0-or-later There is a good article on adding by Jean-Marc on How to Add Subtitles Easily in Kdenlive Project > Subtitles > Add Subtitle Track Select the Subtitle file Align the subtitle and audio track. After rendering the segment out I was satisfied that this was something worth doing. The script The script can be found on the episode page for this show on the HPR site, and I put it together as a proof of concept. It creates a new audio track for the subtitles, and merges this with the original sound track to create a new selectable sound track. It begins by creating a length of silent audio that is as long as up to the first subtitle time segment begin timestamp. The first subtitle segment is converted from text to speech using Piper voice That segment of audio is added to the initial silence track. We check the total length so far, and then see if there is supposed to be silence between the last and next subtitle segment begin timestamp. If there is, then a filler piece of silence is added until the next subtitle should appear. If not then the audio for both subtitles play immediately after one another. I was worried that the subtitle audio would then lag behind the on screen dialogue but it works surprisingly well. Even long series of dialogue sort themselves out after a bit. We do this over and over again for each subtitle, right up to the very end of the movie. This new subtitle to speech audio track is then merged back into the media file as a new audio track. 96 00:15:06,240 --> 00:15:10,640 It will be two years before it's this big 97 00:15:12,840 --> 00:15:17,840 But don't you bother. By then I'll be long gone 98 00:15:19,840 --> 00:15:22,400 It was just a question 99 00:15:22,880 --> 00:15:25,480 Porridge? Original First the original sound track, then the same clip with the voice over track. Voice Over Lessons learned Now that I have done this for a lot of movies, there a few tips for getting the best output. The creation of the audio track usually goes well, but you can run into issues with the merging of the new track back into the movie. Preparation The first thing you need is a subtitle file which will be the basis of the voice you will be listening to. It should be good quality so that it matches when the actors speak. It's important to clean up this before you use it, fixing spelling mistakes and removing html that will get rendered. Listening to three hours of “I L Zero ve y Zero u”, or “less than forward slash I, greater than”, or “L am from Lndia” can get a bit tedious. You should also try and get versions that translate the songs as well. Getting a SRT file from the media. As many Subtitles are taken from a DVDs they can often be poor Optical character recognition versions of the bitmap-based streams. So a picture of string “Hello World” rather than the letters. ffmpeg By far the easiest and best way to get the subtitles is to extract it from the movie itself, provided it's a separate track. ffmpeg is a complete, cross-platform solution to record, convert and stream audio and video. LGPL-2.1-or-later, GPL-2.0-or-later https://ffmpeg.org/ ffmpeg -y -hide_banner -loglevel error -txt_format text -i "${this_movie_file}" "${this_srt_file}" Getting a SRT file from the web. If that fails you can try to get the subtitle files from the Internet. https://www.opensubtitles.org Select your language with the highest subtitle rating. You can check the media using the mpv media player. mpv is a media player based on MPlayer and mplayer2. It supports a wide variety of video file formats, audio and video codecs, and subtitle types. GPLv2+, parts under LGPLv2.1+, some optional parts under GPLv3 https://mpv.io/manual/master/ Name the srt file with the same prefix as the movie and mpv will play it. You can also use the --sub-files= option as well. mpv "${this_movie_file}" --sub-files="${this_srt_file}" Scrub through the file to see if the timing is correct. The subtitles can be toggled using the j key. Fixing Timing issues It's very important to get the subtitles to align, otherwise the voices will be out of sync. When the subtitles don't match up, it's usually that they need to have the start offset corrected. ffsubsync will automatically try and adjust the offset of the first subtitle to the first use of speech in a movie. ffsubsync: Language-agnostic automatic synchronization of subtitles with video, so that subtitles are aligned to the correct starting point within the video. MIT license https://github.com/smacke/ffsubsync pip install ffsubsync ffs video.mp4 -i unsynchronized.srt -o synchronized.srt LosslessCut will allow you to quickly remove additional trailers, or ads, at the beginning, so that ffsubsync will have a better chance of working if they are trimmed away. LosslessCut: aims to be the ultimate cross platform FFmpeg GUI for extremely fast and lossless operations on video, audio, subtitle and other related media files. GPL-2.0 license https://github.com/mifi/lossless-cut If that fails to match up the subtitles, you can use mpv keyboard shortcuts , move to the first speech segment an then press the Ctrl+Shift+Left and Ctrl+Shift+Right to adjust subtitle delay so that the next or previous subtitle is displayed. It will also show a number giving the miliseconds the delay is, eg -148416 miliseconds or -148.416 seconds. You can use many tools to adjust the subtitles, and I tried out SRT Offset . srt-offset: A simple command-line tool to offset SRT subtitle files. This tool allows you to adjust the timing of subtitles in SRT files, which can be useful when subtitles are out of sync with the video. MIT license srt-offset -i input.srt -offset -148.416 -o output.srt Manually adding the new subtitle to speech audio track If that presents an issue then you can use avidemux to just add the new audio track. Avidemux: is a free video editor designed for simple cutting, filtering and encoding tasks. GPL V2 Open Avidemux, and select “File > Open”, to select the movie. Then go to “Audio > Select Track” Select the next unselected track and tick “Enabled”, “Add Audio Track” Then pick the new mixed track, in this example .~NastyOldPeople_mixed.mp3 Conclusion I now find it much easier to watch a movie with the voice over track. It gets to a point where I don't even notice it is there and just hear the actors speak in their own language, and I just know what they are saying. Links 2009 Nasty Old People A Spanish voice-over translation avidemux by Jean-Marc on How to Add Subtitles Easily in Kdenlive container format Decimal separator extension ffmpeg ffmpeg on wikipedia ffsubsync GPL-3.0 license GPL v2 or later Kdenlive LGPL-2.1 LosslessCut Matroska MIT license Movie on Archive.org mpv mpv keyboard shortcuts mpv wikipedia Nasty Old People from the Internet Archive Night of the Living Dead Noc żywych trupów | Film grozy | Polski lektor OpenSubtitles opensubtitles.org Optical character recognition Piper voice SRT Offset srt, or SubRip subtitle files SubRip Timecode Voice-over translation Whisper Provide feedback on this episode.

    HPR4595: WATER WATER EVERYWHERE!

    Play Episode Listen Later Mar 13, 2026


    This show has been flagged as Explicit by the host. I'm talking about water meters Provide feedback on this episode.

    HPR4594: Hackerpublic Radio New Years Eve Show 2026 Episode 2

    Play Episode Listen Later Mar 12, 2026


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

    HPR4593: Nuclear Reactor Technology - Ep 8 Generation Four Reactors

    Play Episode Listen Later Mar 11, 2026


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

    HPR4592: Happy by shower # 2

    Play Episode Listen Later Mar 10, 2026


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

    HPR4591: A Bit of Git

    Play Episode Listen Later Mar 9, 2026


    This show has been flagged as Clean by the host. When attempting to push commits to a remote repository, git rejected the push with an error. The branches had diverged! git status Result: On branch main Your branch and 'origin/main' have diverged, and have 7 and 1 different commits each, respectively. The problem: * 79085bb (HEAD -> main) Improve mobile responsiveness for very narrow viewports * eec46f5 Improve responsive layout for narrow viewports * 79c71eb Fix sync dialog modal instantiation * 33fd501 Add markdown rendering to session notes in desktop app * 1a119f7 Increase hierarchy panel bottom padding to 9rem in web app * c557299 Constrain session notes width with word wrap * f2ab785 Add bottom padding to hierarchy navigation panel | * 7459345 (origin/main) fix: address bug on Desktop with Sync dialog |/ * c8cc83d Fix routing for Dashboard action after renaming from Index After resolving with git rebase there was a new problem. commit messages contained Generated with [Claude Code](https://claude.com/claude-code) ​ Co-Authored-By: Claude Sonnet 4.5 The solution was to use interactive rebase with --exec to amend each commit: git rebase -i 7459345 --exec 'git commit --amend -m "$(git log --format=%B -n1 | sed -e "/ Generated with/d" -e "/Co-Authored-By: Claude Sonnet/d" | sed -e :a -e "/^n*$/{$d;N;ba" -e "}")"' Still the branches differed git log --oneline --graph --all -12 * 4205e86 Improve mobile responsiveness for very narrow viewports * a5947ee Improve responsive layout for narrow viewports * 012a78f Add markdown rendering to session notes in desktop app * d5227d2 Increase hierarchy panel bottom padding to 9rem in web app * aed5405 Constrain session notes width with word wrap * bcc32e8 Add bottom padding to hierarchy navigation panel | * 64a4118 Improve mobile responsiveness for very narrow viewports | * cbf2c68 Improve responsive layout for narrow viewports | * 731eee2 Add markdown rendering to session notes in desktop app | * 197fdb8 Increase hierarchy panel bottom padding to 9rem in web app | * 09377c9 Constrain session notes width with word wrap | * 6714c35 Add bottom padding to hierarchy navigation panel |/ The solution git push --force Git Commands Reference Here are all the commands used in this adventure, in order: Check current status git status ​ Fetch latest from remote git fetch origin ​ View commit history graph git log --oneline --graph --all --decorate -15 ​ View specific commit details git show origin/main --stat git show 79c71eb WorkLog.Desktop/src/qml/main.qml ​ Rebase local commits onto remote git rebase origin/main ​ During conflict: stage resolved files and skip duplicate commit git add WorkLog.Desktop/src/qml/main.qml git rebase --skip ​ Check commit message git show --stat HEAD git log --format="%B" -1 HEAD ​ Attempt to filter commit messages (didn't work) git filter-branch -f --msg-filter 'sed ...' 7459345..HEAD ​ Interactive rebase to amend all commits (successful) git rebase -i 7459345 --exec 'git commit --amend -m "$(git log --format=%B -n1 | sed ...)"' ​ Verify messages were cleaned git log --format="%B" -1 HEAD git log --format="%B" -1 HEAD~3 ​ Force push to update remote git push --force Provide feedback on this episode.

    HPR4590: Playing Civilization V, Part 9

    Play Episode Listen Later Mar 6, 2026


    This show has been flagged as Clean by the host. In our next look at the game mechanics for Civilization V we examine a new feature in Civilization 5, City-States. These are independent cities controlled by the computer that are also players to some degree in the game, and you can interact with them. And they are key to winning a Diplomatic Victory. Playing Civilization V, Part 9 - City States This was a newly introduced feature in Civ 5, and they play an important role in the game. They represent the small countries that are not running the world. They do not produce Settlers, so they do not expand beyond the one city, though that city can, and will expand its borders in a similar way to how your cities can grow. They do not start with a military unit, but they can produce military units and defend themselves. They can also build buildings in the city, but not Wonders. They do have a single vote each in the World Congress (or later the United Nations), making them a key to a Diplomatic victory. City States start out neutral with regards to the players, but your interactions with them can affect how they feel about you. For example, if you send units through their territory they will get hostile, but if you give them gifts they will get friendly. And if you wish you can go to war with them and take them over. This will affect your diplomatic relations with other players and other city states, but if you have decided on a war of conquest as your victory type, that won't matter to you, right? As mentioned, if you want to go for a Diplomatic victory you want to be allied with as many of them as possible to get their votes in the World Congress or the United Nations. But even if you don't need their votes, there are other benefits from friendly relations. There are two levels to friendly relations: Friendly, and Allied, and the benefits get better as the relations improve. City State Types With the expansions there are 5 types of City State: Militaristic, Maritime, Cultured, Mercantile, and Religious. The benefits you get are: Militaristic – If you are friends the city state will periodically gift you a unit, which will appear in your city which is closest to the city state. If you are allies the units will show up more often. Maritime – If you are friends they will add two food to your Capital city. If you are allies they will add one more food to every city you have. Cultured city states share their culture with you, at one rate if you are friends and at double the rate if you are allies. Mercantile city states give you an added 3 Happiness when you are friends. If you are allies you keep the added happiness, but in addition get access to a luxury resource that cannot be obtained any other way, and that also adds Happiness. Religious city states give you a one-time bonus of Faith when you first meet them, then provide added Faith per turn. Note that Cultured and Religious city states increase the amount of Culture or Faith they provide with each new era, so the earlier you develop your relations with them the better the benefit. Managing Relations With City States There is a mechanism in the game which keeps track of points to define your relations with city states. On this numerical scale, Neutral has a value of 0, Friendly 30 or above, and Allied 60 or above. In the other direction, once you go into negative numbers they become Angry, if if you go negative enough it becomes War. A city state can only ever have one ally. If only one player has more than 60 influence points, that player will become the patron of the city state and they will ally to that player. If two or more players have more than 60 influence points, the player with the most points gets the ally. As the game goes on, you may get a message that a city state you had as an ally has suddenly allied to someone else. This is the result of the other player gaining influence points in some way, often by gifts. You can also gain influence points by promising to protect a city state, but do this with your eyes open. If you do not follow through on your promise it will enrage the city state and you will lose a lot of influence with them. Your influence with a city state has a natural resting point at 0, or Neutral. That means that barring other factors, a positive number will fall over time, and a negative number will rise over time. So if you sent one of your units through their territory they will be angry for a period, but if nothing else happens they will return to Neutral. But on the other side, you don't stay allied with them forever unless you find ways to keep adding influence points. One way is to eliminate barbarian camps near to the city state. In fact, this is one exception to the rule about sending units through their territory. If you are doing it to attack the barbarians, you are seen as a protector, not an invader, and there is no penalty. Another way to gain influence is by completing a quest from a city state. Each city state you are in contact with will periodically give you a quest, and if you fulfill it you will gain influence points. This can include killing a barbarian camp or killing nearby barbarian units (though you can do that at any time, you don't need a quest). Some others include acquiring a Great Person of a certain kind, building a certain World Wonder, bullying another city state, finding a Natural Wonder, and so on. You do not need to fulfill a quest. For example, if your strategy calls for allying with other city states, you might want to pass on bullying another city state. There is no penalty for not fulfilling a quest, just a bonus when you do fulfill one. Another way to gain influence is with gifts. The most effective is Gold, and one large sum is more effective than several small ones. For a Diplomatic victory strategy, you should plan on having a large Treasury as you approach the end game so that you can buy allies in time for the crucial vote. You can also gain a small amount of influence points by gifting units. I make it a practice to do this whenever I have units that I don't want any longer. These could be obsolete units that have no upgrade path, for instance. I don't want to pay maintenance on them as that is a drain on my Treasury, and I could just delete them, but gifting them to a city state gives me a small amount of influence. Another way to get a big jump in your influence with a city state is to capture and then a return one of their Workers. Most often this happens when a barbarian has captured the Worker, and then you capture it. You have the option of keeping the Worker for yourself, and in the early game I would probably do that because the Worker is so valuable. But at a certain point I have enough Workers, and getting the 45 influence points for returning it starts to be more effective. Remember that you have to keep earning influence points to keep up your relations, so even if you get an ally of a city state for a few turns. it will naturally decay back to Neutral. By around the middle of the game if you playing well you can start to invest the resources needed to maintain your relationships. City States and War If you are allied with a city state and you get into a war with another player, a city state you are allied with will join you in the war. Of course, the same is true for the other player, so the war between the two players could also involve 3-4 city states dragged in as allies. You cannot make peace with a city state while it is allied to a player you are at war with. You have to first make peace with that player (or wipe them out if that suits you). However, if you can get more influence with that city state and supplant the other player you can get that city state to ally with you can turn around and attack your enemy. Generally a large cash gift can do this, once again showing the utility of a fat Treasury. Exploration You cannot have diplomatic relations with a city state you haven't met, so this reinforces the idea that you have to explore the map as soon as possible. Of course, you have to balance this with other priorities, such as expanding your cities and defending them, but finding the right balance is what all the Civilization games are about. On most maps this means you should be giving some attention to developing your naval power and technologies. There seems to be a bias to city states being coastal, and in many cases they are on small islands. Of course there are a number of motivations for exploring the map. First of all, you need intelligence of what you are up against with the other players. And unless you are on a very large land mass, you will want to find added lands for settlement. Finding Natural Wonders adds to Happiness in your Empire, so finding them all is important. And last, the unexplored sections of the map have a strong tendency to spawn barbarian units against you. Early on you cannot traverse Ocean tiles and need to stick to Coastal tiles. The unit here is the Trireme, which you can build once you discover Sailing. I will usually build 1-2 Triremes in a coastal city to go around the coast of the land mass I am on and scout out the situation. If another land mass or island is sufficiently close I can cross to it without entering an Ocean tile and extend my exploration. But to really explore the whole map you need to get to Caravels. This Renaissance Era unit becomes available when you discover Astronomy, and is essentially a naval scouting unit. It can enter Ocean tiles. Links: https://civilization.fandom.com/wiki/City-state_(Civ5) https://civ-5-cbp.fandom.com/wiki/Detailed_Guide_to_Diplomacy https://www.palain.com/gaming/civilization-v/playing-civilization-v-part-9/ Provide feedback on this episode.

    HPR4589: YouTube Subscriptions 2025 #15

    Play Episode Listen Later Mar 5, 2026


    This show has been flagged as Clean by the host. With permission of Ahuka the warning about the reserve queue was removed to the policy change on the mail list https://lists.hackerpublicradio.com/pipermail/hpr/2026-January/004951.html I am subscribed to a number of YouTube channels, and I am sharing them with you. Links: https://www.youtube.com/@TimeGhost https://www.youtube.com/@timeghostpodcast4469 https://www.youtube.com/@TobyHadoke https://www.youtube.com/@TomSiddell https://www.youtube.com/@touropia https://www.youtube.com/@tpmtv https://www.youtube.com/@TrekCulture https://www.youtube.com/@TullTapes https://www.youtube.com/@UrsaRyan https://www.youtube.com/@VanBradley https://www.youtube.com/@veritasium https://www.youtube.com/@VikingCruises https://www.youtube.com/@Viking-TV https://www.youtube.com/@vlogbrothers https://www.youtube.com/@washingtonmonthly9554 https://www.youtube.com/@WhoCulture https://www.youtube.com/@woltersworld https://www.youtube.com/@WorldWarTwo https://www.youtube.com/@xkcd_whatif https://www.youtube.com/@YouCantUnhearThis https://www.palain.com/ Provide feedback on this episode.

    HPR4588: HPR Beer Garden 11 - Belgian Scotch Ale

    Play Episode Listen Later Mar 4, 2026


    This show has been flagged as Clean by the host. Dave and Kevie return with another episode of the Beer Garden, this time with a focus on Belgian Scotch Ales. Dave samples Silly Scotch , whilst Kevie goes for Mc Chouffe Connect with the guys on Untappd: Dave Kevie The intro sounds for the show are used from: https://freesound.org/people/mixtus/sounds/329806/ https://freesound.org/people/j1987/sounds/123003/ https://freesound.org/people/greatsoundstube/sounds/628437/ Provide feedback on this episode.

    HPR4587: UNIX Curio #1 - Shell Archives

    Play Episode Listen Later Mar 3, 2026


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

    Claim Hacker Public Radio

    In order to claim this podcast we'll send an email to with a verification link. Simply click the link and you will be able to edit tags, request a refresh, and other features to take control of your podcast page!

    Claim Cancel