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)
This show has been flagged as Clean by the host. Hello, this is Archer72 for Hacker Public Radio. In episode, it seems that AI is a trap. This over-arching generalization is my opinion and may not reflect the opinions of HPR. So the back story to this is that I was listening to the 26 hour Hacker Public Radio New Year's show, and the discussion came up in the Tech and Coffee Telegram Channel My Resolution was to stop using ChatGPT for an AI chat bot, with the implication being to not using AI at all, but instead, to use Duckduckgo and Brave Search Probably less than a week or two later, I was trying to figure out something, and figured that I'd use the easy way and use Claude.ai , which is actually pretty good if you have short and concise questions. I've found that if you have a long drawn-out question, it is better to do a Google or Duck search and document your results. I document in Vim, but you can use whatever is best. This way you can clearly show what works and doesn't work and refer to what you find later, instead of relying on an online service. And sometimes, depending on the AI bot you use, exporting is not very straightforward. With the exception of Duck.ai , that has a button for a quick share of a text file. Then you share it to your self somewhere else like in Proton mail Well… Over the past weekend, I was just making a quick upload button to my own server. The previous weekend, I got HTTPS working. This was just from following the guide on the Let's Encrypt - Documentation and EFF Certbot instruction - Apache2 websites. At least that time, instead of using the AI bot, I just followed clear documentation. See, the thing about going right to the Debian Wiki or the Arch Wiki is that users and developer have already documented plenty. I figured out that part of the hacker method is not to take the ‘easy' way, but to document out what you are trying to learn. So this past weekend, I was trying to learn something about that upload form, and I probably took longer going back and forth with the AI bot than If I had taken the time to search the documentation. And even if it did take longer with the documentation, I would have learned something else and created a Markdown document of my own. There is a tool I use once in a while, which is part of the Duckduckgo search, called Search Assist This can be good, because a have a horrible memory. If there is something small that I can't remember how to do, I let Duck.ai take care of it. But recently, I have turned off the option where it says to sometimes show Search Assist , but instead only when it is on demand. That way I won't be tempted to go down a rabbit hole in order to find what I am looking for. Instead base what I am looking for on standard tools. So Yes, AI is a trap, but is also useful for certain things. But if you are careful how you use it, it's not always a bad thing. This has been Archer72 for Hacker Public Radio. Feel free to comment on this or any other show. Ken says it is the Mana by which we pay our hosts. Also, feel free to record a response show to this or other shows. Provide feedback on this episode.
This show has been flagged as Clean by the host. IPv6 for Luddites Andrew (aka mcnalu) recently triggered Beni by saying that he turns off IPv6 in order to get devices working on his home network. In this show Beni educates Andrew the Luddite and explains why moving from IPv4 to IPv6 is a good idea. They also explore how IPv6 can be used in a world where ISPs and devices do not all support it and what tools, tips and tricks are available during this rather long transitional phase to the newish (like 30 years old, a blink of an eye in IT) protocol. Relevant RFCs RFC 4861: Neighbor Discovery (basically the ICMP based replacement of ARP) RFC 4862: Stateless Address Configuration RFC 4941: Privacy Extension for SLAAC RFC 6146: NAT64 RFC 6147: DNS64 RFC 6877: XLAT464 (Allow your legacy software to talk to its legacy server in an IPv6 only environment) Provide feedback on this episode.
This show has been flagged as Clean by the host. Private coffee From the website: " Private.coffee is a non-profit association dedicated to supporting privacy and digital sovereignty. We provide privacy-respecting alternatives to common services, educate users about digital privacy, and advocate for a more private and secure internet. " I came to it while searching for a Matrix homeserver in https://joinmatrix.org/ Slogan: "Open-source software is best served hot" Site: https://private.coffee/ Fluffychat From the website: " FluffyChat is an open source, nonprofit and cute [matrix] client written in Flutter. The goal of the app is to create an easy to use instant messenger which is open source and accessible for everyone. " The most pleasant messenger I've ever used. Beautiful (and that's the meaning of "cute"), can be used on the web or app. Once, the developer, Krille-chan, I think on Mastodon, said some users thought "cute" was not professional. But, for him, it was a way to convey the meaning of beautiful. So, the slogan stays as: Slogan: "The cutest messenger in [matrix]" Site: https://fluffychat.im/ Soatok blog From the website: " Writings about information security, cryptography, software, and humanity, from a member of the furry fandom. " A respected man that studies and works with cryptography. Among other themes, he analyses messengers, and protocols in general, and explains — sometimes discovering grave vulnerabilities. His post recommending to not use Session made the app developers itch. They responded to Soatok on their social media (without mentioning his name, only "a blogger") saying the points raised were unfounded. Slogan (if not simply the title...): "Dhole moments" (Dhole is an Asian wild dog) Site: https://soatok.blog/ 4d2 From the website: " So it's come to this...you've met us Since 2001, 4d2 dot org has worked to provide interested folks with free access to communication and collaboration services in a mixed Linux/BSD environment. We focus on technical transparency, user privacy and free speech, with a dash of cypherpunk and retrocomputing for good measure ". It's like the Private Coffee we've seen before. I discovered this one first, looking for Matrix homeserver to try. This one has the advantage of having WhatsApp bridge. And so I wanted to present this one, but no slogans, so I made a concession: not a slogan, but the nonprofit corporation that operates 4d2: "All Computers Are Brilliant" (Inc.) Site: https://4d2.org/ Frugalware Linux ( in memoriam ) I loved this distribution! I felt the king on the hills with it, still on my initial enchantment with Linux. From the website: " Frugalware is a general purpose linux distribution, designed for intermediate users (who are not afraid of text mode). We try to make Frugalware as simple as possible while not forgetting to keep it comfortable for the user. We try to ship fresh and stable software, as close to the original source as possible, because in our opinion most software is the best as is, and doesn't need patching. " Slogan: "Let's make things frugal" Site: https://frugalware.org/ Those are some that come from what I use or used and that I separated to talk to you all. You may find around some developers with this one: "transforming coffee into code". Cool, too. I only don't remember one specifically that says so. Here, with you, is Antoine. And I thank you for listening. Bye, bye!Provide feedback on this episode.
This show has been flagged as Clean by the host. GTA Family friendly https://www.gta5-mods.com/scripts/family-friendly-free-roaming FO76: Glowing Items https://www.nexusmods.com/fallout76/mods/102 Fast Terminals - Instantly text display https://www.nexusmods.com/fallout76/mods/1316 Perk Loadout Manager https://www.nexusmods.com/fallout76/mods/124 Bobblehead ESP https://www.nexusmods.com/fallout76/mods/2231 Recipes and Plans Glow https://www.nexusmods.com/fallout76/mods/84 RatMonkeys Glowing Caps Stash Tins https://www.nexusmods.com/fallout76/mods/98 Glowing Map Fragments https://www.nexusmods.com/fallout76/mods/542 ore_glow https://www.nexusmods.com/fallout76/mods/207 Lockpick Bar 76 Reskin https://www.nexusmods.com/fallout76/mods/1004 schedule1: Minimap - Full Version https://www.nexusmods.com/schedule1/mods/113Provide feedback on this episode.
This show has been flagged as Clean by the host. In our next look at the game mechanics for Civilization V we examine the topics of Happiness and Eras. Links: https://www.palain.com/gaming/civilization-v/playing-civilization-v-part-2/ Provide feedback on this episode.
This show has been flagged as Clean by the host. Create a vm with Debian 12 and at least 4 Gb of RAM and say 20-30 Gb disc space. installation ============ sudo apt install -y gpg postgresql wget -q -O - https://nightly.odoo.com/odoo.key | sudo gpg --dearmor -o /usr/share/keyrings/odoo-archive-keyring.gpg echo 'deb [signed-by=/usr/share/keyrings/odoo-archive-keyring.gpg] https://nightly.odoo.com/18.0/nightly/deb/ ./' | sudo tee /etc/apt/sources.list.d/odoo.list Odoo CE latest nightly build https://nightly.odoo.com/18.0/nightly/deb/odoo_18.0.latest_all.deb sudo apt-get update && sudo apt-get install -y odoo Install wkhtmltopdf wget -O wkhtmltox_0.12.6.1-3.bookworm_amd64.deb https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6.1-3/wkhtmltox_0.12.6.1-3.bookworm_amd64.deb dpkg -i wkhtmltox_0.12.6.1-3.bookworm_amd64.deb apt install -f -y apt install -y python3-xlwt python3-num2words python3-phonenumbers systemctl status odoo First use ========= http://:8069/ Will relocate to /web/database/selector Master Password to protect this form Database Name. Email: your email Password: your desired password Phone Number: optional Language: your desired language Country: select your country Demo Data: select to get demo data. Click "Create database" Wait. Login. You see /odoo/apps. Upper left square-icon shows 'Apps' and 'Settings'. Let's install a simple app: contacts Search in the search bar for "contacts" and when displayed, click the 'Activate' button of the "contacts" app. When done, the same menu now contains: Discuss, To-do, contacts, Project, Email Marketing, Surveys, Employees and the earlier mentioned Apps and Settings. Go back to 'Apps' and Activate the "Sales" app. This will also install the "Invoicing" app. Time to start playing around. Some tech stuff, interesting locations =============== /etc/odoo/odoo.conf Here you can add additional addons later: /var/lib/odoo/.local/share/Odoo/addons/18.0/ Here are all files uploaded to Odoo: find /var/lib/odoo/.local/share/Odoo/filestore/ This is where user sessions are administrated: find /var/lib/odoo/.local/share/Odoo/sessions/ And these are the main locations where the Odoo program can be found. ls -al /usr/lib/python3/dist-packages/odoo/ ls -al /usr/lib/python3/dist-packages/odoo/addons/ ls -al /usr/lib/python3/dist-packages/odoo/addons/ | wcProvide feedback on this episode.
This show has been flagged as Clean by the host. I am subscribed to a number of YouTube channels, and I am sharing them with you. Links https://www.youtube.com/@cruiseaddicts https://www.youtube.com/@CruiseFever https://www.youtube.com/@Cruisehive https://www.youtube.com/@CruiseRadio https://www.youtube.com/@Cruzelycom https://www.youtube.com/@CultureSonar https://www.youtube.com/@D-Day24Hours-sm5pe https://www.youtube.com/@thedavidpakmanshow https://www.youtube.com/@DaviesMediaDesign https://www.youtube.com/@SamyulDavis https://www.youtube.com/@deepcuts https://www.youtube.com/@KQEDDeepLook https://www.youtube.com/@DeepSkyVideos https://www.youtube.com/@DiscussingNetwork https://www.youtube.com/@DiscussingTrek https://www.youtube.com/@doctorohosadventures3476 https://www.youtube.com/@DoctorWho https://www.youtube.com/@DonRossMusic https://www.youtube.com/@Donsfamilyvacations https://www.palain.com/ Provide feedback on this episode.
This show has been flagged as Clean by the host. Today we talk with Margreet Pakkert, who was kind enough to record an interview during the Flevoland 2025 Field Work Archaeology Open Day . The students were supervised as they document a Dutch Waterschip . This is a type of fishing vessel that was common in the Zuiderzee before it was reclaimed to form the province of Flevoland . As fish were caught they were kept alive in two chambers in the boat that were open to the sea¸ allowing the fishermen to deliver the freshest of fish to their market . As the water table in Flevoland is lowering, the shipwreck will soon rot away. So the team are out teaching students the craft of documenting the find and preserving what is unique. The ship itself sank between 1520 and 1530. Download hpr4447_VID_20250802_100139Z.mp4 video. Links Zuiderzee Zuiderzee Works Flevoland Waterschip in Dutch Veldschool Scheepsarcheologie Flevoland 2025 van start in Dutch Dendroarchaeology Unhygienix Maritime archaeolog Photogrammetry 3D Modle of Ship Lidar Artec 3D scanners Images The front/Fore There is a large event tent often used for weddings, covering the escalation area. The legs of two people can be seen standing on the grass above two archaeologists who are in the wreck. From the grass level, there is a 30cm/1 Foot layer of sandy soil until there wreck begins. The body of the ship is exposed and we can see the interlocking planks that form the hull. There is a "stepping stone" path made from sand bags from the keel/center spine of the ship, to the surface. One archaeologist stands at the end of this path with a bucket and at his feet is a scoop that he is using to fill it. The lower part of the ship is filling with water that is seeping in from the surrounding ground. Another archaeologist stands in the Bow/Front of the ship with a drawing board where she is making a record of the find. The view down the tent from front to back. The ship lies about 15 Degrees to port (left in direction of travel) A photographer is taking pictures. The bun/fish compartment In the body of the ship we see three wooden partitions, that form the two chambers that were used to keep the fish alive. Although not visible to the untrained eye, there are holes to the outside sea. The Mast hole in the keel A close up of the 2M/6Foot wooden sleeper that lies on a forklift pallet. It is about 15CM/6Inches thick. This has a about 30cm/1 Foot square hole in it, that is only about 5CM/2Inch deep. This was used to hold the bottom of the mast. The Timbers Views of the overlapping timbers with cut marks, and pins holding them together. The Back/Aft A view from the back from the back of the ship. We can see that there is a rip in the hull behind the last fish compartment and the back of the ship. Was this a collision or did it occur after sinking ? An archaeologist is fighting a loosing battle to scoop out water. The glamour of the dig. The back of the site tent showing the woodland in the background, a pile of soil that was removed, and a another pile of rotting wood from the ship. There is a makeshift pool of water used to store water pumped from the wreck. The front of the site tent showing the woodland in the background, some storage shipping containers, some steel plates used to spread the load of heavy machinery. A 2M/6Foot wooden sleeper lies on a forklift pallet. A earthen mound is in front of the woods. In front of that is a very wet and damp looking tarpaulin with parts of the ship. They are normally kept wet covered with another tarpaulin so they will not rot. Each has a label on it. Some are held vertical by sandbags. There is a view of the pile of rotten wood, the eacavated soiland the pump pool. There are some rusted iron as braces in the wood. There is a rust shaped axe. Information Displays A informational poster showing how they determined the date to be Dendroarchaeology. If two trees grew during the same period, the thickness of their rings during that period will be the same. Archaeologist were able to make a complete historical map of tree rings going back to prehistory. They did this by comparing the overlapping tree rings from in existing buildings, shipwrecks and artwork. In some cases there were receipts from wood choppers for the timbers. Further back can be used by comparing overlapping rings in different artifacts. A drawing of the ship cross-sections through the center, a top, front and back view. Then a drawing of the ship with triangle sail at the front, and a square sale at the back with rigging. The cross section shows where the bun/fish compartment was located in the middle behind the mast at the bottom of the ship. A informational poster tells us the shipwreck was discovered in 1972 when the land was drained. The ship is 16 meter long and 5.5 meter wide, which is a small version as they often got to 20 meter in length. The ship was complete to the top of the bun/fish compartment. It sank somewhere between 1520 and 1530. It continues to give a timeline of the discovery. The next poster shows the 3d scans from 2022 to 2025. 2022 Shows the front half of the ship with a rats nest of broken timbers. 2023 The entire top deck is exposed 2024 and 2025 show the wood is now cleared down to the frame of the ship. There are also 3D printed versions of the scans in cases. The 3d scanner used to record some of the models. A map showing the shipping routes through the Zuiderzee. Items that visitors are encouraged to touch are fresh moss used to seal the lats, a piece of timber, some iron nails, and braces to keep the planks together. Items that visitors are not allowed to touch include, barrel taps, rings, actual moss, fish bones, and a box of other finds. The Author The author Wouter Waldus was there to discuss the dig, marine archaeology, and his many books. Turfvaart op de Zuiderzee. Scheepswrakken in Flevoland, 1550-1700 Gezonken Erfgoed De IJsselkogge. Hanzeverleden boven water Wrakken in wereldzeeën - Vergane Nederlandse schepen uit de zeventiende eeuw Provide feedback on this episode.
This show has been flagged as Clean by the host. Too much episodes came from the reserve queue. So this is the ideal moment to give myself a good feeling and upload an episode to HPR - feeling really important about how I helped out the project. But then again... I'm lazy... so I called in the help of AI And I'm not a bit lazy... so I called in the help of SIX LLM chatbots. I asked them all how we can save HPR from oblivion. The good news: all six chatbots agree that HPR isn't going away. The bad news: they have different opinions on all the rest. Reviewing the differences between different chatbots and how they answer questions... Here are the threads: ChatGPT: https://chatgpt.com/share/6891b9e1-c33c-8009-8405-1ebe1bf246b9 Grok: https://grok.com/share/c2hhcmQtMw%3D%3D_58a5c45c-97ab-404f-95e6-e5d72426674d Gemini: https://g.co/gemini/share/067ba2876c99 Claude: https://claude.ai/share/7a63eae0-e1f3-46ea-affd-85573bbab72c For Mistral (Le Chat) - I accidentally copied the wrong link, so I don't have it anymore. For Deepseek: this one doesn't have a share function. I have it in offline form though. Provide feedback on this episode.
This show has been flagged as Clean by the host. Can't keep track of a notebook ? Always know where your phone is ? Want to keep track of your doodoo ? microdot web framework Provide feedback on this episode.
This show has been flagged as Clean by the host. This episode was originally posted as hpr4440, with thanks to Ahuka for allowing us to move it. This is a further look at the stories of the First Doctor, portrayed by William Hartnell, during the 1960s. Links: https://en.wikipedia.org/wiki/The_Space_Museum https://en.wikipedia.org/wiki/The_Chase_(Doctor_Who) https://en.wikipedia.org/wiki/The_Time_Meddler https://www.imdb.com/title/tt0059126/ https://archive.org/details/doctorwhoandthedaleks1965 https://www.imdb.com/title/tt0060278/ https://archive.org/details/doctorwhodaleksinvasionearth2150ad1966.encoded https://www.palain.com/science-fiction/intro-to-doctor-who/the-first-doctor-part-3/ Provide feedback on this episode.
This show has been flagged as Clean by the host. In today's show, Manon describes the field of Orthopedagogiek is, This is an established field in care in the Netherlands and other European Countries. It takes a broader view of identifying issues with people in relation to their surroundings. Links. https://www.nvo.nl/english-information An explanation from the https://nl.wikipedia.org/wiki/Orthopedagogiek (Note the English translation points to a different field) https://iris.who.int/handle/10665/345301 World Health Organization. (2021). Comprehensive mental health action plan 2013–2030. Provide feedback on this episode.
This show has been flagged as Clean by the host. Voice over Internet Protocol (VoIP), also known as IP telephony, is a set of technologies used primarily for voice communication sessions over Internet Protocol (IP) networks, such as the Internet. VoIP enables voice calls to be transmitted as data packets, facilitating various methods of voice communication. Voice over IP - https://en.wikipedia.org/wiki/Voice_over_IP Plain Old Telephone System (POTS) - https://en.wikipedia.org/wiki/Plain_old_telephone_service Retirement of circuit-switched public switched telephone network (in the UK) - https://en.wikipedia.org/wiki/Telephony_copper_plant_retirement_in_the_United_Kingdom Session Initiation Protocol (SIP) - https://www.ietf.org/rfc/rfc3261.txt Network Address Translator (NAT) - https://datatracker.ietf.org/doc/html/rfc2663 Session Traversal Utilities for NAT (STUN) - https://datatracker.ietf.org/doc/html/rfc5389 Voice over IP Companies - https://en.wikipedia.org/wiki/List_of_VoIP_companies Voice over IP Hacking - https://en.wikipedia.org/wiki/VoIP_vulnerabilities Provide feedback on this episode.
This show has been flagged as Clean by the host. Hackers on Planet Earth Now an annual conference Inspired by 2600 magazine, a creative and diverse event. You'll see villages, live performances, demonstrations, vintage computers, ham radio, lockpicking, learn to solder. Too much to see. It's reasonably priced, always fun. August 15-17th in Queens New York. More details at https://hope.net If you're in the area, try to make it!Provide feedback on this episode.
This show has been flagged as Explicit by the host. A reading of the comments on the Mail list discussion Rejecting a show on the grounds that it is "using HPR as a means to push a particular product or view" See: https://lists.hackerpublicradio.com/pipermail/hpr/2025-July/004883.html Provide feedback on this episode.
This show has been flagged as Clean by the host. This episode is the "why?" episode. Why am I doing this? code for doodoo is being posted to https://gitlab.com/jezra/doodoo Provide feedback on this episode.
This show has been flagged as Clean by the host. Hello folks of Hacker Public Radio. "A hacker is someone who invades computers". "A hacker is someone who codes". "Hacker is someone in love with technology". "Hacker is a geek, who is a person who likes nerdy things". All of those are more or less correct and of course you know someone that applies one of those popular concepts of the term. I'll defend one other, that can be as imprecise as every other, but, I feel, brings the concept closer to the general meaning of the word: "A hacker is someone in pursuit of efficiency and knowledge, be it in some specific field or maybe in anything that can be known". To be a hacker is more a characteristic of the brain than of something someone does. It's targeted to what achieve emotional, relevant responses to the person, that has to do with purpose. Everyone has a purpose, and we can see purpose as a matrix. PURPOSE: I | M | Relevant | Relevant P | purpose | purpose O | + no success | + success R | - - - - - - - - - - - - - - - - T | A | Not relevant | Not relevant N | purpose | purpose C | + no success | + success E | * * * * * * * * * * * * * * SUCCESS Where is the happy hacker located? Let's remember, a hacker is someone that seeks out meaning. The definition proposed in this show is: "A hacker is someone in pursuit of efficiency and knowledge". So, the blessed hacer is the one on the top of the matrix of purpose: it is someone that has a purpose that is relevant to him. He does not need success, he needs a reason to pursue it, even though the results are not always 100% dependent on him. If someone gives him (or her, of course) one ideia of purpose, and he adopts it as his personal search, he can achieve great success be it on any area you can imagine. But, if it is not of his heart, he will end up being less than he could be, feeling unsuccessful. Because, a hacker is not searching for efficiency on the void: he needs his brain inputted in what has relevance on this own, intimate understanding of the universe. And this is why "a hacker is someone in pursuit of knowledge and efficiency". Both together, conveying as a meaning, a meaning the hacker dedicates himself to, and that makes him happy, even in days, months or years without observable results. That need of purpose is not common to humanity. There are many many people happy in working on what comes at hand, receiving the payment, ranting about the payment and living the life Learning, pursuing purposes, lacking empathy (as hackers sometimes do), are not traits of personality of many many people. They do not try to use their brains to maximum learning, to have transcending conversations, to, eventually, teaching other people, formally or informally. Why this contrast is presented? Because a hacker is someone different, not only in the tastes and preferences. It's not a matter of what you like more, or how you prefer to do or not to do things. It's an entirely differen mind, more sensitive in some parts, more out-of-this-world in some others. Those were some points of a possible definition of hacker — that involves efficiency and knowledge as a particular composition of his thinking and feeling structure Passing through the blessings and difficulties of this particular mode of seeing the world, the universe and so on. So this is why there are computer hackers, life hackers, hackers, simply... and not everyone will end their lives knowing how to make a computer say Hello World. — Because a hacker can know and do many things — like crocheting clothes on Second Life — but not necessarily will have any interest in programming And every hacker is different. Are you one? Do you think someone can become a hacker or is this a form factor, a person comes to be without operation of the will? You may leave a comment or, record an episode here at Hacker Public Radio. Here with you is Antoine. Bye bye. Provide feedback on this episode.
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 4412 Tue 2025-07-01 Parkinson Tribly's Story: The Prisoner of Unit 731 Antoine 4413 Wed 2025-07-02 KDE custom shortcuts are easy and useful gemlog 4414 Thu 2025-07-03 Bellroy Tech Kit Review Kevie 4415 Fri 2025-07-04 Sony WH-CH700N A2DP stops working in Fedora Ken Fallon 4416 Mon 2025-07-07 HPR Community News for June 2025 HPR Volunteers 4417 Tue 2025-07-08 Newest matching file Dave Morriss 4418 Wed 2025-07-09 My Desktop Applications Kevie 4419 Thu 2025-07-10 YouTube Subscriptions 2025 #1 Ahuka 4420 Fri 2025-07-11 The First Doctor, Part 2 Ahuka 4421 Mon 2025-07-14 Content Moderation Lee 4422 Tue 2025-07-15 hajime - part 2 - in depth oxo 4423 Wed 2025-07-16 YouTube Subscriptions 2025 #2 Ahuka 4424 Thu 2025-07-17 How I use Newsboat for Podcasts and Reddit Archer72 4425 Fri 2025-07-18 Introducing Linux Matters Ken Fallon 4426 Mon 2025-07-21 My Command Line Applications Kevie 4427 Tue 2025-07-22 Tale of Two (Wireless) Keyboards Moss Bliss 4428 Wed 2025-07-23 Fixing AVI Indexes Ahuka 4429 Thu 2025-07-24 Handcrafting and Bartering discussion w. Elsbeth Elsbeth 4430 Fri 2025-07-25 Playing Civilization V, Part 1 Ahuka 4431 Mon 2025-07-28 Thermosol refill challenges operat0r 4432 Tue 2025-07-29 YouTube Subscriptions 2025 #3 Ahuka 4433 Wed 2025-07-30 Nerd Responce to URandom Podcast operat0r 4434 Thu 2025-07-31 Newsboat part 2 - Podcasts and Youtube Archer72 Comments this month These are comments which have been made during the past month, either to shows released during the month or to past shows. There are 23 comments in total. Past shows There are 2 comments on 2 previous shows: hpr4025 (2024-01-05) "Testing V language" by Celeste. Comment 1: Malix on 2025-07-06: "Review of V" hpr4411 (2025-06-30) "The Pachli project" by thelovebug. Comment 1: paulj on 2025-07-01: "Great Interview" This month's shows There are 21 comments on 9 of this month's shows: hpr4412 (2025-07-01) "Parkinson Tribly's Story: The Prisoner of Unit 731" by Antoine. Comment 1: Kevin O'Brien on 2025-07-01: "I loved the show"Comment 2: Antoine on 2025-07-05: "Glad w/ your interest"Comment 3: Kevin O'Brien on 2025-07-05: "Studying history" hpr4416 (2025-07-07) "HPR Community News for June 2025" by HPR Volunteers. Comment 1: Ken Fallon on 2025-07-04: "Policy Check"Comment 2: Torin Doyle on 2025-07-10: "Thanks." hpr4417 (2025-07-08) "Newest matching file" by Dave Morriss. Comment 1: Archer72 on 2025-06-23: "It's in my memory"Comment 2: ToeJet on 2025-07-08: "Alternate method"Comment 3: Dave Morriss on 2025-07-31: "Thanks Archer72"Comment 4: Dave Morriss on 2025-07-31: "ToeJet" hpr4419 (2025-07-10) "YouTube Subscriptions 2025 #1" by Ahuka. Comment 1: Archer72 on 2025-07-11: "Stories" hpr4421 (2025-07-14) "Content Moderation" by Lee. Comment 1: Kevin O'Brien on 2025-07-16: "Nice discussion" hpr4423 (2025-07-16) "YouTube Subscriptions 2025 #2" by Ahuka. Comment 1: Archer72 on 2025-07-20: "Easy listening" hpr4424 (2025-07-17) "How I use Newsboat for Podcasts and Reddit" by Archer72. Comment 1: Antoine on 2025-07-18: "Thank you"Comment 2: Archer72 on 2025-07-20: "Re: Antoine's thank you"Comment 3: Archer72 on 2025-07-20: "Open in Browser"Comment 4: Antoine on 2025-07-22: "Re: Archer 72 - That's what I understood" hpr4425 (2025-07-18) "Introducing Linux Matters" by Ken Fallon. Comment 1: Torin Doyle on 2025-07-18: "Not as good as Ubuntu Podcast."Comment 2: Torin Doyle on 2025-07-19: "Music for LM" hpr4426 (2025-07-21) "My Command Line Applications" by Kevie. Comment 1: oxp on 2025-07-25: "fastfetch"Comment 2: Kevie on 2025-07-25: "thanks oxp"Comment 3: Archer72 on 2025-07-27: "lynx browser" 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/2025-July/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.
This show has been flagged as Clean by the host. DJ Hairy Larry Presents Hairy Larry Playing Noumenology From The Archives Of Something Blue 2025-01-12 Thanks Marty, today I'm going to improvise jazz piano on a song inspired by Immanuel Kant. Now Immanuel Kant was an influential philosopher back in the 18th century and he remains influential today. Kant created a dichotomy between phenomenon and noumena where phenomenon applies to things we can perceive with the senses and noumena are things that cannot be perceived. So I wrote this song called "Noumenolgy" about the study of things that cannot be perceived. At first I thought this would be an ideal academic tenure, I mean, who could prove you wrong? But further thought led me to many scientists who deal with noumena on a daily basis. Take cosmology for instance, the study of the origins of the universe. Cosmologists have come up with the idea of the big bang, something that happened about 14 billion years ago. They check how fast the universe is expanding to come up with a number like that. And they keep building bigger and bigger telescopes because the farther away something is the longer it took for it's light to get to us which means we're really looking back into the past when we look at distant galaxies. Well, the big bang is noumenal. I mean, nobody's going to actually perceive it. So you could say that some cosmologists are, in fact, noumenologists. Or take particle physics. String theory, where we look at the stuff that makes protons and electrons, started as a mathematical exercise without proof in the real world. Definitely noumenologically inclined. But those particle physicists kept building bigger and bigger cyclotrons banging atoms together to see what escaped and they started detecting the mathematically predicted sub-particles. I read last week that they discovered a particle that has mass going in one direction and no mass going in the other. Now, how does that work? Moving on from philosophy, cosmology, and physics to noumena that actually affect ordinary people. Songwriters have written more songs about it than any other subject. Stories about it finance the publishing industry allowing them to publish books on philosophy and cosmology. And Jesus preached about it as his core message. Of course, I'm talking about love, something everyone experiences that has no phenomenal existence. You can't see it. You can't touch it. What is love? remains a valid philosophical question. So there we are. Back to Kant. On the song "Noumenology" I scat sing with a bebop and a doowop replacing actual words. So I got to thinking this morning, maybe I should write a lyric? Maybe about a cosmologist and a physicist who fall in love. Or even better a cosmologist and a physicist who bond over their shared their love for noumenology. Which brings us to the big question. Just what is up with Hairy Larry's brain and how does he come up with this stuff? I'm going to reveal my secret. Sometimes it's dreams. And sometimes, in the morning, when I'm not ready to get out of bed, you know what I mean, you've been there, my mind just goes tick tick tick and the next thing you know I've written another podcast. So now, from my "Hairy Larry Livestreams" album, here I am scat singing to "Noumenology". DJ Hairy Larry Presents Hairy Larry Playing Noumenology From The Archives Of Something Blue 2024-08-11 https://sbblues.com/2025/01/13/dj-hairy-larry-presents-hairy-larry-playing-noumenology/ Hairy Larry Livestream Something Blue Archives https://archive.org/details/hairylarrylivestreams Something Blue Archives - List Of Concerts https://archive.org/details/somethingbluearchives?sort=-publicdate music And that's Hairy Larry singing "Noumenology". Don't miss Something Blue, Saturday night at 10:00, for more piano improvisatation from my "Hairy Larry Livestreams" album. Plus Sun Ra, David Dellacroce, Lee Ritenour, and Dave Grusin. And that's Hairy Larry singing "Noumenology". Don't miss Something Blue, tonight at 10:00, for more piano improvisatation from my "Hairy Larry Livestreams" album. Plus Sun Ra, David Dellacroce, Lee Ritenour, and Dave Grusin. Provide feedback on this episode.
This show has been flagged as Clean by the host. Hello, this is your host, Archer72 for another episode of Hacker Public Radio In this podcast, I touch on items in my url list on newsboat, including both podcasts and youtube channels. # (Podcasts) http://gnuworldorder.info/ogg.xml "Gnu World Order" # Tuxjam.Otherside.Network https://tuxjam.otherside.network/feed "TuxJam" https://tuxjam.otherside.network/feed/uncut "TuxJam Uncut" https://thebugcast.org/category/podcast/feed "The Bugcast" # Hacker Public Radio http://hackerpublicradio.org/rss-future.php HackerPublicRadio_future_feed "~Hacker Public Radio ~ Future feed" (HPR) http://hackerpublicradio.org/hpr_ogg_rss.php "HPR_two_week_feed" (HPR) http://hackerpublicradio.org/comments_rss.php HPR_comment_feed "HPR_Comments" (HPR) https://archive.org/services/collection-rss.php?collection=dlarc-hackerpublicradio "~HPR Amateur Radio - Archive.org" (HPR) # Other Tech podcasts https://feeds.fireside.fm/asknoah/rss "The Ask Noah Show" https://feeds.feedburner.com/urandom-podcast/ogg "Urandom Podcast" https://ubuntu.social/@linuxmatters # (Youtube) https://www.youtube.com/feeds/videos.xml?channel_id=UC2eYFnH61tmytImy1mTYvhA "Luke Smith" (Youtube) https://www.youtube.com/feeds/videos.xml?channel_id=UCH6ttJZ3T5gA-r_7PYkHk9g "SGOTI" (Youtube) https://www.youtube.com/feeds/videos.xml?channel_id=UCVls1GmFKf6WlTraIb_IaJg "DistroTube" (Youtube) https://www.youtube.com/feeds/videos.xml?channel_id=UC9x0AN7BWHpCDHSm9NiJFJQ "Network Chuck" (Youtube) # Import from Newpipe https://www.youtube.com/feeds/videos.xml?channel_id=UC_SLthyNX_ivd-dmsFgmJVg "Jeremy Fielding" (Youtube) https://www.youtube.com/feeds/videos.xml?channel_id=UCJ0-OtVpF0wOKEqT2Z1HEtA "ElectroBOOM" (Youtube) https://www.youtube.com/feeds/videos.xml?channel_id=UCv1Kcz-CuGM6mxzL3B1_Eiw "Gardiner Bryant" (Youtube) Loves Linux, video games and online privacy https://www.youtube.com/feeds/videos.xml?channel_id=UC3s0BtrBJpwNDaflRSoiieQ "Hak5" (Youtube) Security show. Creators of the WiFi Pineapple, USB Rubber Ducky & more. https://www.youtube.com/feeds/videos.xml?channel_id=UCR-DXc1voovS8nhAvccRZhg "Jeff Geerling" (Youtube) author, developer, maker, fan of Raspberry Pi and other SBC's (Single Board Computers https://www.youtube.com/feeds/videos.xml?channel_id=UCzgA9CBrIXPtkB2yNTTiy1w "Level 2 Jeff" (Youtube) Jeff Geerling, but more advanced https://www.youtube.com/feeds/videos.xml?channel_id=UCLx053rWZxCiYWsBETgdKrQ "LGR" (Youtube) Retro Gaming and computing https://www.youtube.com/feeds/videos.xml?channel_id=UCXuqSBlHAE6Xw-yeJA0Tunw "Linus Tech Tips" (Youtube) Reviews, engineering projects, and news https://www.youtube.com/feeds/videos.xml?channel_id=UCm9K6rby98W8JigLoZOh6FQ "LockPickingLawyer" (Youtube) Points out weaknesses and defect in physical security locks https://www.youtube.com/feeds/videos.xml?channel_id=UCjFaPUcJU1vwk193mnW_w1w "Modern Vintage Gamer" (Youtube) Focus on modern and retro tech gaming https://www.youtube.com/feeds/videos.xml?channel_id=UCP8QhVVoM7IKD0YwnvnPPbg "Pater Practicus" (Youtube) Varied collection of project videos from model railways to Raspberry Pi https://www.youtube.com/feeds/videos.xml?channel_id=UCjr2bPAyPV7t35MvcgT3W8Q "The Hated One" (Youtube) Creating video essays on privacy, monopoly power, corruption https://www.youtube.com/feeds/videos.xml?channel_id=UCo71RUe6DX4w-Vd47rFLXPg "typecraft" (Youtube) Focus on NeoVim ## From Mrs. Archer https://www.youtube.com/feeds/videos.xml?channel_id=UCg6gPGh8HU2U01vaFCAsvmQ "Chris Titus Tech" (Youtube) Debloat Windows and Learn Linux Videos https://www.youtube.com/feeds/videos.xml?channel_id=UCoryWpk4QVYKFCJul9KBdyw "Switched To Linux" (Youtube) helping people make the switch to a Linux based desktop system and get real work done. https://www.youtube.com/feeds/videos.xml?channel_id=UCJf7AT2BzFT-31z0d-bc8Rg "Windows, computers and Technology" (Youtube) Channel run by a PC enthusiast https://www.youtube.com/feeds/videos.xml?channel_id=UC5UAwBUum7CPN5buc-_N1Fw "The Linux Experiment" (Youtube) Just Linux desktop news, simple tutorials, application spotlights, and opinion pieces https://www.youtube.com/feeds/videos.xml?channel_id=UCmyGZ0689ODyReHw3rsKLtQ "Michael Tunnell" (Youtube) Host of This Week in Linux weekly news show. Quick tip Start newsboat with a different url list, for example newsboat -u ~/.config/newsboat/urls-trains https://www.youtube.com/feeds/videos.xml?channel_id=UCy55vDLvGWe9DqcLi7hFd_g "Woodside Train Camera @woodsidetraincam" (Youtube) (Trains) Provide feedback on this episode.
This show has been flagged as Clean by the host. Today we'll be talking about my setup based on a Urandom episode that sparked my interest. And I'm pretty sure they mentioned in that episode about having a KVM or a USB switch we're both, but I know there was mention of a KVM, but I wanted to ready to know specifically for my setup, what I found successful instead of doing the whole KVM thing, or running an HDMI cable forever, I found it doing a USB switch and just manually pressing the switch on the inputs for your monitor, I've worked great for me.Provide feedback on this episode.
This show has been flagged as Clean by the host. I am subscribed to a number of YouTube channels, and I am sharing them with you. Links: https://www.youtube.com/@CATLOfficial https://www.youtube.com/@CGPGrey https://www.youtube.com/@ChandraXray https://www.youtube.com/@ChristelDeeOfficial https://www.youtube.com/@YogsCiv https://www.youtube.com/channel/UCkAMVxoX7t-aq3dfNKTVsNg https://www.youtube.com/@cleverdickfilms https://www.youtube.com/@Cliffs_Edge https://www.youtube.com/@coffeebreaklanguages https://www.youtube.com/@CONsoleRoom https://www.youtube.com/@ContentLitwithSimonFay https://www.youtube.com/@CouncilofGeeks https://www.youtube.com/@crashcourse https://www.youtube.com/@CrispyPro https://www.palain.com/ Provide feedback on this episode.
This show has been flagged as Explicit by the host. Presenter explores Thermosol refill challenges, proprietary adapters, and DIY solutions to optimize mosquito repellent efficiency. New Design Metal Refill Adapter For Thermacell Butane Cartridge DIY US Shipping https://www.thingiverse.com/thing:4963965 ( IDK if works ... ) https://www.ebay.com/itm/375229842193 https://www.ebay.com/itm/256712359477 https://www.ebay.com/itm/386734600195 https://www.youtube.com/watch?v=r6lAzan0MiU https://www.youtube.com/watch?v=FIf2SMrDY7E Wine Bottle Torch Kit 8 Pack, Includes 8 Long Life Torch Wicks, Lamp Cover & Brass Wick Mount(13.7 Inch,Bottle not Included) https://www.amazon.com/Bottle-Torch-Wicks-Copper-Included/dp/B01MSRJJTA Aldi https://www.thingiverse.com/thing:4780152 https://www.thingiverse.com/thing:2104000 IDEAS: Thermosol mosquito repellent devices require specific refill methods. Proprietary butane adapters create refill barriers for Thermosol. 3D-printed adapters offer a customizable refill solution. Butane refill systems include nozzles tailored to Thermosol cartridges. Proprietary check valves in cartridges complicate refills. Pressure management is critical during refilling. Marking the fill line prevents overfilling. O-rings must be carefully removed to access check valves. A wood screw can extract the proprietary check valve. Refilled Thermosol devices often use Chinese-yum pads. Discolored pads indicate the need for replacement. Yard waste storage increases fire risk for Thermosol. "Slit in the middle" adapters enable effective refills. Adapter design mimics regular butane cartridge geometry. Fuel escape through slits rather than central tube. Overfilling leads to excessive pressure buildup. Reusing empty Thermosol containers via refills. Combining DIY methods with commercial refill kits. Alternative nozzles may fail without proper adapter. Proprietary valve removal enables long-term cost savings. RECOMMENDATIONS: Use 3D-printed adapters for Thermosol refills. Extract proprietary check valves with a wood screw. Mark the fill line to prevent overfilling. Replace o-rings carefully to avoid damage. Store Thermosol in fire-safe containers. Combine DIY slits with commercial nozzles. Swap out discolored pads regularly. Repurpose empty Thermosol containers via refills. Use a tapered object with a central slit for refills. Avoid proprietary adapters by modifying existing nozzles. Pressurize and depressurize during refill cycles. Source affordable Chinese-yum pads for replacements. Inspect valves for one-way check mechanisms. Follow video tutorials for adapter installation. Prioritize sealed containers for long-term storage. Adapt butane lighter attachments for Thermosol. Test refill methods with empty containers first. Document fill line marks for future reference. Compare DIY solutions to commercial refill kits. Advocate for open-standard Thermosol refills. Provide feedback on this episode.
This show has been flagged as Clean by the host. In our first look at the game mechanics for Civilization V we start with Cities and Citizen Management, then look a Social Policies. Links: https://www.palain.com/gaming/civilization-v/playing-civilization-v-part-1/ Provide feedback on this episode.
This show has been flagged as Explicit by the host. Elsbeth talks about her passion for crochet and other hand crafts, and reflects on the marketing and selling of these items, leading her to think about different forms of trade, even in the context of software production. She steps through setting up an online shop on Etsy. Crochet - a process of creating textiles by using a crochet hook to interlock loops of yarn, thread, or strands of other materials. - https://en.wikipedia.org/wiki/Crochet Barter - a system of exchange in which participants in a transaction directly exchange goods or services for other goods or services without using a medium of exchange, such as money - https://en.wikipedia.org/wiki/Barter Open-source bounty - a monetary reward for completing a task in an open-source software project - https://en.wikipedia.org/wiki/Open-source_bounty Bug bounty program - a deal offered by many websites, organizations, and software developers by which individuals can receive recognition and compensation for reporting bugs, especially those pertaining to security vulnerabilities - https://en.wikipedia.org/wiki/Bug_bounty_program Gitcoin - one initiative supporting the development of open source projects and monetizing open source software through bounties - https://www.gitcoin.co/program Etsy, Inc. is an American e-commerce company with an emphasis on the selling of handmade or vintage items and craft supplies. - https://en.wikipedia.org/wiki/Etsy - https://www.etsy.com Explicit content notice solely for possible languageProvide feedback on this episode.
This show has been flagged as Clean by the host. I like to download video files from the Internet, and I have faced annoying problem: Broken or missing AVI indexes. My initial search for a solution was turning up paid software, but I persisted and found a nice open source solution using our old friend ffmeg. The command to use on the command line is: ffmpeg -i input.avi -c copy output.avi I found this to be very quick and easy, and I got the new output file in seconds. Links https://superuser.com/questions/4570/how-can-i-repair-a-broken-avi-file https://www.palain.com/ Provide feedback on this episode.
This show has been flagged as Clean by the host. Hi. My name is Moss Bliss, and this is Hacker Public Radio. This is my 3rd HPR solo podcast, and you can also hear me on mintCast and Full Circle Weekly News most weeks. I watch TV via streaming on a Lenovo ThinkCentre M700 Tiny. I change streams and services using a wireless keyboard, from my recliner across the room. For a couple years, I was using a Logitech K400r, and it worked pretty well. Good keys, nice touchpad, a couple of extra features. It was kind of flimsy though, with lots of flex and keys popping off from time to time -- not so much of a problem as they popped back on well -- and then the plastic on-off slider just wore out. It had a raised strip on the plastic slider which served as something to grab with a nail, and it just eventually wore down. So I went looking for something perhaps a bit sturdier. What I found was a Rii Model K22. The box had some different numbers in addition to that, and the label on the keyboard also had other numbers, but the best way to find it is to look for the K22. It was a solid, mostly metal, keyboard, so I bought it. No flex to speak of, and the keys are made to not pop off. There are some caveats. The volume up-down and mute buttons are part of the touchpad, not physical buttons, and are not lighted. In a dark room, with a black keyboard and touchpad, it can be easy to hit the wrong area of the touchpad. Also, I have yet to get the scroll feature -- supposedly the right side of the touchpad -- to work properly, but most of the time I can scroll with two fingers on the touchpad. Also, and I have no clue why, it sometimes brings up a menu I've never seen before getting this keyboard. Yes, it's pretty easy to make it go away, but still... Unlike the K400r, the K22 has a rechargeable battery built in, and charges via USB-C. Also, the touchpad is significantly larger than that of the K400r. I have had no problems with touchpad's responsiveness, other than the issues already mentioned. I'm not really very good with touchpads, so perhaps I just haven't learned the features. I paid $18 at Walmart for the K400r, although currently on Amazon it is going for $39.89 with a cheaper model for $19.99. The cheaper model has fewer buttons and a few cutbacks on design features. The K400r has a 4.2 star rating, with 67% 5-star and 16% 4-star. The Amazon AI reports, "Customers find the keyboard functional and easy to use. They appreciate its responsive keys and convenient setup. Many find it a good value for the price, lightweight, and convenient to use from the couch. However, opinions differ on the size and touchpad responsiveness." The Logitech is wifi only, but it does come with the ubiquitous Logitech wifi dongle. The Rii K22 is currently $24.99, minus a 15% coupon as of this writing. It has a 3.9 star rating, with 56% 5-star and 15% 4-star. Amazon's AI reports, "Customers find the keyboard works well on all devices and has a responsive touchpad. They appreciate its compact size and good build quality. However, some customers have reported issues with missing keystrokes and keypad malfunctions. There are mixed opinions on the touchpad, battery life, and typing experience." The Rii keyboard can use wifi or Bluetooth easily, and comes with a wifi dongle. While I'm a touch typist, I don't use this keyboard for typing, so I can't comment on its missing keystrokes. I'm sure there are use cases where the Rii K22 would not be the best fit, but for my use, it is a huge step up from the K400r. The build quality and materials alone make it perfect for my use, where I sit in my recliner and use it to maneuver my browser and streams, and then toss it in the corner when I'm done. If you have a need for a wireless keyboard, I hope you will look at the Rii K22. But that's it for me this time. Thank you for listening, and I hope to be back soon.Provide feedback on this episode.
This show has been flagged as Clean by the host. TuxJam co-host Kevie goes over the command line applications that he currently uses, January 2025 at the time of recording. These include: mpg123 - Playing audio streams ffmpeg - Recording audio streams MOC - Music player Lynx - browser Mutt - email client Neofetch - System information Weechat - IRC client Provide feedback on this episode.
This show has been flagged as Clean by the host. About Linux Matters Join 3 experienced Open Source professionals as they discuss the impact Linux has in their daily lives. Upbeat family-friendly banter, conversation and discussion for Linux enthusiasts and casual observers of all ages. A new episode every two weeks covering terminal productivity, desktop experience, development, gaming, hosting, hardware, community, cloud-native and all the Linux Matters that matter. Links Website: https://linuxmatters.sh/ License: Creative Commons Attribution-NonCommercial 4.0 International license. RSS: https://linuxmatters.sh/episode/index.xml Provide feedback on this episode.
This show has been flagged as Clean by the host. Hello, this is your host, Archer72 for another episode of Hacker Public Radio In this episode, I talk about how I use Newsboat and Podboat for a couple of tasks. I don't always use Podboat for podcasts, but it is useful when listening from my laptop For my other podcast listening, I used Antennapod Newsboat source of feeds is from a url list in ~/.config/newsboat/urls Newsboat url list # (Bible) https://feeds.feedburner.com/hl-int-tv-en-kjv "Bible" (Bible) # (Reddit) https://www.reddit.com/r/commandline.rss "Commandline" (Reddit) https://www.reddit.com/r/raspberry_pi.rss "~Raspberry Pi" (Reddit) # (Lemmy) https://lemmy.sdf.org/feeds/local.xml?sort=New "Lemmy SDF" (Lemmy) # (Podcasts) http://gnuworldorder.info/ogg.xml "Gnu_World_Order" # Tuxjam.Otherside.Network https://tuxjam.otherside.network/feed "TuxJam" https://tuxjam.otherside.network/feed/uncut "TuxJam Uncut" https://thebugcast.org/category/podcast/feed "The Bugcast" # Hacker Public Radio http://hackerpublicradio.org/rss-future.php HackerPublicRadio_future_feed "~Hacker Public Radio ~ Future feed" (HPR) http://hackerpublicradio.org/hpr_ogg_rss.php "HPR_two_week_feed" (HPR) http://hackerpublicradio.org/comments_rss.php HPR_comment_feed "HPR_Comments" (HPR) https://archive.org/services/collection-rss.php?collection=dlarc-hackerpublicradio "~HPR Amateur Radio - Archive.org" (HPR) # Other Tech podcasts https://feeds.fireside.fm/asknoah/rss "The Ask Noah Show" https://feeds.feedburner.com/urandom-podcast/ogg "Urandom Podcast" https://ubuntu.social/@linuxmatters # (Youtube) https://www.youtube.com/feeds/videos.xml?channel_id=UC2eYFnH61tmytImy1mTYvhA "Luke Smith" (Youtube) https://www.youtube.com/feeds/videos.xml?channel_id=UCH6ttJZ3T5gA-r_7PYkHk9g "SGOTI" (Youtube) https://www.youtube.com/feeds/videos.xml?channel_id=UCVls1GmFKf6WlTraIb_IaJg "DistroTube" (Youtube) https://www.youtube.com/feeds/videos.xml?channel_id=UC9x0AN7BWHpCDHSm9NiJFJQ "Network Chuck" (Youtube) # Import from Newpipe https://www.youtube.com/feeds/videos.xml?channel_id=UC_SLthyNX_ivd-dmsFgmJVg "Jeremy Fielding" (Youtube) https://www.youtube.com/feeds/videos.xml?channel_id=UCJ0-OtVpF0wOKEqT2Z1HEtA "ElectroBOOM" (Youtube) https://www.youtube.com/feeds/videos.xml?channel_id=UCv1Kcz-CuGM6mxzL3B1_Eiw "Gardiner Bryant" (Youtube) https://www.youtube.com/feeds/videos.xml?channel_id=UC3s0BtrBJpwNDaflRSoiieQ "Hak5" (Youtube) https://www.youtube.com/feeds/videos.xml?channel_id=UCR-DXc1voovS8nhAvccRZhg "Jeff Geerling" (Youtube) https://www.youtube.com/feeds/videos.xml?channel_id=UCzgA9CBrIXPtkB2yNTTiy1w "Level 2 Jeff" (Youtube) https://www.youtube.com/feeds/videos.xml?channel_id=UCLx053rWZxCiYWsBETgdKrQ "LGR" (Youtube) https://www.youtube.com/feeds/videos.xml?channel_id=UCXuqSBlHAE6Xw-yeJA0Tunw "Linus Tech Tips" (Youtube) https://www.youtube.com/feeds/videos.xml?channel_id=UCm9K6rby98W8JigLoZOh6FQ "LockPickingLawyer" (Youtube) https://www.youtube.com/feeds/videos.xml?channel_id=UCjFaPUcJU1vwk193mnW_w1w "Modern Vintage Gamer" (Youtube) https://www.youtube.com/feeds/videos.xml?channel_id=UCP8QhVVoM7IKD0YwnvnPPbg "Pater Practicus" (Youtube) https://www.youtube.com/feeds/videos.xml?channel_id=UCjr2bPAyPV7t35MvcgT3W8Q "The Hated One" (Youtube) https://www.youtube.com/feeds/videos.xml?channel_id=UCo71RUe6DX4w-Vd47rFLXPg "typecraft" (Youtube) ## From Mrs. Archer https://www.youtube.com/feeds/videos.xml?channel_id=UCld68syR8Wi-GY_n4CaoJGA "Brodie Robertson" (Youtube) https://www.youtube.com/feeds/videos.xml?channel_id=UCg6gPGh8HU2U01vaFCAsvmQ "Chris Titus Tech" (Youtube) https://www.youtube.com/feeds/videos.xml?channel_id=UCoryWpk4QVYKFCJul9KBdyw "Switched To Linux" (Youtube) https://www.youtube.com/feeds/videos.xml?channel_id=UCJf7AT2BzFT-31z0d-bc8Rg "Windows, computers and Technology" (Youtube) https://www.youtube.com/feeds/videos.xml?channel_id=UC5UAwBUum7CPN5buc-_N1Fw "The Linux Experiment" (Youtube) https://www.youtube.com/feeds/videos.xml?channel_id=UCmyGZ0689ODyReHw3rsKLtQ "Michael Tunnell" (Youtube) # (News) https://olfconference.org/feed/ "OLF Conference" (News) To organize the url list, tags can be used, along with a description of the feed. This only give an internal description, as the Main title is determined by the RSS feed itself. This can be manually set, for example, in the HPR Future feed. The default feed title is the same as the feed for two weeks. To set manually, us a tilde ~ before the Feed Title shown in this example. Tags follow the Feed Title, typed in parentheses and with no spaces. Multiple tags can be used here. http://hackerpublicradio.org/rss-future.php HackerPublicRadio_future_feed "~Hacker Public Radio ~ Future feed" (HPR) Not all feeds in the url list are podcasts. Some are Reddit feeds, while others are youtube channels. The first item I go to in the morning is my Bible daily verse. I heard one new host mention that he reads some, and thought it might be interesting to include this. The next 2 entries are from Reddit, and can be modified to contain the rss feed in this way: Replace the /r/commandline with /r/commandline.rss add "Title" and "(Tag)" https://www.reddit.com/r/commandline.rss "Commandline" (Reddit) The next entry, which I only include one, is the Lemmy instance for lemmy.sdf.org Lemmy is part of the Fediverse, and became popular after the June 2023 controversy involving charging excessive money for Reddit's API. This in turn, caused third party Reddit apps to be no longer viable. Alternativeto.net - API Charging Policy Wikipedia - Lemmy_(social_network) Next, we'll start on the ~/.config/newsboat/config file Newsboat config file # Podboat download-path "~/Downloads/podcasts/%h/%n" # %h - Hostname # %n - Podcast name # Example: hub.hackerpublicradio.org # gnuworldorder.info # media.blubrry.com/The Bugcast # archive.org/TuxJam download-filename-format "%n - %t.%u" # %n - Name of the podcast feed # %t - Title of the podcast episode # %u - Indicates the file extension podlist-format "%4i [%6dMB/%6tMB] [%5p %%] %-10S %b" # Table 7. Available Identifiers for podlist-format # %i - Download index, 4 indicating number of digits # %6dMB/%6tMB - Downloaded (in MB) / Total file size (in MB) # [%5p %%] - Percent downloaded # %-10S - Status - {queued, downloading, ready, played, deleted} # # 4.18. Format Strings # %b - Boolean string # load URLS on launch auto-reload yes # vim binds bind-key j down bind-key k up bind-key j next articlelist bind-key k prev articlelist bind-key J next-feed articlelist bind-key K prev-feed articlelist bind-key G end bind-key g home # bind-key d pagedown - default bind-key D pagedown bind-key u pageup bind-key l open bind-key h quit bind-key a toggle-article-read bind-key n next-unread bind-key N prev-unread # bind-key D pb-download - default bind-key d pb-download bind-key U show-urls bind-key x pb-delete # Colors highlight article "^Feed:.*" color5 color0 highlight article "^Title:.*" color3 color0 bold highlight article "^Author:.*" color2 color0 highlight article "^Date:.*" color223 color0 highlight article "^Link:.*" color4 color0 highlight article "^Flags:.*" color9 color0 highlight article "\[[0-9][0-9]*\]" color66 default bold highlight article "\[image [0-9][0-9]*\]" color109 default bold color listnormal cyan default color listfocus black yellow standout bold color listnormal_unread cyan default color listfocus_unread yellow default bold color info red black bold color article cyan default # macro setup browser linkhandler macro , open-in-browser # download-path ~/.newsboat/queue player "mpv --vid=no" macro 1 set browser "mpv --vid=no"; one; set browser lynx # launch video player macro v set browser "setsid -f mpv" ; open-in-browser ; set browser linkhandler # download video macro d set browser "yt-dlp"; open-in-browser ; set browser linkhandler # download audio only macro a set browser "yt-dlp --embed-metadata -xic -f bestaudio/best" ; open-in-browser ; set browser linkhandler When enqueing a podcast for Podboat, I changed the default download path to ~/Downloads/podcasts/ using download-path "~/Downloads/podcasts/%h/%n" Where %h is the Hostname, and %n is the Podcast name The file name is formatted in the following way %n - %t.%u Where %n is the podcast name, %t is the podcast title and %u indicates the file extension Finally, there is a custom line for podlist-format which for podcast purposes I won't list out. This includes a Download index to 4 places, percentage of each podcast downloaded, and Podcast status When I use Podboat, after the set of podcasts are enqued I found a way to monitor the bluetooth connection, in order to pause a show with the bluetooth button on an earbud. The first part of this puzzle is to have mpris-proxy, which is included in the bluez-utils Archwiki - MPRIS Then enable the service with systemctl --user enable mpris-proxy.service and systemctl --user start mpris-proxy.service After that, git clone https://github.com/hoyon/mpv-mpris.git from Github - hoyon/mpv-mpris cd mpv-mpris and make, with the resulting mpris.so copied to ~/.config/mpv/scripts/ Newsboat documentation Newsboat Documentation page Format strings Newsboat Documentation page - Format Strings Provide feedback on this episode.
This show has been flagged as Clean by the host. I am subscribed to a number of YouTube channels, and I am sharing them with you. Links: https://www.youtube.com/@BackToSpace https://www.youtube.com/@bakerstreetjournal1642 https://www.youtube.com/@BBCEarthExplore https://www.youtube.com/@besmart https://www.youtube.com/@BeyondTheSofa https://www.youtube.com/@BillBruford https://www.youtube.com/@BizarreBeasts https://www.youtube.com/@boesthius https://www.youtube.com/@braincraft https://www.youtube.com/@BreakRoomofGeeks https://www.youtube.com/@briantylercohen https://www.youtube.com/@ButterflySpanish https://www.youtube.com/@cab801 https://www.youtube.com/@candyrat https://www.youtube.com/@carcareclues https://www.youtube.com/@carhelpcorner https://www.palain.com/ Provide feedback on this episode.
This show has been flagged as Clean by the host. Where oxo answers some of the questions about hajime oxo/hajime - Codeberg.org hajime/prep/make-recov at main - oxo/hajime - Codeberg.org hajime/prep/isolatest at main - oxo/hajime - Codeberg.orgProvide feedback on this episode.
This show has been flagged as Explicit by the host. From Wikipedia - https://en.wikipedia.org/wiki/Content_moderation "On websites that allow users to create content, content moderation is the process of detecting contributions that are irrelevant, obscene, illegal, harmful, or insulting. The purpose of content moderation is to remove or apply a warning label to problematic content or allow users to block and filter content themselves." Facebook Community Standards - https://transparency.meta.com/en-gb/policies/community-standards/ TikTok Community Guidelines - https://www.tiktok.com/community-guidelines/en Provide feedback on this episode.
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 Links: https://en.wikipedia.org/wiki/Planet_of_Giants https://en.wikipedia.org/wiki/The_Dalek_Invasion_of_Earth https://en.wikipedia.org/wiki/The_Rescue_(Doctor_Who) https://en.wikipedia.org/wiki/The_Romans_(Doctor_Who) https://en.wikipedia.org/wiki/The_Web_Planet https://en.wikipedia.org/wiki/The_Crusade_(Doctor_Who) https://www.palain.com/science-fiction/intro-to-doctor-who/the-first-doctor-part-2/ Provide feedback on this episode.
This show has been flagged as Clean by the host. I am subscribed to a number of YouTube channels, and I am sharing them with you. Links: https://www.youtube.com/@2LegsAPaulMcCartneyPodcast https://www.youtube.com/@AdamNeely https://www.youtube.com/@AlReviewsWho https://www.youtube.com/@AlternateHistoryHub https://www.youtube.com/@amawaterways https://www.youtube.com/@theSpaceVixen https://www.youtube.com/channel/UC1AtM-B9YZTSoMcKt1yDieg https://www.youtube.com/@TheRealAndyMcKee https://www.youtube.com/channel/UCxgAH7EcmKhC9bLm7xQ971g https://www.youtube.com/@ApartmentSessions https://www.youtube.com/@arthurc.clarkecenterforhum6745 https://www.youtube.com/@associationofirishcelticfe4447 https://www.palain.com/ Provide feedback on this episode.
This show has been flagged as Clean by the host. TuxJam co-host Kevie goes over the desktop applications that he currently uses, January 2025 at the time of recording. These include: Peazip Lutris GIMP Inkscape Tuba Mumble Telegram Calibre PDF Arranger Bluefish Editor Easytag Goodvibes OBS Studio Openshot Reco Audacity Provide feedback on this episode.
This show has been flagged as Explicit by the host. Overview Several years ago I wrote a Bash script to perform a task I need to perform almost every day - find the newest file in a series of files. At this point I was running a camera on a Raspberry Pi which was attached to a window and viewed my back garden. I was taking a picture every 15 minutes, giving them names containing the date and time, and storing them in a directory. It was useful to be able to display the latest picture. Since then, I have found that searching for newest files useful in many contexts: Find the image generated by my random recipe chooser, put in the clipboard and send it to the Telegram channel for my family. Generate a weather report from wttr.in and send it to Matrix. Find the screenshot I just made and put it in the clipboard. Of course, I could just use the same name when writing these various files, rather than accumulating several, but I often want to look back through such collections. If I am concerned about such files accumulating in an unwanted way I write cron scripts which run every day and delete the oldest ones. Original script The first iteration of the script was actually written as a Bash function which was loaded at login time. The function is called newest_matching_file and it takes two arguments: A file glob expression to match the file I am looking for. An optional directory to look for the file. If this is omitted, then the current directory will be used. The first version of this function was a bit awkward since it used a for loop to scan the directory, using the glob pattern to find the file. Since Bash glob pattern searches will return the search pattern when they fail, it was necessary to use the nullglob (see references) option to prevent this, turning it on before the search and off afterwards. This technique was replaced later with a pipeline using the find command. Improved Bash script The version using find is what I will explain here. function newest_matching_file { local glob_pattern=${1-} local dir=${2:-$PWD} # Argument number check if [[ $# -eq 0 || $# -gt 2 ]]; then echo 'Usage: newest_matching_file GLOB_PATTERN [DIR]' >&2 return 1 fi # Check the target directory if [[ ! -d $dir ]]; then echo "Unable to find directory $dir" >&2 return 1 fi local newest_file # shellcheck disable=SC2016 newest_file=$(find "$dir" -maxdepth 1 -name "$glob_pattern" \ -type f -printf "%T@ %p\n" | sort | sed -ne '${s/.\+ //;p}') # Use printf instead of echo in case the file name begins with '-' [[ -n $newest_file ]] && printf '%s\n' "$newest_file" return 0 } The function is in the file newest_matching_file_1.sh , and it's loaded ("sourced", or declared) like this: . newest_matching_file_1.sh The '.' is a short-hand version of the command source . I actually have two versions of this function, with the second one using a regular expression, which the find command is able to search with, but I prefer this one. Explanation The first two lines beginning with local define variables local to the function holding the arguments. The first, glob_pattern is expected to contain something like screenshot_2025-04-*.png . The second will hold the directory to be scanned, or if omitted, will be set to the current directory. Next, an if statement checks that there are the right number of arguments, aborting if not. Note that the echo command writes to STDERR (using '>&2' ), the error channel. Another if statement checks that the target directory actually exists, and aborts if not. Another local variable newest_file is defined. It's good practice not to create global variables in functions since they will "leak" into the calling environment. The variable newest_file is set to the result of a command substitution containing a pipeline: The find command searches the target directory. Using -maxdepth 1 limits the search to the chosen directory and does not descend into sub-directories. The search pattern is defined by -name "$glob_pattern" Using -type f limits the search to files The -printf "%T@ %p\n" argument returns the file's last modification time as the number of seconds since the Unix epoch '%T@' . This is a number which is larger if the file is older. This is followed, after a space, by the full path to the file ( '%p' ), and a newline. The matching file names are sorted. Because each is preceded by a numeric time value, they will be sorted in ascending order of age. Finally sed is used to return the last file in the sorted list with the program '${s/.\+ //;p}' : The use of the -n option ensures that only lines which are explicitly printed will be shown. The sed program looks for the last line (using '$' ). When found the leading numeric time is removed with ' s/.\+ //' and the result is printed (with 'p' ). The end result will either be the path to the newest file or nothing (because there was no match). The expression '[[ -n $newest_file ]]' will be true if $newest_file variable is not empty, and if that is the case, the contents of the variable will be printed on STDOUT, otherwise nothing will be printed. Note that the script returns 1 (false) if there is a failure, and 0 (true) if all is well. A null return is regarded as success. Script update While editing the audio for this show I realised that there is a flaw in the Bash function newest_matching_file . This is in the sed script used to process the output from find . The sed commands used in the script delete all characters up to a space, assuming that this is the only space in the last line. However, if the file name itself contains spaces, this will not work because regular expressions in sed are greedy . What is deleted in this case is everything up to and including the last space. I created a directory called tests and added the following files: 'File 1 with spaces.txt' 'File 2 with spaces.txt' 'File 3 with spaces.txt' I then ran the find command as follows: $ find tests -maxdepth 1 -name 'File*' -type f -printf "%T@ %p\n" | sort | sed -ne '${s/.\+ //;p}' spaces.txt I adjusted the sed call to sed -ne '${s/[^ ]\+ //;p}' . This uses the regular expression: s/[^ ]\+ // This now specifies that what it to be removed is every non-space up to and including the first space. The result is: $ find tests -maxdepth 1 -name 'File*' -type f -printf "%T@ %p\n" | sort | sed -ne '${s/[^ ]\+ //;p}' tests/File 3 with spaces.txt This change has been propagated to the copy on GitLab . Usage This function is designed to be used in commands or other scripts. For example, I have an alias defined as follows: alias copy_screenshot="xclip -selection clipboard -t image/png -i \$(newest_matching_file 'Screenshot_*.png' ~/Pictures/Screenshots/)" This uses xclip to load the latest screenshot into the clipboard, so I can paste it into a social media client for example. Perl alternative During the history of this family of scripts I wrote a Perl version. This was originally because the Bash function gave problems when run under the Bourne shell, and I was using pdmenu a lot which internally runs scripts under that shell. #!/usr/bin/env perl use v5.40; use open ':std', ':encoding(UTF-8)'; # Make all IO UTF-8 use Cwd; use File::Find::Rule; # # Script name # ( my $PROG = $0 ) =~ s|.*/||mx; # # Use a regular expression rather than a glob pattern # my $regex = shift; # # Get the directory to search, defaulting to the current one # my $dir = shift // getcwd(); # # Have to have the regular expression # die "Usage: $PROG regex [DIR]\n" unless $regex; # # Collect all the files in the target directory without recursing. Include the # path and let the caller remove it if they want. # my @files = File::Find::Rule->file() ->name(qr/$regex/) ->maxdepth(1) ->in($dir); die "Unsuccessful search\n" unless @files; # # Sort the files by ascending modification time, youngest first # @files = sort {-M($a) -M($b)} @files; # # Report the one which sorted first # say $files[0]; exit; Explanation This is fairly straightforward Perl script, run out of an executable file with a shebang line at the start indicating what is to be used to run it - perl . The preamble defines the Perl version to use, and indicates that UTF-8 (character sets like Unicode) will be acceptable for reading and writing. Two modules are required: Cwd : provides functions for determining the pathname of the current working directory. File::Find::Rule : provides tools for searching the file system (similar to the find command, but with more features). Next the variable $PROG is set to the name under which the script has been invoked. This is useful when giving a brief summary of usage. The first argument is then collected (with shift ) and placed into the variable $regex . The second argument is optional, but if omitted, is set to the current working directory. We see the use of shift again, but if this returns nothing (is undefined), the '//' operator invokes the getcwd() function to get the current working directory. If the $regex variable is not defined, then die is called to terminate the script with an error message. The search itself is invoked using File::Find::Rule and the results are added to the array @files . The multi-line call shows several methods being called in a "chain" to define the rules and invoke the search: file() : sets up a file search name(qr/$regex/) : a rule which applies a regular expression match to each file name, rejecting any that do not match maxdepth(1) : a rule which prevents the search from descending below the top level into sub-directories in($dir) : defines the directory to search (and also begins the search) If the search returns no files (the array is empty), the script ends with an error message. Otherwise the @files array is sorted. This is done by comparing modification times of the files, with the array being reordered such that the "youngest" (newest) file is sorted first. The operator checks if the value of the left operand is greater than the value of the right operand, and if yes then the condition becomes true. This operator is most useful in the Perl sort function. Finally, the newest file is reported. Usage This script can be used in almost the same way as the Bash variant. The difference is that the pattern used to match files is a Perl regular expression. I keep this script in my ~/bin directory, so it can be invoked just by typing its name. I also maintain a symlink called nmf to save typing! The above example, using the Perl version, would be: alias copy_screenshot="xclip -selection clipboard -t image/png -i \$(nmf 'Screenshot_.*\.png' ~/Pictures/Screenshots/)" In regular expressions '.*' means "any character zero or more times". The '.' in '.png' is escaped because we need an actual dot character. Conclusion The approach in both cases is fairly simple. Files matching a pattern are accumulated, in the Bash case including the modification time. The files are sorted by modification time and the one with the lowest time is the answer. The Bash version has to remove the modification time before printing. This algorithm could be written in many ways. I will probably try rewriting it in other languages in the future, to see which one I think is best. References Glob expansion: Wikipedia article on glob patterns HPR shows covering glob expansion: Finishing off the subject of expansion in Bash (part 1) Finishing off the subject of expansion in Bash (part 2) GitLab repository holding these files: hprmisc - Miscellaneous scripts, notes, etc pertaining to HPR episodes which I have contributed Provide feedback on this episode.
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 4391 Mon 2025-06-02 HPR Community News for May 2025 HPR Volunteers 4392 Tue 2025-06-03 The Water is Wide, and the sheet music should be too Jezra 4393 Wed 2025-06-04 Journal like you mean it. Some Guy On The Internet 4394 Thu 2025-06-05 Digital Steganography Intro mightbemike 4395 Fri 2025-06-06 Second Life Lee 4396 Mon 2025-06-09 AI and Sangria operat0r 4397 Tue 2025-06-10 Transfer files from desktop to phone with qrcp Klaatu 4398 Wed 2025-06-11 Command line fun: downloading a podcast Kevie 4399 Thu 2025-06-12 gpg-gen-key oxo 4400 Fri 2025-06-13 Isaac Asimov: Other Asimov Novels of Interest Ahuka 4401 Mon 2025-06-16 hajime oxo 4402 Tue 2025-06-17 pinetab2 Brian in Ohio 4403 Wed 2025-06-18 How to get your very own copy of the HPR database norrist 4404 Thu 2025-06-19 Kevie nerd snipes Ken by grepping xml Ken Fallon 4405 Fri 2025-06-20 What did I do at work today? Lee 4406 Mon 2025-06-23 SVG Files: Cyber Threat Hidden in Images ko3moc 4407 Tue 2025-06-24 A 're-response' Bash script Dave Morriss 4408 Wed 2025-06-25 Lynx - Old School Browsing Kevie 4409 Thu 2025-06-26 H D R Ridiculous Monitor operat0r 4410 Fri 2025-06-27 Civilization V Ahuka 4411 Mon 2025-06-30 The Pachli project thelovebug Comments this month These are comments which have been made during the past month, either to shows released during the month or to past shows. There are 29 comments in total. Past shows There are 4 comments on 3 previous shows: hpr4375 (2025-05-09) "Long Chain Carbons,Eggs and Dorodango?" by operat0r. Comment 4: Torin Doyle on 2025-06-06: "Reply to @Bob" hpr4378 (2025-05-14) "SQL to get the next_free_slot" by norrist. Comment 1: Torin Doyle on 2025-06-12: "Cheers for this." hpr4388 (2025-05-28) "BSD Overview" by norrist. Comment 4: Henrik Hemrin on 2025-06-02: "Learned more about BSD." Comment 5: norrist on 2025-06-02: "Additional info for OpenBSD Router" This month's shows There are 25 comments on 10 of this month's shows: hpr4391 (2025-06-02) "HPR Community News for May 2025" by HPR Volunteers. Comment 1: Torin Doyle on 2025-06-06: "Very disappointed."Comment 2: Ken Fallon on 2025-06-06: "Thanks for your feedback."Comment 3: Torin Doyle on 2025-06-09: "Reply to Ken [Comment 2]"Comment 4: norrist on 2025-06-09: "Watch the Queue for a show about how to find all the comments"Comment 5: Torin Doyle on 2025-06-10: "Comment #3 typo."Comment 6: Torin Doyle on 2025-06-11: "Reply to Comment #4 by norrist"Comment 7: Torin Doyle on 2025-06-11: "Got the link." hpr4394 (2025-06-05) "Digital Steganography Intro" by mightbemike. Comment 1: Henrik Hemrin on 2025-06-05: "Fascinating topic"Comment 2: oxo on 2025-06-05: "Good show! " hpr4395 (2025-06-06) "Second Life" by Lee. Comment 1: Antoine on 2025-06-08: "Brings philosophical thoughts" hpr4397 (2025-06-10) "Transfer files from desktop to phone with qrcp" by Klaatu. Comment 1: Laindir on 2025-06-18: "The perfect kind of recommendation" hpr4398 (2025-06-11) "Command line fun: downloading a podcast" by Kevie. Comment 1: Henrik Hemrin on 2025-06-11: "Tempted to have fun"Comment 2: Ken Fallon on 2025-06-22: "Personal message to redhat (nprfan)" hpr4403 (2025-06-18) "How to get your very own copy of the HPR database" by norrist. Comment 1: Torin Doyle on 2025-06-18: "Appreciated!"Comment 2: Torin Doyle on 2025-06-18: "Database size."Comment 3: norrist on 2025-06-18: "Also an SQLite version"Comment 4: Torin Doyle on 2025-06-25: "Not able to use database to find my comments." hpr4404 (2025-06-19) "Kevie nerd snipes Ken by grepping xml" by Ken Fallon. Comment 1: Henrik Hemrin on 2025-06-22: "More to digest"Comment 2: Alec Bickerton on 2025-06-29: "Shorter version"Comment 3: Alec Bickerton on 2025-06-29: "Shorter version"Comment 4: Alec Bickerton on 2025-06-29: "XML parsing without xmlstarlet" hpr4405 (2025-06-20) "What did I do at work today?" by Lee. Comment 1: Dave Morriss on 2025-06-25: "Thanks for bringing us along..." hpr4406 (2025-06-23) "SVG Files: Cyber Threat Hidden in Images" by ko3moc. Comment 1: oxo on 2025-06-23: "Interesting! "Comment 2: ko3moc on 2025-06-24: "response " hpr4408 (2025-06-25) "Lynx - Old School Browsing" by Kevie. Comment 1: Henrik Hemrin on 2025-06-29: "Review ALT texts" 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/2025-June/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.
This show has been flagged as Clean by the host. After updating the firmware on my Sony Noise Cancelling Headset, and upgrading to Fedora 40 , my A2DP ) profiles stopped working. I did a quick search and found someone with the same issue and it would be fixed in a Kernel upgrade. Common enough on a bleeding edge that is Fedora, however as the months moved on and the kernel upgraded, the problem remained. I tried to implement workarounds several times but eventually came across this passage from hank aka hankuoffroad on the Fedora Forums This is a known behavior when using Bluetooth audio on Linux on hands-free mode: you cannot use A2DP for high-quality audio output while simultaneously using the Bluetooth microphone via HSP/HFP, due to profile limitations in the Bluetooth specification and current Linux audio stack. I knew this of course, but my Sony WH-CH700N Wireless Noise Cancelling Headphones don't have a microphone. ... Hold on how does Noise Cancelling work exactly again ? Active noise control (ANC), also known as noise cancellation (NC), or active noise reduction (ANR), is a method for reducing unwanted sound by the addition of a second sound specifically designed to cancel the first Wikipedia If the first is the background noise, it needs a microphone to capture it so it can be inverted. Ah ha...I had recently also disabled my Zoom H2v2 as it was now sometimes acting as a speaker. So presumably pipewire tries to find any microphone on the system, when it cant find the best one it will resort to the one used for noise canceling in the headset. Once the headset is been used for audio in as well, then there isn't enough bandwidth to do high definition audio, so you end up with the low quality two way profiles. Would the solution be as easy as enabling a proper microphone . . . . Provide feedback on this episode.
This show has been flagged as Clean by the host. Having purchased a new cable bag from Bellroy at the start of the year, Kevie shares his thoughts on the Bellroy Travel Kit . Provide feedback on this episode.
This show has been flagged as Clean by the host. If you go to the system settings in the main menu for KDE and scroll down, you can get to shortcuts and under shortcuts, there is a thing called custom shortcuts, and you can do anything you want in here. Provide feedback on this episode.
This show has been flagged as Explicit by the host. The program starts with a brief trailer, presenting the story, before starting the full audiodrama... I hope you have a good show, thanks in advance for listening. References (some): LIANG, Jiashuo. A History of Japan's Unit 731 and Implications for Modern Biological Warfare. Advances in Social Science, Education and Humanities Research, v. 673. Atlantis Press, 2022. PBS. The Living Weapon: Shiro Ishii. Link: https://www.pbs.org/wgbh/americanexperience/features/weapon-biography-shiro-ishii. Accessed: January 2025. RIDER, Dwight R. Japan's Biological and Chemical Weapons Programs; War Crimes and Atrocities – Who's Who, What's What, Where's Where. 1928 – 1945. 3rd ed., 2018 [“In Process” version]. Credits of audio used — in order of appearance (or “listenance”): Kulakovka / Pixabay – Lost in Dreams (abstract chill downtempo cinematic future beats). BBC Sound Effects – Aircraft: Beaufighters - Take off. (Bristol Beaufighter, World War II); Army: Parade Ground Manoeuvres - Platoon strolls single-file on parade ground; Weather: Snow - Blizzard - heard inside house, with banging shutters; Footsteps In Snow - Footsteps in snow, 3 men departing; Water - Filling metal bucket from pond and pouring water on to concrete. florianreichelt / Freesound ¬– quick woosh. Thalamus_Lab / Freesound – Vertical Noise_Chinese Folk Duo Decay. neolein / Freesound – Mystic chinese guzheng. BBC Sound Effects again – World War 2 - Enemy artillery (World War II actuality) - 1975 (500S); Aircraft: Beaufighters - Exterior, steep climb. (Bristol Beaufighter, World War II). JamesFarrell_97 / Freesound – Game Theme. Luke100000 / Freesound – turning old pages. BBC Sound Effects – Sirens & Gunfire - World War II Air Raid Siren, German, all clear sounded. Gvidon / Pixabay – Spinning Head. * If you'd like the script to read (along with a few other things, like the Audacity project), you can obtain the text at the production's page on Archive.org: https://archive.org/details/the-prisioner-of-unit-731-audiodrama-final * As a post-show extra: you can listen to the producer's motivation for producing this story on ep. 4313. hpr4313 :: Why I made a 1-episode podcast about a war story: https://hackerpublicradio.org/eps/hpr4313/index.html Provide feedback on this episode.
This show has been flagged as Clean by the host. In this episode Dave and Kevie chat with Nik from the Pachli project. Pachli is a free/open-source Mastodon/Fediverse client for Android. We talk in depth about Nik's background, Pachli's name and origin, and the motivation for creating another client for the Fediverse. Also discussed is Pachli's association with the Nivenly Foundation , and how users and developers can contribute to the project as a whole. With thanks to Nik for his time and candor. Fediverse: @nikclayton@mastodon.social Fediverse: @pachli@mastodon.social Email: team@pachli.app Website: pachli.app GitHub: pachli-android Provide feedback on this episode.
This show has been flagged as Clean by the host. Civilization V, released in 2010, was a further evolution of the franchise that added interesting new features. We introduce it in this episode. Links: https://en.wikipedia.org/wiki/Jon_Shafer https://civilization.fandom.com/wiki/Production_(Civ5) https://civilization.fandom.com/wiki/Happiness_(Civ5) https://www.youtube.com/watch?v=xgRIdcWq_fs https://www.youtube.com/watch?v=rh6hXzW_GyA https://www.youtube.com/watch?v=DbK82-u08dw https://www.youtube.com/watch?v=Hyv3qJpMNIs https://www.youtube.com/watch?v=Qgc8ZaShkR4 https://www.youtube.com/watch?v=Wy6AoOQ136Y https://www.youtube.com/watch?v=q7VW-rGvfrs https://www.youtube.com/watch?v=xypYpI4UiEc https://www.youtube.com/watch?v=I__9ZlOUG4E https://www.youtube.com/watch?v=Z3x3P8gsCFA https://www.palain.com/gaming/civilization-v/ Provide feedback on this episode.
This show has been flagged as Clean by the host. Never fan of duel monitors Mother inlaw had a better monitor then me https://slickdeals.net 4:3, 16:9, 21:9 (Ratio calculator) Samsung 49" Class Odyssey G95C DQHD 240Hz Curved Gaming Monitor LS49CG95DENXZA US $646.49 posture / arms out / screen position / mouse shoulder For car sim and gaming not for DEV Virtual Monitor for Display Port connections https://github.com/roshkins/IddSampleDriver HDR profiles for windows HDR calibration https://github.com/dylanraga/win11hdr-srgb-to-gamma2.2-icm avsforum HDR10 test patterns set https://www.avsforum.com/threads/hdr10-test-patterns-set.2943380/ Set and Forget HDR on Win11. Works for Black Myth Wukong. Sdr Hdr Trick https://www.youtube.com/watch?v=EPUKW3xLTNM Talk about Gameplay / Lighting /HDR / Bright High contrast https://github.com/freeload101/SCRIPTS/blob/6059ce43696e3c8101926da7959bebafbd0ab3b6/AutoHotkey/C0ffee%20Anti%20Idle%20v2.ahk#L130 SUMMARY The presenter discusses configuring monitor settings for development, emphasizing HDR calibration and multi-monitor productivity. IDEAS Calibrating a monitor's HDR settings can significantly improve image quality by adjusting brightness and color. Using HDR (High Dynamic Range) enhances the visual experience by improving contrast and color accuracy. Adjusting black levels and brightness helps in achieving optimal visibility for both bright and dark scenes. The calibration of HDR settings involves fine-tuning various parameters like gamma, whites, and blacks. Multi-monitor setups can enhance productivity by allowing more efficient workspace organization. Curved monitors may benefit development tasks by providing a larger visual area without needing multiple displays. Managing dual monitors requires spatial awareness to efficiently switch focus between screens. Windows' snapping features help in organizing windows on multi-monitor setups, enhancing workflow efficiency. The presenter finds the transition from dual monitors to a single large curved monitor advantageous for productivity. A larger screen real estate reduces the need for physical separation of workspaces, easing multitasking. QUOTES "I will be looking at calibrating my monitor's HDR settings." "Let me know if you have any questions or suggestions in regards to these videos..." "HDR is an incredible technology that allows us to see better contrast and colors on our screens." "That way we can achieve a much more dynamic range of colors while playing games and watching media on our TVs, computer monitors, phones, etc." "It will be a bit different between calibrating a normal monitor with SDR to a HDR-enabled display." "So if the blacks are too bright then you won't really see the black levels as well." "The idea is that your brightest whites should be at 100% and your darkest blacks should be around 0%." "With this being said, I've never had a lot of luck with using my Windows HDR settings before." "A lot of people say don't buy a curved monitor for production stuff." "And now I have like basically three monitors." RECOMMENDATIONS Calibrate your monitor's HDR settings to enhance color and contrast. Adjust brightness, gamma, whites, and blacks for optimal visibility in various lighting conditions. Utilize Windows snapping features for efficient window management on multi-monitor setups. Consider transitioning to a single curved monitor for improved productivity and workspace real estate. Familiarize yourself with the tabbing system to ensure input is directed to the correct window. Experiment with panel sizes in your multi-monitor setup to find a configuration that suits your workflow. Ensure proper calibration of both SDR and HDR displays to achieve the best visual experience. Adjust black levels so they are not too bright, maintaining clear visibility of darker scenes. Set whites to 100% for better representation of bright areas in images and videos. Explore different monitor configurations to determine what enhances your productivity the most. ONE SENTENCE SUMMARY The presenter shares insights on optimizing HDR monitor settings and maximizing productivity with multi-monitor setups for development tasks.Provide feedback on this episode.
This show has been flagged as Clean by the host. Kevie , from the TuxJam podcast, takes a look at the Lynx command line browser and briefly discusses it's uses and if it still has a place in our modern times. Some Useful Hot-keys: g to go to a specific website m goes to your start page (Main screen is what Lynx calls it) o for options h for help p for print q to quit program / search for text on a page Navigation < previous page > forward page up and down move between links on the page. Down or left will also cancel a command if pressed accidentally. Pg Up and Pg Down scroll up or down a whole screen at a time. ctrl n (down or next) and ctrl p (up or previous) will move the page up and down a couple of lines a will add the current page to the bookmarks list v views the list of bookmarks , open the current page in another browser G displays the URL and allows editing ctrl L reloads the current page Some Basic Config Edits: Edit the file /etc/lynx/lynx.cfg (You will need to used sudo privileges to edit a system file) To change the starting page go to Line 111 and add STARTFILE:YOUR_CHOSEN_PAGE_URL I used https://duckduckgo.com/lite Don't forget to comment out the default one at line 105 To change the browser to open a link, go to Line 3141 and add EXTERNAL:http:BROSWER_LAUNCH_COMMAND %s:TRUE To use the default browser on modern Linux systems add xdg-open Provide feedback on this episode.
This show has been flagged as Explicit by the host. Introduction On 2025-06-19 Ken Fallon did a show, number 4404 , responding to Kevie's show 4398 , which came out on 2025-06-11. Kevie was using a Bash pipeline to find the latest episode in an RSS feed, and download it. He used grep to parse the XML of the feed. Ken's response was to suggest the use of xmlstarlet to parse the XML because such a complex structured format as XML cannot reliably be parsed without a program that "understands" the intricacies of the format's structure. The same applies to other complex formats such as HTML, YAML and JSON. In his show Ken presented a Bash script which dealt with this problem and that of the ordering of episodes in the feed. He asked how others would write such a script, and thus I was motivated to produce this response to his response! Alternative script My script is a remodelling of Ken's, not a completely different solution. It contains a few alternative ways of doing what Ken did, and a reordering of the parts of his original. We will examine the changes in this episode. Script #!/bin/bash # Original (c) CC-0 Ken Fallon 2025 # Modified by Dave Morriss, 2025-06-14 (c) CC-0 podcast="https://tuxjam.otherside.network/feed/podcast/" # [1] while read -r item do # [2] pubDate="${item%;*}" # [3] pubDate="$( \date --date="${pubDate}" --universal +%FT%T )" # [4] url="${item#*;}" # [5] echo "${pubDate};${url}" done <
This show has been flagged as Clean by the host. Out of nowhere, my Firefox browser on my Mac mini started automatically adding every page I visited to my bookmarks. At first, I thought it was a bug after recent update —maybe a misconfigured setting or similar. But when I searched for a fix, Google suggested something alarming: Scan for malware. And guess what? The source of my trouble turned out to be an 4 SVG files hiding malicious code. That's right—those innocent-looking vector graphics files we use every day for logos, icons, and web design? They can secretly carry malware. In my case those were the files, a logos of reputable delivery companies like deliveroo and JustEat which I have downloaded while I was updating a website for my client. Today, we're breaking down how SVG files are being weaponized, why they're so effective, and how to protect yourself. example of svg file Provide feedback on this episode.
This show has been flagged as Explicit by the host. This is about developing Visual Basic classes for a web application. The classes access an SQL Server database via Stored Procedures. Tests.vb Private Sub ResourceTypeTests() ResourceTypeAddTest() ResourceTypeGetTest() End Sub Private Sub ResourceTypeAddTest() Dim fake As New Fake Console.WriteLine("Adding resource type") Console.WriteLine() Dim objResourceType As New ResourceType With { .ResourceTypeID = 0, .ResourceTypeName = fake.Noun } OutputResourceType(objResourceType) Dim ResourceTypeID As Integer = objResourceType.Add() Console.WriteLine("Added Resource Type ID " & ResourceTypeID) Console.WriteLine() Console.WriteLine("Modifying resource type with ID " & ResourceTypeID) Console.WriteLine() fake = New Fake With objResourceType .ResourceTypeID = ResourceTypeID .ResourceTypeName = fake.Noun End With Console.WriteLine("Modification") OutputResourceType(objResourceType) Dim newResourceTypeID As Integer = objResourceType.Add() Console.WriteLine("Modified ResourceTypeID " & newResourceTypeID) Console.WriteLine() End Sub Private Sub ResourceTypeGetTest() Console.WriteLine("Fetching resource types") Console.WriteLine() Dim objResourceType As New ResourceType() Dim ResourceTypeList As List(Of ResourceType) = objResourceType.GetResourceTypes() For Each ResourceType As ResourceType In ResourceTypeList OutputResourceType(ResourceType) Next End Sub Private Sub OutputResourceType(ResourceType As ResourceType) Console.WriteLine("Resource Type ID " & ResourceType.ResourceTypeID) Console.WriteLine("Resource Type Name " & ResourceType.ResourceTypeName) Console.WriteLine() End Sub ResourceType.vb Public Class ResourceType Private m_ResourceTypeID As Integer Private m_ResourceTypeName As String Private ReadOnly dataFields As New List(Of String) From { "ResourceTypeID", "ResourceTypeName" } Private ReadOnly objFields = dataFields Dim objGlobals As New Globals Dim _ConnectionString As String = objGlobals.getConnectionString() Property ResourceTypeID As Integer Get ResourceTypeID = m_ResourceTypeID End Get Set(value As Int32) m_ResourceTypeID = value End Set End Property Property ResourceTypeName As String Get ResourceTypeName = m_ResourceTypeName End Get Set(value As String) m_ResourceTypeName = value End Set End Property Public Function Add() As Int32 Dim ReturnValue As Int32 Try ReturnValue = StoredProcOutInt( _ConnectionString, "dbo.ResourceType_Add", Me, dataFields, objFields, "NewResourceTypeID" ) Catch ex As Exception ErrorRecorder("Resource.Add", ex.Message, ex.Data.ToString) ReturnValue = 0 End Try Return ReturnValue End Function Public Function GetResourceTypes() As List(Of ResourceType) Dim ObjResourceTypes As New List(Of ResourceType) Try StoredProc(Of ResourceType)( _ConnectionString, "dbo.ResourceType_Get", dataFields, objFields, ObjResourceTypes ) Catch ex As Exception ErrorRecorder("ResourceType.GetResourceTypes", ex.Message, ex.Data.ToString) End Try Return ObjResourceTypes End Function End Class ResourceType_Add.sql SET QUOTED_IDENTIFIER ON GO SET ANSI_NULLS ON GO CREATE PROCEDURE [dbo].[ResourceType_Add] @ResourceTypeID INT, @ResourceTypeName NVARCHAR(100), @NewResourceTypeID INT OUTPUT AS BEGIN SET NOCOUNT ON; IF @ResourceTypeID = 0 BEGIN INSERT INTO dbo.ResourceType ( ResourceType_Name ) VALUES ( @ResourceTypeName ) SET @NewResourceTypeID = SCOPE_IDENTITY() END ELSE BEGIN UPDATE dbo.ResourceType SET ResourceType_Name = @ResourceTypeName WHERE ResourceTypeID = @ResourceTypeID SET @NewResourceTypeID = @ResourceTypeID END END GO ResourceType_Get.sql SET QUOTED_IDENTIFIER ON GO SET ANSI_NULLS ON GO CREATE PROCEDURE [dbo].[ResourceType_Get] AS BEGIN SET NOCOUNT ON; SELECT ResourceTypeID AS ResourceTypeID, ResourceType_Name AS ResourceTypeName FROM dbo.ResourceType END GO Provide feedback on this episode.
This show has been flagged as Explicit by the host. More Command line fun: downloading a podcast In the show hpr4398 :: Command line fun: downloading a podcast Kevie walked us through a command to download a podcast. He used some techniques here that I hadn't used before, and it's always great to see how other people approach the problem. Let's have a look at the script and walk through what it does, then we'll have a look at some "traps for young players" as the EEVBlog is fond of saying. Analysis of the Script wget `curl https://tuxjam.otherside.network/feed/podcast/ | grep -o 'https*://[^"]*ogg' | head -1` It chains four different commands together to "Save the latest file from a feed". Let's break it down so we can have checkpoints between each step. I often do this when writing a complex one liner - first do it as steps, and then combine it. The curl command gets https://tuxjam.otherside.network/feed/podcast/ . To do this ourselves we will call curl https://tuxjam.otherside.network/feed/podcast/ --output tuxjam.xml , as the default file name is index.html. This gives us a xml file, and we can confirm it's valid xml with the xmllint command. $ xmllint --format tuxjam.xml >/dev/null $ echo $? 0 Here the output of the command is ignored by redirecting it to /dev/null Then we check the error code the last command had. As it's 0 it completed sucessfully. Kevie then passes the output to the grep search command with the option -o and then looks for any string starting with https followed by anything then followed by two forward slashes, then -o, --only-matching Print only the matched (non-empty) parts of a matching line, with each such part on a separate output line We can do the same with. I was not aware that grep defaulted to regex, as I tend to add the --perl-regexp to explicitly add it. grep --only-matching 'https*://[^"]*ogg' tuxjam.xml http matches the characters http literally (case sensitive) s* matches the character s literally (case sensitive) Quantifier: * Between zero and unlimited times, as many times as possible, giving back as needed [greedy] : matches the character : literally / matches the character / literally / matches the character / literally [^"]* match a single character not present in the list below Quantifier: * Between zero and unlimited times, as many times as possible, giving back as needed [greedy] " a single character in the list " literally (case sensitive) ogg matches the characters ogg literally (case sensitive) When we run this ourselves we get the following $ grep --only-matching 'https*://[^"]*ogg' tuxjam.xml https://archive.org/download/tuxjam-121/tuxjam_121.ogg https://archive.org/download/tuxjam-120/TuxJam_120.ogg https://archive.org/download/tux-jam-119/TuxJam_119.ogg https://archive.org/download/tuxjam_118/tuxjam_118.ogg https://archive.org/download/tux-jam-117-uncut/TuxJam_117.ogg https://tuxjam.otherside.network/tuxjam-115-ogg https://archive.org/download/tuxjam_116/tuxjam_116.ogg https://tuxjam.otherside.network/tuxjam-115-ogg https://tuxjam.otherside.network/tuxjam-115-ogg https://tuxjam.otherside.network/tuxjam-115-ogg https://ogg http://tuxjam.otherside.network/wp-content/uploads/sites/5/2024/10/tuxjam_115_OggCamp2024.ogg https://ogg https://archive.org/download/tuxjam_114/tuxjam_114.ogg https://archive.org/download/tuxjam_113/tuxjam_113.ogg https://archive.org/download/tuxjam_112/tuxjam_112.ogg The last command returns the first line, so therefore https://archive.org/download/tuxjam-121/tuxjam_121.ogg Finally that line is used as the input to the wget command. Problems with the approach Relying on grep with structured data like xml or json can lead to problems. When we looked at the output of the command in step 2, some of the results gave https://ogg . When run the same command without the --only-matching argument we see what was matched. $ grep 'https*://[^"]*ogg' tuxjam.xml This episode may not be live as in TuxJam 115 from Oggcamp but your friendly foursome of Al, Dave (thelovebug), Kevie and Andrew (mcnalu) are very much alive to treats of Free and Open Source Software and Creative Commons tunes. https://tuxjam.otherside.network/tuxjam-115-oggcamp-2024/ https://tuxjam.otherside.network/tuxjam-115-oggcamp-2024/#respond https://tuxjam.otherside.network/tuxjam-115-oggcamp-2024/feed/ With the group meeting up together for the first time in person, it was decided that a live recording would be an appropriate venture. With the quartet squashed around a table and a group of adoring fans crowded into a room at the Pendulum Hotel in Manchester, the discussion turns to TuxJam reviews that become regularly used applications, what we enjoyed about OggCamp 2024 and for the third section the gang put their reputation on the line and allow open questions from the sea of dedicated fans. OggCamp 2024 on Saturday 12 and Sunday 13 October 2024, Manchester UK. Two of the hits are not enclosures at all, they are references in the text to OggCamp what we enjoyed about OggCamp 2024 Normally running grep will only get one entry per line, and if the xml is minimised it can miss entries on a file that comes across as one big line. I did this myself using xmllint --noblanks tuxjam.xml > tuxjam-min.xml I then edited it and replaced the new lines with spaces. I have to say that the --only-matching argument is doing a great job at pulling out the matches. That said the results were not perfect either. $ grep --only-matching 'https*://[^"]*ogg' tuxjam-min.xml https://archive.org/download/tuxjam-121/tuxjam_121.ogg https://archive.org/download/tuxjam-120/TuxJam_120.ogg https://archive.org/download/tux-jam-119/TuxJam_119.ogg https://archive.org/download/tuxjam_118/tuxjam_118.ogg https://archive.org/download/tux-jam-117-uncut/TuxJam_117.ogg https://tuxjam.otherside.network/tuxjam-115-ogg https://archive.org/download/tuxjam_116/tuxjam_116.ogg https://tuxjam.otherside.network/tuxjam-115-ogg https://tuxjam.otherside.network/?p=1029https://tuxjam.otherside.network/tuxjam-115-oggcamp-2024/#respondhttps://tuxjam.otherside.network/tuxjam-115-ogg https://ogg http://tuxjam.otherside.network/wp-content/uploads/sites/5/2024/10/tuxjam_115_OggCamp2024.ogg https://ogg https://archive.org/download/tuxjam_114/tuxjam_114.ogg https://archive.org/download/tuxjam_113/tuxjam_113.ogg https://archive.org/download/tuxjam_112/tuxjam_112.ogg You could fix it by modifying the grep arguments and add additional searches looking for enclosure . The problem with that approach is that you'll forever and a day be chasing issues when someone changes something. So the approach is officially "Grand", but it's a very likely to break if you're not babysitting it. Suggested Applications. I recommend never parsing structured documents , like xml or json with grep. You should use dedicated parsers that understands the document markup, and can intelligently address parts of it. I recommend: xml use xmlstarlet json use jq yaml use yq Of course anyone that looks at my code on the hpr gittea will know this is a case of "do what I say, not what I do." Never parse xml with grep, where the only possible exception is to see if a string is in a file in the first place. grep --max-count=1 --files-with-matches That's justified under the fact that grep is going to be faster than having to parse, and build a XML Document Object Model when you don't have to. Some Tips Always refer to examples and specification A specification is just a set of rules that tell you how the document is formatted. There is a danger in just looking at example files, and not reading the specifications. I had a situation once where a software developer raised a bug as the files didn't begin with ken-test- followed by a uuid . They were surprised when the supplied files did not follow this convention as per the examples. Suffice to say that was rejected. For us there are the rules from the RSS specification itself, but as it's a XML file there are XML Specifications . While the RSS spec is short, the XML is not, so people tend to use dedicated libraries to parse XML. Using a dedicated tool like xmlstarlet will allow us to mostly ignore the details of XML. RSS is a dialect of XML . All RSS files must conform to the XML 1.0 specification, as published on the World Wide Web Consortium (W3C) website. The first line of the tuxjam feed shows it's an XML file. The specification goes on to say "At the top level, a RSS document is a element, with a mandatory attribute called version, that specifies the version of RSS that the document conforms to. If it conforms to this specification, the version attribute must be 2.0." And sure enough then the second line show that it's a RSS file.
This show has been flagged as Clean by the host. Get your own copy of the HPR database reset_hpr.sh systemctl start mariadb curl https://hackerpublicradio.org/hpr.sql > hpr.sql mariadb -e 'drop database hpr_hpr' mariadb -e 'create database hpr_hpr' mariadb hpr_hpr < hpr.sql mariadb -e 'select count(*) from eps' hpr_hpr mariadb -e 'select * from comments where comment_author_name="Torin Doyle" G' hpr_hpr Provide feedback on this episode.