(2408,'2017-10-25','My Current Favourite Podcasts',246,'Six of my favourite podcasts, as of October 2017. ','<ul>\r\n<li><p>3 Guys 3 Questions<br />\r\n<a href=\"https://3g3q.co/\" class=\"uri\">https://3g3q.co/</a><br />\r\nHumour. Three guys take turns asking a question, which they each answer in turn.</p></li>\r\n<li><p>A Klingon Word from the Word<br />\r\n<a href=\"https://www.klingonword.org/\" class=\"uri\">https://www.klingonword.org/</a><br />\r\nChristianity, Sci-Fi. A Bible verse is read in Klingon, then in English.</p></li>\r\n<li><p>Cool Tools<br />\r\n<a href=\"https://kk.org/cooltools/category/podcast-2\" class=\"uri\">https://kk.org/cooltools/category/podcast-2</a><br />\r\nTechnology. Always a guest from the tech field or the maker community.</p></li>\r\n<li><p>Futility Closet<br />\r\n<a href=\"https://www.futilitycloset.com/category/podcast/\" class=\"uri\">https://www.futilitycloset.com/category/podcast/</a><br />\r\nHistory. Little-known stories from the past.</p></li>\r\n<li><p>Ken and Robin Talk about Stuff<br />\r\n<a href=\"https://www.kenandrobintalkaboutstuff.com/\" class=\"uri\">https://www.kenandrobintalkaboutstuff.com/</a><br />\r\nGaming. Two RPG designers talk to each other about game design and how to use current events in games.</p></li>\r\n<li><p>The Goodstuff Morning Show<br />\r\n<a href=\"https://goodstuff.fm/morningshow/\" class=\"uri\">https://goodstuff.fm/morningshow/</a><br />\r\nHumour. Not every morning, and sometimes they even record at night! Two brothers having wacky fun.</p></li>\r\n</ul>',250,75,0,'CC-BY-SA','podcasts, tech, maker, Christianity, science fiction, Klingon, humour, history',0,0,1),
(2413,'2017-11-01','personal health care',344,'wherein bitbox discovers he is fat, and can no longer find his feet','<p>This show was created while sitting in my tractor cab (I\'matruckdriver),ittooklessthan10minutestorecord.Theslightbackgroundnoiseismytruckgettingbouncedaroundbytheforkliftrunninginandoutofmytrailer.</p>\r\n<p>Theaudiowasrecordedonan\'Olympus VN-1000PC\'pocketdictationrecorder(purchasedatWalmartabout10or12yearsago,Ithink,forabout$20.00-US),onthebuiltinmic.Therecorderwillacceptamicand/orheadphonewitha3.5mmjacksize.Miniusboutasamassstoragedevicesoitseasytooffloadyourfiles.Thedeviceissimpleenoughforamonkeytouse,oratrucker...</p>\r\n<p><imgsrc=\"https://hackerpublicradio.org/eps/hpr2413/The_Ultra_Hi_End_Recorder.jpg\"alt=\"The_Ultra_Hi_End_Recorder.jpg\"/></p>\r\n<p>PhotosfrommyAndroidphone,asamsungs7active.PhotostransferredtomylaptopusingtheKDEconnectapplication(Iknow,Iknow,how\'bout an episode...)</p>\r\n<p>Photo editing in \"Gwenview\", a gui application with fast cropping and resizing capability, plus much much more (I know, I know, how \'boutanepisode...)</p>\r\n<p>Audioeditingin\"Audacity\",ofcourse.AllIdidwaspullthesilences,andthe\"uh, ummmm\'s\"out,andthenexportintoaflacmono.(Iknow,Iknow,how\'bout an episode...wait, no that one\'sbeendone,anddone,...)</p>\r\n<p><imgsrc=\"https://hackerpublicradio.org/eps/hpr2413/Expensive_Audio_Editing_Software_Suite.jpg\"alt=\"Expensive_Audio_Editing_Software_Suite.jpg\"/></p>\r\n<p>Thedigitalscaleinthepicturebelowwaspurchasedat\'bedbath&beyond\'forlessthan$20.00-US,severalyearsagoandseemsquiteaccurate</p>\r\n<p><imgsrc=\"https://hackerpublicradio.org/eps/hpr2413/OMG_scale_reading.jpg\"alt=\"OMG_scale_reading.jpg\"/></p>\r\n<p>TheOmronBPcuff...listsatabout$80-$90.00USontheirsite.Ididn\'t pay for that though. My mom the retired nurse did.</p>\r\n<p><img src=\"https://hackerpublicradio.org/eps/hpr2413/Omron_BP760_data_plate.jpg\" alt=\"Omron_BP760_data_plate.jpg\" /> <img src=\"https://hackerpublicradio.org/eps/hpr2413/Omron_BP760_machine.jpg\" alt=\"Omron_BP760_machine.jpg\" /></p>\r\n<p>SHAKUBUKU - from the wikipedia entry...<br />\r\nShakubuku \"break and subdue\" (折伏) is a term that originates in the Chinese Śrīmālādevī Siṃhanāda Sūtra. Although often associated with the teachings of Nichiren, the term appears often in the SAT Daizokyo and the works of the Chinese Tiantai patriarachs Zhiyi and Zhanran. The term has historically been used to indicate the rebuttal of false teachings, and thereby break negative patterns in one\'sthoughts,wordsanddeeds.</p>\r\n<p>Personally,Iheardthetermdefinedfirstonthemovie,\"Gross Pointe Blank\"withMinniDriver,JohnCusack,AlanArkinandDanAkroyd.MinnieDriver\'s character described SHAKUBUKU thusly,\"It\'saswift,spiritualkicktotheheadthataltersyourrealityforever.\"</p>\r\n<p>Both of these definitions work for me, the first being the more definitive, and the second being the somewhat simplistic, hipster/millennial definition, although the line was actually recorded around 1997 when the movie came out.</p>\r\n<p>Thank you all for listening.</p>\r\n<p>-bitbox</p>\r\n',330,100,1,'CC-BY-SA','health, personal health',0,0,1),
(2409,'2017-10-26','RPG Counternote',1155,'Lostnbronx offers his thoughts concerning Klaatu\'srecentepisodesaboutRPG\'s.','<p>I started with tabletop role-playing games just about forty years ago. Klaatu recently did a two-part episode on the merits of RPG\'s,anditpromptedsomethoughts.</p>\r\n<h3id=\"klaatus-rpg-episodes\">KLAATU\'S RPG EPISODES:</h3>\r\n<ul>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2381\" class=\"uri\">https://hackerpublicradio.org/eps.php?id=2381</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2390\" class=\"uri\">https://hackerpublicradio.org/eps.php?id=2390</a></li>\r\n</ul>',107,95,1,'CC-BY','rpg,role-playing game,pc,gaming,klaatu,lostnbronx',0,0,1),
(2414,'2017-11-02','What\'sinmyhamshack,part1',1331,'Adescriptionofwhat\'s in my amateur radio shack.','<ul>\r\n<li><p>Standard C510A/C510E, VHF / UHF analogue handset<br />\r\n<a href=\"https://www.eham.net/reviews/detail/2658\" class=\"uri\">https://www.eham.net/reviews/detail/2658</a><br />\r\n<a href=\"https://www.elkoba.com/en/wireless-radio-devices/standard-radio/standard-c-510.html\" class=\"uri\">https://www.elkoba.com/en/wireless-radio-devices/standard-radio/standard-c-510.html</a></p></li>\r\n<li><p>Standard Power Booster. I found it difficult to find information on this item<br />\r\n<a href=\"https://vobonus.appspot.com/Amateurfunk-Sendeempfnger/Booster-CPB-510-Von-Standard-Zur-Handfunke-C510E/252818765812\" class=\"uri\">https://vobonus.appspot.com/Amateurfunk-Sendeempfnger/Booster-CPB-510-Von-Standard-Zur-Handfunke-C510E/252818765812</a></p></li>\r\n<li><p>Baofeng UV-5R handset<br />\r\n<a href=\"https://www.amazon.co.uk/BaoFeng-UV-5R-136-174-400-480-Dual-Band-x/dp/B007HH6RR4\" class=\"uri\">https://www.amazon.co.uk/BaoFeng-UV-5R-136-174-400-480-Dual-Band-x/dp/B007HH6RR4</a></p></li>\r\n<li><p>RSGB News<br />\r\n<a href=\"https://rsgb.org/main/news/\" class=\"uri\">https://rsgb.org/main/news/</a></p></li>\r\n<li><p>Retevis RT3 handset DMR (Digital Mobile Radio)<br />\r\n<a href=\"https://www.retevis.com/dmr-radio-rt3-uhf-1000ch-digital-two-way-radio-walkie-talkie\" class=\"uri\">https://www.retevis.com/dmr-radio-rt3-uhf-1000ch-digital-two-way-radio-walkie-talkie</a></p></li>\r\n<li><p>DMR (Digital Mobile Radio)<br />\r\n<a href=\"https://en.wikipedia.org/wiki/Digital_mobile_radio\" class=\"uri\">https://en.wikipedia.org/wiki/Digital_mobile_radio</a><br />\r\n<a href=\"https://www.m0pzt.com/blog/amateurs-guide-to-dmr/\" class=\"uri\">https://www.m0pzt.com/blog/amateurs-guide-to-dmr/</a></p></li>\r\n<li><p>Hacked firmware for Retevis RT3 & MD850 clones<br />\r\n<a href=\"https://github.com/travisgoodspeed/md380tools\" class=\"uri\">https://github.com/travisgoodspeed/md380tools</a><br />\r\n<a href=\"https://github.com/travisgoodspeed/md380tools/wiki\" class=\"uri\">https://github.com/travisgoodspeed/md380tools/wiki</a></p></li>\r\n<li><p>Brandmiester Network<br />\r\n<a href=\"https://brandmeister.network/\" class=\"uri\">https://brandmeister.network/</a></p></li>\r\n<li><p>Hytera PD365 handset DMR<br />\r\n<a href=\"https://hytera.co.uk/products/pd365\" class=\"uri\">https://hytera.co.uk/products/pd365</a></p></li>\r\n</ul>',201,43,0,'CC-BY-SA','ham radio, amateur radio',0,0,1),
(2418,'2017-11-08','What\'sinmyhamshack,part2',1456,'Adescriptionofwhat\'s in my amateur radio shack','<style type=\"text/css\">\r\n article header ul > li,\r\n article footer ul > li {\r\n margin-bottom: 0;\r\n }\r\n article ul > li {\r\n margin-bottom: 5px;\r\n }\r\n</style>\r\n<ul>\r\n<li>Eurosonic 12V 35 Amp Power Supply, I couldn\'tfindapicturelikemypowersupplyinsteadIfoundpictureofasimilarone.Mypowersupplyhasalightbluecasingandissubstantiallybiggerthanthisasitcansupply12Vat35amps.<br/>\r\n<ahref=\"https://www.ebay.es/itm/Eurosonic-13-8v-3A-CB-Ham-Radio-Power-Supply-Excellent-condition-/192224086831?hash=item2cc172cb2f:g:fSMAAOSwwzhZSmRh\"class=\"uri\">https://www.ebay.es/itm/Eurosonic-13-8v-3A-CB-Ham-Radio-Power-Supply-Excellent-condition-/192224086831?hash=item2cc172cb2f:g:fSMAAOSwwzhZSmRh</a></li>\r\n<li>Icom2725,fullduplexanalogueVHF/UHFmobileradio<br/>\r\n<ahref=\"https://www.icomuk.co.uk/categoryRender.asp?categoryID=3824&productID=718&tID=938\"class=\"uri\">https://www.icomuk.co.uk/categoryRender.asp?categoryID=3824&productID=718&tID=938</a></li>\r\n<li>RevexW540,SWR&PowerMeter,140-525MHz<br/>\r\n<ahref=\"https://www.ebay.ie/itm/Revex-W540-Power-and-SWR-Meter-140-525MHz/371245912279\"class=\"uri\">https://www.ebay.ie/itm/Revex-W540-Power-and-SWR-Meter-140-525MHz/371245912279</a></li>\r\n<li>StandingWaveRatioInformationfromWikipedia<br/>\r\n<ahref=\"https://en.wikipedia.org/wiki/Standing_wave_ratio\"class=\"uri\">https://en.wikipedia.org/wiki/Standing_wave_ratio</a></li>\r\n<li>WelzSP-220SWR&PowerMeter,1.8-200MHz<br/>\r\n<ahref=\"https://www.eham.net/reviews/detail/5371\"class=\"uri\">https://www.eham.net/reviews/detail/5371</a></li>\r\n<li>KenwoodTS940SHFTransceiver,Covermodsandweaknessesofradio\r\n<ul>\r\n<li>TS940Overview<br/>\r\n<ahref=\"https://www.universal-radio.com/catalog/hamhf/ts940s.html\"class=\"uri\">https://www.universal-radio.com/catalog/hamhf/ts940s.html</a></li>\r\n<li>TS940Review<br/>\r\n<ahref=\"https://www.eham.net/reviews/detail/239\"class=\"uri\">https://www.eham.net/reviews/detail/239</a></li>\r\n<li>TS940Mods<br/>\r\n<ahref=\"https://www.radiomods.co.nz/kenwood/kenwoodts940.html\"class=\"uri\">https://www.radiomods.co.nz/kenwood/kenwoodts940.html</a></li>\r\n<li>TS940UserManual<br/>\r\n<ahref=\"https://www.radiomanual.info/schemi/TS940_user.pdf\"class=\"uri\">https://www.radiomanual.info/schemi/TS940_user.pdf</a></li>\r\n<li>TS940ServiceManual<br/>\r\nAfterrecordingtheshowIdecidedtoseeiftherewasalinktotheusermanualthisIfoundeasily.Thisgotmethinkingiftheservicemanualwasalsoavailableandtomysurpriseitis,all108gloriouslydetailedpages.Feelfreetoknockyourselfoutwiththedetail.<br/>\r\n<ahref=\"https://www.radiomanual.info/schemi/TS940_serv.pdf\"class=\"uri\">https://www.radiomanual.info/schemi/TS940_serv.pdf</a></li>\r\n</ul></li>\r\n<li>DummyLoad\r\n<ul>\r\n<li>Backgroundinfo<ahref=\"https://en.wikipedia.org/wiki/Dummy_load\"class=\"uri\">https://en.wikipedia.org/wiki/Dummy_load</a></li>\r\n<li>Howtobuildadummyload<ahref=\"https://www.k4eaa.com/dummy.html\"class=\"uri\">https://www.k4eaa.com/dummy.html</a></li>\r\n</ul></li>\r\n<li>UKAmateurRadioLogbook\r\n<ul>\r\n<li>ExampleofprintableAmateurradioLogbook,loggingcanalsobedoneusingsoftware.<ahref=\"https://m0ukd.com/other-stuff/printable-amateur-radio-logbooks/\"class=\"uri\">https://m0ukd.com/other-stuff/printable-amateur-radio-logbooks/</a></li>\r\n</ul></li>\r\n</ul>\r\n',201,43,0,'CC-BY-SA','AmateurRadio,HamRadio',0,0,1),
(2415,'2017-11-03','bullet journal to org mode',927,'my journey from analog to digital','<h2 id=\"brief-introduction\">1 Brief introduction</h2>\r\n<h3 id=\"myself\">1.1 Myself</h3>\r\n<p>Hi, I\'mBrianinOhio</p>\r\n<h3id=\"inspiration-for-show\">1.2Inspirationforshow</h3>\r\n<p>IheardShaneShennanonepisode2299doingawhat\'s in my bag episode where he briefly mentions using a bullet journal. Then I think I heard Ken Fallon wondering about bullet journals on community news for the month with that episode. So I thought a show was in order explaining how I went from using a bullet journal to using emacs org mode.</p>\r\n<h3 id=\"parameters\">1.3 Parameters</h3>\r\n<p>I\'mnotanexpertonanyofthefollowingtopics:bulletjournal,Gettingthingsdone(GTD),orgmodeoremacs.I\'m someone who has tried these tools, climbed the learning curve and have some observations to make through that process.</p>\r\n<h2 id=\"whats-a-bullet-journal\">2 What\'sabulletjournal</h2>\r\n<h3id=\"created-by-ryder-carrol\">2.1Createdbyrydercarrol</h3>\r\n<p>Theanalogsystemforthedigitalage</p>\r\n<h3id=\"where-i-found-out-about-it\">2.2WhereIfoundoutaboutit</h3>\r\n<p><ahref=\"https://www.relay.fm/penaddict/70\"class=\"uri\">https://www.relay.fm/penaddict/70</a></p>\r\n<h3id=\"what-it-is\">2.3Whatitis</h3>\r\n<p>Methodoflayingoutanotebookandusingittoorganizeandprocessideasandtasks.Iwon\'t try to explain exactly how it is set up. The video tutorial <a href=\"https://bulletjournal.com/\" class=\"uri\">https://bulletjournal.com/</a> is excellent. You can use any notebook and divide it up into index pages, future log, monthly log and daily log there\'savisualindexing/taggingsystemtohelporganizestuff.Itsextremelycustomizable.</p>\r\n<h3id=\"how-i-used-it\">2.4HowIusedit</h3>\r\n<p>Ibulletjournaledfor2andahalfyears,initiallysetitupstockbutlaterputtheindexattheback.Iuseditasadailyplanner,ideastoringdeviceandshorttermandlongtermgoalsettingtool.</p>\r\n<h3id=\"strengths\">2.5Strengths</h3>\r\n<p>Customizablebutwithinframework,givesamethodtogetorganizedthatyoucantailortoyourneeds.Itsprettyeasytofindneededinfo,ifyou\'re diciplined about using. It its battery free</p>\r\n<h3 id=\"shortcomings\">2.6 Shortcomings</h3>\r\n<p>Need to be disciplined. Can be tedious to enter items in month, daily and index sections. It takes time to set up. I think Shane\'susecasehementionedinpodcastassortofaproject/ideabooksoundsprettycoolandmightbeareallygoodusecaseforthissystem.Hardtoedit,thismaybeastrengthforsomepeople,butformeasadailyplanneritwasalittledauntingtouse.Addingstufftosomethingrequireseitherleavingspaceaheadoftimeorindexingtoanewpage.Themonthlylogwasalwaysamysterytomeonhowtouseit.Ifyouloseityou\'ve lost it, no easy way to back it up</p>\r\n<h2 id=\"what-is-org-mode\">3 What is org mode</h2>\r\n<h3 id=\"created-by-carsten-dominik\">3.1 Created by Carsten Dominik</h3>\r\n<ul>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Org-mode\">org-mode wiki</a></li>\r\n</ul>\r\n<h3 id=\"what-it-is-1\">3.2 what it is</h3>\r\n<p>Is an editing and organizing mode for notes, planning, and authoring in the free software text editor Emacs.</p>\r\n<h3 id=\"how-i-found-out-about-it\">3.3 How I found out about it</h3>\r\n<h4 id=\"emacs\">3.3.1 emacs</h4>\r\n<h5 id=\"wanted-a-commandline-c-development-environment-for-microcontroller-project-development\">3.3.1.1 Wanted a commandline C development environment for microcontroller project development</h5>\r\n<h5 id=\"ide\">3.3.1.2 IDE</h5>\r\n<p>Worked with vim/ a bash shell as a sort of minimal IDE. I specifically was using it on a laptop that didn\'thaveXinstalledonit.Justforfun,notmybreadandbutter.</p>\r\n<h5id=\"wanted-to-try-something-new\">3.3.1.3Wantedtotrysomethingnew</h5>\r\n<p>Knewaboutemacs,hadtrieditdidn\'t like it</p>\r\n<h5 id=\"thanks-to-klaatu-for-emacs-hpr-emacs-episodes\"
(2434,'2017-11-30','Cybrosis',5958,'The HPR AudioBook Club discusses Cybrosis by P.C. Haring','<h3>SUMMARY</h3>\r\n<p>In this episode, the HPR_AudioBookClub discusses Cybrosis by P. C. Haring.</p>\r\n<h3>Non-Spoiler Thoughts</h3>\r\n<ul>\r\n<li>Everyone agreed that the audio quality and engineering was excellent. The voice acting was just as good. pokey was bothered by something in the main character\'svoicethathelikenedto(butwasn\'t) hearing someone chew gum while talking. </li>\r\n</ul>\r\n<h3>BEVERAGE REVIEWS</h3>\r\n<p>As usual, the HPR_AudioBookClub took some time to review the beverages that each of us were drinking during the episode</p>\r\n<ul>\r\n<li>Thaj: Just a big latte mug full of good old fashioned Swiss Miss hot chocolate</li>\r\n <li>x1101: <a href=\"https://www.bevreview.com/wp-content/image_mountaindewlivewireofficial1.jpg\">Mt. Dew LiveWire</a></li>\r\n <li>pokey: I had no special beverage this month, so I took the opportunity to review my water filter and a brand of coconut oil that I particularly like. <a href=\"https://www.aquasana.com/\">https://www.aquasana.com/</a>, <a href=\"https://www.spectrumorganics.com/spectrum-naturals/coconut-oil-organic-virgin-unrefined/\">https://www.spectrumorganics.com/spectrum-naturals/coconut-oil-organic-virgin-unrefined/</a></li>\r\n<li>semioticrobotic: </li>\r\n<li>pegwole: </li>\r\n</ul>\r\n<h3>Things We Talked About</h3>\r\n<p> All of us felt that there were quite a few cliches in the story. </p>\r\n<h3>OUR NEXT AUDIOBOOK</h3>\r\n<p><strong>Triplanetary</strong> by E. E. \"Doc\" Smith\r\n <br/><a href=\"https://librivox.org/triplanetary-first-in-the-lensman-series-by-e-e-doc-smith/\">https://librivox.org/triplanetary-first-in-the-lensman-series-by-e-e-doc-smith/</a></p>\r\n<h3>OUR AUDIO</h3>\r\n<p>This episode was processed using Audacity <a href=\"https://audacity.sourceforge.net/\">https://audacity.sourceforge.net/</a>. We\'vebeenmakingsmalladjustmentstoouraudiomixeachmonthinordertogetthebestpossiblesound.It\'s been especially challenging getting all of our voices relatively level, because everyone has their own unique setup. Mumble is great for bringing us all together, and for recording, but it\'snotgoodatmakingeveryone\'s voice the same volume. We\'reprettyhappywiththewaythismonth\'s show turned out, so we\'dliketoshareoureditingprocessandsettingswithyouandourfutureselves(who,ofcourse,willhaveforgottenallthisbythen).</p>\r\n<p>Mumbleusesasamplerateof48kHz,butHPRrequiresasamplerateof44.1kHzsothefirststepinouraudioprocessistoresamplethefileat44.1kHz.Resamplingcantakealongtimeifyoudon\'t have a powerful computer, and sometimes even if you do. If you record late at night, like we do, you may want to start the task before you go to bed, and save it first thing in the morning, so that the file is ready to go the next time you are.</p>\r\n<p>Next we use the \"Compressor\" effect with the following settings:</P>\r\n <ul>\r\n <li>Threshold: -30db</li>\r\n <li>Noise Floor: -50db</li>\r\n <li>Ratio: 3:1</li>\r\n <li>Attack Time: 0.2sec</li>\r\n <li>Decay Time: 1.0 sec</li>\r\n <li>\"Make-up Gain for 0db after compressing\" and \"compress based on peaks\" were both left un-checked.</li>\r\n </ul>\r\n<p>After compressing the audio we cut any pre-show and post-show chatter from the file and save them in a separate file for possible use as outtakes after the closing music.</p>\r\n<p>At this point we listen back to the whole file and we work on the shownotes. This is when we can cut out anything that needs to be cut, and we can also make sure that we put any links in the shownotes that were talked about during the recording of the show. We finish the shownotes before exporting the .aup file to .FLAC so that we can paste a copy of the shownotes into the audio file\'smetadata.Weusethe\"Truncate Silence\"effectwithit\'s default settings to minimize the silence between people s
(2419,'2017-11-09','Alien Brothers Podcast S1E01 - Introduction',7584,'Meet the Alien Brothers: Casper and Rutiger. Two tech junkies that take nothing sacred','<p>This was an impromptu inaugural episode recorded in Bethany Beach, DE.</p>\r\n<p>Casper and Rutiger work in the tech field and enjoy video games and popular media. We discuss the enigma that is the Handmaid\'sTale,Tim&EricAwesomeShowGreatJob!,themovieKids,videogamesfrompaperboytoQuaketoFallout4.Wecomedicallydiscussthedisillusionmentthatonecanincurworkinginthecubicaljungle.Wealsodiscussgoingbacktominimumwageafterenjoyingahighpayingtechindustry.</p>\r\n<p>Wealsoreferenceobscureandnotwell-knownmusiclikeSlint.</p>\r\n<p>Thesoundqualityisnotgreatinthisepisode,asitwasanimprompturecording.Allfutureepisodeswillbeproducedatamuchhigherquality</p>',359,0,1,'CC-BY-SA','videogames,videocards,firstpodcast',0,0,1),
(2421,'2017-11-13','Project Interest',518,'Lostnbronx wonders how some projects die for lack of interest.','<p>This is just a short "episode" wherein I ponder the nature of showmanship and razzle-dazzle regarding the success or failure of FOSS, and other projects that require collaboration. Your comments and opinions are ACTIVELY encouraged.</p>',107,0,0,'CC-BY-SA','foss,collaboration,writing,projects',0,0,1),
(2422,'2017-11-14','Kickstarter Post Mortem',2763,'Klaatu talks about his failed Kickstarter campaign','<p>Klaatu tried to fund art for a card game on Kickstarter. Missed the goal by 85%</p>\r\n<p>This is a post mortem of how the Kickstarter went and where he may have gone wrong. Possibly you can learn from his mistakes. Possibly he has misdiagnosed his mistakes, and you are being misled. Choose wisely.</p>',78,95,0,'CC-BY-SA','Crowd Funding,Kickstarter,Tabletop Gaming',0,0,1),
(2423,'2017-11-15','Open Source Gaming #2: Oolite',431,'Episode 2 is about the space travel simulator Oolite, which is an open source remake of Elite','<p>The game\'swebsite.Ifyou\'re interested in playing, check it out. <a href=\"https://www.oolite.org/\" class=\"uri\">https://www.oolite.org/</a></p>\r\n<p>Also here\'stheforumIwaslookingupduringthepodcasttofindoutifEliteDangerouswasmultiplayerornot.<ahref=\"https://steamcommunity.com/app/359320/discussions/0/142260718945308887/\"class=\"uri\">https://steamcommunity.com/app/359320/discussions/0/142260718945308887/</a></p>\r\n',354,0,1,'CC-BY-SA','Gaming,OpenSource',0,0,1),
(2426,'2017-11-20','Let\'sTalkAboutAddiction',655,'Lostnbronxsharessomethoughtsabouttheneedtotalkaboutaddiction.','<p>IwaspartiallyinspiredbyBitbox\'s really wonderful episode, \"hpr2413: personal health care\", to ramble on about the need for the HPR community to, maybe, start talking about a mental health crisis that touches pretty much everyone in the modern world: addiction.</p>\r\n<p>Personal Health Care<br />\r\nhosted by Bitbox:<br />\r\n<a href=\"https://hackerpublicradio.org/eps.php?id=2413\" class=\"uri\">https://hackerpublicradio.org/eps.php?id=2413</a></p>\r\n',107,100,1,'CC-BY-SA','addiction,mental health',0,0,1),
(2430,'2017-11-24','Scanning books',740,'Ken explains how and why he is scanning school books','<p>\r\nI want to scan my Son\'sschoolbookssothathedoesn\'t get back problems lugging books to and from school. Something that for now at least remains <a href=\"https://en.wikipedia.org/wiki/Copyright_law_of_the_Netherlands#The_right_to_homecopy\">legal</a> in the Netherlands.\r\n</p>\r\n<h3>Steps involved</h3>\r\n<ol>\r\n<li>Scan all the images using the entire length of your scanner. I use <a href=\"https://hackerpublicradio.org/eps/hpr2430/scantoimage.bash\">scantoimage.bash</a></li>\r\n<li>Confirm that there are no missing pages, and that every other page is upright and then upside down etc. If they are scan them and rename them so the name fits in between the pages</li>\r\n<li>Back up all the scanned images</li>\r\n<li>Manually crop the areas of the scans outside the area of the page. Usually this is on the side and bottom of the flat bed. Save is as something like ~/x.jpg</li>\r\n<li>Use <a href=\"https://www.graphicsmagick.org/\">GraphicsMagick Image Processing System</a> to identify the dimensions of the cropped image. <br />\r\n<span style=\"font-family:\'LucidaConsole\', monospace\">\r\ngm identify ~/x.jpg<br />\r\n/home/me/x.jpg JPEG 2477x2609+0+0 DirectClass 8-bit 3.2Mi 0.000u 0m:0.000002s</span>\r\n</li>\r\n<li>Crop all the images to that dimension <br />\r\n<span style=\"font-family:\'LucidaConsole\', monospace\">gm mogrify -crop 2477x2609+0+0 *.jpg</span>\r\n</li>\r\n<li>Rotate every second image by 180 degrees. <a href=\"https://hackerpublicradio.org/eps/hpr2430/rotate-every-second-image.bash\">rotate-every-second-image.bash</a></li>\r\n<li>Create a directory for the book and in there create a subdirectory for each section of the book. Manually copy all the images to the sub directory for that section. </li>\r\n<li>Then go to the root where there are no files only subdirs and run the command <br />\r\n<span style=\"font-family:\'LucidaConsole\', monospace\">for i in *;do echo $i;gm convert \"${i}/*.jpg\" \"${i}.pdf\"; done</span></li>\r\n</ol>\r\n<p>\r\nAt the end you will have a pdf file for each section of the book.\r\n</p>',30,0,1,'CC-BY-SA','book scanning',0,0,1),
(2424,'2017-11-16','Interface Zero RPG Play',3010,'Klaatu, Lobath, and Thaj play the Interface Zero RPG','<p>Klaatu, Lobath, and Thaj play a session of <a href=\"https://drivethrurpg.com/product/214863/Interface-Zero-Pathfinder-Edition\">Interface Zero</a>, a role playing game using the <a href=\"https://paizo.com/beginnerbox\">Pathfinder</a> rules.\r\n</p>\r\n<p>\r\nIf you\'renewtoRPGandwanttohearhowit\'s done, or you\'rejustboredandwanttohearsomenerdsplaythroughacyberpunkadventure,thisisforyou!Also-foroneluckylistener-wehaveanRPGstarterkit.Listenfordetails.</p>',78,95,0,'CC-BY-SA','InterfaceZero,actualplay,rpg,gaming,liveplay',0,0,1),
(2425,'2017-11-17','Intro to XSL',2502,'A brief introduction to XSL and xsltproc','<p>\r\nSure, you can use pandoc to process your Docbook XML, but why not learn a little XSL this weekend?\r\n</p>\r\n<p><strong>Requirements</strong></p>\r\n<p>\r\nYou must have <a href=\"https://xmlsoft.org/XSLT/xsltproc.html\" target=\"_blank\">xsltproc</a> installed. It\'savailablefromyoursoftwarerepository.\r\n</p>\r\n<p>\r\nHereissomesampleXMLforyou:\r\n</p>\r\n<pre><code>\r\n<xml version=\"1.0\">\r\n <para>\r\n My name is <author>Foo</author>.\r\n </para>\r\n\r\n <para>\r\n You're listening to <emphasis role=\"bold\">Hacker Public\r\n Radio</emphasis>.\r\n </para>\r\n</xml>\r\n</code></pre>\r\n<p>\r\nAnd here\'s the complete XSL as demonstrated:\r\n</p>\r\n<pre><code>\r\n<xsl:stylesheet xmlns:xsl=\"https://www.w3.org/1999/XSL/Transform\" version=\"1.0\">\r\n\r\n <xsl:template match=\"para\">\r\n <p><span><xsl:apply-templates/></span></p>\r\n </xsl:template>\r\n\r\n <xsl:template match=\"emphasis\">\r\n <em><xsl:apply-templates/></em>\r\n </xsl:template>\r\n\r\n <xsl:template match=\"emphasis[@role=\'bold\']\">\r\n <strong><xsl:apply-templates/></strong>\r\n </xsl:template>\r\n\r\n <xsl:template match=\"author\" name=\"host\">\r\n <xsl:choose>\r\n\r\n <xsl:when test=\"$host = \'Klaatu\'\">\r\n <xsl:text>Klaatu</xsl:text>\r\n </xsl:when>\r\n\r\n <xsl:when test=\"$host = \'Gort\'\">\r\n <xsl:text>Gort</xsl:text>\r\n </xsl:when>\r\n </xsl:choose>\r\n </xsl:template>\r\n</xsl:stylesheet>\r\n</code></pre>\r\n<p><strong>Links</strong></p>\r\n<ul>\r\n<li>\r\n<p>\r\n<a href=\"https://nwalsh.com/docs/tutorials/xsl/xsl/frames.html\" target=\"_blank\">Norm Walsh</a>\r\n</p>\r\n</li>\r\n<li>\r\n<p>\r\n<a href=\"https://dpawson.co.uk/xsl/\" target=\"_blank\">dpawson</a>\r\n</p>\r\n</li>\r\n<li>\r\n<p>\r\n<a href=\"https://shop.oreilly.com/product/9780596003555.do\" target=\"_blank\">O\'Reilly</a>\r\n</p>\r\n</li>\r\n<li>\r\n<p>\r\n<a href=\"https://gitlab.com/notklaatu/dmschema\" target=\"_blank\">DM Schema</a>\r\n</p>\r\n</li>\r\n</ul>\r\n',78,0,0,'CC-BY-SA','docbook,xml,xsl',0,0,1),
(2427,'2017-11-21','Server Basics 101',2590,'Klaatu endeavours to explain the basics of server administration.','<p>Klaatu covers the very very basics of servers: what they are, how to know one when you see one, what one ought to run, and why we have them.</p>',78,0,0,'CC-BY-SA','server,admin,sys admin,linux',0,0,1),
(2429,'2017-11-23','Interface Zero RPG Play',1902,'Klaatu, Lobath, and Thaj play the Interface Zero RPG part 2','<p>The second session of <a href=\"https://drivethrurpg.com/product/214863/Interface-Zero-Pathfinder-Edition\">Interface Zero</a> RPG live play with Klaatu, Lobath, and Thaj.</p>\r\n\r\n<p>This week, Chiawei and Syd reach Peter\'sapartmentanddosomequickdetectivework,andalittlebitofminorbone-breaking.</p>\r\n\r\n<p>\r\nIfyou\'re <em>really</em> keen to play, send Klaatu an email (Klaatu at the domain of this podcast, or member.fsf.org). The recording schedule is inflexible, Klaatu has oddly high standards for audio that he is inevitably compresses down to 64kbps, and the game has already started, but a new character or guest character is not out of the question!</p>\r\n\r\n<p>No give-away this week, but we\'llbegivinga(digital)<ahref=\"https://paizo.com/beginnerbox\">Pathfinder</a>starterkitoutnextweek.</p>',78,95,0,'CC-BY-SA','InterfaceZero,actualplay,rpg,gaming,liveplay',0,0,1),
(2435,'2017-12-01','Server Basics 102',2926,'Klaatu talks about SSH configuration on the server you set up in 101.','<p>Klaatu talks about SSH, changing SSH ports, and using SSH keys for the server you presumably set up after hearing Server Basics 101 in this series.</p>',78,0,0,'CC-BY-SA','server,admin,sys admin,linux',0,0,1),
(2441,'2017-12-11','Server Basics 103',1773,'Firewalls and fail2ban','<p>Klaatu walks you through installing, configuring, and running fail2ban, and discusses the basics about firewalls.</p>\r\n\r\n<ul>\r\n<li><p><a href=\"https://firewalld.org\" target=\"_blank\">firewalld</a>\r\n</p></li>\r\n<li><p><a href=\"https://www.fail2ban.org/wiki/index.php/Main_Page\" target=\"_blank\">fail2ban</a>\r\n</p></li>\r\n</ul>',78,0,0,'CC-BY-SA','server,admin,sys admin,linux',0,0,1),
(2433,'2017-11-29','You were right, I was wrong',519,'Ken eats humble pie','<p>\r\nKen puts the record straight after inaccurate comments during <a href=\"https://hackerpublicradio.org/eps.php?id=2416\">hpr2416 :: HPR Community News for October 2017</a> about \r\n <a href=\"https://hackerpublicradio.org/eps.php?id=2406\">hpr2406 :: Putting Ends onto CAT6 Ethernet Cables</a> by <a href=\"https://hackerpublicradio.org/correspondents/0250.html\">Shane Shennan</a>.</p>\r\n\r\n<h3>Links</h3>\r\n<ul>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2406\">hpr2406 :: Putting Ends onto CAT6 Ethernet Cables</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2416\">hpr2416 :: HPR Community News for October 2017</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2416#1\">Comment #1 posted on 2017-11-09T17:33:23Z by Windigo</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Twisted_pair#History\">Wikipedia Twisted pair History</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Ethernet_over_twisted_pair#Cabling\">Wikipedia Ethernet over twisted pair</a></li>\r\n<li><a href=\"https://freemusicarchive.org/music/Memphis_Five/\">Memphis Five - Who\'sSorryNow?</a></li>\r\n<li><ahref=\"https://www.youtube.com/watch?v=7v31-qORXPY\">BalancedAudioNoiseRejection&DifferentialPairs</a></li>\r\n</ul>\r\n',30,0,0,'CC-BY-SA','Correction',0,0,1),
(2432,'2017-11-28','Living with the Nokia 6 – an update to HPR 2405',316,'An update to my show on the Nokia 6 phone','<h3 id=\"living-with-the-nokia-6-an-update-to-hpr-2405\">Living with the Nokia 6 – an update to HPR 2405</h3>\r\n<p>I’ve now been using the Nokia 6 for about 2 months and just wanted to update listeners to my thoughts on the phone.</p>\r\n<p>First a response to Dave who said on the Community News that as he had a OnePlus 1 he was surprised I found it inadequate. The One+1 is a great phone, my problem with it was it does not support O2’s 4G network although it supports EE’s and 3’s 4G networks here in the UK, as I use GiffGaff which runs on the O2 network I have not been able to benefit from their 4G offer and I don’t want to change provider. Also the One+1 was stuck on CyanogenMod 13.1 (Android 6) and no longer got updates, so this was the reason for the new phone purchase. I’ve now flashed Lineage OS onto the One+1 and have a secure backup phone or one I can pass on to my Wife at some stage.</p>\r\n<p>Back to the Nokia, now I’ve lived with the phone for a few weeks I can say I am more than happy with it, and some of the issues with battery life I have found are unfounded once you configure some of the settings to be more battery friendly, such as restricting background access to the net for most aps the battery life is well over a day\'suse.Atnightinstandbymodeover8hoursbatteryuseislessthan1%soevenwithmoderatetoheavyuseIcangetadayoutofthephonewithoutanyriskofrunningout.Alsoiftheofficialchargerandcableareuseda1hourchargegivesabouta30-40%batterycapacity,sonotasslowasthereviewsI’veread.WouldIstillbuyithavinguseditfor2months,Iwouldsayyestothat,andIalsohavenoissueswithrecommendingitasalargeformatphoneatabudgetprice.</p>',338,57,0,'CC-BY-SA','Android,Nokia6,Phones,NewKit,OnePlus1',0,0,1),
(2437,'2017-12-05','Interface Zero Play-through Part 3',2543,'Klaatu, Lobath, and Thaj play the Interface Zero RPG','<p>\r\nKlaatu, Lobath, and Thaj continue their play-through of the Interface Zero RPG, using the <strong>Job InSecurity</strong> adventure.\r\n</p>\r\n\r\n<p>\r\nLyphrygerator composed by William Kenlon, used with permission.\r\n</p>\r\n\r\n<p>\r\nAll other music by Klaatu.\r\n</p>\r\n\r\n<p>Some sounds from <a href=\"https://freesound.org\" target=\"_blank\">freesound.org</a> used for texture. Obligatory credits will appear in final episode.\r\n</p>',78,95,1,'CC-BY-SA','Interface Zero,cyberpunk,rpg,game',0,0,1),
(2428,'2017-11-22','git Blobs',1982,'Klaatu talks about git-media and git-annex','<p>How do you manage large binary blobs, like pictures or video or sounds, when using git?</p>\r\n\r\n<p>In this episode, Klaatu explains two popular options:</p>\r\n\r\n<ul>\r\n<li>\r\n<p>\r\n<a href=\"https://github.com/alebedev/git-media\" target=\"_blank\">git-media</a>\r\n</p>\r\n</li>\r\n<li>\r\n<p>\r\n<a href=\"https://git-annex.branchable.com/walkthrough/\" target=\"_blank\">git-annex</a>\r\n</p>\r\n</li>\r\n</ul>\r\n\r\n<p>Thanks to CapsLok at <a href=\"https://freesound.org/people/CapsLok/sounds/184438/\" target=\"_blank\">freesound.org</a> for the sound effect.</p>\r\n',78,81,0,'CC-BY-SA','git',0,0,1),
(2444,'2017-12-14','Interface Zero Play-through Part 4',1927,'Klaatu, Lobath, and Thaj play the Interface Zero RPG','<p>The investigation continues!</p>\r\n<p>Guest voice in this and episode 3 by Gort.</p>',78,95,0,'CC-BY-SA','Interface Zero,rpg,game,play,pathfinder,dnd',0,0,1),
(2438,'2017-12-06','Gnu Awk - Part 8',1239,'More about loops','<h1 id=\"gnu-awk---part-8\">Gnu Awk - Part 8</h1>\r\n<h2 id=\"introduction\">Introduction</h2>\r\n<p>This is the eighth episode of the "<a href=\"https://hackerpublicradio.org/series/0094.html\" title=\"Learning Awk\">Learning Awk</a>" series that\r\n<a href=\"https://hackerpublicradio.org/correspondents/0300.html\" title=\"b-yeezi\">b-yeezi</a> and I are doing.</p>\r\n<h2 id=\"recap-of-the-last-episode\">Recap of the last episode</h2>\r\n<ul>\r\n<li><p>The <code>while</code> loop: tests a condition and performs commands <em>while</em> the test returns true</p></li>\r\n<li><p>The <code>do while</code> loop: performs commands after the <code>do</code>, then tests afterwards, repeating the commands <em>while</em> the test is true.</\r\np></li>\r\n<li><p>The <code>for</code> loop (type 1): initialises a variable, performs a test, and increments the variable all together, performing commands while the test is \r\ntrue.</p></li>\r\n<li><p>The <code>for</code> loop (type 2): sets a variable to successive indices of an array, preforming a collection of commands for each index.</p></li>\r\n</ul>\r\n<p>These types of loops were demonstrated by examples in the <a href=\"https://hackerpublicradio.org/eps.php?id=2330\" title=\"Awk Part 7\">last episode</a>.</p>\r\n<p>Note that the example for \'<code>dowhile</code>\' was an infinite loop (perhaps as a test of the alertness of the audience!):</p>\r\n<pre><code>#!/usr/bin/awk -f\r\nBEGIN {\r\n\r\n i=2;\r\n do {\r\n print "The square of ", i, " is ", i*i;\r\n i = i + 1\r\n }\r\n while (i != 2)\r\n\r\nexit;\r\n}</code></pre>\r\n<p>The condition in the <code>while</code> is always true:</p>\r\n<pre><code>The square of 2 is 4\r\nThe square of 3 is 9\r\nThe square of 4 is 16\r\nThe square of 5 is 25\r\nThe square of 6 is 36\r\nThe square of 7 is 49\r\nThe square of 8 is 64\r\nThe square of 9 is 81\r\nThe square of 10 is 100\r\n...\r\nThe square of 1269630 is 1611960336900\r\nThe square of 1269631 is 1611962876161\r\nThe square of 1269632 is 1611965415424\r\nThe square of 1269633 is 1611967954689\r\nThe square of 1269634 is 1611970493956\r\n...</code></pre>\r\n<p>The variable <code>i</code> is set to 2, the <code>print</code> is executed, then <code>i</code> is set to 3. The test "<code>i != 2</code>" is true and will be <em>ad infinitum</em>.</p>\r\n<h2 id=\"some-more-statements\">Some more statements</h2>\r\n<p>We will come back to loops later in this episode, but first this seems like a good point to describe another statement: the <code>switch</code> statement.</p>\r\n<h2 id=\"long-notes\">Long notes</h2>\r\n<p>The notes for rest of this episode are available <a href=\"https://hackerpublicradio.org/eps/hpr2438/full_shownotes.html\">here</a>.</p>\r\n<h2 id=\"links\">Links</h2>\r\n<ul>\r\n<li><a href=\"https://www.gnu.org/software/gawk/manual/html_node/index.html\"><em>GNU Awk User\'sGuide</em></a></li>\r\n<li>PreviousshowsinthisseriesonHPR:\r\n<ul>\r\n<li><ahref=\"https://hackerpublicradio.org/eps.php?id=2114\">"<em>GnuAwk-Part1</em>"</a>-episode2114</li>\r\n<li><ahref=\"https://hackerpublicradio.org/eps.php?id=2129\">"<em>GnuAwk-Part2</em>"</a>-episode2129</li>\r\n<li><ahref=\"https://hackerpublicradio.org/eps.php?id=2143\">"<em>GnuAwk-Part3</em>"</a>-episode2143</li>\r\n<li><ahref=\"https://hackerpublicradio.org/eps.php?id=2163\">"<em>GnuAwk-Part4</em>"</a>-episode2163</li>\r\n<li><ahref=\"https://hackerpublicradio.org/eps.php?id=2184\">"<em>GnuAwk-Part5</em>"</a>-episode2184</li>\r\n<li><ahref=\"https://hackerpublicradio.org/eps.php?id=2238\">"<em>GnuAwk-Part6</em>"</a>-episode2238</li>\r\n<li><ahref=\"https://hackerpublicradio.org/eps.php?id=2330\">"<em>GnuAwk-Part7</em>"</a>-episode2330</li>\r\n</ul></li>\r\n<li>Resources:\r\n<ul>\r\n<li><ahref=\"https://hackerpublicradio.org/eps/h
(2442,'2017-12-12','The sound of Woodbrook Quaker Study centre in the Spring',937,'I recorded the sound of bird song at Woodbrook Quaker study Centre in Birmingham UK in April 2017','<p>This is a recording I made at Woodbrook Quaker Study Centre in Birmingham UK while I was there in April 2017.</p>\r\n<p>I got the idea to release it as a show after listening to <em>hpr2354 :: Night Sounds in Rural Tennessee</em> hosted by Jon Kulp so here it is all 15 minutes of it.</p>\r\n<p>The centre is right by the busy A38 trunk road so hence the constant hum of traffic noise in the background.</p>\r\n<h3 id=\"links\">Links</h3>\r\n<ul>\r\n<li><a href=\"https://www.woodbrooke.org.uk/\" class=\"uri\">https://www.woodbrooke.org.uk/</a></li>\r\n</ul>',338,101,0,'CC-BY-SA','birdsong',0,0,1),
(2443,'2017-12-13','pdmenu',927,'I have been using this menu tool over the past year, and I really like it','<h1 id=\"pdmenu\">pdmenu</h1>\r\n<h2 id=\"introduction\">Introduction</h2>\r\n<p><a href=\"https://joeyh.name/code/pdmenu/\" title=\"Pdmenu\"><code>Pdmenu</code></a> is a tool written by <a href=\"https://joeyh.name/\" title=\"Joey Hess\">Joey Hess</a> which allows the creation of a simple menu in a terminal (console) window. It is in his list of less active projects, and the latest version is dated 2014, but it seems to be quite complete and useful as it is.</p>\r\n<p>I like simple menus. As a Sysadmin in my last job I used one on OpenVMS which helped me run the various periodic tasks I needed to run - especially the less frequent ones - without having to remember all of the details.</p>\r\n<p>I do the same on my various Linux systems, and find that <code>pdmenu</code> is ideal for the task.</p>\r\n<h2 id=\"installation\">Installation</h2>\r\n<p>I found <code>pdmenu</code> in the Debian repositories (I run Debian Testing), and it was very easily installed. The C source is available as a tarfile, though I\r\n haven\'ttriedbuildingitmyself.</p>\r\n<h2id=\"running-pdmenu\">Running<code>pdmenu</code></h2>\r\n<p>Simplytyping<code>pdmenu</code>atacommandpromptwillinvoketheutility.Itusesthefile<code>/etc/pdmenurc</code>asitsdefaultconfigurationfile,andthisgeneratesamenuwithademonstrationofsomeofitsfeatures.</p>\r\n<p>Thisisnotparticularlyusefulbutitcanbeoverriddenbycreatingyourownconfiguration,whichbydefaultisin<code>~/.pdmenurc</code>.The<code>pdmenu</code>commanditselftakesaconfigurationfileasanargument,sothereisplentyofflexibility.</p>\r\n<h2id=\"full-notes-and-examples\">Fullnotesandexamples</h2>\r\n<p>Thefullnoteswhichdescribetheuseof<code>pdmenu</code>withexamplescanbefound<ahref=\"https://hackerpublicradio.org/eps/hpr2443/full_shownotes.html\">here</a>.</p>\r\n<h2id=\"links\">Links</h2>\r\n<ul>\r\n<li><ahref=\"https://joeyh.name/code/pdmenu/\">Pdmenuwiki</a></li>\r\n<li><ahref=\"https://joeyh.name/\">JoeyHess</a></li>\r\n<li>Resources:\r\n<ul>\r\n<li><ahref=\"https://hackerpublicradio.org/eps/hpr2443/full_shownotes.html\">Longnotesforthisepisode</a></li>\r\n</ul></li>\r\n</ul>\r\n',225,0,1,'CC-BY-SA','commandline,menu,pdmenu,.pdmenurc',0,0,1),
(2451,'2017-12-25','Server Basics 105 OpenVPN Client',1931,'Klaatu walks you through installing and configuring an OpenVPN client','<p>In the previous episode of this series, you set up an OpenVPN server. In this episode, Klaatu walks you through:</p>\r\n\r\n<ol>\r\n<li><p>\r\nInstalling OpenVPN on a client machine.\r\n</p></li>\r\n<li><p>\r\nGenerating a key and certificate request.\r\n</p></li>\r\n<li><p>\r\nSigning a client cert from the server.\r\n</p></li>\r\n<li><p>\r\nConfiguring the client.conf file.\r\n</p></li>\r\n<li><p>\r\nConfiguring the client routing table to use the VPN subnet.\r\n</p></li>\r\n<li><p>\r\nPinging the server over VPN!!!\r\n</p></li>\r\n</ol>\r\n\r\n<p>Where to go from here? \r\n</p>\r\n<p>Your next steps should be to investigate how your org wants to use VPN, how your clients actually want to join the VPN (Network Manager has some nice features that makes joining a VPN fairly transparent). Have fun!</p>',78,0,0,'CC-BY-SA','server,vpn,sys admin',0,0,1),
(2447,'2017-12-19','Server Basics 104 OpenVPN Server',2595,'Klaatu walks you through installing and configuring OpenVPN Server','<p>In this episode, Klaatu demonstrates how to:\r\n</p>\r\n\r\n<ol>\r\n<li><p>\r\nInstall OpenVPN\r\n</p></li>\r\n<li><p>\r\nGenerate certificates for your OpenVPN server\r\n</p></li>\r\n<li><p>\r\nGenerate a private key for your OpenVPN server\r\n</p></li>\r\n<li><p>\r\nConfigure the /etc/openvpn/server.conf file\r\n</p></li>\r\n<li><p>\r\nStart the OpenVPN daemon\r\n</p></li>\r\n</ol>\r\n\r\n<p>In case it is not clear, you can follow along with Klaatu, using the exact same options and configuration values as he is using for a successful install. You do not need to change</p>\r\n<p>In the next episode, he will demonstrate how to do all of the above for OpenVPN clients.</p>\r\n\r\n<p>\r\nVPN is a <em>big</em> topic that warrants a whole miniseries unto itself, so this and the next episode concentrate on getting a VPN up and running, with clients connected and pinging back to the server on a dedicated subnet. Additional config options based on your specific use-case are left for you to explore on your own.\r\n</p>',78,0,0,'CC-BY-SA','server,vpn,sys admin',0,0,1),
(2448,'2017-12-20','Useful Bash functions - part 3',2033,'A few more possibly useful Bash functions are discussed','<h1 id=\"useful-bash-functions---part-3\">Useful Bash functions - part 3</h1>\r\n<h2 id=\"overview\">Overview</h2>\r\n<p>This is the third show about Bash functions. These are a little more advanced than in the earlier shows, and I thought I\'dsharethemincasetheyareusefultoanyone.</p>\r\n<p>AsbeforeitwouldbeinterestingtoreceivefeedbackonthesefunctionsandwouldbegreatifotherBashuserscontributedideasoftheirown.</p>\r\n<h2id=\"full-notes\">FullNotes</h2>\r\n<p>Sincethenotesexplainingthissubjectarelong,theyhavebeenplaced<ahref=\"https://hackerpublicradio.org/eps/hpr2448/full_shownotes.html\">here</a>.</p>\r\n<h2id=\"links\">Links</h2>\r\n<ul>\r\n<li>PreviousHPRepisodesinthisgroup<em>UsefulBashfunctions</em>:\r\n<ul>\r\n<li><ahref=\"https://hackerpublicradio.org/eps.php?id=1757\">Part1</a>:\'<code>pad</code>\'and\'<code>yes_no</code>\'functions</li>\r\n<li><ahref=\"https://hackerpublicradio.org/eps.php?id=2096\">Part2</a>:\'<code>yes_no</code>\'revisited</li>\r\n</ul></li>\r\n<li>Downloadthe<ahref=\"https://hackerpublicradio.org/eps/hpr2448/read_value.sh\"><em>read_value</em></a>,<ahref=\"https://hackerpublicradio.org/eps/hpr2448/check_value.sh\"><em>check_value</em></a>and<ahref=\"https://hackerpublicradio.org/eps/hpr2448/read_and_check.sh\"><em>read_and_check</em></a>functionsandthe<ahref=\"https://hackerpublicradio.org/eps/hpr2448/trace_of_read_value.txt\">traceof<em>read_value</em></a>.</li>\r\n</ul>',225,42,1,'CC-BY-SA','coding,Bash,script,function',0,0,1),
(2439,'2017-12-07','Internal Logic of Stories',1152,'Lostnbronx talks about stories and story consistency.','<p>Lostnbronx rambles on about the structure of stories, and how their internal logic can make or break them.</p>\r\n<ul>\r\n<li><p>Star Trek\'swarpdrive,asdescribedontheMemoryAlphawiki:<br/>\r\n<ahref=\"https://memory-alpha.wikia.com/wiki/Warp_drive\"class=\"uri\">https://memory-alpha.wikia.com/wiki/Warp_drive</a></p></li>\r\n<li><p>MyownuseofthestarjumpconceptisprobablybestheardinStardrifterBook03:"RiskAnalysis"<br/>\r\n<ahref=\"https://downloads.cavalcadeaudio.com/stardrifter-novels/03-risk-analysis/?p=home\"class=\"uri\">https://downloads.cavalcadeaudio.com/stardrifter-novels/03-risk-analysis/?p=home</a></p></li>\r\n</ul>',107,105,0,'CC-BY-SA','stories,storytelling,gaming,rpg,movies,writing,startrek,stardrifter,warp,starjump,lostnbronx',0,0,1),
(2446,'2017-12-18','Git server and git hooks',2430,'Klaatu talks about running git on a server, and explains git hooks.','<p>A sample post-receive git hook:</p>\r\n<pre><code>\r\n#!/usr/bin/tcsh\r\n\r\nforeach arg ( $< )\r\n set argv = ( $arg )\r\n set refname = $1\r\nend\r\n\r\nset branch = `git rev-parse --symbolic --abbrev-ref $refname`\r\necho $branch\r\n\r\n if ( \"$branch\" == \"master\" ) then\r\n echo \"Branch detected: master\"\r\n echo \"Do some stuff here.\"\r\n else if ( \"$branch\" == \"dev\" ) then\r\n echo \"Branch detected: dev\"\r\n echo \"Do something else here.\"\r\n else\r\n echo \"Do something entirely different here.\"\r\n endif\r\n</code></pre>\r\n',78,81,0,'CC-BY-SA','git',0,0,1),
(2440,'2017-12-08','How to save bad beans or the French press',57,'how to hash tag coffee?','<h3>Memorial</h3>\r\n<p>\r\nWe take some time to remember our good friend and fellow host <a href=\"https://hackerpublicradio.org/correspondents/0024.html\">Lord Drachenblut</a> who passed away one year ago yesterday. <br />\r\nNow may be a good time to re listen to <a href=\"https://hackerpublicradio.org/eps.php?id=2201\">hpr2201 :: Matthew \"Lord Drachenblut\" Williams</a> HPR Community members remember the digital dragon.\r\n</p>\r\n\r\n<h3>Shownotes</h3>\r\n<p>I was driving in a place where I had no signal, so I recorded an episode about the first thing that popped into my mind.</p>\r\n<p>Recorded with lineageos recorder app through monster isport bluetooth headphones. I\'mamazedatthesoundquality.I\'ll do this more. I promise</p>\r\n<p>(no I won\'t,I\'m lazy)</p>',126,88,1,'CC-BY-SA','driving, coffee',0,0,1),
(2445,'2017-12-15','Information Underground: Backwards Capitalism',2896,'Klaatu, Deepgeek, and Lostnbronx talk about markets, innovation, and opportunity.','<p>\r\nThe Info-Underground guys consider why capitalism does (or maybe doesn\'t)work,whypeopleuseitasatoolforabetterlife(ormaybedon\'t), and what the source of ambition, commercial aspiration, and greed truly is (or maybe isn\'t).\r\n</p>',107,99,0,'CC-BY-SA','informationunderground,capitalism,klaatu,deepgeek,lostnbronx',0,0,1),
(2453,'2017-12-27','The power of GNU Readline - part 2',1165,'Various ways of deleting and undeleting on the command line with GNU Readline','<h1 id=\"the-power-of-gnu-readline---part-2\">The power of GNU Readline - part 2</h1>\r\n<p>In <a href=\"https://www.hackerpublicradio.org/eps.php?id=2073\" title=\"The power of GNU Readline - part 1\">part 1</a> we looked at some <code>Control</code> key and <code>Meta</code> key sequences as well as the <code>Backspace</code> and <code>DEL</code> keys in the context of GNU Readline.</p>\r\n<p>The full-length notes (available <a href=\"https://hackerpublicradio.org/eps/hpr2453/full_shownotes.html\">here</a>) contain a brief summary of what we covered and introduce <em>cutting</em> and <em>pasting</em> the GNU Readline way, with some examples.</p>\r\n<h2 id=\"links\">Links</h2>\r\n<ul>\r\n<li><a href=\"https://www.ibb.net/~anne/keyboard.html\">Consistent BackSpace and Delete Configuration</a></li>\r\n<li>Wikipedia article on <a href=\"https://en.wikipedia.org/wiki/GNU_Readline\"><em>GNU Readline</em></a></li>\r\n<li><em>GNU Readline</em> manual: <a href=\"https://tiswww.cwru.edu/php/chet/readline/rluserman.html\" class=\"uri\">https://tiswww.cwru.edu/php/chet/readline/rluserman.html</a> (Note that the widely advertised address https://cnswww.cns.cwru.edu/php/chet/readline/rltop.html seems not to work any more. This one, which I found through the main GNU site, seems OK though)</li>\r\n<li>Previous episode:\r\n<ul>\r\n<li><a href=\"https://www.hackerpublicradio.org/eps.php?id=2073\">The power of GNU Readline - part 1</a></li>\r\n</ul></li>\r\n<li>Resources:\r\n<ul>\r\n<li><a href=\"https://hackerpublicradio.org/eps/hpr2453/full_shownotes.html\">Detailed notes</a></li>\r\n</ul></li>\r\n</ul>',225,102,1,'CC-BY-SA','command line,cli,GNU Readline',0,0,1),
(2449,'2017-12-21','Org-mode mobile solution',578,'My search for taking org mode on the road','<h1 id=\"brief-introduction\">brief introduction</h1>\r\n<h2 id=\"myself\">myself</h2>\r\n<p>Hi, I\'mBrianinOhio</p>\r\n<h2id=\"inspiration-for-show\">inspirationforshow</h2>\r\n<p>Iwantedtotellalittleaboutmytrialsandtribulationsoffindingasolutiontotakingorgmodeontheroad.What\'s org mode? Listen to my last episode or do a duckduckgo to find out.</p>\r\n<h2 id=\"parameters\">parameters</h2>\r\n<p>After switching from using a bullet journal to using emacs-org-mode as my organizing device I immediately saw that lugging a laptop everywhere was not going to work for me. I wanted to be able to access org-mode, especially the agenda view, anywhere I might be. Laptops with limited battery life and a large physical presence were not going to work for me.</p>\r\n<h1 id=\"mobile-org-app\">mobile-org app</h1>\r\n<p>The first solution I tried, and the most obvious, was the mobile-org app. Its available for android or ios. I can only attest to the android version. Its an easy from the play store. This solution didn\'tworkformeforanumberofreasons.First,thedocumentationforthesetupisterrible,andIbecamefrustratedbytheworkflowandcouldnotgetusefulresultsusingtheapp.Mobile-orgseemstobebuiltaroundusingdropox.InordertogetaroundthatItriedvariousmethodsofsyncingmyorgfilesusingonboardstorage.Seeingthiswasn\'t going to work I bit the bullet setup a dropbox account installed the clients, one on my slackware laptop and the other on my phone only to find dropbox doesn\'tsupportthisapplicationanymore.AlittlediggingaroundanditseemstheAPIusedbymobile-orgisn\'t up to snuff any more so, fail. I cut my loses and moved on to another possible solution.</p>\r\n<h1 id=\"pi-top\">pi-top</h1>\r\n<p>My next crack at solving the portable org mode problem was getting a pitop laptop <a href=\"https://pi-top.com/\">https://pi-top.com/</a>. Pitop is a laptop based on a raspberrypi. I won\'tgointothedetailsofthedeviceherebutI\'ll say my idea for using this device was its advertised 8+ hour battery life. My old linux laptops rarely give me 2 hours of life So even though the pitop was physically larger than I wanted I gave it a whirl. Lets just say the battery does last 8+ hours, it just can\'tsurvivemanyrecharges.2batterypackslaterIgaveuponthepitopandwentlookingforsomethingelse.</p>\r\n<h1id=\"pocketchip\">pocketchip</h1>\r\n<p>Iheardklaatumentionadevicecalledapocketchiponhisgnuworldorderpodcast<ahref=\"https://gnuworldorder.info/\">https://gnuworldorder.info/</a>.IlookedintoitandhereIthoughtmightbeadevicethatcouldwork.Pocketchip<ahref=\"https://getchip.com/pages/pocketchip\">https://getchip.com/pages/pocketchip</a>isahandheldlinuxcomputer.AfterorderingthedeviceIbegansettingitupformyusecase.Thereareplentyoftutorialsonthepocketchipwebsiteonhowtoextendtheusefulnessofthisproduct.Thesizeofthedevicewasgoodandthebatterylifewasok.SomepeoplecomplainaboutthechickletkeyboardbutIactuallydidnotmindittomuch.IttooksomefiddlingtogettheemacskeybindingsIusetoworkontheoddkeyboardlayout,butitsalinuxcomputersothere\'s plenty of information out there. I used a thumb drive as a repository for my org files, wrote a couple of scripts to sync up the files with whatever device the drive was plugged into and wala a mobile org solution! Alas, the pocketchips demise was its build quality. The heart of the pocketchip, the system board\'susbminiplugfelloff,andthenonesystemtweaklaterIbrickedthedevice.I\'ll recover it eventually, you can program it through the gpio pins, but this was a quest for portable-org-mode, not fixing pocketchips, so onward.</p>\r\n<h1 id=\"raspberry-pi-tablet\">raspberry pi tablet</h1>\r\n<p>I saw a build of a raspberry pi tablet that looked very nice <a href=\"https://www.stefanv.com/electronics/a-compact-home-ma
(2450,'2017-12-22','Android Audio with viper 4 android and magisk',609,'I go over some ways to help manage audio with android','<ul>\r\n<li><p>viper4android<br />\r\n<a href=\"https://vipersaudio.com/blog/?page_id=48\" class=\"uri\">https://vipersaudio.com/blog/?page_id=48</a></p></li>\r\n<li><p>magisk<br />\r\n<a href=\"https://forum.xda-developers.com/apps/magisk/official-magisk-v7-universal-systemless-t3473445\" class=\"uri\">https://forum.xda-developers.com/apps/magisk/official-magisk-v7-universal-systemless-t3473445</a></p></li>\r\n</ul>',36,0,1,'CC-BY-SA','audio,android',0,0,1),
(2452,'2017-12-26','Hydraulic Heavy Scale Project',1339,'Hydraulic Jack Mod, DIY, Travel Trailer Balance','<h2 id=\"hydraulic-heavy-scale-project\">Hydraulic Heavy Scale Project</h2>\r\n<h3 id=\"by-david-whitman\">by David Whitman</h3>\r\n<p>Why? - to weigh a heavy object yourself</p>\r\n<p>Not very difficult. Can be done in about 1/2 hour by someone who has experience doing this type of stuff. Lots longer for beginners.</p>\r\n<p>Things you will need: A drill motor, The right size bit for a small pilot hole and the right size bit for a fitting to connect the jack cylinder to the pressure gauge, A Thread TAP to make threads to connect the hydraulic 90 degree fitting to the jack, Some pipe dope is not a bad idea, A 90 degree appropriately sized fitting to connect a pressure gauge to the jack, a vise is nice, a wrench to dismantle the jack, A way to accurately measure the cylinder bore (best is a caliper) and some oil to refill the jack.</p>\r\n<p>This link is a youtube to help you visualize the steps. <a href=\"https://www.youtube.com/watch?v=ZBmxkWK_OFA\" class=\"uri\">https://www.youtube.com/watch?v=ZBmxkWK_OFA</a></p>\r\n<p>Hate this episode? No problem. Do a better one</p>',209,0,0,'CC-BY-SA','Hydraulic Jack Mod, DIY, Travel Trailer Balance',0,0,1),
(2454,'2017-12-28','The Alien Brothers Podcast - S01E02 - Strictly Hacking',6389,'Casper and Rutiger discuss the Uber hacks and the Intel ME known and unknown vulnerabilties','<p>Casper and Rutiger attempt to STAY ON TARGET by discussing hacking… which when you think about it is an utterly pretentious and vague goal for a podcast presented by Hacker Public Radio, especially when considering the end result. Shame on us!</p>\r\n<p>Other topics include Friendsgiving and giving thanks; probably the greatest gaming console of the 1970’s; early “hackings” (sic) committed by the hosts; << >></p>\r\n<h2 id=\"references\">References:</h2>\r\n<ol type=\"1\">\r\n<li>The link to the first chapter of Dief Minusky’s seminal the Nature of Systems is freely available here.<br />\r\n<a href=\"https://www.dropbox.com/s/or5vefjumde4qsk/TNOS%20E-I%20C1%2020030415.pdf?dl=0\">https://www.dropbox.com/s/or5vefjumde4qsk/TNOS%20E-I%20C1%2020030415.pdf?dl=0</a><br />\r\nAlthough we referred to the Chapter 8 material on system network security during the show, Rutiger decided it was better to release chapters, incrementally, in order let listeners gain a fuller appreciation for the work. Rutiger is also attempting to track down the original author, who never publicly released the work, to gain retroactive permission for this link, but for the moment Alien Brothers Podcast takes full responsibility for allowing access to this non-copyrighted work and we’ll just go ahead, you know, feel good about the possibility it will all turn out OK.</li>\r\n<li>Uber Data Breach (2017; CNN.com)</li>\r\n<li>How to Disable the Intel Management Engine Backdoor<br />\r\n<a href=\"https://beinglibertarian.com/disable-intel-management-engine-backdoor-courtesy-nsa/\" class=\"uri\">https://beinglibertarian.com/disable-intel-management-engine-backdoor-courtesy-nsa/</a></li>\r\n</ol>',359,0,1,'CC-BY-SA','Uber Hack, Intel ME, Alien Brothers',0,0,1),
(2455,'2017-12-29','Interface Zero RPG Part 5',5074,'Klaatu, Lobath, and Thaj play the Interface Zero RPG part 5','<p>An extra-long episode of the grand finale of the Interface Zero RPG play-through.</p>\r\n\r\n<p>Spoilers: Chaiwei dies in combat and Syd runs off with Tina.</p>\r\n\r\n<p>\r\nAt the end of the show are all the credits containing sound effects and source materials. Here they are in text form.</p>\r\n\r\n<p>\r\nSound effects were taken from <a href=\"https://freesound.org\" target=\"_blank\">freesound.org</a>. Thanks to the following artists:\r\n</p>\r\n\r\n<ul>\r\n<li>\r\n<p>\r\ninterfacezero/muzak/70891__spukkin__trumpetmetal.wav</p></li><li>\r\n<p>\r\ninterfacezero/muzak/212926__simongray__mojo-cafe-nr-wagamama.flac</p></li><li>\r\n<p>\r\ninterfacezero/muzak/243629__lebcraftlp__heavy-rain.flac</p></li><li>\r\n<p>\r\ninterfacezero/muzak/382735__schots__gun-shot.flac</p></li><li>\r\n<p>\r\ninterfacezero/muzak/186104__marcel-farres__elevator.flac</p></li><li>\r\n<p>\r\ninterfacezero/muzak/187866__theomegapixel__metal-grind.flac</p></li><li>\r\n<p>\r\ninterfacezero/muzak/66713__sunnysidesound__desk-pound.wav</p></li><li>\r\n<p>\r\ninterfacezero/muzak/367222__bluedelta__thunder-rain-low-frequencies-4-channel-48khz.wav</p></li><li>\r\n<p>\r\ninterfacezero/muzak/212678__fridobeck__firework-explosion-1.wav</p></li><li>\r\n<p>\r\ninterfacezero/muzak/213610__dpoggioli__laser-gun-explosion.wav</p></li><li>\r\n<p>\r\ninterfacezero/muzak/100772__cgeffex__huge-rocket-launcher.wav</p></li><li>\r\n<p>\r\ninterfacezero/muzak/336735__newagesoup__double-explosion-bright-dark.wav</p></li><li>\r\n<p>\r\ninterfacezero/ep2/329877__klavo1985__music-of-the-black-circus-the-very-best-by-kris-klavenes.flac</p></li><li>\r\n<p>\r\ninterfacezero/ep2/94914__pcaeldries__lakeside2.flac</p></li><li>\r\n<p>\r\ninterfacezero/ep2/153376__inchadney__the-bay.flac</p></li><li>\r\n<p>\r\ninterfacezero/ep3/152396__taavi55__big-smash.ogg</p></li><li>\r\n<p>\r\ninterfacezero/ep3/135465__joelaudio__quick-smash-001.wav</p></li><li>\r\n<p>\r\ninterfacezero/ep3/387177__pfranzen__smashing-a-glass.ogg</p></li>\r\n</ul>\r\n\r\n<p><strong>Music</strong></p>\r\n<ul>\r\n<li>\r\n<p>\r\n<strong>Lyphrygerator</strong> and <strong>Wood/Water</strong> by <a href=\"https://williamkenlon.com\" target=\"_blank\">William Kenlon</a>, used with permission.\r\n</p>\r\n</li>\r\n<li>\r\n<p>\r\nAll other music by Klaatu.\r\n</p>\r\n</li>\r\n</ul>\r\n\r\n<p><strong>Story</strong></p>\r\n\r\n<p>\r\nWant to play this game yourself?\r\n</p>\r\n\r\n<ul>\r\n<li>\r\n<p>\r\nPathfinder and Starfinder are by <a href=\"https://paizo.com\" target=\"_blank\">Paizo</a>\r\n</p>\r\n</li>\r\n<li><p>\r\n<strong>Interface Zero</strong> module available from <a href=\"https://drivethrurpg.com/product/214863/Interface-Zero-Pathfinder-Edition\" target=\"_blank\">driveThruRPG.com</a>\r\n</p></li>\r\n\r\n<li><p>\r\nAdventure path <strong>Job inSecurity</strong> is available from <a href=\"https://drivethrurpg.com\">driveThruRPG.com</a>.\r\n</p>\r\n</li>\r\n<li><p>The source of the story is available from <a href=\"https://www.drivethrurpg.com/product/229831/Job-inSecurity\">driveThruRPG.com</a></p></li>\r\n</ul>\r\n<p><small><small>Editor\'snote2017-12-28:linkaddedfromcomments.</small></small></p>\r\n',78,95,1,'CC-BY-SA','InterfaceZero,game,gaming,tabletop,rpg',0,0,1),
(2457,'2018-01-02','Getting ready for my new Macbook Pro',1165,'Knightwise is about to order a new macbook pro and shares some tips and tricks','<p>I am about to buy a new macbook pro and talk about the things I do to install and protect it.</p>\r\n<ul>\r\n<li><p>The case<br />\r\n<a href=\"https://www.amazon.de/gp/product/B01MPYI8SA/ref=oh_aui_detailpage_o01_s00?ie=UTF8&psc=1\" class=\"uri\">https://www.amazon.de/gp/product/B01MPYI8SA/ref=oh_aui_detailpage_o01_s00?ie=UTF8&psc=1</a></p></li>\r\n<li><p>The Cables<br />\r\n<a href=\"https://www.amazon.de/gp/product/B06W53PXRB/ref=oh_aui_detailpage_o01_s00?ie=UTF8&psc=1\" class=\"uri\">https://www.amazon.de/gp/product/B06W53PXRB/ref=oh_aui_detailpage_o01_s00?ie=UTF8&psc=1</a><br />\r\n<a href=\"https://www.amazon.de/gp/product/B01COOQIKU/ref=oh_aui_detailpage_o01_s00?ie=UTF8&psc=1\" class=\"uri\">https://www.amazon.de/gp/product/B01COOQIKU/ref=oh_aui_detailpage_o01_s00?ie=UTF8&psc=1</a></p></li>\r\n<li><p>The Screen protector<br />\r\n<a href=\"https://www.appelhoes.nl/Moshi-iVisor-AG-screenprotector-MacBook-Pro-13-inch-2016-Touch-Bar?gclid=EAIaIQobChMImvLt9PCI2AIVyTLTCh2FuwXfEAQYAiABEgJY6_D_BwE\" class=\"uri\">https://www.appelhoes.nl/Moshi-iVisor-AG-screenprotector-MacBook-Pro-13-inch-2016-Touch-Bar?gclid=EAIaIQobChMImvLt9PCI2AIVyTLTCh2FuwXfEAQYAiABEgJY6_D_BwE</a></p></li>\r\n<li><p>Homebrew and Cask<br />\r\n<a href=\"https://brew.sh/\" class=\"uri\">https://brew.sh/</a><br />\r\n<a href=\"https://caskroom.github.io/\" class=\"uri\">https://caskroom.github.io/</a></p></li>\r\n</ul>\r\n',111,0,1,'CC-BY-SA','Macbook Pro, Homebrew, warranty, case, cables',0,0,1),
(2458,'2018-01-03','Chrome Plugins You Must Have',643,'I go over my current list of Chrome plugins and how I secure my browser','<p><a href=\"https://www.linkedin.com/pulse/block-more-ads-unlimited-cloud-storage-multi-threaded-robert-mccurdy\" class=\"uri\">https://www.linkedin.com/pulse/block-more-ads-unlimited-cloud-storage-multi-threaded-robert-mccurdy</a></p>\r\n',36,0,1,'CC-BY-SA','Chrome extensions',0,0,1),
(2465,'2018-01-12','TronScript where have you been all my life!',1669,'I take an initial look at TronScript and its features','<ul>\r\n<li><p><a href=\"https://www.reddit.com/r/TronScript/\" class=\"uri\">https://www.reddit.com/r/TronScript/</a></p></li>\r\n<li><p><a href=\"https://github.com/bmrf/tron/blob/master/README.md#full-tron-description\" class=\"uri\">https://github.com/bmrf/tron/blob/master/README.md#full-tron-description</a></p></li>\r\n</ul>',36,0,1,'CC-BY-SA','windows,scripting,batch files,antivirus,malware',0,0,1),
(2459,'2018-01-04','free software\'slongtail',436,'Responsetohpr2443::pdmenubypdmenu\'s author','<p>Surprised to see in my podcast feed <a href=\"https://hackerpublicradio.org/eps.php?id=2443\">an episode</a> about an <a href=\"https://joeyh.name/code/pdmenu/\">insignificant program which I\'dwrittentwodecadesearlier</a>,IthoughtI\'d record a response with some thoughts on free software\'slongtail.</p>\r\n',360,0,0,'CC-BY-SA','pdmenu,freesoftware',0,0,1),
(2461,'2018-01-08','Gitolite',1839,'Using Gitolite to administer your Git server.','<p>Gitolite provides an admin a centralised interface, in the form of a configuration file, to make managing users, user permissions, repos, and user and repo groups easy. It abstracts Git users from UNIX users by defining a user by public keys, and manages permissions down to the branch-level. And better yet, it is itself managed over Git.\r\n</p>\r\n<p> \r\nProper documentation is available on <a href=\"https://gitolite.com\">Gitolite.com</a></p>',78,81,0,'CC-BY-SA','git,server,admin,dev',0,0,1),
(2471,'2018-01-22','Tea Time!',379,'I go over where I am at with Tea','<ul>\r\n<li>Yerba Mate Pajarito Special Selection/ Seleccion Especial 1.1lb/500 Gr Pajarito</li>\r\n</ul>',36,0,1,'CC-BY-SA','Tea, Yerba Mate Pajarito',0,0,1),
(2462,'2018-01-09','AudioBookClub-14-Triplanetary-(First-in-the-Lensman-Series)',7030,'The HPR_AudioBookClub discusses Triplanetary: First in the Lensman Series by E. E. \"Doc\" Smith','<h3>SUMMARY</h3>\r\n<p>In this episode, the HPR_AudioBookClub discusses <strong>Triplanetary: First in the Lensman Series</strong> by E. E. \"Doc\" Smith.\r\n<br/><a href=\"https://librivox.org/triplanetary-first-in-the-lensman-series-by-e-e-doc-smith/\">https://librivox.org/triplanetary-first-in-the-lensman-series-by-e-e-doc-smith/</a></p>\r\n<h3>Non-Spoiler Thoughts</h3>\r\n<ul>\r\n <li>Like the last AudioBook, we all felt that there were quite a few cliches in the story, however this book is probably the source of most of the cliches it uses.</li>\r\n <li>If you want to see what Lensmen doesn\'tlooklikewatchthis:<ahref=\"https://www.youtube.com/watch?v=-td8Jp0hJVA\">https://www.youtube.com/watch?v=-td8Jp0hJVA</a></li>\r\n</ul>\r\n<h3>BEVERAGEREVIEWS</h3>\r\n<p>Asusual,theHPR_AudioBookClubtooksometimetoreviewthebeveragesthateachofusweredrinkingduringtheepisode</p>\r\n<ul>\r\n<li>Thaj:GrapefuitJuice...Straight.ApparentlyNOTstraightup</li>\r\n<li>x1101:<ahref=\"https://www.gooseisland.com/beer/bourbon-county-stout.html?gclid=CIDivOaqusICFcxQ7AodcXEAKQ\">GooseIslandBourbonCountyStout</a></li>\r\n<li>pokey:SmuttynoseWinterAle<ahref=\"https://smuttynose.com/beer/winter-ale/\">https://smuttynose.com/beer/winter-ale/</a></li>\r\n</ul>\r\n<h3>OtherThingsWeTalkedAbout</h3>\r\n<ul>\r\n<li>Portknocking\r\n<br/><ahref=\"https://www.portknocking.org/\">https://www.portknocking.org/</a>\r\n<br/><ahref=\"https://en.wikipedia.org/wiki/Port_knocking\">https://en.wikipedia.org/wiki/Port_knocking</a></li>\r\n<li>JohnWilliams\r\n<br/><ahref=\"https://en.wikipedia.org/wiki/John_Williams\">https://en.wikipedia.org/wiki/John_Williams</a>\r\n<br/><ahref=\"https://www.imdb.com/name/nm0002354/\">https://www.imdb.com/name/nm0002354/</a></li>\r\n<li>DannyElfman\r\n<br/><ahref=\"https://en.wikipedia.org/wiki/Danny_Elfman\">https://en.wikipedia.org/wiki/Danny_Elfman</a>\r\n<br/><ahref=\"https://youtu.be/6SX8cWGcHJs\">https://youtu.be/6SX8cWGcHJs</a></li>\r\n<li>Strangerinastrangeland\r\n<br/><ahref=\"https://en.wikipedia.org/wiki/Stranger_in_a_Strange_Land\">https://en.wikipedia.org/wiki/Stranger_in_a_Strange_Land</a></li>\r\n<li>StarWarsExtendedUniverse\r\n<br/><ahref=\"https://starwars.wikia.com/wiki/Star_Wars_Legends\">https://starwars.wikia.com/wiki/Star_Wars_Legends</a>\r\n<br/><ahref=\"https://en.wikipedia.org/wiki/Star_Wars_expanded_universe\">https://en.wikipedia.org/wiki/Star_Wars_expanded_universe</a></li>\r\n<li>Internetoutages</li>\r\n</ul>\r\n<h3>OURNEXTAUDIOBOOK</h3>\r\n<p><strong>CityOfMasks</strong>byMikeReeves-McMillan\r\n<br/><ahref=\"https://scribl.com/books/PC439/city-of-masks\">https://scribl.com/books/PC439/city-of-masks</a></p>\r\n<h3>FURTHERRECOMMENDATIONS</h3>\r\n<p>TherestoftheLensmanSeries:<ahref=\"https://en.wikipedia.org/wiki/Lensman_series\">https://en.wikipedia.org/wiki/Lensman_series</a></p>\r\n<p>WhatthenewStarWarsmoviesshouldhavebeenabout:<ahref=\"https://en.wikipedia.org/wiki/Thrawn_trilogy\">https://en.wikipedia.org/wiki/Thrawn_trilogy</a></p>\r\n<h3>FEEDBACK</h3>\r\n<p>ThankyouverymuchforlisteningtothisepisodeoftheHPR_AudioBookClub.Wehadagreattimerecordingthisshow,andwehopeyouenjoyeditaswell.Wealsohopeyou\'ll consider joining us next time. Please leave a few words in the episode\'scommentsection.\r\n<br/>Asalways;remembertovisittheHPRcontributionpageHPRcouldreallyuseyourhelprightnow.</p>\r\n<p><ahref=\"https://hackerpublicradio.org/contribute.php\">https://hackerpublicradio.org/contribute.php</a></p>\r\n<p>Sincerely,\r\n<br/>TheHPR_AudioBookClub</p>\r\n<p>P.S.Somepeoplereallylikefindingmistakes.Fortheirenjoyment,wealwaysincludeafew.</p>\r\n<br/>\r\n<h3>OURAUDIO</h3>\r\n<p>ThisepisodewasprocessedusingAudacity<ahref=\"https:/
(2460,'2018-01-05','The Alien Brothers Podcast - S01E03 - Decline of American Empire',6830,'The Alien Brothers penetrate the Van Allen belt to tap in, and transmit an intergalactic podcast','<h1>Summary:</h1>\r\n<p>\r\nCasper and Rutiger opt for a time of ease and relaxation by discussing happy light topics: the <em>decline of American Empire</em> and <em>recent <a href=\"https://www.google.com/url?q=https://www.cnbc.com/2017/12/14/fcc-reverses-open-internet-order-governing-net-neutrality.html&sa=D&ust=1513926885706000&usg=AFQjCNGZt2slIT3aeHGveiV4ZnXmZYOhnA\">reversal of Net Neutrality protections</a></em> [or the rollout of Net Neuterality -c] (December 2017).\r\n</p>\r\n<h1>Links and Notes:</h1>\r\n<p>\r\n<strong>Re: Empire</strong> - moral decline and massive wealth inequality, role in imperial decline <a href=\"https://www.google.com/url?q=https://www.businessinsider.com/2-overlooked-characteristics-of-an-empire-in-decline-2015-10&sa=D&ust=1513926885707000&usg=AFQjCNFa_5D5Gx9clZpm-alySTAjKCl6Og\">[1]</a> -r<br/>\r\n<strong>Re: Empire</strong> - Noam Chomsky and Decline of American Empire <a href=\"https://www.google.com/url?q=https://www.youtube.com/watch?v%3DoLOUJ0C61O0&sa=D&ust=1513926885708000&usg=AFQjCNHcdsaF1pzjhkcjc5KeYAw9ayBH8A\">[2]</a> -r<br/>\r\n<strong>Re: Empire</strong> - moral decline - death as sport (Onion spoof) <a href=\"https://www.google.com/url?q=https://www.youtube.com/watch?v%3DHyph_DZa_GQ&sa=D&ust=1513926885708000&usg=AFQjCNHs7nXBhvmV4i82k-Jh-ooQmyUfgA\">[3]</a> -r<br/>\r\n<strong>Re: Net Neutrality</strong> - Rutiger apologies - to Casper, for completely derailing the conversation on Net Neutrality by believing that pay-for-bandwidth/capacity and limiting access to content are both legitimate elements of the Net Neutrality debate, but over-focusing on the infrastructure/de-emphasizing the content argument. See <a href=\"https://www.google.com/url?q=https://en.wikipedia.org/wiki/Net_neutrality%23Prevent_overuse_of_bandwidth&sa=D&ust=1513926885709000&usg=AFQjCNG-cpGrTBMts6ZBnNe70pwsRmh4uQ\">Prevent Over-Use of Bandwidth</a> and <a href=\"https://www.google.com/url?q=https://en.wikipedia.org/wiki/Net_neutrality%23Pricing_models&sa=D&ust=1513926885709000&usg=AFQjCNGLFZMwvku5aEIMc12xUp5B_2-Fmg\">Pricing Models</a> vs. <a href=\"https://www.google.com/url?q=https://en.wikipedia.org/wiki/Net_neutrality%23Data_discrimination&sa=D&ust=1513926885710000&usg=AFQjCNE8FZmUnilxtALBwMA4myBkHNBcjg\">Data Discrimination</a> <a href=\"https://www.google.com/url?q=https://en.wikipedia.org/wiki/Net_neutrality&sa=D&ust=1513926885710000&usg=AFQjCNG4ZUX2pOEnC0yPI0m50kdL42_n-g\">[4]</a> -r<br/>\r\n<strong>Re: Empire</strong> - consumption of human suffering as entertainment - modern Roman colosseum <a href=\"https://www.google.com/url?q=https://www.eonline.com/news/367020/lindsay-lohan-a-timeline-of-all-her-arrests-and-boy-there-are-a-lot-of-em&sa=D&ust=1513926885711000&usg=AFQjCNGy09hpDmDL7x25vzJ31pm_LiqWuQ\">[5]</a> -r <br/>\r\n<strong>Re: Empire</strong> - the thought leaders over at Reddit on elements of declining empire <a href=\"https://www.google.com/url?q=https://www.reddit.com/r/AskHistorians/comments/34fnw9/what_are_the_characteristic_signs_of_a_declining/&sa=D&ust=1513926885711000&usg=AFQjCNHQvIfniCHqgDstF7ZpYRmVmLz-MQ\">[6]</a> -r <br/>\r\n<strong>Re: Thoughts</strong> - Volume One Chapter Two of Diek Minusky’s <strong>The Nature of Systems</strong> will be coming with… episode 4! Sorry folks. Hold… hold! -r<br/>\r\n<strong>Re: Getting Things Done</strong> - by David Allen [<a href=\"https://www.google.com/url?q=https://en.wikipedia.org/wiki/Getting_Things_Done?wprov%3Dsfti1&sa=D&ust=1513926885712000&usg=AFQjCNGsprONTkDHQk_oZmnR8PIgrd29Sw\">7</a>]<br/>\r\n</p>\r\n<ul>\r\n<li>[1] <a href=\"https://www.google.com/url?q=https://www.businessinsider.com/2-overlooked-characteristics-of-an-empire-in-decline-2015-10&sa=D&ust=1513926885712000&usg=AFQjC
(2463,'2018-01-10','Setting up a 32 Bit Ubuntu Server',762,'Repurpose a 32 bit small form factor working station','<p>So what is the purpose - I had an old windows backup workstation at work that I did a lot backups with. It got to the point where it was just too slow and low spec to handle the windows 7 updates and with my company switching to the 365/sharepoint/one drive it was not needed anymore. So I wanted not to throw it away as I had sprung for 160GB hard drive a long time ago. “I know at work and purchasing a hard drive for work.” But it lasted more than 10 years doing my outlook backups and file shares.</p>\r\n<p>So my first problem was I was pretty sure I only had 32 bit.</p>\r\n<p>So no centos or suse in 32 bit. I could have went fedora but I wanted a really long time with support. So it came down to ubuntu 16.04, Debian or Net BSD with I386 repos I could use long term. I was more comfortable with Ubuntu and 16.04 has about 3 years support left on it.</p>\r\n<p>Its a small form factor computer so I carried it home for a few days. And got the ISO down loaded again no usb drive boot only DVD.</p>\r\n<p>So what is it. I did a uname -a and and looked at the proc cpu to see what the cpu was.<br />\r\n<a href=\"https://www.tecmint.com/find-out-linux-system-is-32-bit-or-64-bit/\" class=\"uri\">https://www.tecmint.com/find-out-linux-system-is-32-bit-or-64-bit/</a><br />\r\n<a href=\"https://www.computerhope.com/issues/ch001121.htm\" class=\"uri\">https://www.computerhope.com/issues/ch001121.htm</a><br />\r\nThe second linked worked best.</p>\r\n<p>I had a lot of trouble with lamp and own/next cloud with both snaps and straight install. I broke the install several times. In the end I said what do really know how do well with it right now. So I installed Open SSH server, tightVNC, A really thin xfce 4, ffmpeg and youtube-dl and uget. So I will play with snaps only in the future and keep this basic config.</p>\r\n<p><a href=\"https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-vnc-on-ubuntu-16-04\" class=\"uri\">https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-vnc-on-ubuntu-16-04</a></p>\r\n<p>Note I did not auto start VNC because I found in my creations of this server that it used too much RAM vs just starting it and killing it.</p>\r\n<p>It is the perfect video processing machine in the moment. If youtube-dl can’t get it I can use uget via vnc and that will then transcode if needed. Mostly for mp3.<br />\r\n<a href=\"https://rg3.github.io/youtube-dl/\" class=\"uri\">https://rg3.github.io/youtube-dl/</a> youtube-dl is a command-line program to download videos from YouTube.com and a few more sites. It requires the Python interpreter, version 2.6, 2.7, or 3.2+, and it is not platform specific. It should work on your Unix box, on Windows or on Mac OS X. It is released to the public domain, which means you can modify it, redistribute it or use it however you like.</p>\r\n<p>I will work on the nextcloud snap and other snaps as they are easy to install or remove without hurting the base system.</p>\r\n<p>Possible other projects - Owncloud or Storj<br />\r\n<a href=\"https://storj.io/share.html\" class=\"uri\">https://storj.io/share.html</a><br />\r\nOne you can make a little money with it :)</p>\r\n',129,0,0,'CC-BY-SA','32-bit server, Ubuntu',0,0,1),
(2464,'2018-01-11','The Alien Brothers Podcast - S01E04 - Digital Instruments',3906,'Casper and Rutiger Detail their Digital and Analog Sonic Setups in IOS and Android','<p>Casper and Rutiger are back with a very simple topic: Making music with various Digital Audio Workstations.</p>\r\n<p>Rutiger details his MacOS / iOS platform and the Apps he uses to create his noise:<br />\r\n<a href=\"https://soundcloud.com/fibrechannel\" class=\"uri\">https://soundcloud.com/fibrechannel</a></p>\r\n<p>Casper details his Windows setup with a relatively cheap DAW and various Analog and Digital transmissions he uses to create his noise:<br />\r\n<a href=\"https://soundcloud.com/user-393542827\" class=\"uri\">https://soundcloud.com/user-393542827</a></p>\r\n<p><span class=\"citation\" data-cites=\"alienbpc\">@alienbpc</span></p>\r\n',359,0,1,'CC-BY-SA','DAW, Sonic Voyages, iOS Music Apps, PreSonus Audiobox 22vsl, Logic Pro X, Studio One',0,0,1),
(2696,'2018-12-03','HPR Community News for November 2018',4317,'HPR Volunteers talk about shows released and comments posted in November 2018','\n\n<h2>New hosts</h2>\n<p>\nWelcome to our new host: <br />\n\n <a href=\"https://hackerpublicradio.org/correspondents/0371.html\" target=\"_blank\">desearcher</a>.\n</p>\n\n<h2>Last Month\'sShows</h2>\n<tableid=\"t01\"summary=\"Last month\'s shows\">\n<tr>\n<th>Id</th>\n<th>Day</th>\n<th>Date</th>\n<th>Title</th>\n<th>Host</th>\n</tr>\n<trvalign=\"top\">\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=2674\"target=\"_blank\">2674</a></strong></td>\n<td>Thu</td>\n<td>2018-11-01</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=2674\"target=\"_blank\">Raspberrypi3openmediaserver</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0129.html\"target=\"_blank\">JWP</a></td>\n</tr>\n<trvalign=\"top\">\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=2675\"target=\"_blank\">2675</a></strong></td>\n<td>Fri</td>\n<td>2018-11-02</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=2675\"target=\"_blank\">YouTubePlaylists</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0198.html\"target=\"_blank\">Ahuka</a></td>\n</tr>\n<trvalign=\"top\">\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=2676\"target=\"_blank\">2676</a></strong></td>\n<td>Mon</td>\n<td>2018-11-05</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=2676\"target=\"_blank\">HPRCommunityNewsforOctober2018</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0159.html\"target=\"_blank\">HPRVolunteers</a></td>\n</tr>\n<trvalign=\"top\">\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=2677\"target=\"_blank\">2677</a></strong></td>\n<td>Tue</td>\n<td>2018-11-06</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=2677\"target=\"_blank\">Thoughtsonlanguagelearningpart4-RPG.</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0151.html\"target=\"_blank\">dodddummy</a></td>\n</tr>\n<trvalign=\"top\">\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=2678\"target=\"_blank\">2678</a></strong></td>\n<td>Wed</td>\n<td>2018-11-07</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=2678\"target=\"_blank\">ExplainingthecontrolsonmyAmateurHFRadioPart4</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0201.html\"target=\"_blank\">MrX</a></td>\n</tr>\n<trvalign=\"top\">\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=2679\"target=\"_blank\">2679</a></strong></td>\n<td>Thu</td>\n<td>2018-11-08</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=2679\"target=\"_blank\">ExtraancillaryBashtips-13</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0225.html\"target=\"_blank\">DaveMorriss</a></td>\n</tr>\n<trvalign=\"top\">\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=2680\"target=\"_blank\">2680</a></strong></td>\n<td>Fri</td>\n<td>2018-11-09</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=2680\"target=\"_blank\">SomeAdditionalTalkAboutCharacters-- 01</a></td>\n <td><a href=\"https://hackerpublicradio.org/correspondents/0107.html\" target=\"_blank\">lostnbronx</a></td>\n </tr>\n <tr valign=\"top\">\n <td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2681\" target=\"_blank\">2681</a></strong></td>\n <td>Mon</td>\n <td>2018-11-12</td>\n <td><a href=\"https://hackerpublicradio.org/eps.php?id=2681\" target=\"_blank\">DerbyCon Interview - Hackers for Charity</a></td>\n <td><a href=\"https://hackerpublicradio.org/correspondents/0079.html\" target=\"_blank\">Xoke</a></td>\n </tr>\n <tr valign=\"top\">\n <td><strong><a href=\"https://hackerpublicra
(2721,'2019-01-07','HPR Community News for December 2018',4247,'HPR Volunteers talk about shows released and comments posted in December 2018','\n\n<h2>New hosts</h2>\n<p>\nWelcome to our new host: <br />\n\n <a href=\"https://hackerpublicradio.org/correspondents/0372.html\" target=\"_blank\">Edward Miro / c1ph0r</a>.\n</p>\n\n<h2>Last Month\'sShows</h2>\n<tableid=\"t01\"summary=\"Last month\'s shows\">\n<tr>\n<th>Id</th>\n<th>Day</th>\n<th>Date</th>\n<th>Title</th>\n<th>Host</th>\n</tr>\n<trvalign=\"top\">\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=2696\"target=\"_blank\">2696</a></strong></td>\n<td>Mon</td>\n<td>2018-12-03</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=2696\"target=\"_blank\">HPRCommunityNewsforNovember2018</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0159.html\"target=\"_blank\">HPRVolunteers</a></td>\n</tr>\n<trvalign=\"top\">\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=2697\"target=\"_blank\">2697</a></strong></td>\n<td>Tue</td>\n<td>2018-12-04</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=2697\"target=\"_blank\">TheLinuxShutdownCommandExplained</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0129.html\"target=\"_blank\">JWP</a></td>\n</tr>\n<trvalign=\"top\">\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=2698\"target=\"_blank\">2698</a></strong></td>\n<td>Wed</td>\n<td>2018-12-05</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=2698\"target=\"_blank\">XSVforfastCSVmanipulations-Part1</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0300.html\"target=\"_blank\">b-yeezi</a></td>\n</tr>\n<trvalign=\"top\">\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=2699\"target=\"_blank\">2699</a></strong></td>\n<td>Thu</td>\n<td>2018-12-06</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=2699\"target=\"_blank\">BashTips-15</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0225.html\"target=\"_blank\">DaveMorriss</a></td>\n</tr>\n<trvalign=\"top\">\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=2700\"target=\"_blank\">2700</a></strong></td>\n<td>Fri</td>\n<td>2018-12-07</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=2700\"target=\"_blank\">Episode3000</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0030.html\"target=\"_blank\">KenFallon</a></td>\n</tr>\n<trvalign=\"top\">\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=2701\"target=\"_blank\">2701</a></strong></td>\n<td>Mon</td>\n<td>2018-12-10</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=2701\"target=\"_blank\">FirstimpressionsoftheOdroid-go</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0151.html\"target=\"_blank\">dodddummy</a></td>\n</tr>\n<trvalign=\"top\">\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=2702\"target=\"_blank\">2702</a></strong></td>\n<td>Tue</td>\n<td>2018-12-11</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=2702\"target=\"_blank\">Audacitysetupandresponsetoepisode2658</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0338.html\"target=\"_blank\">TonyHughesAKATonyH1212</a></td>\n</tr>\n<trvalign=\"top\">\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=2703\"target=\"_blank\">2703</a></strong></td>\n<td>Wed</td>\n<td>2018-12-12</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=2703\"target=\"_blank\">FogofwarinYesodbasedgame</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0364.html\"target=\"_blank\">Tuula</a></td>\n</tr>\n<trvalign=\"top\">\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.
(2741,'2019-02-04','HPR Community News for January 2019',4598,'Yannick Dave and Ken talk about shows released and comments posted in January 2019','\n\n<h2>New hosts</h2>\n<p>\nThere were no new hosts this month.\n</p>\n\n<h2>Last Month\'sShows</h2>\n<tableid=\"t01\"summary=\"Last month\'s shows\">\n<tr>\n<th>Id</th>\n<th>Day</th>\n<th>Date</th>\n<th>Title</th>\n<th>Host</th>\n</tr>\n<trvalign=\"top\">\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=2717\"target=\"_blank\">2717</a></strong></td>\n<td>Tue</td>\n<td>2019-01-01</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=2717\"target=\"_blank\">MobileDeviceSecurity</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0372.html\"target=\"_blank\">EdwardMiro/c1ph0r</a></td>\n</tr>\n<trvalign=\"top\">\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=2718\"target=\"_blank\">2718</a></strong></td>\n<td>Wed</td>\n<td>2019-01-02</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=2718\"target=\"_blank\">GenreInStorytelling</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0107.html\"target=\"_blank\">lostnbronx</a></td>\n</tr>\n<trvalign=\"top\">\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=2719\"target=\"_blank\">2719</a></strong></td>\n<td>Thu</td>\n<td>2019-01-03</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=2719\"target=\"_blank\">BashTips-17</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0225.html\"target=\"_blank\">DaveMorriss</a></td>\n</tr>\n<trvalign=\"top\">\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=2720\"target=\"_blank\">2720</a></strong></td>\n<td>Fri</td>\n<td>2019-01-04</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=2720\"target=\"_blank\">Downloadyoutubechannelsusingtherssfeeds</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0030.html\"target=\"_blank\">KenFallon</a></td>\n</tr>\n<trvalign=\"top\">\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=2721\"target=\"_blank\">2721</a></strong></td>\n<td>Mon</td>\n<td>2019-01-07</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=2721\"target=\"_blank\">HPRCommunityNewsforDecember2018</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0159.html\"target=\"_blank\">HPRVolunteers</a></td>\n</tr>\n<trvalign=\"top\">\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=2722\"target=\"_blank\">2722</a></strong></td>\n<td>Tue</td>\n<td>2019-01-08</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=2722\"target=\"_blank\">RAID6ashortdescription</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0129.html\"target=\"_blank\">JWP</a></td>\n</tr>\n<trvalign=\"top\">\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=2723\"target=\"_blank\">2723</a></strong></td>\n<td>Wed</td>\n<td>2019-01-09</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=2723\"target=\"_blank\">UsingElmincontextof4Xgameclient</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0364.html\"target=\"_blank\">Tuula</a></td>\n</tr>\n<trvalign=\"top\">\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=2724\"target=\"_blank\">2724</a></strong></td>\n<td>Thu</td>\n<td>2019-01-10</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=2724\"target=\"_blank\">UsingaDINRailtomountaRaspberryPi</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0225.html\"target=\"_blank\">DaveMorriss</a></td>\n</tr>\n<trvalign=\"top\">\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=2725\"target=\"_blank\">2725</a></strong></td>\n<td>Fri</td>\n<td>2019-01-11</td>\n<td><ahr
INSERTINTO`eps`(`id`,`date`,`title`,`duration`,`summary`,`notes`,`hostid`,`series`,`explicit`,`license`,`tags`,`version`,`downloads`,`valid`)VALUES(3959,'2023-10-05','Download any HPR series with english file names',165,'A dir with the series name will be created and all shows will be renamed to ShowTitle.mp3 inside it','<p>Hello all. This is gemlog from Terrace, bc, canada just up near the\nalaska panhandle.</p>\n<p>Some of you may know me from in COM chat on sdf dot org or as a\nfedizen on the tilde dot zone instance of mastodon.</p>\n<p>Now, the other day I finally got around to checking out HPR properly,\neven though my masto-pal claw-dio-m turned me on to it a couple of years\nago.</p>\n<p>Recently, on a friday night in irc on tilde radio, I noticed there\nwere whole series on hpr and not only single shows and that got me kind\nof excited.<br />\nI guess I\'measilyexcitable.</p>\n<p>Anyhow,somethingIcouldlistentoatworkorwhiledriving.Still,\nImanagedtoforgetaboutituntil/just/beforeIwasleavingthehouse\nforworkonMondaymorning.Irushedtocopyoverafewshows-nearly\natrandomontomyphoneandheadedouttowork.</p>\n<p>AfterIgotmymorningsortedatwork,ItoldVLCtoplay-alland\nenjoyedacoupleofshows.InoticedthateachshowIhadchosenhada\nbegpostatthebeginning.IfiguredIcouldmakeoneonatleast\nsomethingfrommymessygemlog/bindir.</p>\n<p>However,afterabreak,Icamebackandcouldn\'t remember which 4\ndigit numbered dot mp3 I had finished up on, which mildly irked me.\nWell, as we all know, irk becomes itch and I put my sad regex skills to\nthe test scraping the hpr website with a custom bash script later when I\ngot home.</p>\n<p>A very custom bash script. Like all scrapers, if any of the guys at\nhpr even breathe the wrong way, it will probably break horribly. On the\nother hand, I\'vehadscrapersthatlookedjustassadrunningformany\nyearsagainstacanadiangovernmentsite.So.Whoknows?</p>\n<p>Allthescriptusesaresomebuilt-insfrombashalongwithsedand\nwgetfortheactualgetting.MylocalinstanceofsearXNGwasleft\nsmokingasscrambledforsedincantationstostringtogether.I\'m not a\nsed guy.</p>\n<p>Usage is simple, as the script only accepts one argument: ... the\nfour digit series number of the show you want to download. It will\ncreate a dir with the series name and download every mp3 it finds,\nrenaming each show to the show title.</p>\n<p>I was tempted to doll it up with some niceties like options for\ndownload dir, a selector for a series with a dialog of some kind... yada\nyada yada.</p>\n<p>But... we all know what happens when you stretch a quick hack with a\nbash script too far for the scripting language: hours of misery wishing\nyou\'dstartedwithsomeotherlanguage.</p>\n<p>Sofar,I\'ve used the script to download 8 series. DU dash S H tells\nme they add up to 2 dot 2 gig, so it seems to work well enough.</p>\n<p>It comes with the same iron clad warranty as everything I write:</p>\n<p>If it breaks, you get to keep all the pieces. Thanks for\nlistening.</p>\n<pre><code>#!/bin/bash\n# gemlog@gemlog.ca 2023-08-26\n# License: CC BY-SA 4.0.\n# not proud of my continuing lack of regex foo frankly...\n\nif [ $# -lt 1 ]; then\n echo 1>&2 "$0: You need to enter the HPR Series Number to download as 4 digits"\n echo "The full list of HPR Series is at https://hackerpublicradio.org/series/index.html"\n exit 2\nfi\n\nsnumber=$1\nre='^[[:digit:]]{4}$'\nif [[ $snumber =~ $re ]]; then\n wget https://hackerpublicradio.org/series/$snumber.html -q -O /tmp/$snumber.html\n content=$(</tmp/$snumber.html)\n declare -a shows\n shows=$(grep -P '^(?=.*h3)(?=.*title)' /tmp/$snumber.html)\nelse\n echo "'$snumber' is not exactly 4 digits like an HPR series number"\n exit 2\nfi\n\nseries=$(echo $content | sed -e :a -e 's/<[^>]*>//g;/</N;//ba' | grep -o -P -m1 '(?<=In-Depth Series:).*(?=Number)' | sed &#
(2761,'2019-03-04','HPR Community News for February 2019',4022,'HPR Volunteers talk about shows released and comments posted in February 2019','\n\n<h2>New hosts</h2>\n<p>\nThere were no new hosts this month.\n</p>\n\n<h2>Last Month\'sShows</h2>\n<tableid=\"t01\"summary=\"Last month\'s shows\">\n<tr>\n<th>Id</th>\n<th>Day</th>\n<th>Date</th>\n<th>Title</th>\n<th>Host</th>\n</tr>\n<trvalign=\"top\">\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=2740\"target=\"_blank\">2740</a></strong></td>\n<td>Fri</td>\n<td>2019-02-01</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=2740\"target=\"_blank\">Pop!_OS18.10(quick)review</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0370.html\"target=\"_blank\">YannickthefrenchguyfromSwitzerland</a></td>\n</tr>\n<trvalign=\"top\">\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=2741\"target=\"_blank\">2741</a></strong></td>\n<td>Mon</td>\n<td>2019-02-04</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=2741\"target=\"_blank\">HPRCommunityNewsforJanuary2019</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0159.html\"target=\"_blank\">HPRVolunteers</a></td>\n</tr>\n<trvalign=\"top\">\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=2742\"target=\"_blank\">2742</a></strong></td>\n<td>Tue</td>\n<td>2019-02-05</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=2742\"target=\"_blank\">SAPHanaCertificationDirectory</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0129.html\"target=\"_blank\">JWP</a></td>\n</tr>\n<trvalign=\"top\">\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=2743\"target=\"_blank\">2743</a></strong></td>\n<td>Wed</td>\n<td>2019-02-06</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=2743\"target=\"_blank\">Characterbuildinthed20system</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0078.html\"target=\"_blank\">klaatu</a></td>\n</tr>\n<trvalign=\"top\">\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=2744\"target=\"_blank\">2744</a></strong></td>\n<td>Thu</td>\n<td>2019-02-07</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=2744\"target=\"_blank\">YetAnotherRamblingDriveIntoWork</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0201.html\"target=\"_blank\">MrX</a></td>\n</tr>\n<trvalign=\"top\">\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=2745\"target=\"_blank\">2745</a></strong></td>\n<td>Fri</td>\n<td>2019-02-08</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=2745\"target=\"_blank\">MyYouTubeSubscriptions#1</a></td>\n <td><a href=\"https://hackerpublicradio.org/correspondents/0198.html\" target=\"_blank\">Ahuka</a></td>\n </tr>\n <tr valign=\"top\">\n <td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2746\" target=\"_blank\">2746</a></strong></td>\n <td>Mon</td>\n <td>2019-02-11</td>\n <td><a href=\"https://hackerpublicradio.org/eps.php?id=2746\" target=\"_blank\">My software part 2</a></td>\n <td><a href=\"https://hackerpublicradio.org/correspondents/0338.html\" target=\"_blank\">Tony Hughes AKA TonyH1212</a></td>\n </tr>\n <tr valign=\"top\">\n <td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2747\" target=\"_blank\">2747</a></strong></td>\n <td>Tue</td>\n <td>2019-02-12</td>\n <td><a href=\"https://hackerpublicradio.org/eps.php?id=2747\" target=\"_blank\">checking oil</a></td>\n <td><a href=\"https://hackerpublicradio.org/correspondents/0329.html\" target=\"_blank\">brian</a></td>\n </tr>\n <tr valign=\"top\">\n <td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2748\" target=\"_blank\">2748</a></strong></td>\n <td>Wed</td>\n <td>2019-02-13</td>\n <td><a href=\"https:
(2466,'2018-01-15','ShareX is awesome',447,'ShareX, for all your screenshot needs and more','<p>Find it at <a href=\"https://getsharex.com/\" class=\"uri\">https://getsharex.com/</a></p>',79,0,0,'CC-BY-SA','Windows, Screenshot, documentation',0,0,1),
(2468,'2018-01-17','THE WELL',408,'I record a video with audio on my fathers well setup in the sticks','<p>I record a video with audio on my fathers well setup in the sticks</p>\r\n<p><a href=\"https://rmccurdy.com/scripts/videos/rmccurdy_com/THE_WELL.mp4\" class=\"uri\">https://rmccurdy.com/scripts/videos/rmccurdy_com/THE_WELL.mp4</a></p>',36,0,1,'CC-BY-SA','well, pump, troubleshooting',0,0,1),
(2469,'2018-01-18','A flight itinerary in Bash',1065,'Working out dates and times in a Bash script','<h1 id=\"a-flight-itinerary-in-bash\">A flight itinerary in Bash</h1>\r\n<p>My daughter flew out to New Zealand before Christmas 2017 to spend some time with her brother, who had been there with his girlfriend since November. I saw her flight itinerary from the airline, but had no idea of how the times related to time back home, so I wrote a little Bash script to calculate times in UTC (my local timezone).</p>\r\n<p>Both of my children have travelled a fair bit in the past few years. I like to keep track of where they are and how they are progressing through their journeys because otherwise I tend to worry. This one was a reasonably simple journey, two flights via Doha in Qatar, with not too long a wait between them. The overall journey was <em>long</em> of course.</p>\r\n<p>When my daughter flew out to Indonesia in 2015 (4 flights and a boat trip, over 38 hours travel time) I built a spreadsheet. Just whatever provides a good distraction!</p>\r\n<p>The rest of the notes, including details of the <code>date</code> command and the script I wrote can be found <a href=\"https://hackerpublicradio.org/eps/hpr2469/full_shownotes.html\">here</a>.</p>\r\n<h2 id=\"links\">Links</h2>\r\n<ul>\r\n<li>GNU documentation for <a href=\"https://www.gnu.org/software/coreutils/manual/html_node/date-invocation.html#date-invocation\"><code>date</code></a> (You can also use <code>man date</code> or <code>info date</code> for the full details. I prefer the HTML version because I don\'tlikethe<code>info</code>toolverymuch).</li>\r\n<li>The<ahref=\"https://www.gnu.org/software/bash/manual/bash.html\">GNUBashReferenceManual</a></li>\r\n<li>DannWasko\'s <em>"Linux in the Shell"</em> episode <a href=\"https://hackerpublicradio.org/eps.php?id=1182\"><em>hpr1182 :: LiTS 023: Date</em></a>, which is full of useful information.</li>\r\n<li>Resources:\r\n<ul>\r\n<li>The script I wrote, called <a href=\"https://hackerpublicradio.org/eps/hpr2469/edi_akl\"><code>edi_akl</code></a> (named to denote the starting and ending airports).</li>\r\n</ul></li>\r\n</ul>\r\n',225,42,1,'CC-BY-SA','Bash,date,ISO 8601,epoch',0,0,1),
(2470,'2018-01-19','Obamacare Update At The End Of 2017',798,'Where is US Health Care policy as we head into 2018?','<p>In 2017 Obamacare was the subject of a great deal of political jockeying, and yet by the end of the year almost nothing changed. So what happened, and why?</p>\r\n<ul>\r\n<li><a href=\"https://www.theguardian.com/us-news/2017/jun/26/koch-network-piggy-banks-closed-republicans-healthcare-tax-reform\" class=\"uri\">https://www.theguardian.com/us-news/2017/jun/26/koch-network-piggy-banks-closed-republicans-healthcare-tax-reform</a></li>\r\n<li><a href=\"https://www.foxbusiness.com/politics/2017/06/26/gop-donors-close-checkbooks-frustrated-with-lack-progress-on-taxes-health-care.html\" class=\"uri\">https://www.foxbusiness.com/politics/2017/06/26/gop-donors-close-checkbooks-frustrated-with-lack-progress-on-taxes-health-care.html</a></li>\r\n<li><a href=\"https://fortune.com/2017/12/21/obamacare-enrollment-surge-despite-trump/\" class=\"uri\">https://fortune.com/2017/12/21/obamacare-enrollment-surge-despite-trump/</a></li>\r\n<li><a href=\"https://www.washingtonpost.com/blogs/plum-line/wp/2017/12/27/republicans-failure-on-health-care-is-even-greater-than-they-realize/\" class=\"uri\">https://www.washingtonpost.com/blogs/plum-line/wp/2017/12/27/republicans-failure-on-health-care-is-even-greater-than-they-realize/</a></li>\r\n<li><a href=\"https://www.palain.com/?page_id=325\" class=\"uri\">https://www.palain.com/?page_id=325</a></li>\r\n</ul>\r\n',198,100,0,'CC-BY-SA','Health Insurance, Health Policy, Insurance Marketplace, Obamacare',0,0,1),
(2479,'2018-02-01','Intergraph workstation',1725,'My rebuild of my Intergraph workstation','<p>Been going through my old work servers.</p>\r\n<p>They typically run until I can\'tupdatethemanymoreandthensitnotuseduntilIhaveabitoffreetime.SoIhaveanoldintergraphboxinitthatInewpentium4motherboardfromabout8yearsback.Ihadthereceipttapedtotheinsideofthebox.AndtheExpensestatementfromwork.Ihadcentos6.0onittryasitmustItgotnomoreupdatesandrepros.ItalsohasaweakPSUasIhadtoremovetheDVDandgraphicscardtogettowork.</p>\r\n<p>Aboutintergraph:</p>\r\n<blockquote>\r\n<p>IntergraphCorporationisanAmericansoftwaredevelopmentandservicescompany.Itprovidesenterpriseengineeringandgeospatiallypoweredsoftwaretobusinesses,governments,andorganizationsaroundtheworld.Intergraphoperatesthroughthreedivisions:HexagonPPM,HexagonSafety&Infrastructure,andHexagonGeospatial.Thecompany\'s headquarters is in Huntsville, Alabama, USA. In 2008, Intergraph was one of the 100 largest software companies in the world. In 2010, Intergraph was acquired by Hexagon AB. Intergraph was founded in 1969 as M&S Computing, Inc., by former IBM engineers who had been working with NASA and the U.S. Army in developing systems that would apply digital computing to real-time missile guidance. The company was later renamed to Intergraph Corporation in 1980. In 2000, Intergraph exited the hardware business and became purely a software company. On July 21, 2000, it sold its Intense3D graphics accelerator division to 3Dlabs, and its workstation and server division to Silicon Graphics. The companies incorporated SmartSketch, a drawing program used previously for the PenPoint OS and EO tablet computer. When Pen computing did not take off, SmartSketch was ported to the Windows and Macintosh platforms. <a href=\"https://www.cnet.com/news/intergraph-delivers-cheap-workstations/\" class=\"uri\">https://www.cnet.com/news/intergraph-delivers-cheap-workstations/</a></p>\r\n</blockquote>\r\n<p>The new TD-300 and TD-400 "Personal Workstations" offer 3D graphics capabilities equal to or below the prices of PCs configured as 3D workstations, the company said. The TD-300 and TD-400 Personal Workstations are available immediately, with prices starting at $5,495. <a href=\"https://www.intergraph.com/about_us/history_90s.aspx\" class=\"uri\">https://www.intergraph.com/about_us/history_90s.aspx</a></p>\r\n<p>So the box now has a Pentium 4 dual core in it which is 64 bit. This chip is 2004-2007. <a href=\"https://en.wikipedia.org/wiki/Pentium_4\" class=\"uri\">https://en.wikipedia.org/wiki/Pentium_4</a></p>\r\n<p>So I have the ubuntu 32 bit work. And Suse Enterprise 12, tumbleweed and leap on hyperV. I had my Transmeta box on Debian I386 32 bit. So I need a redhat flavor. Since its 64 bit I picked CentOS. <a href=\"https://www.centos.org/\" class=\"uri\">https://www.centos.org/</a></p>\r\n<p>What is CentOS?</p>\r\n<blockquote>\r\n<p>CentOS (/ˈsɛntɒs/, from Community Enterprise Operating System) is a Linux distribution that attempts to provide a free, enterprise-class, community-supported computing platform functionally compatible with its upstream source, Red Hat Enterprise Linux (RHEL). In January 2014, CentOS announced the official joining with Red Hat while staying independent from RHEL, under a new CentOS governing board. In July 2010, CentOS overtook Debian to become the most popular Linux distribution for web servers, with almost 30% of all Linux web servers using it. Debian retook the lead in January 2012.</p>\r\n<p>In January 2014, Red Hat announced that it would sponsor the CentOS project, "helping to establish a platform well-suited to the needs of open source developers that integrate technologies in and around the operating system". As a result of these changes, ownership of CentOS trademarks was transferred to Red Hat, which now employs most of the CentOS head developers; however, they work as part of Red Hat\'sOpenSourceandStand
(2467,'2018-01-16','I randomly talk about my laptops',574,'Random talk about my laptops and the linux distros that are on them','<p>Just decided to start talking about my laptops after I installed Ubuntu Mate 16.04 to my x60.</p>',297,0,0,'CC-BY-SA','laptop, linux, fun, computers',0,0,1),
(2472,'2018-01-23','Forum Failure',1000,'Lostnbronx talks about his recent experiment in running a forum.','<p>In 2017 I created a forum over at Proboards dedicated to my audio work and writing. It didn\'tattractauserbase,andIdeleteditwhen2018rolledaround.</p>\r\n<p>ThesearejustsomethoughtsaboutwhyIwantedittobeginwith,andwhyIthinkitfailed.</p>\r\n<p>IstillbelieveProboardsisagoodwaytojumpintoforumsandusingforumsoftware,andstillrecommenditforthatreason:</p>\r\n<p><ahref=\"https://proboards.com/\"class=\"uri\">https://proboards.com/</a></p>\r\n<p>Herearesomeofmyprojectsmentionedbrieflyinthisepisode:</p>\r\n<ul>\r\n<li><ahref=\"https://www.cavalcadeaudio.com/\"class=\"uri\">https://www.cavalcadeaudio.com/</a></li>\r\n<li><ahref=\"https://downloads.cavalcadeaudio.com/lnbsaudiodiary/?p=home\"class=\"uri\">https://downloads.cavalcadeaudio.com/lnbsaudiodiary/?p=home</a></li>\r\n</ul>\r\n',107,0,0,'CC-BY-SA','forum,lostnbronx,platform,community',0,0,1),
(2473,'2018-01-24','Frotz - A Portable Z-Machine Interpreter',608,'How to use Frotz to play those old Infocom text adventure games from the 80s.','<p>Frotz is an interpreter for Infocom games (like Zork) and other Z-machine games. You can install it via your respective package manager or download the source code from the URLs below.</p>\r\n<ul>\r\n<li>Website: <a href=\"https://frotz.sourceforge.net\" class=\"uri\">https://frotz.sourceforge.net</a></li>\r\n<li>Github: <a href=\"https://github.com/DavidGriffith/frotz/\" class=\"uri\">https://github.com/DavidGriffith/frotz/</a></li>\r\n</ul>\r\n',152,0,0,'CC-BY-SA','Frotz,Z-code,Z-machine,Interactive Fiction',0,0,1),
(2474,'2018-01-25','Open Source Gaming #3 The Atari Jaguar',832,'Episode 3 is about the Atari Jaguar which has been open source since 1999','<a href=\"https://www.atariage.com/Jaguar/archives/HasbroRights.html\">https://www.atariage.com/Jaguar/archives/HasbroRights.html</a>\r\n\r\n<pre>\r\nHasbro Releases Jaguar Publishing Rights\r\nFOR IMMEDIATE RELEASE:\r\nCONTACTS:\r\nDana Henry\r\nHasbro Interactive\r\n978-921-3759\r\ndhenry@hasbro.com\r\n\r\nBeverly, MA (May 14, 1999) - Leading entertainment software publisher, \r\nHasbro Interactive announced today it has released all rights that it \r\nmay have to the vintage Atari hardware platform, the Jaguar.\r\n\r\nHasbro Interactive acquired rights to many Atari properties, including \r\nthe legendary Centipede, Missile Command, and Pong games, in a March \r\n1998 acquisition from JTS Corporation.\r\n\r\nThis announcement will allow software developers to create and publish \r\nsoftware for the Jaguar system without having to obtain a licensing \r\nagreement with Hasbro Interactive for such platform development. \r\nHasbro Interactive cautioned, however, that the developers should not \r\nuse the Atari trademark or logo in connection with their games or \r\npresent the games as authorized or approved by Hasbro Interactive.\r\n\r\n\"Hasbro Interactive is strictly focused on developing and publishing \r\nentertainment software for the PC and the next generation game \r\nconsoles,\" said Richard Cleveland, Head of Marketing for Hasbro \r\nInteractive\'sAtariBusinessUnit.\"We realize there is a passionate \r\naudience of diehard Atari fans who want to keep the Jaguar system alive, \r\nand we don\'t want to prevent them from doing that. We will not interfere \r\nwith the efforts of software developers to create software for the \r\nJaguar system.\"\r\n\r\nHasbroInteractive,Inc.isaleadingall-familyinteractivegames\r\npublisher,formedin1995tobringtolifeonthecomputerthedeep\r\nlibraryoftoyandboardgamesofparentcompany,Hasbro,Inc.(ASE:HAS).\r\nHasbroInteractivehasexpandeditschartertoincludeoriginaland\r\nlicensedgamesforthePC,thePlaystation(R)andNintendo(R)64game\r\nconsolesandformulti-playergamingovertheinternet.Headquartered\r\ninBeverly,Massachusetts,HasbroInteractivehasofficesintheU.K.,\r\nFrance,Germany,JapanandCanada.Formoreinformation,visitthe\r\nHasbroInteractiveWebsiteathttps://www.hasbro-interactive.com.\r\n</pre>',354,0,1,'CC-BY-SA','AtariCorporation,AtariJaguar',0,0,1),
(2475,'2018-01-26','Information Underground -- Sex, Drugs, and Rock-n-Roll',2601,'The IU guys examine the first Sexual Revolution in America, back during Prohibition.','<p>Deepgeek, Klaatu, and Lostnbronx look back at the flappers and speakeasies of the 1920\'sand30\'s, and attempt to draw a line from the newly independent women of that era, up through the Playboy Bunnies of the 1950\'s,allthewaytotoday.</p>\r\n<p>Arethingsbetterorworse?Iswhatwe"know"abouthistoryreallyimportant?AnddotheInfo-Undergroundboyshaveanycluewhatthey\'re even talking about?</p>',107,99,1,'CC-0','sex,alcohol,women,prohibition,freedom,history,pornography,oppression,playboy,hugh hefner',0,0,1),
(2483,'2018-02-07','Useful Bash functions - part 4',2386,'A Bash function for parsing lists of numbers and ranges','<h1 id=\"useful-bash-functions---part-4\">Useful Bash functions - part 4</h1>\r\n<h2 id=\"overview\">Overview</h2>\r\n<p>This is the fourth show about the Bash functions I use, and it may be the last unless I come up with something else that I think might be of general interest.</p>\r\n<p>There is only one function to look at this time, but it\'sfairlycomplexsoneedsanentireepisodedevotedtoit.</p>\r\n<p>AsbeforeitwouldbeinterestingtoreceivefeedbackonthisfunctionandwouldbegreatifotherBashuserscontributedideasoftheirown.</p>\r\n<h2id=\"full-notes\">FullNotes</h2>\r\n<p>Sincethenotesexplainingthissubjectarelong,theyhavebeenplaced<ahref=\"https://hackerpublicradio.org/eps/hpr2483/full_shownotes.html\">here</a>.</p>\r\n<h2id=\"links\">Links</h2>\r\n<ul>\r\n<li>The<ahref=\"https://www.gnu.org/software/bash/manual/bash.html\">GNUBashReferenceManual</a>\r\n<ul>\r\n<li><ahref=\"https://www.gnu.org/software/bash/manual/bash.html#ANSI_002dC-Quoting\">ANSI-CQuoting</a>section</li>\r\n</ul></li>\r\n<li>PreviousHPRepisodesinthisgroup<em>UsefulBashfunctions</em>:\r\n<ul>\r\n<li><ahref=\"https://hackerpublicradio.org/eps.php?id=1757\">Part1</a>:\'<code>pad</code>\'and\'<code>yes_no</code>\'functions</li>\r\n<li><ahref=\"https://hackerpublicradio.org/eps.php?id=2096\">Part2</a>:\'<code>yes_no</code>\'revisited</li>\r\n<li><ahref=\"https://hackerpublicradio.org/eps.php?id=2448\">Part3</a>:\'<code>read_value</code>\',\'<code>check_value</code>\'and\'<code>read_and_check</code>\'</li>\r\n</ul></li>\r\n<li>Downloadthe<ahref=\"https://hackerpublicradio.org/eps/hpr2483/range_parse.sh\"><em>range_parse</em></a>functionandthe<ahref=\"https://hackerpublicradio.org/eps/hpr2483/range_demo.sh\"><em>range_demo.sh</em></a>testscript.</li>\r\n</ul>',225,42,1,'CC-BY-SA','coding,Bash,script,function',0,0,1),
(2510,'2018-03-16','26 - Diffie-Hellman-Merkle Key Exchange',1231,'A basic explanation of how Diffie-Hellman-Merkle Key Exchange works','<p>Diffie-Hellman Key Exchange is based on work initially done by Ralph Merkle, and remains one of the key developments in secure communication over the Internet. In this episode I try to explain just how this works, with an example of a calculated key exchange.</p>\r\n<p>For more go to <a href=\"https://www.zwilnik.com/?page_id=955\" class=\"uri\">https://www.zwilnik.com/?page_id=955</a></p>\r\n<h3 id=\"links\">Links</h3>\r\n<ul>\r\n<li><a href=\"https://ee.stanford.edu/~hellman/publications/24.pdf\" class=\"uri\">https://ee.stanford.edu/~hellman/publications/24.pdf</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Modular_arithmetic\" class=\"uri\">https://en.wikipedia.org/wiki/Modular_arithmetic</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Discrete_logarithm\" class=\"uri\">https://en.wikipedia.org/wiki/Discrete_logarithm</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Man-in-the-middle_attack\" class=\"uri\">https://en.wikipedia.org/wiki/Man-in-the-middle_attack</a></li>\r\n<li><a href=\"https://www.zwilnik.com/?page_id=955\" class=\"uri\">https://www.zwilnik.com/?page_id=955</a></li>\r\n</ul>\r\n',198,74,0,'CC-BY-SA','Diffie-Hellman, Encryption',0,0,1),
(2476,'2018-01-29','Gnu Awk - Part 9',1956,'In part 9 of the series, we discuss the printf function','<h1 id=\"awk-series-part-9---printf\">Awk Series Part 9 - printf</h1>\n<p>The <code>printf</code> function allows for greater control over the output, in comparison to <code>print</code>.</p>\n<p>To follow along, you can either use these show notes or refer to <a href=\"https://www.gnu.org/software/gawk/manual/gawk.html\">the gawk manual</a>.</p>\n<p>There are 3 main areas to cover:</p>\n<ul>\n<li>Basic <code>printf</code> syntax</li>\n<li>Format Control letters</li>\n<li>Format modifiers</li>\n</ul>\n<h2 id=\"syntax\">Syntax</h2>\n<pre><code>printf format, item1, item2, …</code></pre>\n<p>The big difference in the syntax of printf statements is the <em>format</em> argument. It allows you to use complex formatting and layouts for outputs. Unlike <code>print</code>, <code>printf</code> does not automatically start a new line after the function. This can be useful when you want to print all of the items in a column on a single line.</p>\n<p>For example, remember the example file, file1.csv:</p>\n<pre><code>name,color,amount\napple,red,4\nbanana,yellow,6\nstrawberry,red,3\ngrape,purple,10\napple,green,8\nplum,purple,2\nkiwi,brown,4\npotato,brown,9\npineapple,yellow,5</code></pre>\n<p>Look at the difference between the following outputs:</p>\n<pre><code>awk -F, 'NR!=1{print "Color", $2, "has", $3}' file1.csv</code></pre>\n<p>and</p>\n<pre><code>awk -F, 'NR!=1{printf "Color %s has %s. ", $2, $3}' file1.csv</code></pre>\n<h2 id=\"control-letters\">Control Letters</h2>\n<p>Control letters control or cast the output to specific types. Use it as a way to convert ints to floats, ints to chars, etc.</p>\n<p><code>%c</code> = to char. <code>printf "%c", 65</code> prints a<br />\n<code>%i</code>, <code>%d</code> = to int. <code>printf "%i", 3.4</code> prints 3<br />\n<code>%f</code> = to float. <code>printf "%c", 65</code> prints 65.000000<br />\n<code>%e</code>, <code>%E</code> = to scientific notation. <code>printf "%e", 65</code> prints 6.500000e+01. If you use <code>%E</code> will use a capital E instead of e.<br />\n<code>%g</code> = to either scientific notation or int. <code>printf "%.2g", 65</code> prints 65, while <code>printf "%.1g", 65</code> prints 6e+01<br />\n<code>%s</code> = to string. <code>printf "%s", 65</code> prints 65<br />\n<code>%u</code> = to unsigned int. <code>printf "%u", -6</code> prints 18446744073709551610</p>\n<p>There are others. See documentation.</p>\n<h2 id=\"formatting\">Formatting</h2>\n<p><code>N$</code> = positional specifier. <code>printf "%2$s %1$s", "second", "first"</code><br />\n<code>n</code> = spaces to the left of the string.<br />\n<code>-n</code> = spaces to the right of string.<br />\n<code>space</code> = prefix positive numbers with a space, negative numbers with a -<br />\n<code>+</code> = prefix all numbers with a sign (either + or -)<br />\n<code>0n</code> = leading 0\'sbeforeinput.<code>printf"%03i",65</code>prints065.<br/>\n<code>\'</code> = comma place holder for thousands. <code>printf "%\'i",6500</code>prints6,500</p>\n<p>Belowisan(crude)illustrationofhowIliketothinkwhenformattingoutput:</p>\n<pre><code>72\n├──────┼───────┼────┼──┤\nColor:RedXXXXSum:X6</code></pre>\n<pre><code>183\n├──────────────────╂───┤\nTotalSum:XXXXXXXXX34</code></pre>\n<p>Seethefollowingawkfile</p>\n<pre><code>BEGIN{\nFS=",";\n}\nNR!=1{\na[$2]+=$3;\nc+=$3;\nd+=1;\n}\nEND{\nfor(bina){\nprintf"Color:%-7sSum:%2i\\n",b,a[b];\n}\nprint"----------------------"\nprintf"%-18s%3i\\n","TotalSum:",c;\nprintf"%-18s%3i\\n","TotalCount:"
(2477,'2018-01-30','Reading Audio Books While Distracted',610,'My attempt to solve the problem of listening to audio books when you can\'tfullyconcentrate.','<p>Justaquickanddirtyepisodeonmyattempttosolvetheproblemoflisteningtoaudiobooksatworkoranytimeyoucan\'t fully concentrate on the important thing, the audio book, of course.</p>\r\n<h3 id=\"problem\">Problem</h3>\r\n<p>I have more time to listen to books than to read them. I have no issues listening to audio books on my commute or when taking walks. The problem occurs at work. I have about 4 hours a day I could be listening to audio books. Over the years I\'vetriedcountlesstimes,allwiththesameresult.IgetdistractedbyworkandfindI\'ve missed key parts of the story and end up listening to music or podcasts I don\'tmindmissinginstead.</p>\r\n<p>There\'s nothing wrong with music or podcasts I don\'tmindmissingbutthatdoesn\'t help with my growing list of books I want to \'read\'.</p>\r\n<p>I decided to treat this like a regular problem and break it down to see if I can find a solution to this problem.</p>\r\n<p>Here are the variable I have to play with. These might be different for you.</p>\r\n<ul>\r\n<li>Book in one file or broken into chapters</li>\r\n<li>Listening speed</li>\r\n</ul>\r\n<h3 id=\"design-goals\">Design goals</h3>\r\n<p>Be able to listen to an audio book and have reasonable comprehension. Super Simple. I can\'tbeseenasmessingaroundwithmyplayermorethanwhateveritisthat\'s keeping me from my player :)</p>\r\n<p>Normally I listen to books in one large file because at one point in time it was easier for me to keep track of them in my player and bookmarking was easier for my little brain to handle. But I got to thinking this might solve the problem of wasted time when needing to repeat sections of the book. If the book were broken into pieces, I wouldn\'tneedtorepeatasoften.Itriedlisteningto3chaptersatatimeandhadtwoissues.Thefirstisthat3chaptersisstillquiteabitoftimeandIwasrepeatingsectionsIdidn\'t need to repeat. For example, I might have been able to follow along with chapter 1 but not chapters 2 and 3. This meant repeating chapter 1 or messing around to manually skip chapter 1 when I repeat. Not good.</p>\r\n<p>The second issue I had when listening to 3 chapter chunks was spoilers. If I got distracted during chapter 1 but not chapter 3, chapter 3 would contain spoilers for chapter 1 and chapter 1 would be spoiled on the re-listen :)</p>\r\n<h3 id=\"solution\">Solution</h3>\r\n<p>As it turns out listening in 1 chapter chunks solved both of these issues. So now I play one chapter on a loop until I feel I comprehend it well enough and then move to the next. This reduces the time when I need to re-listen because I was distracted and is simple because I only need to mess with the player when I\'mreadytomovetothenextchapter.</p>\r\n<p>Italsoreducesthespoilerissue.Whiletherearestillspoilers,theyarelimitedtospoilingthesamechapter.Agoodenoughcompromiseforme.</p>\r\n<p>Asfarasplaybackspeedgoes,IliketospeedaudioupwhenIcanconcentrateontheaudiobutprefertolistenatnormalspeedwhenIcan\'t.</p>\r\n<h3 id=\"other-considerations\">Other considerations</h3>\r\n<p>Some content might lend itself more to being broken into chunks by time rather than chapters. After all, not all chapters are the same length and podcasts don\'tusuallyhavechapters.AssumingIdecidetostickwiththisapproach,I\'ll probably try running podcasts which require one to pay attention through a script that splits them up into chunks based on duration and treat those chunks as chapters in books.</p>\r\n<p>If you try this and find it useful and/or have modifications, by all means, share.</p>\r\n<p>Also, if this is a well known technique, feel free to make fun of me. It\'llbefunlisteningtothecommentsbeingreadonthecommunitynewsshow.</p>\r\n',151,0,0,'CC-0','Audiobook,reading',0,0,1),
(2478,'2018-01-31','City Of Masks - HPR_AudioBookClub',5187,'The HPR Audiobook Club reviews City Of Masks with author Mike Reeves-McMillan','<h3>SUMMARY</h3>\r\n<p>In this episode, the HPR_AudioBookClub discusses City Of Masks by Mike Reeves-Mc-Millian</p>\r\n<p>It\'savailablefromScribl<ahref=\"https://scribl.com/books/PC439/city-of-masks/\">https://scribl.com/books/PC439/city-of-masks/</a></p>\r\n<p>Itisalsoavailableasapaperbackoranebook.https://www.amazon.com/City-Of-Masks-Mike-Reeves-Mcmillan/dp/0473122138</p>\r\n<h3>Non-SpoilerThoughts</h3>\r\n<p>PokeylovedthisAudioBook!It\'s one of his all time favorites. It ranks up there with Lester Del Ray\'sBadgeofInfamy</p>\r\n<h3>BEVERAGEREVIEWS</h3>\r\n<p>Asusual,theHPR_AudioBookClubtooksometimetoreviewthebeveragesthateachofusweredrinkingduringtheepisode</p>\r\n<ul>\r\n<li>Thaj:Noliquids.....can\'t pee......send help!</li>\r\n<li>x1101: <a href=\"https://www.beeradvocate.com/beer/profile/147/38470/\">Stone Sublimely Self-Righteous Ale</a></li>\r\n<li>pokey: Kentucky Bourbon Barrel Stout <a href=\"https://www.kentuckyale.com/kentucky-bourbon-barrel-stout\">https://www.kentuckyale.com/kentucky-bourbon-barrel-stout</a></li>\r\n<li>Mike Reeves-Mcmillan: Water. Tasty Shire water.</li>\r\n<li>Semioticrobotic: Tea</li>\r\n</ul>\r\n<h3>Things We Talked About</h3>\r\n<p>https://gplus.to/mikerm will link to everything else. It\'salsowhereIhangoutthemost.IpostsamplesofwhateverI\'m working on at the moment on G+ most Saturdays, as part of the #saturdayscenes group.\r\n<br/>\r\nhttps://csidemedia.com/gryphonclerks is my blog. There\'sasignuplinkforthemailinglistinthesidebar,orthedirectlinkis:\r\n<br/>\r\nhttps://eepurl.com/vB-t5\r\n<br/>\r\nThere\'s some member-only content for mailing list members, and I\'mplanningtoreleaseanotherpieceofcontentforthemsoon(a12,000-wordnoveletteinmyGryphonClerkssetting).</p>\r\n<p>Mike\'s G+ Page: https://gplus.to/mikerm </p>\r\n<h3>OUR NEXT AUDIOBOOK</h3>\r\n<p><strong><a href=\'https://scribl.com/books/PDB66/matcher-rules\'>Matcher Rules</a></strong> by Mary Holland</p>\r\n<h3>NEXT RECORDING</h3>\r\n<p>Our next book club recording will be 2015/02/10T23:00:00+00:00. <a href=\"https://en.wikipedia.org/wiki/ISO_8601#Times\">https://en.wikipedia.org/wiki/ISO_8601#Times</a>. If you\'dlikeaGooglecalendarinvite,orifyou\'d like to be on the HPR_AudioBookClub mailing list, please get in contact with us on the HPR mailing list \'hprathackerpublicradiodotorg\'</p>\r\n<h3>FURTHER RECOMMENDATIONS</h3>\r\n<h3>Other mostly unrelated points</h3>\r\n<p>Port knocking: https://www.portknocking.org/ </p>\r\n<p>Cask of Amontillado https://en.wikipedia.org/wiki/The_Cask_of_Amontillado </p>\r\n<p>NetSplits https://en.wikipedia.org/wiki/Netsplit </p>\r\n<p>Valerian Root https://www.subzin.com/quotes/M145312bbc/Fight+Club/Chew+some+Valerian+root+and+get+more+exercise </p>\r\n<h3>FEEDBACK</h3>\r\n<p>Thank you very much for listening to this episode of the HPR_AudioBookClub. We had a great time recording this show, and we hope you enjoyed it as well. We also hope you\'llconsiderjoiningusnexttime.Pleaseleaveafewwordsintheepisode\'s comment section.\r\n <br/>As always; remember to visit the HPR contribution page HPR could really use your help right now.</p>\r\n<p><a href=\"https://hackerpublicradio.org/contribute.php\">https://hackerpublicradio.org/contribute.php</a></p>\r\n<p>Sincerely,\r\n <br/>The HPR_AudioBookClub</p>\r\n<p>P.S. Some people really like finding mistakes. For their enjoyment, we always include a few.</p>\r\n<h3>OUR AUDIO</h3>\r\n<p>This episode was processed using Audacity <a href=\"https://audacity.sourceforge.net/\">https://audacity.sourceforge.net/</a>. We\'vebeenmakingsmalladjustmentstoouraudiomixeachmonthinordertogetthebestpossiblesound.It\'s been especially challenging getting all of our voices relatively level, because everyone has their own unique setup. Mumble is great for bringing us all together, and for
(2482,'2018-02-06','lca2018: Katie McLaughlin',1368,'An interview with Katie McLaughlin at linux.conf.au 2018','<p>Clinton interviews Katie McLaughlin at linux.conf.au 2018 on her role with the conference as community liaison and as the lead organiser of PyCon Australia.</p>\r\n<p><small><small><em>Editor\'sNote:Correctedaudionowavailable</em></small></small></p>\r\n',315,0,1,'CC-BY-SA','lca2018',0,0,1),
(2485,'2018-02-09','The Alien Brothers Podcast - S01E05 - I Saw the Invisible Man',4629,'Casper and Rutiger discuss the now-old-by-internet-standards news of New York Times piece about real','<p>Recorded December 23 2017</p>\r\n<p>All links are external.</p>\r\n<p><a href=\"https://www.goldminemag.com/articles/engineer-andy-johns-discusses-the-making-of-the-rolling-stones-exile-on-main-street\"><u>Real mobile recording platform</u></a>(recording <em>Exile on Main Street)</em></p>\r\n<p><a href=\"https://www.youtube.com/watch?v=NqUrl2N4GE4\"><u>“</u><u>Let Me Drown” by Soundgarden</u></a></p>\r\n<p><a href=\"https://www.accuradio.com/\"><u>T-Mobile AccuRadio Online</u></a></p>\r\n<p><a href=\"https://en.wikipedia.org/wiki/Slint\"><u>Slint</u></a>(band)</p>\r\n<p><a href=\"https://en.wikipedia.org/wiki/Sonic_Youth\"><u>Sonic Youth</u></a>(band)</p>\r\n<p><a href=\"https://en.wikipedia.org/wiki/Thurston_Moore\"><u>Thurston Moore’s other bands</u></a></p>\r\n<p>“<a href=\"https://www.nytimes.com/2017/12/16/us/politics/pentagon-program-ufo-harry-reid.html\"><u>Glowing Aura’s and Black Money” (the New York Times)</u></a></p>\r\n<p><a href=\"https://en.wikipedia.org/wiki/Robert_Bigelow\"><u>Robert Bigelow</u></a>(wikipedia)</p>\r\n<p><a href=\"https://consequenceofsound.net/2017/10/tom-delonges-new-ufo-academy-is-crowdfunding-a-spaceship/\"><u>Tom DeLonge’s UFO Academy</u></a>(consequence of sound)</p>\r\n<p><a href=\"https://www.youtube.com/watch?v=-h8zs898lr4\"><u>Big Audio Dynamite “Rush”</u></a>(YouTube)</p>\r\n<p><a href=\"https://en.wikipedia.org/wiki/Mick_Jones_(The_Clash_guitarist)\"><u>Mick Jones</u></a>(wikipedia)</p>\r\n<p><a href=\"https://www.amazon.com/Bass-Guitar-Tuning-Keys/b?ie=UTF8&node=11968171\"><u>Buy tuning machines!</u></a>(amazon)</p>\r\n<p><a href=\"https://en.wikipedia.org/wiki/Ministry_(band)\"><u>Ministry (band) </u></a>(wikipedia)</p>\r\n<p><a href=\"https://en.wikipedia.org/wiki/The_Elf_on_the_Shelf\"><u>The truth behind the Elf on the Shelf</u></a>(wikipedia)</p>\r\n<p><a href=\"https://twitter.com/LeeCamp?ref_src=twsrc%5Egoogle%7Ctwcamp%5Eserp%7Ctwgr%5Eauthor\"><u>Redacted </u></a>(twitter)</p>\r\n<p><a href=\"https://www.nationalreview.com/article/314025/how-did-harry-reid-get-rich-betsy-woodruff\"><u>How Did Harry Reid Get Rich?</u></a>(national review)</p>\r\n<p><a href=\"https://www.youtube.com/watch?v=ky_mhbKIe3M\"><u>Mr Show - “Praying Machines”</u></a>(youtube)</p>\r\n<p><a href=\"https://www.youtube.com/watch?v=KZkxR7x6qiM\"><u>The Firm (film)</u></a>(youtube)</p>\r\n<p><a href=\"https://www.loomisbros.com/lint-collectors.html\"><u>Link collector</u></a>(Loomis Bros)</p>\r\n<p><a href=\"https://knowyourmeme.com/memes/miracles-fucking-magnets-how-do-they-work\"><u>Magnets and how they work</u></a>(know your meme)</p>\r\n<p><a href=\"https://www.youtube.com/watch?v=SJcshY5ywro\"><u>Mechanical Man</u></a>(Devo) (youtube)</p>\r\n<p><a href=\"https://www.hometips.com/repair-fix/dryer-open.html\"><u>How to take apart a dryer</u></a>(hometips.com)</p>\r\n<p><a href=\"https://en.wikipedia.org/wiki/Electrical_injury\"><u>Electrocution</u></a>(wikipedia)</p>\r\n<p><a href=\"https://www.characterweb.com/maytag.html\"><u>Maytag Repair Man</u></a>(Characterweb)</p>\r\n<p><a href=\"https://www.sweetwater.com/c929--Extra_Heavy_1_5mm_Guitar_Picks\"><u>Extra heavy guitar picks</u></a>(sweetwater sound)</p>\r\n<p><a href=\"https://www.zzounds.com/item--BEHMS8000?siid=196478&-qDTBRD-ARIsAJ_10yKMqEyjWNkpIcfI37J1TzCewBIzORjqfoTduPwPE9NrnIbJXuI-vpMaAuXCEALw_wcB=\"><u>Headphone splitter</u></a>(zsounds)</p>\r\n<p><a href=\"https://en.wikipedia.org/wiki/Man_in_the_Moon\"><u>The man in the moon</u></a>(wikipedia)</p>\r\n<p><a href=\"https://en.wikipedia.org/wiki/Buddhism\"><u>Buddhism</u></a></p>\r\n',359,0,1,'CC-BY-SA','parties,fun,x-files,aliens,harry reid,martial law, star chamber,greetings,belated',0,0,1),
(2486,'2018-02-12','Some stuff I bought at a recent amateur radio rally',968,'In this episode I talk about some stuff I bought at a recent amateur radio rally.','<p>Links to the stuff I bought at a recent amateur radio rally I attended.</p>\r\n<ul>\r\n<li><p>Kindle 4<br />\r\n<a href=\"https://en.wikipedia.org/wiki/Amazon_Kindle#Kindle_4\" class=\"uri\">https://en.wikipedia.org/wiki/Amazon_Kindle#Kindle_4</a></p></li>\r\n<li><p>Powerex Maha WizardOne MH-C9000 Battery Charger<br />\r\n<a href=\"https://www.amazon.co.uk/WizardOne-MH-C9000-Analyser-Rechargeable-Batteries/dp/B00E8F7T1G/ref=sr_1_1?ie=UTF8&qid=1503175924&sr=8-1&keywords=mh-c9000\" class=\"uri\">https://www.amazon.co.uk/WizardOne-MH-C9000-Analyser-Rechargeable-Batteries/dp/B00E8F7T1G/ref=sr_1_1?ie=UTF8&qid=1503175924&sr=8-1&keywords=mh-c9000</a></p></li>\r\n<li><p>Frequency Counter, Watson FC-130 Example<br />\r\n<a href=\"https://www.amazon.co.uk/WATSON-FC-130-FREQUENCY-COUNTER/dp/B00877AZY4\" class=\"uri\">https://www.amazon.co.uk/WATSON-FC-130-FREQUENCY-COUNTER/dp/B00877AZY4</a></p></li>\r\n<li><p>Frequency Counter, Watson FC-130 (User Manual)<br />\r\n<a href=\"https://my.rs-online.com/webdocs/002d/0900766b8002d721.pdf\" class=\"uri\">https://my.rs-online.com/webdocs/002d/0900766b8002d721.pdf</a></p></li>\r\n<li><p>Roll Example unfortunately with no egg inside<br />\r\n<img src=\"https://i39.tinypic.com/sdfhv4.jpg\" alt=\"https://i39.tinypic.com/sdfhv4.jpg\" /></p></li>\r\n<li><p>Cake Example<br />\r\n<a href=\"https://www.bbc.co.uk/food/recipes/millionaires_shortbread_76712\" class=\"uri\">https://www.bbc.co.uk/food/recipes/millionaires_shortbread_76712</a></p></li>\r\n<li><p>Drink Example<br />\r\n<img src=\"https://eliquidleicester.co.uk/wp-content/uploads/2013/07/IRON-BREW2-300x300.jpg\" alt=\"https://eliquidleicester.co.uk/wp-content/uploads/2013/07/IRON-BREW2-300x300.jpg\" /></p></li>\r\n</ul>\r\n',201,43,1,'CC-BY-SA','Amateur Radio, Ham Radio',0,0,1),
(2484,'2018-02-08','The Big Idea',1164,'A breezy look at what a \"big idea\" means in storytelling.','<p>\r\nLostnbronx looks at the concept of the \"big idea\" in storytelling and various genres, arguing that such a creative tool may not actually be all that necessary to tell a compelling tale.\r\n</p>',107,105,0,'CC-BY-SA','writing,storytelling,lostnbronx, science fiction,fantasy,history,historical romance, story structure',0,0,1),
(2487,'2018-02-13','Simple LibreOffice Repo for Fedora',185,'Simple LibreOffice Repo for Fedora','<p>Simple LibreOffice Repo for Fedora</p>\r\n\r\n<p>My setup: You can look at the real setup. Hosted at home on a DLS connection so real usage is discouraged. https://home.toebesacademy.com/libreoffice/</p>\r\n\r\n<p>Actual Script <a href=\"https://home.toebesacademy.com/libreoffice/LOrepo\">https://home.toebesacademy.com/libreoffice/LOrepo</a></p>\r\n\r\n<p>Repo file to put in /etc/yum.repo.d <a href=\"https://home.toebesacademy.com/libreoffice/home.toebesacademy.com.repo\">https://home.toebesacademy.com/libreoffice/home.toebesacademy.com.repo</a></p>\r\n\r\n<p>Cron Entry. Should be run as web user, not root.</p>\r\n<pre>\r\n# m h d m w\r\n# * * * * * command to be executed\r\n# - - - - -\r\n# | | | | |\r\n# | | | | +----- day of week (0 - 6) (Sunday=0)\r\n# | | | +------- month (1 - 12)\r\n# | | +--------- day of month (1 - 31)\r\n# | +----------- hour (0 - 23)\r\n# +------------- min (0 - 59)\r\n# m h dom mon dow command\r\n0 3 * * * /var/www/html/libreoffice/LOrepo\r\n</pre>\r\n',273,0,0,'CC-BY-SA','LibreOffice,Fedora,repository',0,0,1),
(2488,'2018-02-14','Psychology of Love',792,'A look at some of the neuroscience and psychology behind love','<ul>\r\n<li><p>Love and the Brain:<br />\r\n<a href=\"https://neuro.hms.harvard.edu/harvard-mahoney-neuroscience-institute/brain-newsletter/and-brain-series/love-and-brain\" class=\"uri\">https://neuro.hms.harvard.edu/harvard-mahoney-neuroscience-institute/brain-newsletter/and-brain-series/love-and-brain</a></p></li>\r\n<li><p>The Neuroscience of Love:<br />\r\n<a href=\"https://sites.tufts.edu/emotiononthebrain/2014/12/08/the-neuroscience-of-love/\" class=\"uri\">https://sites.tufts.edu/emotiononthebrain/2014/12/08/the-neuroscience-of-love/</a></p></li>\r\n<li><p>On selfless love:<br />\r\n<a href=\"https://news.yale.edu/2014/02/11/meditation-helps-pinpoint-neurological-differences-between-two-types-love\" class=\"uri\">https://news.yale.edu/2014/02/11/meditation-helps-pinpoint-neurological-differences-between-two-types-love</a></p></li>\r\n<li><p>The Five Love Languages<br />\r\n<a href=\"https://en.wikipedia.org/wiki/The_Five_Love_Languages\" class=\"uri\">https://en.wikipedia.org/wiki/The_Five_Love_Languages</a></p></li>\r\n<li><p>\'Askers\' vs. \'Guessers\'<br />\r\n<a href=\"https://www.theatlantic.com/national/archive/2010/05/askers-vs-guessers/340891/\" class=\"uri\">https://www.theatlantic.com/national/archive/2010/05/askers-vs-guessers/340891/</a></p></li>\r\n</ul>\r\n',361,0,1,'CC-BY-SA','psychology, relationships, neuroscience, love',0,0,1),
(2489,'2018-02-15','CONTEXT IS EVERYTHING',1634,'Lostnbronx creates a tiny video, from a large audio file.','<h2 id=\"context-is-everything\">CONTEXT IS EVERYTHING</h2>\r\n<h4 id=\"hosted-by-lostnbronx\">hosted by Lostnbronx</h4>\r\n<p>Turning a large audio file into a tiny video file for a very specific use case.</p>\r\n<p>This solution probably won\'tworkforyou,becausenoneoftheonesIfoundontheInternetworkedforme.Trialanderrorledmehere,andit\'s probably the only guide you\'llhaveaswell.</p>\r\n<p>Startwithashighaqualityaudiofileasyoucanmanage..wavisgood,butit\'s big. Let\'sconvertitto.flac.Ifyoualreadyhavea.flacfile,skipthispart.</p>\r\n<p>1.)Convert.wavto.flac.</p>\r\n<pre><code>soxINPUT.wavOUTPUT.flac</code></pre>\r\n<p>2.)Convertthe.flactoaverysmallmono.opus.Bitratecanbeevensmaller.Iwentdownto14.</p>\r\n<pre><code>opusenc--bitrate18--downmix-monoINPUT.flacOUTPUT.opus</code></pre>\r\n<p>3.)Combinethe.opusfilewithasinglestaticimage,andoutputtoa.webmvideo.Thisshouldnotbeverymuchbiggerinfilesizethanthe.opusand.jpgcombined.Thesmallertheimagefile,thebetter.(Itriedusinga.gif,butitwasactuallybiggerthanthe.jpgIendedupwith.)</p>\r\n<pre><code>ffmpeg-iINPUT.opus-r1-loop1-iINPUT.jpg-c:vlibvpx-tunestillimage-shortest-y-c:acopyOUTPUT.webm</code></pre>\r\n<p>Thefinalfile.Itdoesn\'t sound great, but it\'slistenable,whichisallthatwasdesired.</p>\r\n<p><ahref=\"https://social.nasqueron.org/media/pEXqQotxC5P4GNJpf9U\"class=\"uri\">https://social.nasqueron.org/media/pEXqQotxC5P4GNJpf9U</a></p>\r\n<p>Here\'s a better quality version of the audiobook.</p>\r\n<p><a href=\"https://downloads.cavalcadeaudio.com/stardrifter-novels/01-motherload/?p=home\" class=\"uri\">https://downloads.cavalcadeaudio.com/stardrifter-novels/01-motherload/?p=home</a></p>\r\n<p>The process and final result can be improved upon by people smarter than I, without doubt, but this works for now.</p>\r\n<p>SPECIAL THANKS to the Urandom guys (X1101, Thaj, and Pokey), Monsterjavaguns (Jason van Gumster), and the ever-fabulous Klaatu, for their suggestions and encouragement. I would not have found a solution to this, nor even thought to do an episode of HPR, without them!</p>\r\n<p><small><small>Editor\'sNote2018-02-15:Thewrongaudiowasaccidentallyreleasedwiththisshow.Ithasbeencorrectedandshouldbere-uploadedbyyourpodcatcher.</small></small></p>\r\n',107,0,1,'CC-BY-SA','opus,opusenc,ffmpeg,avconv,webm,lostnbronx',1,0,1),
(2493,'2018-02-21','YouTube Subscriptions - update',885,'Some of the YouTube channels I have subscribed to in the last year','<h1 id=\"youtube-subscriptions---update\">YouTube Subscriptions - update</h1>\r\n<h2 id=\"introduction\">Introduction</h2>\r\n<p>I reported on some of my YouTube subscriptions in show <a href=\"https://hackerpublicradio.org/eps.php?id=2202\" title=\"Makers on YouTube\">2202</a>, where I concentrated on the various <em>Maker</em> channels I subscribe to.</p>\r\n<p>Since then I have added a few more such channels, but this time I also want to talk about some of the others I subscribe to.</p>\r\n<h2 id=\"youtube-channels\">YouTube Channels</h2>\r\n<ol type=\"1\">\r\n<li><a href=\"https://www.youtube.com/channel/UCCkFJmUgzrZdkeHl_qPItsA\"><em>Anne of All Trades</em></a></li>\r\n<li><a href=\"https://www.youtube.com/channel/UCtM5z2gkrGRuWd0JQMx76qA\"><em>bigclivedotcom</em></a></li>\r\n<li><a href=\"https://www.youtube.com/channel/UC9-y-6csu5WGm29I7JiwpnA\"><em>Computerphile</em></a></li>\r\n<li><a href=\"https://www.youtube.com/channel/UCcapFP3gxL1aJiC8RdwxqRA\"><em>David Waelder</em></a></li>\r\n<li><a href=\"https://www.youtube.com/channel/UCUuMYw2l2UeWyTGYixYfRCA\"><em>EvanAndKatelyn</em></a></li>\r\n<li><a href=\"https://www.youtube.com/channel/UCbiGcwDWZjz05njNPrJU7jA\"><em>ExplainingComputers</em></a></li>\r\n<li><a href=\"https://www.youtube.com/channel/UC6pdMJwtkbCNoQRwbaNt77A\"><em>HomeMadeModern</em></a></li>\r\n<li><a href=\"https://www.youtube.com/channel/UCO39zTYpvWL5jx2q15Ma_Hw\"><em>izzy swan</em></a></li>\r\n<li><a href=\"https://www.youtube.com/channel/UCaI4Tib6te88f_P9r8w5Tmw\"><em>Jackman Works</em></a></li>\r\n<li><a href=\"https://www.youtube.com/channel/UCRVruzlQF5cqpw9jQgIgNdw\"><em>mugumogu</em></a></li>\r\n<li><a href=\"https://www.youtube.com/channel/UCNyGbxoEo6CQvaRVEvItxkA\"><em>Pask Makes</em></a></li>\r\n<li><a href=\"https://www.youtube.com/channel/UCIhkgdWrCmPTCRSNQaeTDOg\"><em>Phil Pinsky Productions</em></a></li>\r\n<li><a href=\"https://www.youtube.com/channel/UC8NjHgDV5nHEfQGj7JNfp9Q\"><em>RetroWeld</em></a></li>\r\n<li><a href=\"https://www.youtube.com/channel/UCb8Rde3uRL1ohROUVg46h1A\"><em>Thomas Sanladerer</em></a></li>\r\n<li><a href=\"https://www.youtube.com/channel/UC3CvHbiVAaYiMY2DMd1fcEQ\"><em>tim sway</em></a></li>\r\n<li><a href=\"https://www.youtube.com/channel/UCzM1HPpclXyriKNAvr5m5qA\"><em>Unemployed Redneck Hillbilly Creations</em></a></li>\r\n<li><a href=\"https://www.youtube.com/channel/UCG756ycwVyBKwttHLtF_OVQ\"><em>William Lutes</em></a></li>\r\n<li><a href=\"https://www.youtube.com/channel/UCcXhhVwCT6_WqjkEniejRJQ\"><em>Wintergatan</em></a></li>\r\n</ol>\r\n<h2 id=\"long-notes\">Long notes</h2>\r\n<p>I have another version of the above channel list in the <a href=\"https://hackerpublicradio.org/eps/hpr2493/full_shownotes.html\">long notes</a> with more details and with some of my observations.</p>\r\n<h2 id=\"links\">Links</h2>\r\n<ul>\r\n<li>HPR show 2202: <a href=\"https://hackerpublicradio.org/eps.php?id=2202\"><em>Makers on YouTube</em></a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps/hpr2493/full_shownotes.html\">Long notes for this episode</a></li>\r\n</ul>',225,0,1,'CC-BY-SA','YouTube,channel',0,0,1),
(2491,'2018-02-19','Some news with Finux',1061,'Just a short little podcast on some recent(ish) security related news stories','<p>The 3 stories covered in this episode</p>\r\n<ul>\r\n<li><p>So firstly Clownflares... i mean cloudstrike!!! and scihub<br />\r\n<a href=\"https://torrentfreak.com/cloudflare-terminates-service-to-sci-hub-domain-names-180205/\" class=\"uri\">https://torrentfreak.com/cloudflare-terminates-service-to-sci-hub-domain-names-180205/</a></p></li>\r\n<li><p>Meltdown and Spectre 139 pieces of (seemingly nonfunctional) malware are now circulating in the wild<br />\r\n<a href=\"https://boingboing.net/2018/02/04/active-probing.html\" class=\"uri\">https://boingboing.net/2018/02/04/active-probing.html</a></p></li>\r\n<li><p>Equifax and no bloody justice<br />\r\n<a href=\"https://mobile.reuters.com/article/amp/idUSKBN1FP0IZ\" class=\"uri\">https://mobile.reuters.com/article/amp/idUSKBN1FP0IZ</a></p></li>\r\n</ul>\r\n',85,0,1,'CC-BY-SA','security, hacking, news',0,0,1),
(2492,'2018-02-20','An Evening Subway Ride',1945,'An evening subway ride on the Toronto subway from College Station to Sheppard/Yonge Station','<p>\r\nAn experiment in background noise.\r\n</p>\r\n<p>\r\nHaving seen so many people fall asleep on subway trains, I wonder if the sound only would also be somniferous.\r\n</p>\r\n<p>\r\nUsing my cellphone I recorded the ride (including boarding and alighting) on the Toronto subway (line 1) from College Station, north to Sheppard/Yonge Station. There was always at least one person sleeping (or at least appearing to be asleep) during the ride.\r\n</p>\r\n<p>\r\nGoogle Maps - <a href=\"https://goo.gl/aq97jR\">goo.gl/aq97jR</a>\r\n</p>\r\n<p>\r\nSo far, listening to the recording has not put me to sleep. \r\n</p>\r\n',362,101,0,'CC-0','sound, Toronto, transit, subway, crowds, train',0,0,1),
(2495,'2018-02-23','10 Years of Xoke',723,'Tomorrow marks 10 years since his first episode, and Xoke talks a bit about HPR','<p>HPR 40, on the 24th Feb 2008, was when a (slightly) younger Xoke debuted</p>',79,0,0,'CC-BY-SA','Anniversary',0,0,1),
(2494,'2018-02-22','linux.conf.au 2018: Nicolas Steenhout',1205,'Clinton interviews Nicolas Steenhout, who ran an accessibility workshop','<p>\r\nClinton interviews Nicolas Steenhout about his accessibility workshop, covering the different areas that automated and manual testing can cover. We also talk about the conference in general, and on the different ways that conference get feedback about their speakers.\r\n</p>',315,78,0,'CC-BY-SA','lca2018',0,0,1),
(2496,'2018-02-26','Making a Raspberry Pi inventory',670,'How to collect identifying information about RPi devices','<h1 id=\"making-a-raspberry-pi-inventory\">Making a Raspberry Pi inventory</h1>\r\n<h2 id=\"introduction\">Introduction</h2>\r\n<p>I have a number of Raspberry Pis -- possibly too many -- and I sometimes lose track of which is which, what model, size, name, address each one is. I wanted to be able to keep an inventory of them all, and to this end I wrote myself a little script that can be run on any Pi which will report useful information about it.</p>\r\n<p>Every Pi has a unique serial number. Actually it\'srandomlygeneratedsotheremaybeafewcollisionsbutit\'s close to unique! It also contains a revision number which encodes various items of information about it such as release date, model, PCB revision and memory. My script decodes this revision number for you based on a published table.</p>\r\n<p>I run a Wikimedia instance on a Pi and have used this script to record details of my Pis there as well as what they are being used for and any planned projects. I now feel more organised!</p>\r\n<h2 id=\"long-notes\">Long notes</h2>\r\n<p>The full-length notes (available <a href=\"https://hackerpublicradio.org/eps/hpr2496/full_shownotes.html\">here</a>) contain a listing of the script, a brief description of it, and some example output.</p>\r\n<h2 id=\"links\">Links</h2>\r\n<ul>\r\n<li>GitLab repository: <a href=\"https://gitlab.com/davmo/what_pi\" class=\"uri\">https://gitlab.com/davmo/what_pi</a></li>\r\n<li>Resources to download:\r\n<ul>\r\n<li>The script <em><a href=\"https://hackerpublicradio.org/eps/hpr2496/what_pi\">what_pi</a></em></li>\r\n<li>Example output <em><a href=\"https://hackerpublicradio.org/eps/hpr2496/example_output.txt\">example_output.txt</a></em></li>\r\n</ul></li>\r\n</ul>',225,42,1,'CC-BY-SA','Raspberry Pi, RPi',0,0,1),
(2503,'2018-03-07','My journey into podcasting',868,'Dave takes us on his journey into 10 years of podcasting','<h1 id=\"how-i-got-into-podcasting\">How I Got Into Podcasting</h1>\r\n<h2 id=\"the-background\">The Background</h2>\r\n<p>Audio production has always been an interest of mine: my late grandfather was an audiophile, my dad ran an AV studio in Woking (the one where the Spice Girls were formed - my dad got mentioned in a couple of their autobiographies) and now runs his own AV consultancy business, and my cousin also runs an AV consultancy... so there’s a definite family history in there.</p>\r\n<p>I dabbled briefly with hospital radio (as a technician, rather than a presenter) in the late 80’s, and I was a technician and presenter on College Radio in the early 90’s where I hosted a show called “The Barry Manilow Fan Club” on Friday lunchtimes.</p>\r\n<p>Yes, I am a huge fan of <a href=\"https://en.wikipedia.org/wiki/Barry_Manilow\">Barry Manilow</a> - he’s given me a lot of inspiration as a musician - no, I didn’t play any Barry on the College Radio show.</p>\r\n<p>I’d also had a few people say that I had a good radio voice. Others say a good radio face, but I don’t like them anymore.</p>\r\n<h2 id=\"the-catalyst\">The Catalyst</h2>\r\n<p>In 2007, I discovered this podcasting lark through a couple of friends who had their own podcasts. One was The Random Three: a personal musical journey where Mark - the host - would play three seemingly-random pieces of music from his own collection (thus, not <a href=\"https://en.wikipedia.org/wiki/Podsafe\">podsafe</a>) and explain the reasons why he chose them. Most of the time, these seemingly-random tracks actually had a theme, but it didn’t necessarily become apparent until after the second track. It was a great show - now sadly defunct - and I really miss it. I even submitted my own music choices for Mark to present.</p>\r\n<p>The other was <a href=\"https://ddlpodcast.blogspot.co.uk/\">Dumbed Down Life</a>: three chaps nattering about “stuff” and playing some music along with it. Another great show, which - although it still exists - currently releases episodes every year or so.</p>\r\n<p>What drew me to these shows - apart from being friends, was the fact that these were regular guys, not professionals.</p>\r\n<p>That led me to think “I can do that”, so I set about proving - to myself, mostly - that I could.</p>\r\n<h2 id=\"the-start\">The Start</h2>\r\n<p>One Thursday in early March 2008, when the wife had gone to the gym for a couple of hours, I grabbed my Logitech headset, my Linux laptop, a handful of tracks from the Podsafe Music Network, and a piece of software called <a href=\"https://idjc.sourceforge.net\">IDJC</a>, and recorded the <a href=\"https://thebugcast.org/show/1\">first ever episode</a> of <a href=\"https://thebugcast.org/\">The Bugcast</a>. It was just over 22 minutes long, and it was dire. Utterly dire. Every so often, I go back to it and listen and cringe and marvel at how much better the show is now!</p>\r\n<p>The music back then wasn’t strictly <a href=\"https://en.wikipedia.org/wiki/Podsafe\">podsafe</a> either: the first track I played was Moloko’s Sing It Back… but I didn’t worry about it then, as I got the track from a source that gave implicit permission for use in podcasts.</p>\r\n<p>I did do a show - <a href=\"https://thebugcast.org/show/20\">episode 20</a> - which was a nostalgic trip back to my college years, where I played tracks by Chad Jackson, Japan, and Dream Warriors. This was a complete and intentional violation of copyright on my part, which led me to pull the show only a few weeks later. I did rerelease the show two years after that, but with the offending tracks removed. However, there is a story to the show, so I would recommend you go listen.</p>\r\n<p>Back then, it was just me and a small listener-base of friends, their family, their families’ servants; their families’ servants’ tennis partners, and some chap I bumped into in the mess the other day called Bernard. But as time went o
(2498,'2018-02-28','Life without Google',266,'Quvmoh goes a month without G apps on his phone','<ul>\r\n<li><p>Zenphone 2 <a href=\"https://forum.xda-developers.com/zenfone2/general/guide-brick-soft-hard-bricked-zenfone-2-t3284256\" class=\"uri\">https://forum.xda-developers.com/zenfone2/general/guide-brick-soft-hard-bricked-zenfone-2-t3284256</a></p></li>\r\n<li><p>Magic Device Tool <a href=\"https://github.com/MariusQuabeck/magic-device-tool\" class=\"uri\">https://github.com/MariusQuabeck/magic-device-tool</a></p></li>\r\n<li><p>F-Droid <a href=\"https://f-droid.org/en/\" class=\"uri\">https://f-droid.org/en/</a></p></li>\r\n<li><p>K-9 Mail <a href=\"https://f-droid.org/packages/com.fsck.k9/\" class=\"uri\">https://f-droid.org/packages/com.fsck.k9/</a></p></li>\r\n<li><p>Protonmail <a href=\"https://protonmail.com/\" class=\"uri\">https://protonmail.com/</a></p></li>\r\n<li><p>Signal <a href=\"https://signal.org/\" class=\"uri\">https://signal.org/</a></p></li>\r\n<li><p>Syncthing <a href=\"https://syncthing.net/\" class=\"uri\">https://syncthing.net/</a></p></li>\r\n</ul>',110,0,0,'CC-BY-SA','google free, F-droid, LineageOS, magic device tool',0,0,1),
(2499,'2018-03-01','Tuning around the HF 40Mtr band',767,'In this episode I give an example of what sort of things you can expect hear on the HF band','<h2 id=\"tuning-around-the-band\">Tuning around the band</h2>\r\n<p>In this episode I tune around a small portion of the HF (High Frequency) band in the 40 Meters section which in the UK covers 7 to 7.2Mhz.</p>\r\n<h3 id=\"equipment-details\">Equipment details</h3>\r\n<p>The mode being used was mostly LSB (Lower Side Band)<br />\r\n<a href=\"https://en.wikipedia.org/wiki/Sideband\" class=\"uri\">https://en.wikipedia.org/wiki/Sideband</a></p>\r\n<p>At the end of the recording I briefly switch mode to to listen to a commercial station on AM (Amplitude modulation).<br />\r\n<a href=\"https://en.wikipedia.org/wiki/Amplitude_modulation\" class=\"uri\">https://en.wikipedia.org/wiki/Amplitude_modulation</a></p>\r\n<p>The radio being used is my trusty and much loved Kenwood TS 940S<br />\r\n<a href=\"https://www.universal-radio.com/catalog/hamhf/ts940s.html\" class=\"uri\">https://www.universal-radio.com/catalog/hamhf/ts940s.html</a></p>\r\n<p>The antenna used is a dipole tuned for the 40 Meter band.<br />\r\n<a href=\"https://en.wikipedia.org/wiki/Dipole_antenna\" class=\"uri\">https://en.wikipedia.org/wiki/Dipole_antenna</a></p>\r\n<p>I used my trusty Dictaphone and internal microphone to do the recording<br />\r\n<a href=\"https://www.amazon.co.uk/HccToo-Multifunctional-Rechargeable-Dictaphone-Conversation/dp/B015H9JP6S/ref=sr_1_1?ie=UTF8&qid=1502381150&sr=8-1&keywords=dictation+machines\" class=\"uri\">https://www.amazon.co.uk/HccToo-Multifunctional-Rechargeable-Dictaphone-Conversation/dp/B015H9JP6S/ref=sr_1_1?ie=UTF8&qid=1502381150&sr=8-1&keywords=dictation+machines</a></p>\r\n<p>If you want to hold private conversations with another party over radio then perhaps amateur radio is not for you as this goes against the whole principle of Amateur Radio.</p>\r\n<p>Listening to amateur radio broadcasts is actively encouraged, and in the UK a licence is not required for listening.</p>\r\n<p>A simple receiver capable of listening to sideband broadcasts and odd bit of long wire is all that\'srequired.</p>\r\n<p>InthepastitwascommontohearanAmateuroperatorsayinggoodbyetoanyshortwavelistenersattheendoftheirconversation.Ifyoulistencarefullyatabout10minutesinthestationDF2BOsaysgoodbyetoanybodystilllistening.</p>\r\n<h3id=\"stations-received\">Stationsreceived</h3>\r\n<ul>\r\n<li><p>DF2BOspeakingtoPeterVK4ZPinBrisbaneQueensland,on7.16209MHz</p></li>\r\n<li><p>CWstationcallingCQon7.00994MHz,Idon\'t know the callsign or details of the station as I can\'treadMorsecodehoweverIdidrecognisethedistinctiverhythmofthelettersCandQ.</p></li>\r\n<li><p>TransmittingthelettersCQonaparticularradiofrequencyisusedasaninvitationforanyoperatorslisteningonthatfrequencytorespond.Itiswidelyusedinamateurradio.</p></li>\r\n<li><p>Germanstationunidentifiedon7.15794MHz</p></li>\r\n<li><p>DF2BOname,Tom,nearStuttgartspeakingtoRobVK2XZwhoIcan\'t hear on 7.16200 MHz, then speaking briefly with Chris VK2SR who I can\'thear</p></li>\r\n<li><p>Anotherbriefbitofmorsecode</p></li>\r\n<li><p>Anunknowncommercialstationbroadcastingon7.35520onAM</p></li>\r\n</ul>\r\n',201,43,1,'CC-BY-SA','hamradio,amateurradio,radio,hf',0,0,1),
(2502,'2018-03-06','Volume Of Thought',440,'Lostnbronx attempts to measure the \"volume\" of his own thoughts.','<p>Lostnbronx measures how loud his own thoughts are -- or rather, how loud outside noise has to be before they are disrupted.</p>\r\n<p>It turns out that unwanted music in his ears at -30 dB is when his train of thought starts to derail.</p>',107,0,0,'CC-BY-SA','lostnbronx,thinking,thoughts,volume,noise,music,confusion',0,0,1),
(2504,'2018-03-08','Intro to Git with pen and paper',2205,'Klaatu introduces Git using pen and paper.','<pre><code>git add\r\n\r\ngit commit -m "some useful message"\r\n\r\ngit push origin HEAD</code></pre>\r\n',78,104,0,'CC-BY-SA','git',0,0,1),
(2497,'2018-02-27','2017-2018 New Years Eve show part 1',13200,'Part one of the sixth annual HPR New Year Show.','<h2 id=\"hpr-nye-2017---1\">HPR NYE 2017 - 1</h2>\r\n<ul>\r\n<li><p>Ken and Casper chat about the new year show and space</p></li>\r\n<li><p>Pirate drops in and Casper gets a new job</p></li>\r\n<li><p>Amazon\'sGiantGlassBalls<br/>\r\n<ahref=\"https://www.google.com/search?q=bezos+giant+glass+balls&tbm=isch&source=iu&ictx=1&fir=EW1kjYgk7lISlM%253A%252CTgFNxH0jr8vQLM%252C_&usg=__XtnxMzguAWZinVFgvLoiwvN7qvg%3D&sa=X&ved=0ahUKEwiXr6n2grTYAhUJx2MKHTugBL0Q9QEIKzAA#imgrc=EW1kjYgk7lISlM\">https://www.google.com/search?q=bezos+giant+glass+balls&tbm=isch&source=iu&ictx=1&fir=EW1kjYgk7lISlM%253A%252CTgFNxH0jr8vQLM%252C_&usg=__XtnxMzguAWZinVFgvLoiwvN7qvg%3D&sa=X&ved=0ahUKEwiXr6n2grTYAhUJx2MKHTugBL0Q9QEIKzAA#imgrc=EW1kjYgk7lISlM</a></p></li>\r\n<li><p>ExplicitNess, and ratings and stuff</p></li>\r\n<li><p>Ken is tidying his room</p></li>\r\n<li><p>Microcenter</p></li>\r\n<li><p>SS Virgina5 - pirate makes the boat go. Do not ride!!!!</p></li>\r\n<li>Built as a passenger ferry in 1922<br />\r\n<a href=\"https://www.virginiav.org/\" class=\"uri\">https://www.virginiav.org/</a>\r\n<ul>\r\n<li>400hp 200rpm 3cylinder engine</li>\r\n<li>Steam mechanics explained 45 manual lubrication points</li>\r\n<li>powered by diesel not unlike tar</li>\r\n<li>pirate talks through lighting a plant off</li>\r\n<li>$150 for a 5 gallon bucket</li>\r\n</ul></li>\r\n<li><p>Ken Tweets <a href=\"https://twitter.com/HPR/status/947415023500001280\" class=\"uri\">https://twitter.com/HPR/status/947415023500001280</a></p></li>\r\n<li><p>NetMiner</p></li>\r\n<li><p>Old Time Steam Powered Machine Shop: <a href=\"https://www.youtube.com/watch?v=9WXHNBMLZZM\" class=\"uri\">https://www.youtube.com/watch?v=9WXHNBMLZZM</a></p></li>\r\n<li><p>FDroid</p></li>\r\n<li><p>Copy APKs for your kids</p></li>\r\n<li><p>Ken replaces battery in OMRON EAR MC 510 - THERMOMETER</p></li>\r\n<li><p>Cool pcb ruler from Adafruit<br/><a href=\"https://www.adafruit.com/product/1554\" class=\"uri\">https://www.adafruit.com/product/1554</a></p></li>\r\n<li><p><a href=\"https://en.wikipedia.org/wiki/List_of_battery_sizes\" class=\"uri\">https://en.wikipedia.org/wiki/List_of_battery_sizes</a></p></li>\r\n<li><p>SparkyLinux - supports 32bit architecture, web browsers, Debian based, one old P4</p></li>\r\n<li><p>Bootsteap - sparky command line installer, small package. Will allow you to install a desktop, can bootstrap to whatever you want.</p></li>\r\n<li><p>GNU - DOS</p></li>\r\n<li><p><a href=\"https://linuxlugcast.com/\" class=\"uri\">https://linuxlugcast.com/</a></p></li>\r\n<li><p><a href=\"https://razor1911.com/\" class=\"uri\">https://razor1911.com/</a></p></li>\r\n<li><p><a href=\"https://en.wikipedia.org/wiki/Motorola_68000\" class=\"uri\">https://en.wikipedia.org/wiki/Motorola_68000</a></p></li>\r\n<li><p><a href=\"https://www.youtube.com/watch?v=cMVt0eUDYhY\" class=\"uri\">https://www.youtube.com/watch?v=cMVt0eUDYhY</a></p></li>\r\n<li><p><a href=\"https://www.youtube.com/results?search_query=amiga+documentary\" class=\"uri\">https://www.youtube.com/results?search_query=amiga+documentary</a></p></li>\r\n<li><p>xKlaatu signs on</p></li>\r\n<li><p>Discuss New Years in New Zealand!!!!</p></li>\r\n<li><p>Gun Control</p></li>\r\n<li><p>SHOW NOTES ARE(NOT?) Important</p></li>\r\n<li><p>xklaatu does not like shownotes</p></li>\r\n<li><p>Ken encourages them</p></li>\r\n<li><p>HoneyMagoo REALLY joins</p></li>\r\n<li><p>Markdown vs. non-markdown HTML5,</p></li>\r\n<li><p>Heated topic - trigger point discovered</p></li>\r\n<li><p>xklaatu owes ken a show on Git</p></li>\r\n<li><p><a href=\"https://en.wikipedia.org/wiki/Hercules_Computer_Technology\" class=\"uri\">https://en.wikipedia.org/wiki/Hercules_Computer_Technology</a></p></li>\r\n<li><p>Why 36 bits? Because all letters were upper case, which only required 6 bits, 6*6</p></li>\r\n<li><p>Casper\'s first graphics card was a rendition vérité</p></li>\r\n<li><p>Casper gets
(2505,'2018-03-09','The power of GNU Readline - part 3',1631,'More useful key combinations','<h1 id=\"the-power-of-gnu-readline---part-3\">The power of GNU Readline - part 3</h1>\r\n<p>In part 2 we looked at deleting text in various ways and pasting it back, using GNU Readline key sequences.</p>\r\n<p>The full-length notes (available <a href=\"https://hackerpublicradio.org/eps/hpr2505/full_shownotes.html\">here</a>) contain some new terms and features of GNU Readline, and introduce some further ways of manipulating text, with some examples.</p>\r\n<h2 id=\"links\">Links</h2>\r\n<ul>\r\n<li>Wikipedia article on <a href=\"https://en.wikipedia.org/wiki/GNU_Readline\"><em>GNU Readline</em></a></li>\r\n<li><a href=\"https://tiswww.cwru.edu/php/chet/readline/rluserman.html\"><em>GNU Readline</em> manual</a></li>\r\n<li>Previous episodes:\r\n<ul>\r\n<li><a href=\"https://www.hackerpublicradio.org/eps.php?id=2073\">The power of GNU Readline - part 1</a></li>\r\n<li><a href=\"https://www.hackerpublicradio.org/eps.php?id=2453\">The power of GNU Readline - part 2</a></li>\r\n</ul></li>\r\n<li>Resources:\r\n<ul>\r\n<li><a href=\"https://hackerpublicradio.org/eps/hpr2505/full_shownotes.html\">Detailed notes</a></li>\r\n</ul></li>\r\n</ul>',225,102,1,'CC-BY-SA','command line,cli,GNU Readline',0,0,1),
(2506,'2018-03-12','Build Your Own Lisp (A Book Review)',544,'Learn C programming while building a LISP','<h2 id=\"build-your-own-lisp\">Build Your Own Lisp</h2>\r\n<ol type=\"1\">\r\n<li><p><a href=\"https://www.buildyourownlisp.com/\" class=\"uri\">https://www.buildyourownlisp.com/</a></p></li>\r\n<li><p><a href=\"https://github.com/orangeduck/BuildYourOwnLisp\" class=\"uri\">https://github.com/orangeduck/BuildYourOwnLisp</a></p></li>\r\n<li><p>Daniel Holden links:<br />\r\n<a href=\"https://github.com/orangeduck\" class=\"uri\">https://github.com/orangeduck</a><br />\r\n<a href=\"https://www.theorangeduck.com/\" class=\"uri\">https://www.theorangeduck.com/</a></p></li>\r\n</ol>',326,0,0,'CC-BY-SA','programming,C,Lisp,book review',0,0,1),
(2507,'2018-03-13','Racket, Nix, Fractalide and the sounds of a Hong Kong New Town',1127,'It\'satriplewhammy!It\'s functional programming, functional package management and soundscape!','<p>Listen to me walk through five shopping malls and one bicycle tunnel, as I rant about how flow-based programming microservices and functional package management will save the future of programming and software reuse, and usher in a new era of software quality and productivity!</p>\r\n<p>If it sounds like I\'mabitdownaboutworkingaloneon<code>racket2nix</code>,you\'re interpreting me wrong! I didn\'texpectanyfeedbackatallfromthesmalltonon-existentracket/nixintersection,butitturnsouttheintersectionislargerthanIthought,andI\'m grateful for any words of encouragement, and feedback in any form on what the community needs.</p>\r\n<p>Links:</p>\r\n<ul>\r\n<li><a href=\"https://github.com/clacke/racket2nix-clacke\">racket2nix</a></li>\r\n<li><a href=\"https://racket-lang.org/\">racket</a></li>\r\n<li><a href=\"https://nixos.org/nix/\">nix</a></li>\r\n<li><a href=\"https://fractalide.com/\">fractalide</a></li>\r\n</ul>\r\n<p>Nix is the mother of Guix:</p>\r\n<ul>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2198\">hpr2198 :: How awesome is Guix and why will it take over the world</a></li>\r\n</ul>\r\n',311,0,0,'CC-BY-SA','racket, nix, racket2nix, fractalide, soundscape, hongkong',0,0,1),
(2508,'2018-03-14','False Prophets',550,'Lostnbronx considers how a cult-of-personality may affect space exploration.','<p>Lostnbronx considers the effect that Elon Musk and SpaceX are having on the latest push for the exploitation and exploration of space, and the danger of pegging the future of the human race upon the showmanship of one man.</p>',107,0,1,'CC-BY-SA','space,spacex,elon musk,tesla,electric cars,cult-of-personality,lostnbronx',0,0,1),
(2509,'2018-03-15','AudioBookClub 16 Matcher Rules',7171,'The HPR Audiobook Club reviews Matcher Rules by Mary Holland','<h2 id=\"summary\">SUMMARY</h2>\r\n<p>In this episode, the HPR_AudioBookClub discusses Matcher Rules by Mary Holland <a href=\"https://scribl.com/books/PDB66/matcher-rules\" class=\"uri\">https://scribl.com/books/PDB66/matcher-rules</a></p>\r\n<h2 id=\"non-spoiler-thoughts\">NON-SPOILER THOUGHTS</h2>\r\n<ul>\r\n<li>pokey: An enjoyable story, but not really for me.</li>\r\n<li>FiftyOneFifty: It\'snotaboutorgies...</li>\r\n<li>x1101:Likedit.Alittleslow.</li>\r\n<li>Thaj:Itsurprisedme,Ididn\'t expect to like it as much as I did.</li>\r\n</ul>\r\n<h2 id=\"beverage-reviews\">BEVERAGE REVIEWS</h2>\r\n<p><em>As usual, the HPR_AudioBookClub took some time to review the beverages that each of us were drinking during the episode</em></p>\r\n<ul>\r\n<li>Thaj: Voice fading fast. Need a boost. With a little lemon and some local honey <a href=\"https://www.traditionalmedicinals.com/products/throat-coat/\" class=\"uri\">https://www.traditionalmedicinals.com/products/throat-coat/</a></li>\r\n<li>x1101: Harpoon IPA - <a href=\"https://www.harpoonbrewery.com/beer/1/harpoon-ipa\" class=\"uri\">https://www.harpoonbrewery.com/beer/1/harpoon-ipa</a></li>\r\n<li>pokey: "my beer is a knife" Smuttynose Robust Porter <a href=\"https://smuttynose.com/beer/robust-porter/\" class=\"uri\">https://smuttynose.com/beer/robust-porter/</a>. I sharpen it with a Spyderco Triangle Sharpmaker <a href=\"https://www.spyderco.com/catalog/details.php?product=77\" class=\"uri\">https://www.spyderco.com/catalog/details.php?product=77</a>. It is awesome.</li>\r\n<li>FiftyOneFifty: Junior Johnson\'sMidnightMoonshine</li>\r\n</ul>\r\n<h2id=\"things-we-talked-about\">THINGSWETALKEDABOUT</h2>\r\n<p>Wediscusstheupsidesanddownsidesofaffinitygroups.Pokeywonderswhyterminologyforsimplethingsarechangedinsci-fistories.Howexactlydopopulationandeconomicsworktogether?</p>\r\n<h2id=\"our-next-audiobook\">OURNEXTAUDIOBOOK</h2>\r\n<p>BloodWitnessbyDavidHitt-<ahref=\"https://scribl.com/books/PA513/blood-witness\"class=\"uri\">https://scribl.com/books/PA513/blood-witness</a></p>\r\n<h2id=\"next-recording\">NEXTRECORDING</h2>\r\n<p>Wearecurrentlyworkingthroughabacklogofpre-recordedepisodes.OncethisiscompletedwewillrestarttheAudiobookClubagain.IfyouwanttobenotifiedwhenthishappenspleaseletusknowviatheHPRMailingList\'hpr at hackerpublicradio dot org\'.</p>\r\n<h2id=\"further-recommendations\">FURTHERRECOMMENDATIONS</h2>\r\n<p>Nothingthistime,wellexceptforthetypicalStarWarsreference...andStarTrek,andcomics.</p>\r\n<h2id=\"feedback\">FEEDBACK</h2>\r\n<p>ThankyouverymuchforlisteningtothisepisodeoftheHPR_AudioBookClub.Wehadagreattimerecordingthisshow,andwehopeyouenjoyeditaswell.Wealsohopeyou\'ll consider joining us next time. Please leave a few words in the episode\'scommentsection.Asalways;remembertovisittheHPRcontributionpageHPRcouldreallyuseyourhelprightnow.<ahref=\"https://hackerpublicradio.org/contribute.php\"class=\"uri\">https://hackerpublicradio.org/contribute.php</a></p>\r\n<p><em>Sincerely,</em><br/>\r\n<em>TheHPR_AudioBookClub</em></p>\r\n<p>P.S.Somepeoplereallylikefindingmistakes.Fortheirenjoyment,wealwaysincludeafew.</p>\r\n<h2id=\"our-audio\">OURAUDIO</h2>\r\n<p>ThisepisodewasprocessedusingAudacity<ahref=\"https://audacity.sourceforge.net\"class=\"uri\">https://audacity.sourceforge.net</a>.We\'ve been making small adjustments to our audio mix each month in order to get the best possible sound. It has been especially challenging getting all of our voices relatively level, because everyone has their own unique setup. Mumble is great for bringing us all together, and for recording, but it\'snotgoodatmakingeveryone\'s voice the same volume. We\'reprettyhappywiththewaythismonth\'s show turned out, so we\'dliketoshareoureditingprocessandsettin
(2520,'2018-03-30','Diffie-Hellman and Forward Secrecy',1061,'Using Diffie-Hellman Key Exchange to implement Forward Secrecy','<p>Diffie-Hellman Key Exchange is used in a security technique called Forward Secrecy that aims to secure your encrypted communications from future decryption by unauthorized entities. While it does provide additional security it is not absolutely bullet-proof. So while we explain how it works and provides security, we will also discuss how it can go wrong. For more go to <a href=\"https://www.zwilnik.com/?page_id=957\" class=\"uri\">https://www.zwilnik.com/?page_id=957</a></p>\r\n<h3 id=\"links\">Links:</h3>\r\n<ul>\r\n<li><a href=\"https://www.eff.org/https-everywhere\" class=\"uri\">https://www.eff.org/https-everywhere</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/POODLE\" class=\"uri\">https://en.wikipedia.org/wiki/POODLE</a></li>\r\n<li><a href=\"https://www.zwilnik.com/?page_id=686\" class=\"uri\">https://www.zwilnik.com/?page_id=686</a></li>\r\n<li><a href=\"https://security.googleblog.com/2011/11/protecting-data-for-long-term-with.html\" class=\"uri\">https://security.googleblog.com/2011/11/protecting-data-for-long-term-with.html</a></li>\r\n<li><a href=\"https://blog.twitter.com/engineering/en_us/a/2013/forward-secrecy-at-twitter.html\" class=\"uri\">https://blog.twitter.com/engineering/en_us/a/2013/forward-secrecy-at-twitter.html</a></li>\r\n<li><a href=\"https://www.khanacademy.org/math/applied-math/cryptography/modern-crypt/v/discrete-logarithm-problem\" class=\"uri\">https://www.khanacademy.org/math/applied-math/cryptography/modern-crypt/v/discrete-logarithm-problem</a></li>\r\n<li><a href=\"https://vincent.bernat.im/en/blog/2011-ssl-perfect-forward-secrecy.html#some-benchmarks\" class=\"uri\">https://vincent.bernat.im/en/blog/2011-ssl-perfect-forward-secrecy.html#some-benchmarks</a></li>\r\n<li><a href=\"https://www.thesslstore.com/blog/apple-will-require-use-ats-2017/\" class=\"uri\">https://www.thesslstore.com/blog/apple-will-require-use-ats-2017/</a></li>\r\n<li><a href=\"https://www.zwilnik.com/?page_id=957\" class=\"uri\">https://www.zwilnik.com/?page_id=957</a></li>\r\n</ul>\r\n',198,74,1,'CC-BY-SA','Diffie-Hellman, Encryption, Forward Secrecy',0,0,1),
(2530,'2018-04-13','Introduction to Health',719,'This is the Introduction to a series on health and taking care of yourself','<p>On our refrigerator we have a note card that says "If you don\'ttakecareofyourbody,wherewillyoulive?"Thisisaverypertinentquestionthatcanopenupadiscussionofhowtoachieveabetterlevelofhealthandagegracefully.Thisshowwillkickoffaseriesthatwillexplorevarioustopicsinhowtogetgoodmedicalinformationandimproveyourhealth.</p>\r\n<h3id=\"links\">Links</h3>\r\n<ul>\r\n<li><ahref=\"https://www.webmd.com/\"class=\"uri\">https://www.webmd.com/</a></li>\r\n<li><ahref=\"https://www.hopkinsmedicine.org/johns_hopkins_bayview/patient_visitor_amenities/community_health_library/finding_reliable_health_information_online.html\"class=\"uri\">https://www.hopkinsmedicine.org/johns_hopkins_bayview/patient_visitor_amenities/community_health_library/finding_reliable_health_information_online.html</a></li>\r\n<li><ahref=\"https://medlineplus.gov/evaluatinghealthinformation.html\"class=\"uri\">https://medlineplus.gov/evaluatinghealthinformation.html</a></li>\r\n<li><ahref=\"https://medlineplus.gov/understandingmedicalresearch.html\"class=\"uri\">https://medlineplus.gov/understandingmedicalresearch.html</a></li>\r\n<li><ahref=\"https://www.youtube.com/user/thehealthcaretriage\"class=\"uri\">https://www.youtube.com/user/thehealthcaretriage</a></li>\r\n<li><ahref=\"https://theincidentaleconomist.com/wordpress/about/about-aaron/\"class=\"uri\">https://theincidentaleconomist.com/wordpress/about/about-aaron/</a></li>\r\n<li><ahref=\"https://www.palain.com/?page_id=256\"class=\"uri\">https://www.palain.com/?page_id=256</a></li>\r\n</ul>\r\n',198,100,0,'CC-BY-SA','Health,Medicine',0,0,1),
(2515,'2018-03-23','2017-2018 New Years Eve show part 2',10169,'Part two of the sixth annual HPR New Year Show.','<h2 id=\"hpr-nye-2017---2\">HPR NYE 2017 - 2</h2>\r\n<ul>\r\n<li><p>To tab or not to tab</p></li>\r\n<li><p>Bitcoin</p></li>\r\n<li><p>Michael Keaton<br />\r\n<a href=\"https://en.m.wikipedia.org/wiki/Michael_Keaton\" class=\"uri\">https://en.m.wikipedia.org/wiki/Michael_Keaton</a></p></li>\r\n<li><p><a href=\"https://seclists.org/fulldisclosure/\" class=\"uri\">https://seclists.org/fulldisclosure/</a></p></li>\r\n<li>Redacted Tonight</li>\r\n<li><p>Phillip DeFranco</p></li>\r\n<li><p>Will robots take our jobs</p></li>\r\n<li><p><a href=\"https://www.eugdpr.org/\" class=\"uri\">https://www.eugdpr.org/</a></p></li>\r\n<li><p><a href=\"https://www.privacycompany.eu/files/DPbD_Framework.pdf\" class=\"uri\">https://www.privacycompany.eu/files/DPbD_Framework.pdf</a></p></li>\r\n<li><p><a href=\"https://www.privacycompany.eu/files/factsheet_GDPR.pdf\" class=\"uri\">https://www.privacycompany.eu/files/factsheet_GDPR.pdf</a></p></li>\r\n<li><p>Gerald is happy to hear someone with his native tounge #perlist - Gerald grew up in Staines, UK<br />\r\n<a href=\"https://www.telegraph.co.uk/news/uknews/1389349/Staines-names-Ali-G-as-its-ambassador.html\" class=\"uri\">https://www.telegraph.co.uk/news/uknews/1389349/Staines-names-Ali-G-as-its-ambassador.html</a></p></li>\r\n<li><p>Aliens needed for notes</p></li>\r\n<li><p>Perl 5 vs Perl 6</p></li>\r\n<li><p>Xmlstarlet<br />\r\n<a href=\"https://xmlstar.sourceforge.net\" class=\"uri\">https://xmlstar.sourceforge.net</a></p></li>\r\n<li><p>Jq<br />\r\n<a href=\"https://github.com/stedolan/jq\" class=\"uri\">https://github.com/stedolan/jq</a></p></li>\r\n<li><p>cmhobs and ken chat about pen testing</p></li>\r\n<li><p>Ferro Rod Fire Starter for Survival<br />\r\n<a href=\"https://www.youtube.com/channel/UCAL3JXZSzSm8AlZyD3nQdBA\" class=\"uri\">https://www.youtube.com/channel/UCAL3JXZSzSm8AlZyD3nQdBA</a><br />\r\n<a href=\"https://primitivetechnology.wordpress.com/\" class=\"uri\">https://primitivetechnology.wordpress.com/</a></p></li>\r\n<li><p>Casper checks back into the pod as we had dead air - bad music check to make sure anyone is out there</p></li>\r\n<li>3 license types for a HAM\r\n<ul>\r\n<li>Technician Class - Entry Level License (Written Multiple Choice Test)</li>\r\n<li>General Class - Adds HF privs (Written Multiple Choice Test)</li>\r\n<li>Extra Class - Adds more HF privs (Written Multiple Choice Test)</li>\r\n</ul></li>\r\n<li>WB6NOA Gordon West</li>\r\n<li>KB6NU No-Nonsense Study Guides</li>\r\n<li><p>NE4RD gives us a run-down and disoroentation on what it means to be a HAM</p></li>\r\n<li>Why be a HAM?\r\n<ul>\r\n<li>Emergency Communications - Walk-A-Thons, Natural Disaster Support, etc</li>\r\n<li>GIFs</li>\r\n<li>Messing About</li>\r\n<li>Digital modes</li>\r\n<li>Digital texting, experimenting with low power</li>\r\n<li>GREAT Breakdown of all the ins and outs and HAMS</li>\r\n</ul></li>\r\n</ul>',159,121,1,'CC-BY-SA','HPR new year show 2017',0,0,1),
(2525,'2018-04-06','2017-2018 New Years Eve show part 3',10932,'Part three of the sixth annual HPR New Year Show.','<h2 id=\"hpr-nye-2017---3\">HPR NYE 2017 - 3</h2>\r\n<ul>\r\n<li><p>How much does it cost to go to the movies?<br />\r\n<a href=\"https://www.slashfilm.com/new-moviepass-prices/\" class=\"uri\">https://www.slashfilm.com/new-moviepass-prices/</a></p></li>\r\n<li><p><a href=\"https://edition.cnn.com/2016/08/23/health/epipen-price-mylan-prescription-drugs-increase/index.html\" class=\"uri\">https://edition.cnn.com/2016/08/23/health/epipen-price-mylan-prescription-drugs-increase/index.html</a></p></li>\r\n<li><p>Military acquisitions</p></li>\r\n<li><p><a href=\"https://time.com/money/4310099/f-35-budget-pay-free-college-student-loans/\" class=\"uri\">https://time.com/money/4310099/f-35-budget-pay-free-college-student-loans/</a></p></li>\r\n<li><p>F35 vs. F18 etc....</p></li>\r\n<li><p>Cost of printing materials</p></li>\r\n<li><p>PiHole & web browser ad blocking</p></li>\r\n<li><p>Pine64 discussion</p></li>\r\n<li><p>Pocket Chip</p></li>\r\n<li><p><a href=\"https://urandom-podcast.info/\" class=\"uri\">https://urandom-podcast.info/</a></p></li>\r\n<li><p>Plumble - <a href=\"https://play.google.com/store/apps/details?id=com.morlunk.mumbleclient.free&hl=en\" class=\"uri\">https://play.google.com/store/apps/details?id=com.morlunk.mumbleclient.free&hl=en</a></p></li>\r\n<li><p>Google Home<br />\r\n<a href=\"https://www.amazon.com/GOOGLEAIY-V1-Google-AIY-Voice/dp/B075SFLWKX/ref=sr_1_1?ie=UTF8&qid=1514748803&sr=8-1&keywords=aiy+voice+kit+google\" class=\"uri\">https://www.amazon.com/GOOGLEAIY-V1-Google-AIY-Voice/dp/B075SFLWKX/ref=sr_1_1?ie=UTF8&qid=1514748803&sr=8-1&keywords=aiy+voice+kit+google</a></p></li>\r\n<li><p>Rpi Google Home kit - <a href=\"https://www.wired.com/story/cardboard-google-home/\" class=\"uri\">https://www.wired.com/story/cardboard-google-home/</a></p></li>\r\n<li><p><a href=\"https://www.google.com/url?sa=t&source=web&rct=j&url=https://www.amazon.com/GOOGLEAIY-V1-Google-AIY-Voice/dp/B075SFLWKX&ved=2ahUKEwjjhb6plpDZAhWo6YMKHYn3DvMQFjAAegQIERAB&usg=AOvVaw1g60WEaYUMjg0bUsrnkaXI\" class=\"uri\">https://www.google.com/url?sa=t&source=web&rct=j&url=https://www.amazon.com/GOOGLEAIY-V1-Google-AIY-Voice/dp/B075SFLWKX&ved=2ahUKEwjjhb6plpDZAhWo6YMKHYn3DvMQFjAAegQIERAB&usg=AOvVaw1g60WEaYUMjg0bUsrnkaXI</a></p></li>\r\n<li><p><a href=\"https://www.cabinfeverexpo.com/\" class=\"uri\">https://www.cabinfeverexpo.com/</a></p></li>\r\n<li><p>TimeZone discussion</p></li>\r\n<li><p>Pinebook images again</p></li>\r\n<li><p>Travelling Tech</p></li>\r\n<li><p>Remix Tablet broken</p></li>\r\n<li><p>Casper provides some dead air musings & tunes :)</p></li>\r\n<li><p>Apple iOS battery shenanigans</p></li>\r\n<li><p>Pokey finally joins us</p></li>\r\n<li><p>Push-To-Talk - <a href=\"https://linuxlugcast.com/wp-content/uploads/2014/02/SkyeHaven_Mumble_How-To.pdf\" class=\"uri\">https://linuxlugcast.com/wp-content/uploads/2014/02/SkyeHaven_Mumble_How-To.pdf</a></p></li>\r\n<li><p>Late-diagnosed autism - Gordon discusses his revelation</p></li>\r\n<li><p>Speaking about Autism, Spectrums, Apologizing, etc. DO NOT OVER APOLOGIZE... sorry aboot that....</p></li>\r\n</ul>\r\n',159,121,1,'CC-BY-SA','HPR new year show 2017',0,0,1),
(2511,'2018-03-19','Response to episode 2496',419,'How I am using the Raspberry Pi script discussed Episode 2496','<h2 id=\"links\">Links</h2>\r\n<ul>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2496\">Dave\'sshow</a></li>\r\n<li><ahref=\"https://gitlab.com/davmo/what_pi/blob/master/what_pi\">Dave\'s script</a></li>\r\n<li><a href=\"https://www.raspberrypi.org/forums/viewtopic.php?f=28&t=164985\">Raspberry Pi forum page</a></li>\r\n<li><a href=\"https://github.com/raspberrypi/userland\">Raspberry Pi tools GitHub page</a></li>\r\n</ul>\r\n<h2 id=\"command\">Command</h2>\r\n<p>This is written for fish shell</p>\r\n<pre><code>for pi in pi1 pi2 pi3 pi4; cat what_pi | ssh "$pi" bash -; done</code></pre>',300,0,0,'CC-BY-SA','Raspberry Pi, RPi',0,0,1),
(2512,'2018-03-20','Intro to git remote',1590,'All about git remote','<p>\r\nInstantiate a git repo:\r\n</p>\r\n\r\n<pre><code>\r\n$ mkdir alice\r\n$ cd !$\r\n$ git init\r\n</code></pre>\r\n\r\n<p>\r\nAdd a remote:\r\n</p>\r\n\r\n<pre><code>\r\n$ git remote add origin URI_OF_REMOTE\r\n</code></pre>\r\n\r\n<p>\r\nChange a remote:\r\n</p>\r\n\r\n<pre><code>\r\n$ git remote set-url origin NEW_URI\r\n</code></pre>\r\n\r\n<p>\r\nA remote can be a server, it can be a local directory, an NFS share, pretty much whatever you want.\r\n</p>\r\n<p>\r\nIt is a Git convention that the primary remote is called <code>origin</code>. You don't have to call it that, but it's pretty common.\r\n</p>\r\n',78,104,0,'CC-BY-SA','git, remote, server',0,0,1),
(2513,'2018-03-21','Why I choose Aperture first',723,'David Whitman encourages you to choose Aperture as the most important setting in setting up your cam','<p>David Whitman encourages you to choose Aperture as the most important setting in setting up your camera.</p>\r\n<p>Understanding Exposure, 3rd Edition by Bryan Peterson - a good book that is great for learning photography. Duck Duck Go can connect you with a place to buy this book.</p>\r\n<p>David\'scacheofBADPhotosmostlyofHuntDogs(somecutegirlswithdogstoo)<ahref=\"https://drive.google.com/open?id=0B0VQmm3RmAmeTVVQdUhuaGVkTVU\"class=\"uri\">https://drive.google.com/open?id=0B0VQmm3RmAmeTVVQdUhuaGVkTVU</a></p>\r\n<ul>\r\n<li>Aperture-<ahref=\"https://en.wikipedia.org/wiki/Aperture\"class=\"uri\">https://en.wikipedia.org/wiki/Aperture</a></li>\r\n<li>ISO-<ahref=\"https://en.wikipedia.org/wiki/Film_speed\"class=\"uri\">https://en.wikipedia.org/wiki/Film_speed</a></li>\r\n<li>ShutterSpeed-<ahref=\"https://en.wikipedia.org/wiki/Film_speed\"class=\"uri\">https://en.wikipedia.org/wiki/Film_speed</a></li>\r\n</ul>\r\n<p>Havesomefun.TakesomephotosanddoaHPRepisode.</p>',209,0,0,'CC-BY-SA','Photography,Cameras,ISO,Aperture,ShutterSpeed',0,0,1),
(2514,'2018-03-22','Electronics Calculator Kit',2006,'NYbill talks about building a $16 electronics calculator kit.','<p>\r\nNYbill talks about building a $16 electronics calculator kit.\r\n</p>\r\n<p>\r\nKkmoon DIY Calculator Kit: <a href=\"https://tinyurl.com/yc9z92pc\">https://tinyurl.com/yc9z92pc</a>\r\n</p>\r\n<p>\r\nPics for the episode: <a href=\"https://media.gunmonkeynet.net/u/nybill/collection/electronics-calculator-kit/\">https://media.gunmonkeynet.net/u/nybill/collection/electronics-calculator-kit/</a>\r\n</p>\r\n<p>Just to save anyone from searching for some secret mode on their\r\ncalculators, I misspoke. I mention using my TI calculator in “Degree Mode”.\r\nI meant to say “Normal Mode”. It just happens to say DEG on the screen in tiny\r\nletters. What can I say, I’m easily distra</p>\r\n<p>Oh look at that!</p>\r\n \r\n',235,103,0,'CC-BY-SA','Electronics, Kits, Soldering, DIY',0,0,1),
(2516,'2018-03-26','Intro to git branch',2635,'Intro to git branch','<p>\r\nThese are all the commands covered in this episode. <em>This is not a sequence</em>, it\'sjustallthecommandsintheepisode,listedoneafteranother.\r\n</p>\r\n\r\n<p>\r\nGetchangesfromtheremoterepo:\r\n</p>\r\n<pre><code>\r\n$ git fetch\r\n</code></pre>\r\n\r\n<p>\r\nSee all branches:\r\n</p>\r\n<pre><code>\r\n$ git branch --all\r\n</code></pre>\r\n\r\n<p>\r\nView a remote branch after you have fetched it:\r\n</p>\r\n<pre><code>\r\n$ git checkout origin/dev\r\n</code></pre>\r\n\r\n<p>\r\nCreate a copy of a fetched remote branch in your local repo:\r\n</p>\r\n<pre><code>\r\n$ git checkout dev\r\n</code></pre>\r\n\r\n<p>\r\nMerge changes from remote origin/master into your local master branch:\r\n</p>\r\n<pre><code>\r\n$ git merge master origin/master\r\n</code></pre>\r\n\r\n<p>\r\nFetch and merge automatically:\r\n</p>\r\n<pre><code>\r\n$ git pull\r\n</code></pre>\r\n\r\n<p>\r\nCreate a new branch, and change to it:\r\n</p>\r\n<pre><code>\r\n$ git checkout -b dev\r\n</code></pre>\r\n\r\n<p>\r\nMerge dev into master:\r\n</p>\r\n<pre><code>\r\n$ git checkout master\r\n$ git merge master dev\r\n</code></pre>\r\n\r\n<p>\r\nMerge master into dev\r\n</p>\r\n<pre><code>\r\n$ git checkout dev\r\n$ git merge dev master\r\n</code></pre>\r\n\r\n<p>\r\nDelete the dev branch:\r\n</p>\r\n<pre><code>\r\n$ git branch -d dev\r\n</code></pre>\r\n',78,104,0,'CC-BY-SA','git, branch, server',0,0,1),
(2518,'2018-03-28','Converting My Laptop to Dual Boot',1440,'Converting a Linux only laptop to dual boot using information from a previous HPR episode.','<h2 id=\"converting-my-laptop-to-dual-boot\">Converting My Laptop to Dual Boot</h2>\r\n<h3 id=\"summary\">Summary</h3>\r\n<p>In this episode I describe how I converted my Linux-only laptop to dual-boot with Windows 10. Specifically, using information from a previous HPR episode.</p>\r\n<h3 id=\"reference\">Reference</h3>\r\n<p>The procedure used in this project drew heavily from the information presented in HPR episode <a href=\"https://hackerpublicradio.org/eps.php?id=2305\">2305</a> by Mongo.</p>\r\n<h3 id=\"target-laptop\">Target Laptop</h3>\r\n<ul>\r\n<li>Lenovo Thinkpad T550</li>\r\n<li>Intel i7-5600U Dual-Core</li>\r\n<li>8GB RAM</li>\r\n<li>256GB SSD</li>\r\n</ul>\r\n<p>Laptop was purchased in Jan 2016 as a factory refurb unit from an Ebay seller. The model was about 1 year old at the time. As soon as I got it, I summarily removed any trace of Windows, with prejudice, and installed Linux.</p>\r\n<h3 id=\"the-problem\">The Problem</h3>\r\n<p>I am needing to run some Windows software that doesn\'tworkineitherWineoravirtualmachineenvironment.SpecificallyAutodeskFusion360.</p>\r\n<h3id=\"some-challenges\">SomeChallenges</h3>\r\n<ul>\r\n<li><p>NolongerhaveWindowsinstallmedia.IwasabletodownloadaLenovorecoveryUSBimage.</p>\r\n<p><ahref=\"https://support.lenovo.com/us/en/solutions/ht103653\"class=\"uri\">https://support.lenovo.com/us/en/solutions/ht103653</a></p></li>\r\n<li><p>Ididn\'t think that a 256GB drive would be big enough for both Linux and Windows. I purchased a 512GB SSD drive.</p></li>\r\n<li><p>I was happy with my Xubuntu setup and configuration and didn\'twanttohavetostartalloveronthat.Ihopedthatrestoringmyhomedirectorywouldtakecareofthat.</p></li>\r\n</ul>\r\n<h3id=\"the-procedure\">TheProcedure</h3>\r\n<oltype=\"1\">\r\n<li><p>Backedupmyhomedirectory,justincase.</p></li>\r\n<li><p>Replacedtheharddrive.</p></li>\r\n<li><p>TriedtobootfromLenovoWindowsthumbdrive.</p></li>\r\n<li><p>FoundthattheBIOSwassettolegacymode,soresetBIOStofactory.</p></li>\r\n<li><p>Toldtheinstallertousetheentiredrive.</p></li>\r\n<li><p>WentthroughtheentireWindowsinstallandupdateprocess.</p></li>\r\n<li><p>UsedtheinstructionsprovidedbyMongotoresizeWindowsfilesystemsize.</p></li>\r\n<li><p>UsedtheinstructionsprovidedbyMongototurnoffastboot.</p></li>\r\n<li><p>UsedtheinstructionsprovidedbyMongototurnofSecureBootinBIOS.</p></li>\r\n<li><p>BootedfromXubuntu16.04thumbdrive.</p></li>\r\n<li><p>DidXubuntuinstallasnormal,choosingtheinstalltypeofinstallingalongsideWindowsBootManager.</p></li>\r\n<li><p>Installedalloftheupdates.</p></li>\r\n<li><p>MountedtheoldharddrivewithaUSBdriveenclosure,whichwasabitofachallengebecausethatdrivewasencrypted.Thedrivehas2partitions.AsmallbootpartitionandthenalargeLUKSencryptedpartition.</p>\r\n<p>Thisisaprocedurethatcanbeusedtomountsuchapartition.</p>\r\n<ul>\r\n<li><p>Firstyoumustdecryptthepartitionandmapittoadevice.Thiscanbedonewiththefollowingcommand(assumingthepartitionmountpointis/dev/sdb2):</p>\r\n<pre><code>cryptsetupluksOpen/dev/sdb2cryptdrive</code></pre>\r\n<p>Thiscommandwillmapthepartitiontothefollowingdevice:</p>\r\n<pre><code>/dev/mapper/cryptdrive</code></pre></li>\r\n<li><p>Normallyyoucouldthenmountthefilesystemasfollows:</p>\r\n<pre><code>mount/dev/mapper/cryptdrive/mnt</code></pre></li>\r\n<li><p>However,inthiscasetheencryptedfilesystemisactuallyanLVMvolumethatcontainstwovolumegroupsthatmadeupthepartitionsofthepreviousLinuxinstall,soyoucan\'t directly mount it.</p></li>\r\n<li><p>I had to first install the LVM tools, which had not been installed by default.</p>\r\n<pre><code>apt-get install lvm</code></pre></li>\r\n<li><p>Then I had to issue the following command
(2517,'2018-03-27','DIY CCTV Security System',940,'I go over my Home CCTV setup','<h2 id=\"cctv-security-system\">CCTV Security System</h2>\r\n<ul>\r\n<li>$80 Reolink IP PoE Security Camera 4MP Super HD 2560x1440 with SD Card & Audio Outdoor Indoor Bullet IR Night Vision Motion Detection RLC-410S</li>\r\n<li>65$ RLC-410 ( No SD CARD )</li>\r\n<li>$150 Linksys Business LGS116P 16-Port Desktop Gigabit Ethernet PoE+ Unmanaged Network Switch I Metal Enclosure $150</li>\r\n<li>Ispy to start</li>\r\n<li><a href=\"https://forums.zoneminder.com/viewtopic.php?f=36&t=26906\" class=\"uri\">https://forums.zoneminder.com/viewtopic.php?f=36&t=26906</a> 115 lines of bash</li>\r\n<li>When event ends on ZM yolo is run on a random 10 images for that event (Person Dog Cat Car)</li>\r\n<li>if an object is detected we look to see if two Android phones via MAC on network</li>\r\n<li>if they are on the network it means somebody is home so events are throttled to 1/1hr max</li>\r\n<li>if nobody is home then original image/object detected from event is sent to email</li>\r\n<li>zones</li>\r\n<li>zones preclusion</li>\r\n<li>Video <a href=\"https://rmccurdy.com/scripts/videos/rmccurdy_com/ZoneMinder_Yolo_Yolov2_Darknet_Script_Plugin.mp4\" class=\"uri\">https://rmccurdy.com/scripts/videos/rmccurdy_com/ZoneMinder_Yolo_Yolov2_Darknet_Script_Plugin.mp4</a></li>\r\n</ul>\r\n<h3 id=\"issues\">Issues:</h3>\r\n<ul>\r\n<li>rain, spiderwebs, shadows, Car lights (preclusion zones)</li>\r\n<li>full motion capture is -6hrs 16gig</li>\r\n<li>smearing ( lower FPS on cam and make sure ZM has higher framerate then the cam make sure not to use Source Type:ffmpeg and use remote or try both)</li>\r\n<li><code>journalctl -f -t DARKNET.service</code> (shows nothing...@#%ing systemd)</li>\r\n<li>night time</li>\r\n</ul>\r\n<h2 id=\"more-notes\">More Notes:</h2>\r\n<p>Start with one zone at a time and raise/test sensitive KISS...don\'tsetuplike4zonesandexpecttotroubleshootanything.IusedmyAndroidtodoalotoftweaking.Ialsowanttosortout"night"modeconfigsoafternightmodekicksinadifferentconfigisautomaticallyapplied.</p>\r\n<p>UselowqualityformotiondetectionanddropframerateofcamtolowerthanmaxofZMforlittletonosmearingandIalsoset"AlarmFrameCountto2"and"overloadignoreframecountto4"butIthinkit\'s more about Alarm Frame Count..I can\'tbesure..</p>\r\n<p>Explanationofoverloadignoreframecount<br/>\r\nReportthispostQuote<br/>\r\nPostbybb99»ThuMay10,20125:22pm</p>\r\n<p>Forsuddenchangestotheenvironment,nobettertoolthenOverloadFrameIgnoreCount.Yourfpsdeterminesthesesettingsbutat10fpswithOverloadFrameIgnoreCountsetto4,itonlyignores.4seconds.Inotherwordsifadrasticchangetothelighting(suchasacarwithheadlightsonindarkness)passeswithinthemonitorsviewitwillignorethenumberofframesyouspecifybeforeprocessingformotiondetection.</p>\r\n<h3id=\"alarm-frame-count\">AlarmFrameCount</h3>\r\n<p>Thisoptionallowsyoutospecifyhowmanyconsecutivealarmframesmustoccurbeforeanalarmeventisgenerated.Theusual,anddefault,valueis1whichimpliesthatanyalarmframewillcauseorparticipateinanevent.Youcanenteranyvalueupto16heretoeliminateboguseventscausedperhapsbyscreenflickersorothertransients.Valuesover3or4areunlikelytobeusefulhowever.Pleasenotethatifyouhavestatisticsrecordingenabledthencurrentlystatisticsarenotrecordedforthefirst‘AlarmFrameCount’-1framesofanevent.Soifyousetthisvalueto5thenthefirst4frameswillbemissingstatisticswhereasthemoreusualvalueof1willensurethatallalarmframeshavestatisticsrecorded.</p>\r\n<p><ahref=\"https://forums.zoneminder.com/viewtopic.php?f=36&t=26222\"class=\"uri\">https://forums.zoneminder.com/viewtopic.php?f=36&t=26222</a></p>\r\n<p>Windowssoftwaretogetbasicidea(installfaceplugin)<br/>\r\n<ahref=\"https://www.ispyconnect.co
(2535,'2018-04-20','2017-2018 New Years Eve show part 4',12357,'Part four of the sixth annual HPR New Year Show.','<h2 id=\"hpr-nye-2017---4\">HPR NYE 2017 - 4</h2>\r\n<ul>\r\n<li><p>Ken Fallon is testing booger sized components<br />\r\n<a href=\"https://learn.sparkfun.com/tutorials/polarity/diode-and-led-polarity\" class=\"uri\">https://learn.sparkfun.com/tutorials/polarity/diode-and-led-polarity</a></p></li>\r\n<li><p>urandom-podcast.info mentioned - AGAIN</p></li>\r\n<li>Pi & SBC discussion</li>\r\n<li>Google & Amazon privacy concerns</li>\r\n<li>Mrs Xoxe joins in</li>\r\n<li>We speak about Autism some more, Death of Salesman. Selling yourself to get interviews. Unemployment. Those who are resistant to change are doomed to perish</li>\r\n<li>Babylon Berlin, BFFs, Black Mirror</li>\r\n<li>Senior citizens & technology</li>\r\n<li>Keeping current with software & O/S\'s</li>\r\n<li><p><ahref=\"https://www.youtube.com/results?search_query=the+mighty+boosh+the+moon+\"class=\"uri\">https://www.youtube.com/results?search_query=the+mighty+boosh+the+moon+</a></p></li>\r\n<li>Robotvaccuumsweepers</li>\r\n<li>Childrenmakeamazingpets</li>\r\n<li><p>RoomBAAAS</p></li>\r\n<li>JoeRessasksforLinux2018predictions</li>\r\n<li>IsthetraditionalPCmarketfading?</li>\r\n<li><p>Linux&mobiledevices<br/>\r\n<ahref=\"https://ubports.com/\"class=\"uri\">https://ubports.com/</a></p></li>\r\n<li>Whatwillittakeforanopensourcemobiledevicetogainmarketshare?</li>\r\n<li><p>Librem5-<ahref=\"https://puri.sm/shop/librem-5/\"class=\"uri\">https://puri.sm/shop/librem-5/</a></p></li>\r\n<li><p>Moreopensourcemobiledevicediscussion</p></li>\r\n</ul>\r\n',159,121,1,'CC-BY-SA','HPRnewyearshow2017',0,0,1),
(2519,'2018-03-29','the_remora Builds a character in Edge of the Empire',1330,'I Sit down and Build a Character for Edge of the Empire using Oggdudes Character Generator','<ul>\r\n<li><p>Link to the <a href=\"https://db4sgowjqfwig.cloudfront.net/campaigns/155068/assets/835617/KombarConall-Human-BountyHunter.pdf?1520193790\">Character Sheet</a></p></li>\r\n<li>Link to Edge of the Empire by Fantasy Flight Games: <a href=\"https://www.fantasyflightgames.com/en/products/star-wars-edge-of-the-empire/\" class=\"uri\">https://www.fantasyflightgames.com/en/products/star-wars-edge-of-the-empire/</a></li>\r\n<li><p>Link to the Tool I used to Build this character: <a href=\"https://www.legendsofthegalaxy.com/Oggdude/\" class=\"uri\">https://www.legendsofthegalaxy.com/Oggdude/</a>. I recommend using the web installer.</p></li>\r\n<li><p>Unofficial Organized play similar to D&D Adventurers League: <a href=\"https://www.legendsofthegalaxy.com/\" class=\"uri\">https://www.legendsofthegalaxy.com/</a></p></li>\r\n</ul>\r\n<p>Thanks and sorry the Audio was so bad, I was forced to use Bluetooth headphones because Audacity would not take audio from my USB headset.</p>',363,95,1,'CC-BY-SA','Roleplaying',0,0,1),
(2545,'2018-05-04','2017-2018 New Years Eve show part 5',8433,'Part five of the sixth annual HPR New Year Show.','<h2 id=\"hpr-nye-2017---5\">HPR NYE 2017 - 5</h2>\r\n<ul>\r\n<li><p>Guitar Talk, Les Pauls, Strats, etc. SG, Flying V, Squire ... etc.</p></li>\r\n<li><p>Social media discussion, Twitter, Mastodon, G+</p></li>\r\n<li><p>Opensource licenses</p></li>\r\n<li><p>More autism discussion</p></li>\r\n<li><p>New drugs that make you live longer</p></li>\r\n<li><p>notalion participated in <a href=\"https://www.holidayhackchallenge.com/2017/\" class=\"uri\">https://www.holidayhackchallenge.com/2017/</a></p></li>\r\n</ul>\r\n',159,121,1,'CC-BY-SA','HPR new year show 2017',0,0,1),
(2555,'2018-05-18','2017-2018 New Years Eve show part 6',11722,'Part six of the sixth annual HPR New Year Show.','<h2 id=\"hpr-nye-2017---6\">HPR NYE 2017 - 6</h2>\r\n<ul>\r\n<li><p>Using Ubuntu with snaps or just using Debian for a home server</p></li>\r\n<li><p>Building a home firewall</p></li>\r\n<li><p>What is the best firewall distro</p></li>\r\n<li><p>Maybe just learn ip tables</p></li>\r\n<li><p>Fun with virtualization</p></li>\r\n<li><p><a href=\"https://riscv.org/\" class=\"uri\">https://riscv.org/</a><br />\r\nA completely Free Hardware CPU that is gaining press</p></li>\r\n<li><p><a href=\"https://www.xilinx.com/products/silicon-devices/soc/zynq-7000.html\" class=\"uri\">https://www.xilinx.com/products/silicon-devices/soc/zynq-7000.html</a><br />\r\nAn ARM processor with built-in FPGA</p></li>\r\n<li><p>Western Digital moving to RISC-V:<br />\r\n<a href=\"https://www.forbes.com/sites/tiriasresearch/2017/12/06/western-digital-gives-a-billion-unit-boost-to-open-source-risc-v-cpu/\" class=\"uri\">https://www.forbes.com/sites/tiriasresearch/2017/12/06/western-digital-gives-a-billion-unit-boost-to-open-source-risc-v-cpu/</a></p></li>\r\n<li><p><a href=\"https://www.youtube.com/watch?v=ATZls4lbwmM&t=20m27s\" class=\"uri\">https://www.youtube.com/watch?v=ATZls4lbwmM&t=20m27s</a><br />\r\nWD CEO announces their ambition to switch fully to RISC-V</p></li>\r\n<li><p><a href=\"https://www.heropunch.io/\" class=\"uri\">https://www.heropunch.io/</a><br />\r\nCreating free hardware for decentralized communications, mobile applications and mesh networks</p></li>\r\n<li><p><a href=\"https://www.scuttlebutt.nz/\" class=\"uri\">https://www.scuttlebutt.nz/</a><br />\r\nSecure Scuttlebutt, or SSB, is built for intermittent networks and drop points</p></li>\r\n<li><p>A little bit about <a href=\"https://ipfs.io/\" class=\"uri\">https://ipfs.io/</a></p></li>\r\n<li><p>Content-Addressable Networks are important if you\'reinintermittentorhigh-latencymeshnetworks</p></li>\r\n<li><p>Andinpassing:<ahref=\"https://twister.net.co/\"class=\"uri\">https://twister.net.co/</a></p></li>\r\n<li><p>BitTorrent+blockchain+DHTsocialnetworking,notentirelydissimilartoSSB<br/>\r\n<ahref=\"https://www.bitmessage.org/\"class=\"uri\">https://www.bitmessage.org/</a></p></li>\r\n<li><p>clackewaswrong,itdoesn\'t store messages in a blockchain</p></li>\r\n<li>3D printers: <a href=\"https://podnutz.com/category/themakerz/\" class=\"uri\">https://podnutz.com/category/themakerz/</a>\r\n<ul>\r\n<li>podcast <a href=\"https://www.tinkercad.com/\" class=\"uri\">https://www.tinkercad.com/</a></li>\r\n<li>cloud CAD <a href=\"https://www.autodesk.com/products/fusion-360/overview\" class=\"uri\">https://www.autodesk.com/products/fusion-360/overview</a></li>\r\n<li>cloud CAD <a href=\"https://www.onshape.com/\" class=\"uri\">https://www.onshape.com/</a></li>\r\n<li>cloud CAD <a href=\"https://www.thingiverse.com/\" class=\"uri\">https://www.thingiverse.com/</a></li>\r\n<li>"the Facebook of 3D model sharing" <a href=\"https://cults3d.com/\" class=\"uri\">https://cults3d.com/</a></li>\r\n<li>3D model sharing<br />\r\n<a href=\"https://www.cnx-software.com/2017/05/25/melon-s3-fpga-arduino-raspberry-pi-compatible-board-is-programmable-over-wifi-using-esp8266-wisoc/\" class=\"uri\">https://www.cnx-software.com/2017/05/25/melon-s3-fpga-arduino-raspberry-pi-compatible-board-is-programmable-over-wifi-using-esp8266-wisoc/</a></li>\r\n</ul></li>\r\n<li><p><a href=\"https://www.cnx-software.com/2015/11/24/fleafpga-uno-board-combines-a-lattice-fpga-arduino-uno-form-factor-hdmi-output-and-an-esp8266-wifi-module/\" class=\"uri\">https://www.cnx-software.com/2015/11/24/fleafpga-uno-board-combines-a-lattice-fpga-arduino-uno-form-factor-hdmi-output-and-an-esp8266-wifi-module/</a></p></li>\r\n<li><p>Amiga and <a href=\"https://www.morphos-team.net/\" class=\"uri\">https://www.morphos-team.net/</a><br />\r\nMorphOS is a proprietary implementation of AmigaOS for PowerPC, but uses free software components from e.g. AROS</p></li>\r\n<li><p><a h
(2565,'2018-06-01','2017-2018 New Years Eve show part 7',10683,'Part seven of the sixth annual HPR New Year Show. This is the last one.','<h2 id=\"hpr-nye-2017---7\">HPR NYE 2017 - 7</h2>\r\n<ul>\r\n<li><p><a href=\"https://www.youtube.com/channel/UCuiDNTaTdPTGZZzHm0iriGQ\" class=\"uri\">https://www.youtube.com/channel/UCuiDNTaTdPTGZZzHm0iriGQ</a></p></li>\r\n<li><p><a href=\"https://www.imdb.com/title/tt0460681/\" class=\"uri\">https://www.imdb.com/title/tt0460681/</a></p></li>\r\n<li><p><a href=\"https://www.youtube.com/channel/UCggHoXaj8BQHIiPmOxezeWA\" class=\"uri\">https://www.youtube.com/channel/UCggHoXaj8BQHIiPmOxezeWA</a></p></li>\r\n<li><p>history buffs</p></li>\r\n<li><p><a href=\"https://www.indiegogo.com/projects/gpd-pocket-7-0-umpc-laptop-ubuntu-or-win-10-os-laptop--2#/\" class=\"uri\">https://www.indiegogo.com/projects/gpd-pocket-7-0-umpc-laptop-ubuntu-or-win-10-os-laptop--2#/</a></p></li>\r\n<li><p>Why are they killing off the 32 bit distros?</p></li>\r\n<li><p><a href=\"https://en.wikipedia.org/wiki/Year_2038_problem\" class=\"uri\">https://en.wikipedia.org/wiki/Year_2038_problem</a></p></li>\r\n<li><p><a href=\"https://archive.org/details/hpr1037\" class=\"uri\">https://archive.org/details/hpr1037</a></p></li>\r\n<li><p>Ken Fallon the fastest solderer in the West. Able to solder a component tester in a single show...</p></li>\r\n</ul>',159,121,1,'CC-BY-SA','HPR new year show 2017',0,0,1),
(2781,'2019-04-01','HPR Community News for March 2019',3564,'HPR Volunteers talk about shows released and comments posted in March 2019','\r\n<h2>Spoiler</h2>\r\n<p>Dave has not left and HPR has not sold out</p>\r\n<h2>New hosts</h2>\r\n<p>\r\nWelcome to our new hosts: <br />\r\n\r\n <a href=\"https://hackerpublicradio.org/correspondents/0373.html\" target=\"_blank\">Floyd C Poynter</a>, \r\n <a href=\"https://hackerpublicradio.org/correspondents/0374.html\" target=\"_blank\">aldenp</a>, \r\n <a href=\"https://hackerpublicradio.org/correspondents/0375.html\" target=\"_blank\">minnix</a>.\r\n</p>\r\n\r\n<h2>Last Month\'sShows</h2>\r\n<tableid=\"t01\"summary=\"Last month\'s shows\">\r\n<tr>\r\n<th>Id</th>\r\n<th>Day</th>\r\n<th>Date</th>\r\n<th>Title</th>\r\n<th>Host</th>\r\n</tr>\r\n<trvalign=\"top\">\r\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=2760\"target=\"_blank\">2760</a></strong></td>\r\n<td>Fri</td>\r\n<td>2019-03-01</td>\r\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=2760\"target=\"_blank\">WhatisVNF</a></td>\r\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0129.html\"target=\"_blank\">JWP</a></td>\r\n</tr>\r\n<trvalign=\"top\">\r\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=2761\"target=\"_blank\">2761</a></strong></td>\r\n<td>Mon</td>\r\n<td>2019-03-04</td>\r\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=2761\"target=\"_blank\">HPRCommunityNewsforFebruary2019</a></td>\r\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0159.html\"target=\"_blank\">HPRVolunteers</a></td>\r\n</tr>\r\n<trvalign=\"top\">\r\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=2762\"target=\"_blank\">2762</a></strong></td>\r\n<td>Tue</td>\r\n<td>2019-03-05</td>\r\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=2762\"target=\"_blank\">WhatYouReallyAre</a></td>\r\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0107.html\"target=\"_blank\">lostnbronx</a></td>\r\n</tr>\r\n<trvalign=\"top\">\r\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=2763\"target=\"_blank\">2763</a></strong></td>\r\n<td>Wed</td>\r\n<td>2019-03-06</td>\r\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=2763\"target=\"_blank\">DeepgeekexplainsSPFrecords</a></td>\r\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0078.html\"target=\"_blank\">klaatu</a></td>\r\n</tr>\r\n<trvalign=\"top\">\r\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=2764\"target=\"_blank\">2764</a></strong></td>\r\n<td>Thu</td>\r\n<td>2019-03-07</td>\r\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=2764\"target=\"_blank\">Personalpasswordalgorithms</a></td>\r\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0078.html\"target=\"_blank\">klaatu</a></td>\r\n</tr>\r\n<trvalign=\"top\">\r\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=2765\"target=\"_blank\">2765</a></strong></td>\r\n<td>Fri</td>\r\n<td>2019-03-08</td>\r\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=2765\"target=\"_blank\">MyYouTubeSubscriptions#3</a></td>\r\n <td><a href=\"https://hackerpublicradio.org/correspondents/0198.html\" target=\"_blank\">Ahuka</a></td>\r\n </tr>\r\n <tr valign=\"top\">\r\n <td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2766\" target=\"_blank\">2766</a></strong></td>\r\n <td>Mon</td>\r\n <td>2019-03-11</td>\r\n <td><a href=\"https://hackerpublicradio.org/eps.php?id=2766\" target=\"_blank\">Disk enumeration on Linux</a></td>\r\n <td><a href=\"https://hackerpublicradio.org/correspondents/0078.html\" target=\"_blank\">klaatu</a></td>\r\n </tr>\r\n <tr valign=\"top\">\r\n <td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2767\" target=\"_blank\">2767</a></strong></td>\r\n <td>Tue</td>\r\n <td>2019-03-
(2806,'2019-05-06','HPR Community News for April 2019',6840,'HPR Volunteers talk about shows released and comments posted in April 2019','\n\n<h2>New hosts</h2>\n<p>\nThere were no new hosts this month.\n</p>\n\n<h2>Last Month\'sShows</h2>\n<small><tableid=\"t01\"summary=\"Last month\'s shows\">\n<tr>\n<th>Id</th>\n<th>Day</th>\n<th>Date</th>\n<th>Title</th>\n<th>Host</th>\n</tr>\n<trvalign=\"top\">\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=2781\"target=\"_blank\">2781</a></strong></td>\n<td>Mon</td>\n<td>2019-04-01</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=2781\"target=\"_blank\">HPRCommunityNewsforMarch2019</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0159.html\"target=\"_blank\">HPRVolunteers</a></td>\n</tr>\n<trvalign=\"top\">\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=2782\"target=\"_blank\">2782</a></strong></td>\n<td>Tue</td>\n<td>2019-04-02</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=2782\"target=\"_blank\">Neverstopgaming</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0078.html\"target=\"_blank\">klaatu</a></td>\n</tr>\n<trvalign=\"top\">\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=2783\"target=\"_blank\">2783</a></strong></td>\n<td>Wed</td>\n<td>2019-04-03</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=2783\"target=\"_blank\">TheWindows\"Shutdown.exe\"CommandExplained</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0152.html\"target=\"_blank\">ClaudioMiranda</a></td>\n</tr>\n<trvalign=\"top\">\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=2784\"target=\"_blank\">2784</a></strong></td>\n<td>Thu</td>\n<td>2019-04-04</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=2784\"target=\"_blank\">TheYamahaDisklavier</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0238.html\"target=\"_blank\">JonKulp</a></td>\n</tr>\n<trvalign=\"top\">\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=2785\"target=\"_blank\">2785</a></strong></td>\n<td>Fri</td>\n<td>2019-04-05</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=2785\"target=\"_blank\">WhatisuCPE</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0129.html\"target=\"_blank\">JWP</a></td>\n</tr>\n<trvalign=\"top\">\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=2786\"target=\"_blank\">2786</a></strong></td>\n<td>Mon</td>\n<td>2019-04-08</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=2786\"target=\"_blank\">MyYouTubeChannels</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0338.html\"target=\"_blank\">TonyHughesAKATonyH1212</a></td>\n</tr>\n<trvalign=\"top\">\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=2787\"target=\"_blank\">2787</a></strong></td>\n<td>Tue</td>\n<td>2019-04-09</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=2787\"target=\"_blank\">NodeJSPart1</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0036.html\"target=\"_blank\">operat0r</a></td>\n</tr>\n<trvalign=\"top\">\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=2788\"target=\"_blank\">2788</a></strong></td>\n<td>Wed</td>\n<td>2019-04-10</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=2788\"target=\"_blank\">LoopinginHaskell</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0364.html\"target=\"_blank\">Tuula</a></td>\n</tr>\n<trvalign=\"top\">\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=2789\"target=\"_blank\">2789</a></strong></td>\n<td>Thu</td>\n<td>2019-04-11</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=2789\"target=\"_blank\">PacingInStorytelling</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0107.html\"target=\"_blank\">lostnbronx</a></td>\n</tr>\n<trvalign=\"top\">\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=2790\"target=\"_blank\">2790</a></
(2522,'2018-04-03','Flashbacks In Storytelling',656,'Lostnbronx takes a breezy look at the narrative technique of the flashback.','<p>Lostnbronx looks at flashbacks, flashforwards, plays-within-plays, and dream sequences as techniques of both good and bad storytelling.</p>',107,105,0,'CC-0','storytelling,flashback,lostnbronx',0,0,1),
(2523,'2018-04-04','Run Linux on a Windows Box',809,'HP Stream book with windows 10','<p>A short show about running Debian on windows.<br />\r\nYes it really works.</p>\r\n<p>What you have do first<br />\r\n<a href=\"https://askubuntu.com/questions/966184/new-installation-of-windows-10-and-ubuntu-from-windows-store-error/966214\" class=\"uri\">https://askubuntu.com/questions/966184/new-installation-of-windows-10-and-ubuntu-from-windows-store-error/966214</a></p>\r\n<p>and here<br />\r\n<a href=\"https://www.bing.com/search?q=how+to+run+windows+powershell+as+adminstrator&form=EDGTCT&qs=PF&cvid=75a5d473a2d140ea841cb0457e42026f&refig=ba953cbaebae48c8b5d1c46080dafd1a&cc=DE&setlang=en-US\" class=\"uri\">https://www.bing.com/search?q=how+to+run+windows+powershell+as+adminstrator&form=EDGTCT&qs=PF&cvid=75a5d473a2d140ea841cb0457e42026f&refig=ba953cbaebae48c8b5d1c46080dafd1a&cc=DE&setlang=en-US</a></p>',129,0,1,'CC-BY-SA','Windows Subsystem for Linux,WSL,Debian,PowerShell',0,0,1),
(2524,'2018-04-05','General problem solver',1088,'Brief look into general problem solver system and how to use it solve simple problems','<ul>\r\n<li><p>Building Problem Solvers by Kenneth D. Forbus and Johan de Kleer: <a href=\"https://www.qrg.northwestern.edu/BPS/readme.html\" class=\"uri\">https://www.qrg.northwestern.edu/BPS/readme.html</a></p></li>\r\n<li><p>Paradigms of Artificial Intelligence Programming by Peter Norvig: <a href=\"https://github.com/norvig/paip-lisp\" class=\"uri\">https://github.com/norvig/paip-lisp</a></p></li>\r\n<li><p>Engineer\'sJourney,Tuula\'s blog: <a href=\"https://engineersjourney.wordpress.com/\" class=\"uri\">https://engineersjourney.wordpress.com/</a></p></li>\r\n<li><p>Blog entry about solving n-queens puzzle with general problem solver: <a href=\"https://engineersjourney.wordpress.com/2018/03/09/n-queens-puzzle-solved-in-hy-and-cps/\" class=\"uri\">https://engineersjourney.wordpress.com/2018/03/09/n-queens-puzzle-solved-in-hy-and-cps/</a></p></li>\r\n</ul>',364,0,0,'CC-BY-SA','lisp, artificial intelligence, problem solving',0,0,1),
(2526,'2018-04-09','Gnu Awk - Part 10',2535,'More about arrays in Gnu Awk','<h1 id=\"gnu-awk---part-10\">Gnu Awk - Part 10</h1>\r\n<h2 id=\"introduction\">Introduction</h2>\r\n<p>This is the tenth episode of the "<a href=\"https://hackerpublicradio.org/series/0094.html\" title=\"Learning Awk\">Learning Awk</a>" series which is being produced by <a href=\"https://hackerpublicradio.org/correspondents/0300.html\" title=\"b-yeezi\">b-yeezi</a> and myself.</p>\r\n<p>In this episode I want to talk more about the use of arrays in GNU Awk and then I want to examine some real-world examples of the use of <code>awk</code>.</p>\r\n<h2 id=\"long-notes\">Long notes</h2>\r\n<p>The notes for rest of this episode are available <a href=\"https://hackerpublicradio.org/eps/hpr2526/full_shownotes.html\">here</a>.</p>\r\n<h2 id=\"links\">Links</h2>\r\n<ul>\r\n<li><a href=\"https://www.gnu.org/software/gawk/manual/html_node/index.html\"><em>GNU Awk User\'sGuide</em></a></li>\r\n<li>PreviousshowsinthisseriesonHPR:\r\n<ul>\r\n<li><ahref=\"https://hackerpublicradio.org/eps.php?id=2114\">"<em>GnuAwk-Part1</em>"</a>-episode2114</li>\r\n<li><ahref=\"https://hackerpublicradio.org/eps.php?id=2129\">"<em>GnuAwk-Part2</em>"</a>-episode2129</li>\r\n<li><ahref=\"https://hackerpublicradio.org/eps.php?id=2143\">"<em>GnuAwk-Part3</em>"</a>-episode2143</li>\r\n<li><ahref=\"https://hackerpublicradio.org/eps.php?id=2163\">"<em>GnuAwk-Part4</em>"</a>-episode2163</li>\r\n<li><ahref=\"https://hackerpublicradio.org/eps.php?id=2184\">"<em>GnuAwk-Part5</em>"</a>-episode2184</li>\r\n<li><ahref=\"https://hackerpublicradio.org/eps.php?id=2238\">"<em>GnuAwk-Part6</em>"</a>-episode2238</li>\r\n<li><ahref=\"https://hackerpublicradio.org/eps.php?id=2330\">"<em>GnuAwk-Part7</em>"</a>-episode2330</li>\r\n<li><ahref=\"https://hackerpublicradio.org/eps.php?id=2438\">"<em>GnuAwk-Part8</em>"</a>-episode2438</li>\r\n<li><ahref=\"https://hackerpublicradio.org/eps.php?id=2476\">"<em>GnuAwk-Part9</em>"</a>-episode2476</li>\r\n</ul></li>\r\n<li>Resources:\r\n<ul>\r\n<li><ahref=\"https://hackerpublicradio.org/eps/hpr2526/full_shownotes.epub\">ePubversionofthesenotes</a></li>\r\n<li><ahref=\"https://hackerpublicradio.org/eps/hpr2526/full_shownotes.pdf\">PDFversionofthesenotes</a></li>\r\n<li><ahref=\"https://hackerpublicradio.org/eps/hpr2526/awk10_ex1.awk\">awk10_ex1.awk</a></li>\r\n<li><ahref=\"https://hackerpublicradio.org/eps/hpr2526/awk10_ex2.awk\">awk10_ex2.awk</a></li>\r\n</ul></li>\r\n</ul>',225,94,1,'CC-BY-SA','Awkutility,Awklanguage,gawk,arrays',0,0,1),
(2527,'2018-04-10','Reviews Vs. Critiques',839,'Lostnbronx contrasts \"reviews\" with \"critiques\", which are not the same things.','<p>Lostnbronx takes a quick look at what it is that constitutes "reviews" of stories (be they books, films, TV shows, audio dramas, whatever) as opposed to "critiques" of them.</p>\r\n<p>How do these two things differ, and what are their purposes? Is one more important than the other? Why does it even matter?</p>',107,105,0,'CC-BY-SA','storytelling,review,critique,lostnbronx,film,writing,audio drama,tv',0,0,1),
(2528,'2018-04-11','CCTV with DARKNET',863,'I got over my current setup for CCTV with Darknet and YOLO','<p>Twitter: @operat0r</p>\r\n<p>DERP SHELL CODE <a href=\"https://rmccurdy.com/scripts/DARKNET\" class=\"uri\">https://rmccurdy.com/scripts/DARKNET</a></p>\r\n',36,0,1,'CC-BY-SA','CCTV,Darknet,YOLO',0,0,1),
(2531,'2018-04-16','Plot And Story',866,'Lostnbronx shares some thoughts about the nature of plot and story in storytelling.','<p>Lostnbronx talks about plot and story, as well as characters and backgrounds, in storytelling of all types. These things are closely tied together, and a problem with one can easily be a problem with all.</p>',107,105,0,'CC-0','storytelling,plot,story,character,background,lostnbronx',0,0,1),
(2529,'2018-04-12','What\'sinmypodcatcher',592,'listingofpodcastsIlistento','<p>Listofpodcastsasreaddirectlyfrommypodcastplayer/catcher-- sorry, no official notes (I will do better next time, I promise).</p>',365,75,1,'CC-BY-SA','podcasts,feed',0,0,1),
(2532,'2018-04-17','Podcrawl Glasgow 2018',1584,'The TuxJam guys introduce and invite the HPR community to join them at Podcrawl Glasgow in July 2018','<h1 id=\"hpr-podcrawl-2018\">HPR Podcrawl 2018</h1>\r\n<p><a href=\"https://twitter.com/thelovebug\"><strong>Dave</strong></a>, <a href=\"https://twitter.com/kevie49\"><strong>Kevie</strong></a>, and <a href=\"https://twitter.com/mcnalu\"><strong>Andrew</strong></a> - hosts of <a href=\"https://tuxjam.otherside.network/\"><strong>TuxJam</strong></a> - take you via a slightly elongated route to an upcoming event.</p>\r\n<h2 id=\"the-event\">The event</h2>\r\n<p><a href=\"https://kmacphail.blogspot.co.uk/2018/02/podcrawl-glasgow-2018.html\"><strong>Podcrawl Glasgow 2018</strong></a> <strong>Saturday 28 July 2018 from 18:00</strong> <strong>starting at The State Bar, Holland Street, G2 4NG</strong></p>\r\n<h2 id=\"daves-mistake\">Dave\'smistake</h2>\r\n<p>Aminorreviewofthe2017eventleavesabittertasteinthemouthoftheBigJessie.</p>\r\n<h2id=\"who-is-the-event-for\">Whoistheeventfor?</h2>\r\n<p>Kevielistsvariousgroupsofpeoplewhomightbeinterestedingoing.Daveaddsacouplemore.SodoesAndrew.Theupshotis:anyonehuman.Oh,andguidedogs.Butprobablynotchildrenafter19:00(it\'s a Scottish pubs/licensing thing).</p>\r\n<h2 id=\"audio-from-the-event\">Audio from the event</h2>\r\n<p>Andrew suggests that we may be able to record or even stream audio from the Podcrawl. Dave apparently is an expert in such things, and tries to impress the others with science. Kevie suggests we wait towards the end of the event when it\'squieter.</p>\r\n<h2id=\"tactical-chunder\">Tacticalchunder</h2>\r\n<p>Daveisreminded-forasecondtime-abouthismishap.Andrewdecidestogointonauseating(pardonthepun)detail.</p>\r\n<h2id=\"how-will-you-find-us\">Howwillyoufindus?</h2>\r\n<p>SomeofuswillbewearingPodcrawlt-shirts,althoughthecompanythatoriginallyproducedthet-shirtssadlyhasgoneoutofbusiness.</p>\r\n<p>AndrewkeepsKenFallonhappybysuggestingthatlistenersrecordaresponsetothisshowwithanysuggestionsaboutrecordingatliveevents.</p>\r\n<p>Kevietellsuswheretheeventwillbe(seethetopofthenotes)</p>\r\n<p>We\'ll be posting through the event on Twitter/GNUsocial/Diaspora with the hashtag #PodcrawlGlasgow. Use any one of these to find out where we\'llbeatanytime.</p>\r\n<p>Non-techypeoplearewelcome.Cigarswillbeprovided.</p>\r\n<p>Ifyou\'re in a band, come along as well... we have plenty of opportunity for promotion of your music!</p>\r\n<p>Andrew reminds us that this is the fifth Podcrawl in Glasgow.</p>\r\n<p>Kevie says that if you\'recomingintoGlasgow<strong>before</strong>18:00,we\'d love to meet up with you beforehand. We believe that all three of us (plus Dave\'sgoodlady)willbetherefromearly/midafternoon.</p>\r\n<h2id=\"contact-us\">ContactUs</h2>\r\n<p>Youcancontactallthreeofusatthesametimeviatuxjam@otherside.network-letusknowyou\'re coming!</p>\r\n<h3 id=\"kevie\">Kevie</h3>\r\n<p>Twitter: <a href=\"https://twitter.com/kevie49\">@kevie49</a><br />\r\nDiaspora: <a href=\"https://diaspora.microdata.co.uk/u/kevie\">kevie@diaspora.microdata.co.uk</a><br />\r\nFediverse: <a href=\"https://community.highlandarrow.com/kevie\">kevie@community.highlandarrow.com</a></p>\r\n<h3 id=\"andrew\">Andrew</h3>\r\n<p>Fediverse: <a href=\"https://mastodon.me.uk/@mcnalu\">mcnalu@mastodon.me.uk</a><br />\r\nTwitter: <a href=\"https://twitter.com/mcnalu\">@mcnalu</a></p>\r\n<h3 id=\"dave\">Dave</h3>\r\n<p>Twitter: <a href=\"https://twitter.com/thelovebug\">@thelovebug</a><br />\r\nFediverse: <a href=\"https://s.wefamlee.be/thelovebug\">thelovebug@s.wefamlee.be</a></p>\r\n<h2 id=\"other-podcasts\">Other podcasts?</h2>\r\n<p>Dave asks Andrew about a podcast featuring three guys talking about Creative Commons and Linux: <a href=\"https://tuxjam.otherside.network/\"><strong>TuxJam</strong></a></p>\r\n<p>Dave asks Kevie about a short-form music podcast featuring a couple of piec
(2533,'2018-04-18','Burp Suite / ABCMouse Game',1504,'I got over my approach for most mobile/web app pentesting','<p><a href=\"https://rmccurdy.com/scripts/videos/rmccurdy_com/HPR_ABC.mp4\" class=\"uri\">https://rmccurdy.com/scripts/videos/rmccurdy_com/HPR_ABC.mp4</a></p>\r\n<p>more burp/android videos:</p>\r\n<ul>\r\n<li><p><a href=\"https://rmccurdy.com/scripts/videos/rmccurdy_com/Star%20Wars%20Galaxy%20of%20Heroes%20Hacking%20Failsause.mp4\">https://rmccurdy.com/scripts/videos/rmccurdy_com/Star%20Wars%20Galaxy%20of%20Heroes%20Hacking%20Failsause.mp4</a></p></li>\r\n<li><p><a href=\"https://rmccurdy.com/scripts/videos/rmccurdy_com/Burp%20Suite%20SSL%20ProxyDroid%20Android%20Hacking%20Games%202017.mp4\">https://rmccurdy.com/scripts/videos/rmccurdy_com/Burp%20Suite%20SSL%20ProxyDroid%20Android%20Hacking%20Games%202017.mp4</a></p></li>\r\n</ul>',36,0,0,'CC-BY-SA','burp suite,android,pentesting',0,0,1),
(2536,'2018-04-23','Lostnbronx examines points-of-view and tenses in storytelling.',1013,'Lostnbronx examines points-of-view and tenses in storytelling.','<p>Lostnbronx takes a breezy look at narrative points-of-view, as well as temporal tenses in storytelling. What are they, how do they differ, and why might one be better than another in a particular situation?</p>',107,105,0,'CC-0','storytelling,stories,pov,tense,writing,lostnbronx',0,0,1),
(2534,'2018-04-19','Moving to Office 365 (and painting the ceiling)',1888,'Knightwise talks about moving his company email to Office 365','<p>A couple of weeks ago we moved to a new house and I had some time on my hands to talk to you guys while painting the ceiling. Moving was very much on the forefront of my mind since I also recently moved my company\'sEmailplatformtoOffice365.AsacrossplatformsliderwithafootineachmajoroperatingsystemIdecidedtogiveyoumyfirstimpressionsofthenewplatform(andupsettheGNU-purists)withmyreview.</p>',111,0,0,'CC-BY-SA','office,microsoft,windows,365,move,Migrate,google,Gmail',0,0,1),
(2537,'2018-04-24','Recording HPR on the fly Part II',208,'In which I update the recommendation from HPR 1877: Just use Audio Recorder!','<p>This is an update to <a href=\"https://hackerpublicradio.org/eps.php?id=1877\">hpr1877 :: Recording HPR on the fly on your Android phone</a>. I thought that was two years ago, but wow it\'seventwoandahalfyearsago,backinlate2015.</p>\r\n<p>Updatedrecommendation!Backin#1877 I said that you could go with this app because it has these nice functions, or with that app because it has these other things. Well, there\'s no longer any need for trade-offs. Just go to f-droid, install \r\n<a href=\"https://f-droid.org/packages/com.github.axet.audiorecorder/\">Audio Recorder</a> and you\'re good to go!</p>\r\n<p>I installed it in two minutes, recorded a two-minute episode on how great it seems to be, and then I recorded another three episodes and I can confirm that it\'s pretty great. You\'ve got the record/pause control available on the lock screen, it can save in FLAC, you can define the naming pattern it should use for the files, and you can tell it where to store its files.</p>\r\n<p>Some apps just insist on saving everything in internal storage, and that can run out pretty quick. Meanwhile I\'ve got 30 GB left on my SD card that I\'m struggling to make apps make use of.</p>\r\n<p>And finally, it also has a rename function (unlike my previous recommendation uRecord!), so you can conveniently, right in the app without finding the files through some other means, change the file name to reflect what it was that you were recording, so that you\'re not in the situation where one month later you\'re looking at a dozen files with just dates and times and need to listen to all of them to figure out which one it is you want.</p>\r\n<p>It even has an automatic skip silence function, but that\'s pretty useless for the places I record in. :-D</p>\r\n<p>When I said \"cool waveform\" I meant that it\'s displaying the recorded waveform on the screen as it records. Not that useful, but it\'s just part of the overall really nice polish of the app.</p>',311,0,0,'CC-BY-SA','android, recording, hpr',0,0,1),
(2538,'2018-04-25','My geeky plans for the new house.',1613,'Knightwise talks about the new geek infrastructure in his house','<p>Moving house gives you plenty of possibilities. While painting the Living room I talk about the geeky infrastructure of my new house and how I plan to set it up.</p>',111,0,1,'CC-BY-SA','ubiquity, wifi, network, firewall, server',0,0,1),
(2542,'2018-05-01','How I helped my dad run a static website using SparkleShare',728,'In which I describe my setup of SparkleShare and GitLab Pages to maintain a static website','<p>My <a href=\"https://social.heldscal.la/clacke/tag/hprep\">#hprep</a> tag up on Heldscalla serves as inspiration for times like this, when I should just record something while I have the chance. Suggest more topics for me to orate about and I\'llputthemupthere!</p>\r\n<p>InthisepisodeI\'m talking about how I\'vesetup<ahref=\"https://www.sparkleshare.org/\">SparkleShare</a>(websitecurrentlydown,trythe<ahref=\"https://web.archive.org/web/20180320114552/https://www.sparkleshare.org/\">archivedsite</a>ifit\'s still down when you\'rereadingthis)and<ahref=\"https://about.gitlab.com/features/pages/\">GitLabPages</a>toallowmydadtotinkerwithastaticwebsitelocallyonhismachineandautomaticallygetthechangesupontheofficialURLwithouthavingtobotherwithanymanualsteps(atleastonthehappypath).</p>\r\n<p>Errata:Oops,IsaidJekyllusesPython.ItusesRuby.</p>\r\n<p>TL;DL:Wehavetwodirectories,twogitrepos.Hedoesn\'t have to know about git. He plays around in the staging directory first, looks at the test site how it turned out, when he\'shappyhejustcopiesthefilesovertotheproductiondirectoryandtheygolive.SparkleShareautomaticallypushesto<ahref=\"https://gitlab.com/\">gitlab.com</a>(Ididn\'t say it outright in the episode, but yeah, I\'musingthehostedservice-- that\'s basically the point of this mode of doing things, minimal setup, responsibility and maintenance for me), and GitLab CI runs <a href=\"https://jekyllrb.com/\">Jekyll</a> (use the static site generator of your choice) to copy files over for deploying, and finally GitLab Pages deploys the new site.</p>\r\n<p>I believe all of this took me less than two hours to set up, effective time, once I got around to it (and was in the same time zone as my dad\'s computer). Don\'t forget to add your verification TXT record in the DNS.</p>',311,0,0,'CC-BY-SA','sparkleshare, static website, gitlab pages',0,0,1),
(2547,'2018-05-08','MSYS2',657,'In which I talk briefly about the history of MSYS2 and Cygwin and why you might want MSYS2','<p>In the beginning there was <a href=\"https://cygwin.com/\">Cygwin</a>, by <a href=\"https://en.wikipedia.org/wiki/Cygnus_Solutions\">Cygnus Solutions</a> (later acquired by Red Hat), then came <a href=\"https://mingw.org/wiki/msys\">msys</a>, a lightweight derivative with no package manager, no fancy integration tools, just the bare minimum necessary to support a gcc compiler and the GNU autotools.</p>\r\n<p><a href=\"https://www.msys2.org/\">msys2</a> is cygwin minus the package manager plus an adaptation of the <a href=\"https://www.archlinux.org/pacman/\">pacman</a> package manager from <a href=\"https://www.archlinux.org/\">Arch</a>, and a big archive of packages of all kinds. It offers a friendlier command-line experience than Cygwin does.</p>\r\n<p>I failed to mention here that msys was explicitly made to support the <a href=\"https://mingw.org/\">MinGW</a> (Minimalist GNU for Windows) flavor of GCC, which is intended for building native Windows applications. GCC for Windows has two types of output, <code>cygwin</code> or <code>mingw</code>, where <code>cygwin</code> is for source code that expects POSIX-y facilities and <code>mingw</code> is for code that should compile (possibly with some minor adjustments for C dialect) equally well under GCC and Microsoft Visual C, and should produce about the same output.</p>',311,0,0,'CC-BY-SA','msys2, cygwin, windows, command-line, pacman, package manager',0,0,1),
(2552,'2018-05-15','What is stow?',721,'How does stow work, why would you want it and what are its limitations?','<p><a href=\"https://www.gnu.org/software/stow/\">stow</a> was perfected in 2002 with stow 1.3.3. Then it was silent for 9 years, and in 2011 stow 2.1.0 came out. It received a few updates until stow 2.2.2 in 2015, but don\'tworry.It\'s still relevant, and it won\'teatyourhomework.Idon\'t even know what these 2.x versions are about. You still just <code>stow mything</code>, <code>stow -R mything</code> and <code>stow -D mything</code> like you always did.</p>\r\n<p>If stow is too limiting to you, listen to <a href=\"https://hackerpublicradio.org/eps.php?id=2198\">hpr2198 :: How awesome is Guix and why will it take over the world</a> about its big brother, which has all of the advantages of stow except radical simplicity, and none of the drawbacks.</p>\r\n<p>For a shorter and more practical episode on Guix, see <a href=\"https://hackerpublicradio.org/eps.php?id=2308\">hpr2308 :: Everyday package operations in Guix</a>.</p>\r\n',311,0,0,'CC-BY-SA','stow, package manager',0,0,1),
(2540,'2018-04-27','28 - TLS 1.3',1122,'TLS 1.3 is the newest protocol standard for secure communications on the Web.','<p>TLS 1.3 was just adopted, and it provides improved security for all Web communications. We take a look at what the protocol says and look at the controversies around its adoption. <a href=\"https://www.zwilnik.com/?page_id=980\" class=\"uri\">https://www.zwilnik.com/?page_id=980</a></p>\r\n<h3 id=\"links\">Links:</h3>\r\n<ul>\r\n<li><a href=\"https://www.theregister.co.uk/2017/02/27/blue_coat_chokes_on_chrome_encryption_update/\" class=\"uri\">https://www.theregister.co.uk/2017/02/27/blue_coat_chokes_on_chrome_encryption_update/</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/POODLE\" class=\"uri\">https://en.wikipedia.org/wiki/POODLE</a></li>\r\n<li><a href=\"https://www.cyberscoop.com/tls-1-3-weakness-financial-industry-ietf/\" class=\"uri\">https://www.cyberscoop.com/tls-1-3-weakness-financial-industry-ietf/</a></li>\r\n<li><a href=\"https://tlseminar.github.io/tls-13/\" class=\"uri\">https://tlseminar.github.io/tls-13/</a></li>\r\n<li><a href=\"https://twit.tv/shows/security-now\" class=\"uri\">https://twit.tv/shows/security-now</a></li>\r\n<li><a href=\"https://www.sophos.com/en-us/company/podcasts.aspx\" class=\"uri\">https://www.sophos.com/en-us/company/podcasts.aspx</a></li>\r\n<li><a href=\"https://www.schneier.com\" class=\"uri\">https://www.schneier.com</a></li>\r\n<li><a href=\"https://blog.cryptographyengineering.com\" class=\"uri\">https://blog.cryptographyengineering.com</a></li>\r\n<li><a href=\"https://www.zwilnik.com/?page_id=980\" class=\"uri\">https://www.zwilnik.com/?page_id=980</a></li>\r\n</ul>',198,74,0,'CC-BY-SA','Ephemeral Diffie-Hellman, Encryption, TLS',0,0,1),
(2541,'2018-04-30','Microphone Wind Screen Demo',384,'Lostnbronx demonstrates the effectiveness of his new microphone wind screen.','<p>This is just a quick demo of my new microphone wind screen muff. Though you can still hear some wind noise getting through when especially sharp gusts roll by, I think you\'llagreethedifferencewithandwithoutthescreenisdramatic.</p>\r\n<p>TheMovoisnotperfect,andwillnotstopallwindnoiseonaveryblusteryday,butthiskindofscreenisessentialforoutdoorrecording.TheonlyeditingIdidonthistrackwasafade-inandout,andtranscodingitfromwavtoflac(whichwasthentranscodedatHPRintootherformats).</p>\r\n<hr/>\r\n<ul>\r\n<li><p>RECORDER:TascamDR-40DigitalRecorder<br/>\r\n<ahref=\"https://tascam.com/product/dr-40/\"class=\"uri\">https://tascam.com/product/dr-40/</a></p></li>\r\n<li><p>WINDSCREEN:MovoWS9FurryOutdoorMicrophoneWindscreenMuff(PortableDigitalRecorders)<br/>\r\n<ahref=\"https://www.movophoto.com/products/movo-ws9-furry-outdoor-microphone-windscreen-portable-recorders\"class=\"uri\">https://www.movophoto.com/products/movo-ws9-furry-outdoor-microphone-windscreen-portable-recorders</a></p></li>\r\n</ul>',107,0,0,'CC-BY-SA','recording,windscreen,muff,outdoors,lostnbronx',0,0,1),
(2557,'2018-05-22','Styx -- The Purely Functional Static Site Generator',832,'For the Fractalide web site, we are using Styx as a site generator. Here\'sabitofhowandwhy.','<p>Iswitchedphones,andcomplainedaboutthemicrophone.ItprobablymadeagreaterdifferencethatIwasrecordingin16kHzVorbis,becauseIwasonafreshinstallofAudioRecorder.Alwaysdouble-checkyoursettings,andapologiesforthequality.</p>\r\n\r\n<hr/>\r\n<p>Iamcurrentlyintheprocessofconverting<ahref=\"https://github.com/fractalide/fractalide-website-styx/\"target=\"_blank\">ourwebsite</a>from<ahref=\"https://gohugo.io/\"target=\"_blank\">Hugo</a>toStyx.</p>\r\n\r\n<p><ahref=\"https://styx-static.github.io/styx-site/\"target=\"_blank\">Styx</a>issstaticsitegeneratorwrittenentirelyinthe<ahref=\"https://nixos.org/nix/\"target=\"_blank\">Nix</a>language.Itisabletofigureoutexactlywhatpagesneedtoberebuiltdependingonwhatyouchangedinyourpagesourceanddatasources,andallintermediateresultsarestoredintheNixstore.</p>\r\n\r\n<p>Theparsingof<ahref=\"https://www.methods.co.nz/asciidoc/\"target=\"_blank\">AsciiDoc</a>and<ahref=\"https://fletcherpenney.net/multimarkdown/\">(multi)Markdown</a>isdonebyexternaltools,butthetemplatingandlayoutsisallNix.</p>\r\n\r\n<p>IthoughtImayhavedreamedthebitabout<ahref=\"https://nest.pijul.com/pmeunier/nix-rust\"target=\"_blank\">carnix</a>or<ahref=\"https://github.com/NixOS/nixpkgs/blob/master/pkgs/build-support/rust/default.nix\"target=\"_blank\">buildRustPackage</a>parsingTOMLwithinNix,becauseIcouldn’tfindanyevidenceofthemeverhavingdonethat.ButthenIdiscovereditwasin<ahref=\"https://github.com/mozilla/nixpkgs-mozilla/blob/master/lib/parseTOML.nix\"target=\"_blank\">nixpkgs-mozilla</a>Ihadseenit!That’sMozilla’soverlayfornixpkgs,whichmakesRustNightlyalwaysavailableinNix,soit’skindofNix’s<ahref=\"https://www.rustup.rs/\"target=\"_blank\">rustup</a>equivalent.Soyeah,IguessIhaddreamedwhodidit,butnotthat<em>somebody</em>didit.:-)</p>\r\n',311,0,0,'CC-BY-SA','nix,styx,staticsitegenerator',0,0,1),
(2543,'2018-05-02','Home Theater - Part 1 Hardware',530,'I go over my Home Theater / Media setup starting with Hardware','<ul>\r\n<li><p>Onkyo TX-NR575 7.2 Channel Network A/V Receiver<br />\r\n<a href=\"https://www.amazon.com/Onkyo-TX-NR575-Channel-Network-Receiver/dp/B06XVFY3M8\" class=\"uri\">https://www.amazon.com/Onkyo-TX-NR575-Channel-Network-Receiver/dp/B06XVFY3M8</a></p></li>\r\n<li>Onkyo Android App<br />\r\n</li>\r\n<li><p>Zoomtak 2.4G Wireless Mini Keyboard Multifunctional Backlit with Infrared Remote Learning for Android Tv Box, IPTV,HTPC, PS3, Xbox 360, Windows, MAC, Linux OS<br />\r\n<a href=\"https://www.amazon.com/gp/product/B06VW7XFQZ\" class=\"uri\">https://www.amazon.com/gp/product/B06VW7XFQZ</a></p></li>\r\n<li><p>CyberPower CP1500AVRLCD Intelligent LCD UPS System, 1500VA/900W, 12 Outlets, AVR, Mini-Tower<br />\r\n<a href=\"https://smile.amazon.com/gp/product/B000FBK3QK\" class=\"uri\">https://smile.amazon.com/gp/product/B000FBK3QK</a></p></li>\r\n<li><p>PowerPanel Conf file:</p></li>\r\n</ul>\r\n<pre><code>cat /etc/pwrstatd.conf\r\npowerfail-delay = 60\r\npowerfail-active = yes\r\npowerfail-cmd-path = /usr/local/bin/pwrstatd-powerfail.sh\r\npowerfail-duration = 0\r\npowerfail-shutdown = no\r\n\r\nlowbatt-delay = 30\r\nlowbatt-active = yes\r\nlowbatt-cmd-path = /usr/local/bin/pwrstatd-lowbatt.sh\r\nlowbatt-duration = 0\r\nlowbatt-shutdown = yes\r\nenable-alarm = yes\r\nshutdown-sustain = 60\r\nturn-ups-off = yes\r\nlowbatt-threshold = 15\r\n\r\nups-polling-rate = 1\r\nups-retry-rate = 10\r\nprohibit-client-access = no</code></pre>\r\n<ul>\r\n<li><p>Bluetooth Receiver Transmitter, Keedox V4.0 Bluetooth Music Receiver Transmitter Wireless Audio Receiver Stereo Transmitter with aptx for Headphones Car TV<br />\r\n<a href=\"https://smile.amazon.com/gp/product/B00VJTIMIS/\" class=\"uri\">https://smile.amazon.com/gp/product/B00VJTIMIS/</a></p></li>\r\n<li><p>iRunzo NFC Foldable On Ear Wireless Bluetooth Headset Sports Headphones with Microphone Bass Stereo CSR4.1 180 Days Standby Gym Pedometer APP 3.5mm AUX Cable for iPhone Mac iPad Black<br />\r\n<a href=\"https://smile.amazon.com/gp/product/B01JU59W3Q\" class=\"uri\">https://smile.amazon.com/gp/product/B01JU59W3Q</a></p></li>\r\n</ul>',36,0,0,'CC-BY-SA','Home Theater',0,0,1),
(2544,'2018-05-03','How I prepared episode 2493: YouTube Subscriptions - update',1978,'In show 2493 I listed some of my YT subscriptions - here\'show','<h1id=\"how-i-prepared-episode-2493-youtube-subscriptions---update\">HowIpreparedepisode2493:YouTubeSubscriptions-update</h1>\r\n<h2id=\"introduction\">Introduction</h2>\r\n<p>Inshow<ahref=\"https://hackerpublicradio.org/eps.php?id=2493\"title=\"YouTube Subscriptions - update\">2493</a>IlistedanumberoftheYouTubechannelsIwatch.SomeofwhatIdidtopreparethenoteswastocutandpasteinformationfromYouTubepages,butthebasiclistitselfwasgeneratedprogrammatically.IthoughttheprocessIusedmightbeofinteresttosomebodysoIamdescribingithere.</p>\r\n<h2id=\"components\">Components</h2>\r\n<p>IneededfourcomponentstoachievewhatIwanted:</p>\r\n<ul>\r\n<li><ahref=\"https://www.youtube.com/subscription_manager\"title=\"YouTube Subscription Manager page\">YouTubesubscriptionlist</a>(onlyavailableinOPMLformatasfarasIknow)</li>\r\n<li>The<ahref=\"https://xmlstar.sourceforge.net/doc/UG/xmlstarlet-ug.html\"title=\"xmlstarlet documentation\"><code>xmlstarlet</code></a>tooltoparsetheOPML</li>\r\n<li><ahref=\"https://www.template-toolkit.org/\"title=\"Template Toolkit\">TemplateToolkit</a>whichIusedtogenerateMarkdown</li>\r\n<li>The<code>pandoc</code>documentconvertertooltogenerateHTML</li>\r\n</ul>\r\n<p>Iwilltalkalittleaboutthefirstthreecomponentsinthisepisodeinordertoprovideanoverview.</p>\r\n<h2id=\"full-length-notes\">Full-lengthnotes</h2>\r\n<p>Thefull-lengthnotes(available<ahref=\"https://hackerpublicradio.org/eps/hpr2544/full_shownotes.html\">here</a>)containdetailsoftheprocessesinvolvedinbuildingthelistofchannels.</p>\r\n<h2id=\"links\">Links</h2>\r\n<ul>\r\n<li>YouTube<ahref=\"https://www.youtube.com/subscription_manager\"><em>SubscriptionManager</em></a>page</li>\r\n<li>The<ahref=\"https://xmlstar.sourceforge.net/doc/UG/xmlstarlet-ug.html\"><code>xmlstarlet</code></a>manual(HTML,singlepage)</li>\r\n<li><ahref=\"https://www.template-toolkit.org/\"><em>TemplateToolkit</em></a>\r\n<ul>\r\n<li><ahref=\"https://www.template-toolkit.org/docs/manual/Plugins.html#section_Datafile\"><code>Template::Plugin::Datafile</code></a></li>\r\n<li><ahref=\"https://www.template-toolkit.org/docs/manual/VMethods.html#method_replace\">TemplateToolkit<code>replace</code>virtualmethod</a></li>\r\n</ul></li>\r\n<li>The<ahref=\"https://pandoc.org/\"><code>pandoc</code></a>documentconverter</li>\r\n<li>PreviousHPRshowsreferredto:\r\n<ul>\r\n<li><ahref=\"https://hackerpublicradio.org/eps.php?id=2202\"><em>hpr2202::MakersonYouTube</em></a></li>\r\n<li><ahref=\"https://hackerpublicradio.org/eps.php?id=2493\"><em>hpr2493::YouTubeSubscriptions-update</em></a></li>\r\n</ul></li>\r\n<li>Resources:\r\n<ul>\r\n<li><ahref=\"https://hackerpublicradio.org/eps/hpr2544/full_shownotes.html\">Detailednotes</a></li>\r\n<li>Exampletemplatefile:<ahref=\"https://hackerpublicradio.org/eps/hpr2544/yt_template.tpl\">yt_template.tpl</a></li>\r\n</ul></li>\r\n</ul>\r\n',225,0,1,'CC-BY-SA','YouTube,OPML,XML,xmlstarlet,TemplateToolkit',0,0,1),
(2548,'2018-05-09','Single Vs Multiple Characters',1050,'Lostnbronx looks at why single or multiple main characters are better in stories.','<p>Lostnbronx goes over the narrative technique of using one main character to tell a story, as opposed to using multiple characters. What advantage, if any, does so-called "head-hopping" have, over focusing on a single character at a time? Why is it sometimes better to do the opposite? And how can these different construction elements impact the story as a whole?</p>\r\n',107,105,0,'CC-BY-SA','storytelling,writing,characters,lostnbronx',0,0,1),
(2549,'2018-05-10','DVD ripping using old hardware',314,'How I put an older machine and a little cash to repurpose it.','<ol type=\"1\">\r\n<li>Had a tower with a bad motherboard.</li>\r\n<li>Wife found one at the Savers (Goodwill) for $8</li>\r\n<li>Board worked, but had no video</li>\r\n<li>Bought a 8mb video card for $10</li>\r\n<li>Power supply fan seized, $10,\r\n<ul>\r\n<li>Got a warning about danger of opening up a power supply.</li>\r\n</ul></li>\r\n<li>Distro should be on a USB key, and run headless\r\n<ul>\r\n<li>Easy way to back up the system</li>\r\n</ul></li>\r\n<li>Had Arch installed, no 32 bit support after end of 2017</li>\r\n<li>Installed Slackware, only working distribution for my hardware\r\n<ul>\r\n<li>Found it useful to have a script to chroot from the install media to the Slackware install.</li>\r\n<li>Added a boot delay to mkinitrc for usb, otherwise it would boot with a message about not finding <code>/mnt</code> in <code>/etc/fstab</code></li>\r\n</ul></li>\r\n<li>Set up ssh with alternative port</li>\r\n<li>Installed mplayer and tmux, and ripit with sbopkg\r\n<ul>\r\n<li>Mplayer to rip streams for movies and shows</li>\r\n<li>Tmux is my favorite for resuming from a different PC or mobile</li>\r\n</ul></li>\r\n<li>Needed a way to rip any media regardless of encryption\r\n<ul>\r\n<li>Only need libdvdcss to read</li>\r\n<li>Includes Disney (Star Wars, Tron)</li>\r\n</ul></li>\r\n<li>CD ripping was a bonus\r\n<ul>\r\n<li>Ripit to rip CDs</li>\r\n</ul></li>\r\n<li>Scripts are on Github</li>\r\n</ol>\r\n<p><a href=\"https://github.com/ricemark20/CD-DVD-ripping-on-Slackware\" class=\"uri\">https://github.com/ricemark20/CD-DVD-ripping-on-Slackware</a></p>\r\n<ol start=\"14\" type=\"1\">\r\n<li>Happy ripping!</li>\r\n</ol>',318,0,0,'CC-BY-SA','ripping, movies, hardware, repurpose',0,0,1),
(2550,'2018-05-11','Howto get started playing RPGs',1519,'Lostnbronx and Klaatu tag-team an intro to tabletop role-playing games [RPG]','<p>\r\nHave you ever wanted to start playing a tabletop RPG, but weren't sure where to start? In this one-hour episode, Lostnbronx and Klaatu introduce you to role-playing games, including what you need to have in order to get started, how to build a character, what a game session is like, and how to find other people to play with.\r\n</p>\r\n\r\n<p>\r\nSome resources mentioned in this episode:\r\n</p>\r\n\r\n<ul>\r\n<li>\r\n<p>The easy way in: <strong>Dungeons & Dragons</strong> 5th Edition <a href=\"https://dnd.wizards.com/products/tabletop-games/rpg-products/rpg_playershandbook\" target=\"_blank\">Player's Handbook</a></p>\r\n</li>\r\n<li>\r\n<p>A collection of free RPG systems <a href=\"https://brentnewhall.com/games/doku.php?id=start\" target=\"_blank\">Brent P. Newhall's Musæum of Fantastic Wonders</a>\r\n</p>\r\n</li>\r\n\r\n<li>\r\n<p>\r\nThe <a href=\"https://opend6.wikidot.com/d6-system-book\" target=\"_blank\">OpenD6</a> system is a free and open and very flexible game using only standard 6-sided die</p>\r\n</li>\r\n\r\n<li><p>\r\n<a href=\"https://www.dmsguild.com/product/175358/Caves-of-Shadow-30\" target=\"_blank\"> </a> is a good, albeit dated, introduction to RPG modules and gameplay in general. It won\'texactlyfitanythingyouplay,butreadingitthroughmightclarifyhowatypicalgameworks(and actually it's pretty easy to adapt into a modern game like <a href=\"https://paizo.com\" target=\"_blank\">Pathfinder</a> or D&D, if you want.).\r\n</p>\r\n</li>\r\n<li>\r\n<p>\r\nKlaatu has a weekly podcast called <a href=\"https://mixedsignals.ml/cnc\">Chronicles & Commons</a>, wherein he talks about fantasy [Creative Commons and public domain] folklore in the context of RPG gaming (which in turn is discussed in context of storytelling).</p>\r\n</li> \r\n</ul>\r\n',78,95,0,'CC-BY-SA','rpg,intro,howto,tutorial,dnd,pathfinder,opend6,ogl',0,0,1),
(2551,'2018-05-14','Calibrating Calibration',1519,'NYbill talks about calibration issues with the Siglent SDS1202X-E oscilloscope','<p>NYbill talks about the Siglent SDS1202X-E oscilloscope and the calibration pitfalls of the BA model over the newer BB model.</p>\r\n<p>Pics for the episode:</p>\r\n<p><a href=\"https://media.gunmonkeynet.net/u/nybill/collection/siglent-sds1202x-e/\" class=\"uri\">https://media.gunmonkeynet.net/u/nybill/collection/siglent-sds1202x-e/</a></p>',235,0,0,'CC-BY-SA','test gear, electronics, oscilloscope',0,0,1),
(2553,'2018-05-16','Get ahead with git HEAD',2802,'Klaatu helps you understand git HEAD','<p>This episode is light on actual commands, and mostly a narrative analysis of what git HEAD is and why it matters to you.</p>\r\n<p>Some commands you can try:</p>\r\n<pre><code>$ cat ~/path/to/git/repo/.git/HEAD</code></pre>\r\n<p>and</p>\r\n<pre><code>$ ls ~/path/to/git/repo/.git/refs\r\n$ cat ~/path/to/git/repo/.git/refs/master</code></pre>\r\n',78,104,0,'CC-BY-SA','git, HEAD, branch, refs',0,0,1),
(2556,'2018-05-21','Building trust',2549,'Quasi-philosophical musing about how trust is built both online and in real life','<p>\r\nWhat is trust? How do you get it? How can you exploit it? How can you keep from being exploited?\r\n</p>\r\n',78,74,0,'CC-BY-SA','trust,social engineering,gpg,pgp,community',0,0,1),
(2572,'2018-06-12','What\'sinmytoolkit',342,'ListingofitemsIcarryfordailyuse','<ul>\r\n<li>Thebagisa<ahref=\"https://www.ebay.com/itm/Dell-Laptop-Backpack/253469390106?hash=item3b03f3f51a:g:RL8AAOSw8GFanVvM\">Dellbackpacklaptopcarrier</a>\r\n<ul>\r\n<li>has5pockets\r\n<ul>\r\n<li>2smallsidepockets</li>\r\n<li>smallfrontaccessorypockets</li>\r\n<li>mediummiddletoolpockets</li>\r\n<li>largemainpocketwithinteriorzipperedpocketthepaddedlaptopsectioniswellpaddedandroomyenoughfor2slim15"laptops</li>\r\n</ul></li>\r\n</ul></li>\r\n<li><ahref=\"https://www.ebay.com/itm/Asus-Z45C-Laptop/142330164679?hash=item212389f5c7:g:5O4AAOSwCU1Y3AAz\">AsusZ54C(W/120GbSSD/4GbRam)laptoprunningSabayonlinux</a></li>\r\n<li><ahref=\"https://www.ebay.com/itm/Dell-Latitude-E5570-Intel-Core-i5-2-4Ghz-8GB-Ram-500GB-HDD-Laptop/263560830328?hash=item3d5d731d78:g:jnkAAOSwC2JasSjw\">Dell5570laptopforwork-sometimesrunningWin10enterprise/pro</a>chargersforboth,</li>\r\n<li><p><ahref=\"https://www.ebay.com/itm/Sony-MDR-ZX110NC-Noise-Cancelling-Headphones/252814825699?epid=17011373240&hash=item3adcf018e3:g:pgkAAOSw4shYAQgD\">Sonynoisecancellingheadphones</a></p></li>\r\n<li>Logitechwirelessmouse</li>\r\n<li>magliteledflashlight</li>\r\n<li><p><ahref=\"https://www.tools-plus.com/lutz-2-in-1y.html?gclid=Cj0KCQjwqM3VBRCwARIsAKcekb0tCh30lJCOGwOzGFfqfckcc6QEk1PxKiPyuSnDs9iAQlIJC-e1Fn8aAgHpEALw_wcB\">multitipscrewdriver1philips,1flathead</a></p></li>\r\n<li><ahref=\"https://www.ebay.com/itm/Stanley-Screwdriver-6-Tips-Set-Torque-6-In-1-Tool-Ratchet-1-2-Phillips-Multi-Bit/162915167799?_trkparms=aid%3D111001%26algo%3DREC.SEED%26ao%3D1%26asc%3D50426%26meid%3D375bb4c6758d42d0b94838e831253e4d%26pid%3D100675%26rk%3D5%26rkt%3D15%26sd%3D183131337955%26itm%3D162915167799&_trksid=p2481888.c100675.m4236&_trkparms=pageci%3A07d9a40b-2e08-11e8-b1de-74dbd180ae05%7Cparentrq%3A4f348a1f1620aa479d83a59cffffe77d%7Ciid%3A1\">6tipscrewdriver2xphilips2xflathead2xnutdrivers</a></li>\r\n<li><ahref=\"https://www.ebay.com/itm/Impact-punch-down-tool-blade-110-66-network-wire-punch-down-cable-cat5e-cat6/121654946839?hash=item1c53332c17:g:7usAAOSwAYtWQI75\">punchdowntool</a></li>\r\n<li>shammycloth</li>\r\n<li>folderforpaperwork/currenttasks</li>\r\n<li>onesubjectnotebook</li>\r\n<li>asstdpens&mechanicalpencils</li>\r\n<li>wallwartphonecharger</li>\r\n<li>microUSBcable</li>\r\n<li>LightningUSBcable</li>\r\n<li>26"velcrotiestraps</li>\r\n<li>15\' ethernet patch cable,</li>\r\n<li>10\'ethernetpatchcable</li>\r\n<li>7\' ethernet patch cable</li>\r\n<li>5\'ethernetpatchcable</li>\r\n<li>2x3\' ethernet patch cable</li>\r\n<li>6" ethernet patch cable</li>\r\n<li>laptop lock cable</li>\r\n<li>USB to ethernet adapter</li>\r\n<li>6\'HDMIcable</li>\r\n<li>DisplayporttoDVI-Dadapter</li>\r\n<li>digitalvoicerecorder</li>\r\n<li>portablepowerpack/charger(gimmiefromWiredMag)</li>\r\n<li>2x16GBusbthumbdrives\r\n<ul>\r\n<li>1blank</li>\r\n<li>1portableappstoolsincludinglibreoffice,andwireshark</li>\r\n</ul></li>\r\n<li><p>6\' power strip/ surge protector</p></li>\r\n<li>Reading glasses</li>\r\n<li>alcohol prep wipes</li>\r\n<li>latex gloves</li>\r\n<li>Band aids</li>\r\n<li><p>Excedrin bottle and migraine meds 1/2 dose for emergencies</p></li>\r\n</ul>\r\n<p>If I expand the definition of tool kit to include the tool box on my pickup truck, I also have...</p>\r\n<ul>\r\n<li>10\'telephonecord</li>\r\n<li>analoguetelephone(princesstyle)fortesting</li>\r\n<li>3spareusbkeyboards1spareps/2keyboards</li>\r\n<li>2usbmice</li>\r\n<li>2x6\' dvi-d cables</li>\r\n<li>adjustable wrench</li>\r\n<li>pliers</li>\r\n<li>needle nose pliers</li>\r\n<li>craftsman precision screwdriver set</li>\r\n<li><p>X-acto knife set</p></li>\r\n<li>socket set</li>\r\n<li>Ratchet straps</li>\r\n<li>50\'cottonbondrope1/2"diameter</li>\r\n<li>50\' nylon 1/2" rope</li>\r\n<li>7\'x8\' medium weight tarp</li>\r\n<li>Fluke #117 m
(2554,'2018-05-17','Gnu Awk - Part 11',1686,'In part 11 of the series, we string and number built-in functions','<h1>Awk Part 11</h1>\r\n\r\n<p>Gnu Awk Documentation: <a href=\"https://www.gnu.org/software/gawk/manual/gawk.html#String-Functions\">https://www.gnu.org/software/gawk/manual/gawk.html#String-Functions</a></p>\r\n\r\n<h2>Numerical functions</h2>\r\n\r\n<ul>\r\n<li>atan2: arctangent of y / x in randians</li>\r\n<li>cos: cosine of x in radians</li>\r\n<li>exp: e<sup>x</sup></li>\r\n<li>int: floor float to int</li>\r\n<li>log: natrual log</li>\r\n<li>randn: (pseudo) random number between 0 and 1</li>\r\n<li>sin: sine of x in radians</li>\r\n<li>sqrt: square root</li>\r\n<li>srand: (pseudo) random between 0 and 1, manually setting the seed</li>\r\n</ul>\r\n\r\n\r\n<h2>String functions</h2>\r\n\r\n<ul>\r\n<li>asort: array sort. Returns array with the values sorted</li>\r\n<li>asori: array sort. Returns array with the keys (index) sorted</li>\r\n<li>gensub: Search the target string target for matches of the regular expression regexp. Returns string with substituted text.</li>\r\n<li>gsub: Search target for all of the longest, leftmost, nonoverlapping matching substrings it can find and replace them with replacement. Returns string with substituted text.</li>\r\n<li>sub: Search target, which is treated as a string, for the leftmost, longest substring matched by the regular expression regexp. Returns string with substituted text.</li>\r\n<li>index: Search the string in for the first occurrence of the string find. Returns the position where that occurence begins</li>\r\n<li>length: returns length of string</li>\r\n<li>match: Search string for the longest, leftmost substring matched by the regular expression regexp and return the character position (index) at which that substring begins.</li>\r\n<li>split: Divide string into pieces delimted by field separator. Returns an array of strings</li>\r\n<li>sprintf: Allows you to store the a string in the that would have been the output of printf into a variable</li>\r\n<li>strtonum: Turn octal representation to number</li>\r\n<li>substr: Substring starting at position x for length of y. Returns string</li>\r\n<li>tolower: Lower-case the string</li>\r\n<li>toupper: Upper-case the string</li>\r\n</ul>\r\n\r\n\r\n<h2>References</h2>\r\n\r\n<ul>\r\n<li>Trigonometric functions: <a href=\"https://en.wikipedia.org/wiki/Trigonometric_functions\">https://en.wikipedia.org/wiki/Trigonometric_functions</a></li>\r\n<li>Psuedo random number seed: <a href=\"https://en.wikipedia.org/wiki/Random_seed\">https://en.wikipedia.org/wiki/Random_seed</a></li>\r\n<li>Natural log to log 10: <a href=\"https://math.stackexchange.com/questions/107574/from-natural-log-to-log-base-10#107576\">https://math.stackexchange.com/questions/107574/from-natural-log-to-log-base-10#107576</a></li>\r\n</ul>',300,94,0,'CC-BY-SA','bash, linux, awk',0,0,1),
(2826,'2019-06-03','HPR Community News for May 2019',3497,'HPR Volunteers talk about shows released and comments posted in May 2019','<style>\ntable td.shrink {\n white-space:nowrap\n}\n</style>\n\n<h2>New hosts</h2>\n<p>\nWelcome to our new hosts: <br />\n\n <a href=\"https://hackerpublicradio.org/correspondents/0376.html\" target=\"_blank\">Joel D</a>, \n <a href=\"https://hackerpublicradio.org/correspondents/0377.html\" target=\"_blank\">Zen_Floater2</a>.\n</p>\n\n<h2>Last Month\'sShows</h2>\n<tableid=\"t01\">\n<tr>\n<th>Id</th>\n<th>Day</th>\n<th>Date</th>\n<th>Title</th>\n<th>Host</th>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=2803\"target=\"_blank\">2803</a></strong></td>\n<td>Wed</td>\n<tdclass=\"shrink\">2019-05-01</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=2803\"target=\"_blank\">UpdateonmyRaspi3BOpenMediaVaultandNextCloudinstances</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0129.html\"target=\"_blank\">JWP</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=2804\"target=\"_blank\">2804</a></strong></td>\n<td>Thu</td>\n<tdclass=\"shrink\">2019-05-02</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=2804\"target=\"_blank\">AwkPart13:Fix-WidthFieldProcessing</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0300.html\"target=\"_blank\">b-yeezi</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=2805\"target=\"_blank\">2805</a></strong></td>\n<td>Fri</td>\n<tdclass=\"shrink\">2019-05-03</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=2805\"target=\"_blank\">My50thShow</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0338.html\"target=\"_blank\">TonyHughesAKATonyH1212</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=2806\"target=\"_blank\">2806</a></strong></td>\n<td>Mon</td>\n<tdclass=\"shrink\">2019-05-06</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=2806\"target=\"_blank\">HPRCommunityNewsforApril2019</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0159.html\"target=\"_blank\">HPRVolunteers</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=2807\"target=\"_blank\">2807</a></strong></td>\n<td>Tue</td>\n<tdclass=\"shrink\">2019-05-07</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=2807\"target=\"_blank\">Arebashlocalvariableslocal?</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0311.html\"target=\"_blank\">clacke</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=2808\"target=\"_blank\">2808</a></strong></td>\n<td>Wed</td>\n<tdclass=\"shrink\">2019-05-08</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=2808\"target=\"_blank\">Haskellfunctiontypes</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0364.html\"target=\"_blank\">Tuula</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=2809\"target=\"_blank\">2809</a></strong></td>\n<td>Thu</td>\n<tdclass=\"shrink\">2019-05-09</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=2809\"target=\"_blank\">TheBlueOakModelLicenseandItsOneBigGotcha</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0376.html\"target=\"_blank\">JoelD</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=2810\"target=\"_blank\">2810</a></strong></td>\n<td>Fri</td>\n<tdclass=\"shrink\">2019-05-10</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=2810\"target=\"_blank\">Wi-FionAndroid</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0030.html\"target=\"_blank\">KenFallon</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=2811\"target=\"_blank\">2811</a></strong></td>\n<td>Mon</td>\n<tdclass=\"shrink\">2019-05-13</td>\n<td><ahref=\"https://h
(2846,'2019-07-01','HPR Community News for June 2019',3364,'HPR Volunteers talk about shows released and comments posted in June 2019','<style>\ntable td.shrink {\n white-space:nowrap\n}\n</style>\n\n<h2>New hosts</h2>\n<p>\nWelcome to our new host: <br />\n\n <a href=\"https://hackerpublicradio.org/correspondents/0378.html\" target=\"_blank\">Shannon Wright</a>.\n</p>\n\n<h2>Last Month\'sShows</h2>\n<tableid=\"t01\">\n<tr>\n<th>Id</th>\n<th>Day</th>\n<th>Date</th>\n<th>Title</th>\n<th>Host</th>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=2826\"target=\"_blank\">2826</a></strong></td>\n<td>Mon</td>\n<tdclass=\"shrink\">2019-06-03</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=2826\"target=\"_blank\">HPRCommunityNewsforMay2019</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0159.html\"target=\"_blank\">HPRVolunteers</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=2827\"target=\"_blank\">2827</a></strong></td>\n<td>Tue</td>\n<tdclass=\"shrink\">2019-06-04</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=2827\"target=\"_blank\">UnscriptedramblingsfrommygarageaboutmyfirstCTFevent</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0241.html\"target=\"_blank\">ChristopherM.Hobbs</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=2828\"target=\"_blank\">2828</a></strong></td>\n<td>Wed</td>\n<tdclass=\"shrink\">2019-06-05</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=2828\"target=\"_blank\">WritingWebGameinHaskell-Science,part2</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0364.html\"target=\"_blank\">Tuula</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=2829\"target=\"_blank\">2829</a></strong></td>\n<td>Thu</td>\n<tdclass=\"shrink\">2019-06-06</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=2829\"target=\"_blank\">DiscussionaroundfairuseclipsonHPR</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0109.html\"target=\"_blank\">VariousHosts</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=2830\"target=\"_blank\">2830</a></strong></td>\n<td>Fri</td>\n<tdclass=\"shrink\">2019-06-07</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=2830\"target=\"_blank\">HPRNYEShow2018-2019part1</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0269.html\"target=\"_blank\">Honkeymagoo</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=2831\"target=\"_blank\">2831</a></strong></td>\n<td>Mon</td>\n<tdclass=\"shrink\">2019-06-10</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=2831\"target=\"_blank\">InterviewwithRobbieFerguson</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0370.html\"target=\"_blank\">Yannick</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=2832\"target=\"_blank\">2832</a></strong></td>\n<td>Tue</td>\n<tdclass=\"shrink\">2019-06-11</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=2832\"target=\"_blank\">HowIgotstartedinLinux</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0378.html\"target=\"_blank\">ShannonWright</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=2833\"target=\"_blank\">2833</a></strong></td>\n<td>Wed</td>\n<tdclass=\"shrink\">2019-06-12</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=2833\"target=\"_blank\">JeroenchatswithJoepPiscaer</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0369.html\"target=\"_blank\">JeroenBaten</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=2834\"target=\"_blank\">2834</a></strong></td>\n<td>Thu</td>\n<tdclass=\"shrink\">2019-06-13</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=2834\"target=\"_blank\
(2558,'2018-05-23','Battling with English - part 1',678,'Misunderstandings about English grammar, spelling, punctuation, etc.','<h1 id=\"battling-with-english---part-1\">Battling with English - part 1</h1>\r\n<h2 id=\"introduction\">Introduction</h2>\r\n<p>This is the first episode of a series about the English language. In it I want to look at some of the problems people (including myself) have with it. I plan to do several episodes and I want to keep them short.</p>\r\n<p>The English language is old and has changed – evolved – in many ways over the years. It has come from a multitude of sources, and it\'sdifficulttosaywhatis<strong>correct</strong>inanabsoluteway.</p>\r\n<p>Forexample,whenIwasatschoolweweretaughtthat"<em>nice</em>"shouldnotbeusedinwrittenmaterial.Atthattimeitwasbecomingcommontoseephraseslike"<em>Ihadanicetime</em>"meaning<em>pleasant</em>(inablandsortofway).Inmy"<em>ConciseOxfordDictionary</em>"from1976the6thdefinition,"<em>agreeable</em>"ismarked"<em>colloquialism</em>",whereastodaythisisacommonusage.</p>\r\n<p>However,it\'s easy to use the wrong word in the wrong context. You might choose one that sounds similar for example. You might also have problems with the spelling of a chosen word. Spelling in English is not always logical. You might also find yourself confused about the use of punctuation – the correct use of apostrophes can be challenging for example.</p>\r\n<p>In this series I want to examine some of the problem areas and try to give you the means of remembering the <strong>right</strong> way.</p>\r\n<p><strong>Note</strong>: I\'mnotanauthorityonthisstuff,butIhavetriedtoteachmyselfnottomakethesemistakesovertheyears.IjustwantedtosharewhatIhavelearnt<ahref=\"#fn1\"class=\"footnoteRef\"id=\"fnref1\"><sup>1</sup></a>withsomelinkstohigherauthorities.</p>\r\n<h2id=\"long-notes\">Longnotes</h2>\r\n<p>Ihaveprovideddetailednotesasusual,andthesecanbe<ahref=\"https://hackerpublicradio.org/eps/hpr2558/full_shownotes.html\">viewedhere</a>.</p>\r\n<h2id=\"links\">Links</h2>\r\n<ul>\r\n<li>Then:\r\n<ul>\r\n<li>OxfordDictionaries:<ahref=\"https://en.oxforddictionaries.com/definition/then\">Definitionof"then"</a></li>\r\n<li><ahref=\"https://www.etymonline.com/word/then\">OnlineEtymologyDictionary</a></li>\r\n</ul></li>\r\n<li>Than:\r\n<ul>\r\n<li>OxfordDictionaries:<ahref=\"https://en.oxforddictionaries.com/definition/than\">Definitionof"than"</a></li>\r\n<li><ahref=\"https://www.etymonline.com/word/than\">OnlineEtymologyDictionary</a></li>\r\n</ul></li>\r\n<li>ThenversusThan\r\n<ul>\r\n<li>WritingExplained:<ahref=\"https://writingexplained.org/then-vs-than-difference\">Thenvs.Than:What’stheDifference?</a></li>\r\n<li>Grammarist:<ahref=\"https://grammarist.com/usage/than-then/\">Thanvs.then</a></li>\r\n<li>Merriam-Webster:<ahref=\"https://www.merriam-webster.com/words-at-play/when-to-use-then-and-than\">WhenToUseThenandThan</a></li>\r\n</ul></li>\r\n<li>There:\r\n<ul>\r\n<li>OxfordDictionaries:<ahref=\"https://en.oxforddictionaries.com/definition/there\">Definitionof"there"</a></li>\r\n<li><ahref=\"https://www.etymonline.com/word/there\">OnlineEtymologyDictionary</a></li>\r\n</ul></li>\r\n<li>Their:\r\n<ul>\r\n<li>OxfordDictionaries:<ahref=\"https://en.oxforddictionaries.com/definition/their\">Definitionof"their"</a></li>\r\n<li><ahref=\"https://www.etymonline.com/word/their\">OnlineEtymologyDictionary</a></li>\r\n</ul></li>\r\n<li>They\'re:\r\n<ul>\r\n<li>Oxford Dictionaries: <a href=\"https://en.oxforddictionaries.com/definition/they%27re\">Definition of "they\'re"</a></li>\r\n</ul></li>\r\n<li>Tenet:\r\n<ul>\r\n<li>OxfordDictionaries:<ahref=\"https://en.oxforddictionaries.com/definition/tenet\">Definitionof"tenet"</a></li>\r\n<li><ahref=\"https://www.etymonline.com/word/tenet\">OnlineEtymologyDiction
(2562,'2018-05-29','I bought a laptop',1292,'... in which clacke takes months (or years?) to buy a laptop, but comes out pretty pleased','<p>After months (or years?) of waffling and false starts I finally bought an <a href=\"https://www.asus.com/Laptops/ASUS-VivoBook-15-X542UA/\">ASUS X542U</a>. The advertised specs say "up to", but I don’t have the "up to", I have the baseline 7th gen i3, 128GB SSD, 4 GB RAM.</p>\r\n<p>Here’s the rambling story of a laptop purchase and its various side quests.</p>\r\n<p>Some details that may or may not have made it in to the show (and the show has some that aren’t there) available on the Fediverse at <a href=\"https://pleroma.heldscal.la/notice/7204988\" class=\"uri\">https://pleroma.heldscal.la/notice/7204988</a> .</p>\r\n<p>Side quest to the side quest of making an episode about side quests:</p>\r\n<p>Why spend five minutes writing a simple Makefile when you can spend half an afternoon writing a <a href=\"https://gitlab.com/clacke/hpr/blob/master/default.nix\">simple default.nix</a> instead?</p>',311,0,0,'CC-BY-SA','laptop, linux, ubuntu, nix, cryptocurrency',0,0,1),
(2559,'2018-05-24','My Favourite Browser extension',1117,'In this episode I cover my favourite browser Add-on','<p>My contribution to List of requested shows “Your favourite browser extensions”</p>\r\n<ul>\r\n<li><p>OneTab Homepage<br />\r\n<a href=\"https://www.one-tab.com/\" class=\"uri\">https://www.one-tab.com/</a></p></li>\r\n<li><p>Firefox add-on link<br />\r\n<a href=\"https://addons.mozilla.org/en-US/firefox/addon/onetab/\" class=\"uri\">https://addons.mozilla.org/en-US/firefox/addon/onetab/</a></p></li>\r\n</ul>\r\n<p>On Android, I\'mlazyandjustseemtohavefallenintousingthechromebrowser.TheAdd-onI\'m going to talk about unfortunately isn\'tavailablefortheAndroidoperatingsystem.</p>\r\n<p>OntheLinuxdesktop,IuseFirefox</p>\r\n<p>Inthepast,I\'ve dabbled with various browser add-ons but until very recently I\'vebeenusingnobrowseradd-onsonthedesktop.</p>\r\n<p>Abrowseradd-onIdiduseanddidmisswasTabgroups</p>\r\n<p>TabGroupswasoriginallyafeaturebuiltintoMozillaFirefox</p>\r\n<p>Thefeaturewasremovedbutmaintainedasanadd-onuntilitwasbrokenbychangesinFirefox57</p>\r\n<ul>\r\n<li><ahref=\"https://addons.mozilla.org/en-GB/firefox/addon/tab-groups-panorama/\"class=\"uri\">https://addons.mozilla.org/en-GB/firefox/addon/tab-groups-panorama/</a></li>\r\n</ul>\r\n<p>AcolleagueatworkbroughttheOne-Tabadd-ontomyattentionhttps://www.one-tab.com/</p>\r\n<p>It\'s available for both the Chrome browser and Firefox</p>\r\n<p>No sign-up or registration required</p>\r\n<p>With Tab-group I found myself spending a lot of time arranging groups getting the size right naming them etc.</p>\r\n<p>One tab philosophy is a bit different and perhaps maybe not so intuitive, though I think now after some use I prefer it as it gets out of the way and can be used with the minimal of fuss.</p>\r\n<p>I highly recommend one-tab if you regularly find yourself dealing with a lot of open tabs in your browser.</p>\r\n',201,0,1,'CC-BY-SA','Internet, Research, Browser, Firefox, Plug-in, Add-On',0,0,1),
(2560,'2018-05-25','General Data Protection Regulation (GDPR)',1117,'The GDPR becomes enforceable today and Ken gives an overview on what it is and how it effects you.','<p>Been getting a lot of updated policy changes lately ? Here\'swhy!</p>\r\n\r\n<h3>FromWikipedia</h3>\r\n<quote>\r\nThe<ahref=\"https://en.wikipedia.org/wiki/General_Data_Protection_Regulation\">GeneralDataProtectionRegulation(GDPR)(EU)2016/679</a>isaregulationinEUlawondataprotectionandprivacyforallindividualswithintheEuropeanUnion.ItalsoaddressestheexportofpersonaldataoutsidetheEU.TheGDPRaimsprimarilytogivecontroltocitizensandresidentsovertheirpersonaldataandtosimplifytheregulatoryenvironmentforinternationalbusinessbyunifyingtheregulationwithintheEU.Itwasadoptedon14April2016,andafteratwo-yeartransitionperiod,becomesenforceableon25May2018.\r\n</quote>\r\n\r\n<p>Thefollowinginformationistakenfromthe<ahref=\"https://ico.org.uk/for-organisations/guide-to-the-general-data-protection-regulation-gdpr/\">GuidetotheGeneralDataProtection\r\nRegulation(GDPR)</a>fromtheInformationCommissionersOfficeintheUK,whichisreleasedundera<ahref=\"https://www.nationalarchives.gov.uk/doc/open-government-licence/version/3/\">OpenGovernmentLicencev3.0.</a></p>\r\n\r\n<h2>PrinciplesoftheGDPR</h2>\r\n<p>UndertheGDPR,thedataprotectionprinciplessetoutthemainresponsibilitiesfororganisations.<br/>\r\nArticle5oftheGDPRrequiresthatpersonaldatashallbe:</p>\r\n<dl>\r\n<dt>a)processedlawfully,fairlyandinatransparentmannerinrelationtoindividuals;</dt>\r\n<dt>b)collectedforspecified,explicitandlegitimatepurposesandnotfurtherprocessedinamannerthatisincompatiblewiththosepurposes;furtherprocessingforarchivingpurposesinthepublicinterest,scientificorhistoricalresearchpurposesorstatisticalpurposesshallnotbeconsideredtobeincompatiblewiththeinitialpurposes;</dt>\r\n<dt>c)adequate,relevantandlimitedtowhatisnecessaryinrelationtothepurposesforwhichtheyareprocessed;</dt>\r\n<dt>d)accurateand,wherenecessary,keptuptodate;everyreasonablestepmustbetakentoensurethatpersonaldatathatareinaccurate,havingregardtothepurposesforwhichtheyareprocessed,areerasedorrectifiedwithoutdelay;</dt>\r\n<dt>e)keptinaformwhichpermitsidentificationofdatasubjectsfornolongerthanisnecessaryforthepurposesforwhichthepersonaldataareprocessed;personaldatamaybestoredforlongerperiodsinsofarasthepersonaldatawillbeprocessedsolelyforarchivingpurposesinthepublicinterest,scientificorhistoricalresearchpurposesorstatisticalpurposessubjecttoimplementationoftheappropriatetechnicalandorganisationalmeasuresrequiredbytheGDPRinordertosafeguardtherightsandfreedomsofindividuals;and</dt>\r\n<dt>f)processedinamannerthatensuresappropriatesecurityofthepersonaldata,includingprotectionagainstunauthorisedorunlawfulprocessingandagainstaccidentalloss,destructionordamage,usingappropriatetechnicalororganisationalmeasures.</dt>\r\n</dl>\r\nArticle5(2)requiresthat:\r\n<dl>\r\n<dt>thecontrollershallberesponsiblefor,andbeabletodemonstrate,compliancewiththeprinciples.</dt>\r\n</dl>\r\n\r\n<h2>WhatinformationdoestheGDPRapplyto?</h2>\r\n\r\n<h3>Personaldata</h3>\r\n<p>TheGDPRappliesto‘personaldata’meaninganyinformationrelatingtoanidentifiablepersonwhocanbedirectlyorindirectlyidentifiedinparticularbyreferencetoanidentifier.</p>\r\n\r\n<h3>Sensitivepersonaldata</h3>\r\n<p>SpecialcategorydataispersonaldatawhichtheGDPRsaysismoresensitive,andsoneedsmoreprotection.</p>\r\n<ul>\r\n<li>race</li>\r\n<li>ethnicorigin</li>\r\n<li>politics</li>\r\n<li>religion</li>\r\n<li>tradeunionmembership</li>\r\n<li>genetics</li>\r\n<li>biometrics(whereusedforIDpurposes)</li>\r\n<li>health</li>\r\n<li>sexlife</li>\r\n<
(2561,'2018-05-28','A reluctant dog walk',1472,'A reluctant dog walk after some hand stripping','<p>An explanation of hand stripping <a href=\"https://www.petguide.com/petcare/dog/grooming-basics-all-about-hand-stripping/\" class=\"uri\">https://www.petguide.com/petcare/dog/grooming-basics-all-about-hand-stripping/</a></p>\r\n<p>I chopped the recording down a bit as it was originally over an hour long I thought it would just be too monotonous.</p>\r\n<p>Listening back to the recording I can\'tbelieveittookmesolongtogetorganisedandgetoutthedoor.</p>\r\n<p>WithalltherhythmicclinkingsoundsitsoundsmorelikeI\'m riding a horse than walking the dog, I think the supplied clip-on Dictaphone microphone is a bit on the sensitive side.</p>\r\n<p>As a responsible dog walker, one of the most important pieces of equipment I take with me on every dog walk is the “Toley Bone” mentioned around one minute point.</p>\r\n<p>Toley is a fine Scottish word, you can look it up if you are unfamiliar with it <a href=\"https://www.firstfoot.com/dictionary/t.html\" class=\"uri\">https://www.firstfoot.com/dictionary/t.html</a> or alternatively just do a simple google search to be enlightened.</p>\r\n<p>An example can be found here. <a href=\"https://www.amazon.co.uk/Plastic-Holder-Dispenser-Carrying-Walking/dp/B01IW0YSM0/ref=sr_1_8?ie=UTF8&qid=1509280608&sr=8-8&keywords=dog+bag+bone\" class=\"uri\">https://www.amazon.co.uk/Plastic-Holder-Dispenser-Carrying-Walking/dp/B01IW0YSM0/ref=sr_1_8?ie=UTF8&qid=1509280608&sr=8-8&keywords=dog+bag+bone</a></p>\r\n<p>Listen out for the crinkling sound around the halfway point where it is put to good use.</p>\r\n<p>The second most important piece of kit is a sweet, consumed around the 3 minute point.</p>\r\n<p>The main part of the walk was fairly uneventful and consisted of traffic noise, passing by the local bus terminus where the bus turns at the end of its route, a rather noisy motorbike and a brief encounter with a fellow dog walker on route.</p>\r\n<p>Finally ending with a treat and some light refreshment.</p>\r\n<p>Oh, and in case you\'rewonderingyesthethesconesmentionedneartheendofthepodcastmadebyMrsXwerewonderful.</p>\r\n<p>OhandonefinalthingonlisteningbacktotherecordingonemoretimeIjustrealisedthatforsomeunknownreasonjustafterthebusnoiseIstartedwhistlingverysoftlytomyself,Idon\'t remember doing that at all, I must have been doing it subconsciously. I could be wrong but it sounds to me like I\'mwhistlingthetune“Theanimalsmarchintwobytwo”Iguessitwasjusttherighttempotohelpmeroundmyonehourwalk.</p>\r\n',201,101,1,'CC-BY-SA','dog,walking',0,0,1),
(2563,'2018-05-30','Action In Storytelling',1065,'Lostnbronx looks at different uses of action in storytelling.','<p>Lostnbronx contrasts what he calls "static action" with "story action", and looks at the functions of these techniques for storytelling in various media.</p>\r\n<p>A car chase is action-filled, but so might be a quiet Victorian drawing room, where, at least on the surface of it, nothing is happening.</p>\r\n<p>What actually constitutes action? What purpose does it serve? And how much of it do you really need?</p>',107,105,0,'CC-0','storytelling,action',0,0,1),
(2564,'2018-05-31','Intro to Fossil',1991,'Klaatu talks about the Fossil version control system','<p>Some shownotes for fossil</p>\r\n\r\n<p>\r\nCreate a new fossil repository:\r\n</p>\r\n\r\n<pre><code> $ fossil new shownotes\r\n</code></pre>\r\n\r\n<p>\r\n Add your work to the repository:\r\n</p>\r\n\r\n<pre><code> $ fossil add shownotes.html\r\n</code></pre>\r\n\r\n<p>\r\n Commit your work:\r\n</p>\r\n\r\n<pre><code> $ fossil commit --comment \"added shownote HTML file\"\r\n</code></pre>\r\n\r\n<p>\r\n As a fun exercise, destroy your work.\r\n</p>\r\n\r\n<pre><code> $ echo \"klaatu said this was perfectly safe\" > shownotes.html\r\n $ cat shownotes.html\r\n klaatu said this was perfectly safe\r\n</code></pre>\r\n\r\n<p>\r\n And now revert it back to the\r\n last known good version:\r\n</p>\r\n\r\n<pre><code> $ fossil revert shownotes.html\r\n REVERT shownotes.html\r\n $ head -n1 shownotes.html\r\n <p>Some shownotes for fossil<p>\r\n</code></pre>\r\n\r\n<p>\r\n Did you accidentally revert? You can undo that.\r\n</p>\r\n\r\n<pre><code> $ fossil undo shownotes.html\r\n</code></pre>\r\n\r\n<p>\r\n And then revert again.\r\n</p>\r\n\r\n<pre><code> $ fossil revert shownotes.html\r\n REVERT shownotes.html\r\n $ head -n1 shownotes.html\r\n <p>Some shownotes for fossil<p>\r\n</code></pre>\r\n\r\n<p>\r\nCheck your remote:\r\n</p>\r\n<pre><code> $ fossil remote-url\r\n</code></pre>\r\n\r\n<p>\r\nClose a fossil repo:\r\n</p>\r\n\r\n<pre><code> $ fossil close\r\n</code></pre>\r\n\r\n<p>\r\nSee the fancy browser-based UI of your repo:\r\n</p>\r\n<pre><code> $ fossil ui\r\n</code></pre>\r\n\r\n',78,0,0,'CC-BY-SA','fossil,sqlite,svn,git,scm',0,0,1),
(2567,'2018-06-05','Son of Hunky Punk',269,'I follow-up on my Frotz episode by covering Son of Hunky Punk, a Z-machine interpreter for Android.','<p>I follow-up on my Frotz episode by covering Son of Hunky Punk, a Z-machine interpreter for Android. I also test my copy of ZORK I to see if it works as well as it did on Frotz.</p>\r\n<h3 id=\"links\">Links:</h3>\r\n<ul>\r\n<li><p>Son of Hunky Punk - IFWiki<br />\r\n<a href=\"https://ifwiki.org/index.php/Son_of_Hunky_Punk\" class=\"uri\">https://ifwiki.org/index.php/Son_of_Hunky_Punk</a></p></li>\r\n<li><p>Github: <a href=\"https://github.com/retrobits/son_of_hunkypunk\" class=\"uri\">https://github.com/retrobits/son_of_hunkypunk</a></p></li>\r\n<li><p>Google Play: <a href=\"https://play.google.com/store/apps/details?id=org.andglkmod.hunkypunk&hl=en_US\" class=\"uri\">https://play.google.com/store/apps/details?id=org.andglkmod.hunkypunk&hl=en_US</a></p></li>\r\n<li><p>F-Droid: <a href=\"https://f-droid.org/packages/org.andglkmod.hunkypunk/\" class=\"uri\">https://f-droid.org/packages/org.andglkmod.hunkypunk/</a></p></li>\r\n<li><p>Hunky Punk (the original)<br />\r\n<a href=\"https://hunkypunk.sourceforge.net/\" class=\"uri\">https://hunkypunk.sourceforge.net/</a></p></li>\r\n</ul>\r\n<h3 id=\"contact\">Contact:</h3>\r\n<ul>\r\n<li>IRC: claudiom (#oggcastplanet on Freenode)</li>\r\n<li>E-mail: claudio (at) linuxbasement (dot) com</li>\r\n</ul>\r\n',152,0,0,'CC-BY-SA','Interactive Fiction,interpreter,Android,Son of Hunky Punk,Hunky Punk',0,0,1),
(2568,'2018-06-06','Personal finance',3282,'How to manage personal finances.','<h2 id=\"personal-finances\">Personal finances</h2>\r\n<h3 id=\"problem\">Problem</h3>\r\n<p>People need to save for retirement. But how do we do that?</p>\r\n<p>Conventional wisdom in the USA says that Social Security is your retirement fund.</p>\r\n<p>There\'snoguaranteethatwillstillbearoundwhenyouretire,andit\'s entirely out of your hands. It maybe a good bonus, but possibly it isn\'tsomethingtorelyon.</p>\r\n<p>Sohowdowedoit?</p>\r\n<h3id=\"they-dont-teach-you-this-stuff-in-school\">Theydon\'t teach you this stuff in school</h3>\r\n<p>People say you should save for retirement, but they forget to say <em>how</em>.</p>\r\n<p>Currently, there are two de facto methods of funding retirement in the USA:</p>\r\n<ul>\r\n<li>social security: abstract, not guaranteed. Assumes you start contributing to ssn early</li>\r\n<li>401k. abstract, indirect unless you take active role in tracking it. best if you start early.</li>\r\n</ul>\r\n<p>In other countries, there may be significant alternatives. For instance, Kiwisaver in New Zealand.</p>\r\n<p>These methods are OK, but difficult for you to interact with directly.</p>\r\n<h3 id=\"there-are-two-direct-levels-of-investment\">There are two direct levels of investment:</h3>\r\n<ol start=\"0\" type=\"1\">\r\n<li>At your bank: CDs and mutual funds</li>\r\n</ol>\r\n<ul>\r\n<li>Go to your bank, ask to invest in a mutual fund or Certificate of Deposit (CD)</li>\r\n</ul>\r\n<ol type=\"1\">\r\n<li>Stock market: your local market and the US market</li>\r\n</ol>\r\n<ul>\r\n<li>what: direct investment in "publically traded" (whatever that means) companies</li>\r\n<li>how: <a href=\"https://etrade.com\" class=\"uri\">https://etrade.com</a> or <a href=\"https://fidelity.com\" class=\"uri\">https://fidelity.com</a></li>\r\n<li>In other countries, look for brokers who will invest your money in local or international markets</li>\r\n</ul>\r\n',78,0,0,'CC-BY-SA','money, finance, life',0,0,1),
(2569,'2018-06-07','Pandemic: Reign of Cthulu board game review',1140,'Klaatu reviews a board game','<p><a href=\"https://boardgamegeek.com/boardgame/192153/pandemic-reign-cthulhu\" target=\"_blank\">Pandemic Reign of Cthulu</a>\r\n</p><p>\r\n<a href=\"https://boardgamegeek.com/boardgame/30549/pandemic\" target=\"_blank\">Pandemic</a> original edition\r\n</p>\r\n<p>Mods can be found online. For instance: <a href=\"https://www.fractuslearning.com/pandemic-board-game/\" target=\"_blank\">fractuslearning.com/pandemic-board-game</a></p>\r\n\r\n',78,95,0,'CC-BY-SA','game,tabletop',0,0,1),
(2571,'2018-06-11','Kill Dr. Lucky',1168,'Klaatu reviews a board game','<p>Details about <a href=\"https://paizo.com/products/btpy9ijp?Kill-Doctor-Lucky\" target=\"_blank\">Kill Doctor Lucky</a> on Paizo.com.</p>',78,95,0,'CC-BY-SA','game,tabletop',0,0,1),
(2570,'2018-06-08','Penguicon 2018 Report',987,'Penguicon 2018 took place on May 4-6, 2018 in Southfield, Michigan','<p>Penguicon 2018 is a combined technology and science fiction convention in Southfield, Michigan, a suburb of Detroit, and presents over 500 hours of programming over the entire weekend. Of this, around 100 hours are open source, tech-related. In this episode I tell you about my own personal experience at Penguicon this year.</p>\r\n<h3 id=\"links\">Links:</h3>\r\n<ul>\r\n<li><a href=\"https://2018.penguicon.org/\" class=\"uri\">https://2018.penguicon.org/</a></li>\r\n<li><a href=\"https://www.youtube.com/channel/UCZFipeZtQM5CKUjx6grh54g\" class=\"uri\">https://www.youtube.com/channel/UCZFipeZtQM5CKUjx6grh54g</a></li>\r\n<li><a href=\"https://www.michaelwlucas.com/\" class=\"uri\">https://www.michaelwlucas.com/</a></li>\r\n<li><a href=\"https://www.physics.ccsu.edu/larsen/\" class=\"uri\">https://www.physics.ccsu.edu/larsen/</a></li>\r\n<li><a href=\"https://solarsystem1.jpl.nasa.gov/ssa/home.cfm\" class=\"uri\">https://solarsystem1.jpl.nasa.gov/ssa/home.cfm</a></li>\r\n<li><a href=\"https://www.youtube.com/channel/UCHkYOD-3fZbuGhwsADBd9ZQ\" class=\"uri\">https://www.youtube.com/channel/UCHkYOD-3fZbuGhwsADBd9ZQ</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2510\" class=\"uri\">https://hackerpublicradio.org/eps.php?id=2510</a></li>\r\n<li><a href=\"https://www.zwilnik.com\" class=\"uri\">https://www.zwilnik.com</a></li>\r\n</ul>\r\n',198,96,0,'CC-BY-SA','Penguicon 2018',0,0,1),
(2573,'2018-06-13','Foundations of git rebase',1229,'Klaatu talks about git rebase','<p>A git rebase is like a git merge done through rose-coloured glasses.</p>\r\n\r\n<p>\r\nYou can see it for yourself by doing this little experiment. Assuming the <code>alice</code> directory is a valid git repository:\r\n</p>\r\n\r\n<pre><code>$ cd alice\r\n$ echo \"foo\" >> rebase.episode\r\n$ git add rebase.episode ; git commit -m \'beginrebaseepisode\'\r\n$ git checkout -b monsters\r\n\r\n$ git branch\r\n* monsters\r\nmaster\r\n$ echo \"ghoul\" >> ghoul.txt\r\n$ git add ghoul.txt ; git commit -m \'ghoul\'\r\n$ git checkout master\r\n$ echo \"rogue\" >> rogue.txt\r\n$ git add rogue.txt ; git commit -m \'rogue\'\r\n\r\n$ git checkout monsters\r\n$ echo \"dragon\" >> dragon.txt\r\n$ git add dragon.txt ; git commit -m \'dragon\'\r\n\r\n$ git checkout master\r\n$ echo \"paladin\" >> paladin.txt\r\n$ git add paladin.txt ; git commit -m \'paladin\'\r\n</code></pre>\r\n\r\n<p>\r\nYou have now emulated a bunch of activity on two separate branches of a git repository.\r\nCreate a copy of the repo so that you can perform two separate git actions.\r\n</p>\r\n\r\n<pre><code>$ cd ..\r\n$ cp -r alice alice-merge\r\n$ cp -r alice alice-base\r\n</code></pre>\r\n\r\n<p>\r\nDo an honest merge:\r\n</p>\r\n\r\n<pre><code>$ cd alice-merge\r\n$ git checkout master\r\n$ git merge monsters\r\n</code></pre>\r\n\r\n<p>\r\nThe log shows you an accurate representation what got merged, and how all those changes came to be:\r\n</p>\r\n\r\n<pre><code>$ git log --oneline\r\n123456 Merged monsters into master\r\n789101 paladin\r\n112131 dragon\r\n415161 rogue\r\n718191 ghoul\r\n7ef217 begin rebase episode\r\n</code></pre>\r\n\r\n<p>\r\nNow perform a rebase.\r\n</p>\r\n\r\n<pre><code>$ cd ../alice-base\r\n$ git checkout master\r\n$ git rebase monsters\r\n</code></pre>\r\n\r\n<p>\r\nThe log displays a different story than what really happened.\r\n</p>\r\n\r\n<pre><code>123456 Merged monsters into master\r\n8e9122 paladin\r\n21d163 rogue\r\n912a3f dragon\r\n51c098 ghoul\r\n7ef217 begin rebase episode\r\n</code></pre>\r\n\r\n<p>\r\nBetter? Worse? YOU DECIDE!\r\n</p>\r\n\r\n',78,81,0,'CC-BY-SA','git,rebase,merge',0,0,1),
(2580,'2018-06-22','Diabetes',841,'This is the story of how I became diabetic and what I did about it.','<p>For the last 15 years or so Diabetes has been a central fact in my life, and I needed to learn what to do about it. I think I discovered a way I can live with it and still have a good quality of life</p>\r\n<ul>\r\n<li><a href=\"https://www.webmd.com/diabetes/default.htm\" class=\"uri\">https://www.webmd.com/diabetes/default.htm</a></li>\r\n<li><a href=\"https://www.aao.org/eye-health/diseases/what-is-diabetic-retinopathy\" class=\"uri\">https://www.aao.org/eye-health/diseases/what-is-diabetic-retinopathy</a></li>\r\n<li><a href=\"https://www.mayoclinic.org/diseases-conditions/diabetic-neuropathy/symptoms-causes/syc-20371580\" class=\"uri\">https://www.mayoclinic.org/diseases-conditions/diabetic-neuropathy/symptoms-causes/syc-20371580</a></li>\r\n<li><a href=\"https://www.webmd.com/diabetes/tc/diabetic-nephropathy-topic-overview#1\" class=\"uri\">https://www.webmd.com/diabetes/tc/diabetic-nephropathy-topic-overview#1</a></li>\r\n<li><a href=\"https://www.diabetes-book.com/\" class=\"uri\">https://www.diabetes-book.com/</a></li>\r\n<li><a href=\"https://www.palain.com/?page_id=338\" class=\"uri\">https://www.palain.com/?page_id=338</a></li>\r\n</ul>\r\n',198,100,0,'CC-BY-SA','Health, Medicine, Diabetes',0,0,1),
(2574,'2018-06-14','Personal cash-only finance',1800,'Klaatu discusses the advantages and disadvantages of going [mostly] cash-only','<p>Klaatu discusses the advantages and disadvantages of going [mostly] cash-only</p>\r\n',78,0,0,'CC-BY-SA','money, finance, life',0,0,1),
(2579,'2018-06-21','Ubuntu 18.04 Mate',620,'This is a short show on installing the latest Ubuntu 18.04 onto a laptop and desktop PC','<h2 id=\"ubuntu-mate-18.04\">Ubuntu Mate 18.04</h2>\r\n<p>Good day to all you HPR Listers. Sorry that its been a while since I recorded a show, but as they say life has got in the way over the last few months, and I\'vespentquiteabitofitawayfromthehomefront.</p>\r\n<p>AsithappensononeofthosetripsawaymylaptoprunningMintMate18.3LTS,basedonUbuntu16.04LTSdecidedthatitwouldn\'t boot as it didn\'trecognisemyaccount,andasIhadnotcreatedaRootaccountIcouldnotsigninandfixtheissue,whichwasacorruptedconfigurationfileintheusersfolder.</p>\r\n<p>AsluckwouldhaveitIhadjustdownloadedthelatestUbuntuMate18.04.isototryitasalivedisc,soIhadabootdiscthatIcouldusetobootthelaptopandaccessthedatatorescueallmyimportantinformationwhichwasmainlyallmyemailsandmybrowsersettingsandbookmarks,asthisisoneofmytravellinglaptopsnotmuchofimportanceispermanentlystoredonit,soitdidn\'t take long and I was ready to reinstall the OS to the PC. Just in case I had missed some important data on the current SSD, as I had a spare SSD with me in the bag, yes I\'mgeekyenoughtocarryaspareSSDor2inthebag.SoIdugitoutandinstalleditintothePC,whichbythewayisaDellLatitudeE6540withani5dualcoremobilechipwithhyper-threading.It\'s currently running 4Gig DDR3 RAM but can run up to 16Gig in the 2 slots it has.</p>\r\n<p>So I booted the laptop with the USB boot disc I had created and as with all recent Ubuntu releases you get a screen asking if you want to try or install the OS, as I needed a working PC I went straight to the install option. For those not familiar with Linux or Ubuntu, the installer is a joy to use and very friendly to new users. As this was a first install to this SSD the only option I had was a full install which I chose, then was asked if I wanted to do the default install which partitions the drive and installs the bootloader automatically without any further need for intervention or did I want to do a custom partition arrangement. As the default is adequate for my needs I chose this and clicked continue. During this process you also get the option of a minimal or full installation, the minimal installation gets you a running PC with the basic utilities and leaves you to chose what to install later, but as I use the software that would be omitted I chose the full install. You get asked a final time if you are sure you want to install, with a warning that all current data on the disc will be wiped, as I was happy I clicked proceed. At this point the install starts and you are taken through setting up your PC configuration for language, keyboard, and user account. By the time I had completed this, the install was half completed and the whole process took less than 15 minutes.</p>\r\n<p>After the install is complete you get the message to reboot the PC and eject the boot media to reboot into the new install, on first boot you will either be presented with the login screen or go straight to the desktop depending on the choices you made during the install. Once you are at the desktop for the first time you are presented with a wallpaper of the Ubuntu Mate logo and 2 panels one at the top and one at the bottom of the screen. The top one has for those more traditional Linux and Windows users all the information you would expect on the lower panel, such as the menu, notification area etc. As I\'mmoretraditionalinmyuseofaPCIquicklysetupthelowerpanelwiththeAdvancedMateMenuandothernotificationappssuchasnetwork,clockandcalendarandthendeletedtheotherpanel,butobviouslythisisapersonalpreference-gowithwhatyoufindcomfortable.</p>\r\n<p>ThenextstepafterconnectingtothelocalWiFiwastoinstallanyupdates,whichdespitethisreleaseonlybeingafewdaysoldtherewereafew,butthisdidn\'t take long and in less t
(2576,'2018-06-18','My swedish and german podcasts part 1',335,'I\'mrecommending6podcastsinswedishandgerman','<ul>\r\n<li><strong>P1Språket</strong><ahref=\"https://api.sr.se/api/rss/pod/4012\"class=\"uri\">https://api.sr.se/api/rss/pod/4012</a></li>\r\n<li><strong>P1VetenskapsradionHistoria</strong><ahref=\"https://api.sr.se/api/rss/pod/4020\"class=\"uri\">https://api.sr.se/api/rss/pod/4020</a></li>\r\n<li><strong>MediernaiP1</strong><ahref=\"https://api.sr.se/api/rss/pod/3951\"class=\"uri\">https://api.sr.se/api/rss/pod/3951</a></li>\r\n<li><strong>@mediasres</strong><ahref=\"https://www.deutschlandfunk.de/podcast-mediasres.762.de.podcast\"class=\"uri\">https://www.deutschlandfunk.de/podcast-mediasres.762.de.podcast</a></li>\r\n<li><strong>Europaheute</strong><ahref=\"https://www.deutschlandfunk.de/podcast-europa-heute.796.de.podcast\"class=\"uri\">https://www.deutschlandfunk.de/podcast-europa-heute.796.de.podcast</a></li>\r\n<li><strong>ComputerundKommunikation</strong><ahref=\"https://www.deutschlandfunk.de/podcast-computer-und-kommunikation.685.de.podcast\"class=\"uri\">https://www.deutschlandfunk.de/podcast-computer-und-kommunikation.685.de.podcast</a></li>\r\n</ul>',309,75,0,'CC-BY-SA','podcasts,swedish,german,language,media,europe',0,0,1),
(2577,'2018-06-19','Emigration',1855,'Howto emigrate','<p>Confused about leaving your homeland for <strike>greener</strike> pastures? Maybe this episode will shed some light on the subject.</p>\r\n\r\n<p>Public domain music from <a href=\"https://archive.org/details/Americasnationalanthem\" target=\"_blank\">archive.org</a>. Can you find your national anthem? Do you know all the words to your national anthem? Either way, you should be ashamed of yourself.</p>',78,0,0,'CC-BY-SA','Emigration,visa,permanent residency,citizenship',0,0,1),
(2575,'2018-06-15','Quick Tips June 2018',826,'I go over a few quick tips for June','<ul>\r\n<li>sites that required two factor tips</li>\r\n<li>Referb your can opener</li>\r\n<li>Referb your powerwheels</li>\r\n<li>Humidifier filter DIY</li>\r\n<li>free anonymous email over TOR</li>\r\n</ul>',36,0,1,'CC-BY-SA','QuickTips',0,0,1),
(2578,'2018-06-20','LinuxLUGcast 102 the lost episode',13976,'LinuxLUGcast episode 102. The lost episode.','<p>\r\nThis was episode 102 of the LinuxLUGcast.\r\n<br/>\r\nSo the LinuxLUGcast is an open podcast/LUG that meets every first and third friday of the month using mumble. This method of running a podcast leaves it open to anyone showing up (which is what we want because it gets difficult for fiftyonefifty and I to come up with topics all the time). We have also gotten the reputation of being a safe for work podcast. This is why episode 102 is being posted here. Between the not safe for work language and the fact that after a few drinks during the podcast I get a little rambly we thought it best not to publish it on the regular LinuxLUGcast feed, but I thought there was some good conversation here that would be lost if it did not go somewhere. After some discussion we at the LinuxLUGcast decided that we would publish it here so that it could be heard by the HPR community.\r\n<br/>\r\nWe have also done some website remodeling which has screwed up the .ogg feed, and wanted to let people know that we are still podcasting and to please check out\r\n<a href=\"https://www.linuxlugcast.com/\">https://www.linuxlugcast.com/</a> for the new .ogg feed.\r\n<br/>\r\nEnjoy\r\n</p>\r\n<p>\r\np.s. please forgive my rambling\r\n</p>\r\n',269,0,1,'CC-BY-SA','linux, computing',0,0,1),
(2585,'2018-06-29','Check to see if a Remote Control is working',99,'Yet another amazing life hack from Ken','<p>\r\nEver have a remote control that didn\'tseemtobeworking?WiththisAMAZINGLIFEHACKyoucanseetheunseen</p>\r\n<p>\r\n<small>\r\nOKallitisislookingattheremoteusingyourcamera-butstill...\r\n</small>\r\n</p>\r\n',30,0,1,'CC-BY-SA','remotecontrol,lifehack',0,0,1),
(2581,'2018-06-25','My new 3D printer - impressions of the Creality Ender 3',1239,'I bought a Creality Ender 3 3D printer in June 2018. Here are my first impressions of it','<h1 id=\"my-new-3d-printer---impressions-of-the-creality-ender-3\">My new 3D printer - impressions of the Creality Ender 3</h1>\r\n<h2 id=\"introduction\">Introduction</h2>\r\n<p>I have been thinking of buying a 3D printer for a year or so. I had thought of getting a <a href=\"https://www.prusaprinters.org/prusa-i3/\" title=\"Prusa i3 MK3\">Prusa i3 MK3</a> in kit form, but although it\'scheaperthanthebuiltformthisprinterisnotcheap,andIdoubtedmyabilitytobuildit.Iwasalsounsurewhethertherewasarealneedforthecapabilitiesofa3Dprinterinmylife,andwhethersuchapurchasewasjustified.</p>\r\n<p>IhadnoticedtheChinese<ahref=\"https://www.creality3d.cn/creality-cr-10-3d-printer-p00096p1.html\"title=\"Creality CR10\">CrealityCR10</a>printerintherecentpast,andwonderedaboutbuyingoneoftheseatabouthalfthepriceofthePrusa.Thisisagood-sizedprinterwhichcomesfully-assembledasIunderstand,andithashadmanygoodreviews.</p>\r\n<p>Whenthe<ahref=\"https://www.creality3d.cn/creality-ender-3-3d-printer-p00095p1.html\"title=\"Creality Ender 3\">CrealityEnder3</a>wasreleasedinApril2018foraroundhalfthepriceoftheCR10itlookedworththerisktoseeifIreallyneededa3Dprinter.SoIboughtone(fromAmazon)inJune.</p>\r\n<p>AsIwritethis(2018-06-10)it\'s been less than a week since it was delivered, so this is a very preliminary look at the printer.</p>\r\n<h2 id=\"long-notes\">Long notes</h2>\r\n<p>For the rest of the notes for this episode <a href=\"https://hackerpublicradio.org/eps/hpr2581/full_shownotes.html\">look here</a>.</p>\r\n<h2 id=\"links\">Links</h2>\r\n<ul>\r\n<li><a href=\"https://en.wikipedia.org/wiki/3D_printing\">Wikipedia definition of 3D printing</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Bowden_extruder\">Wikipedia article on the <em>Bowden extruder</em></a></li>\r\n<li>Printers mentioned:\r\n<ul>\r\n<li><a href=\"https://www.prusaprinters.org/prusa-i3/\">Prusa i3 MK3</a></li>\r\n<li>Creality CR10\r\n<ul>\r\n<li><a href=\"https://www.creality3d.cn/creality-cr-10-3d-printer-p00096p1.html\">Website</a></li>\r\n<li><a href=\"https://www.banggood.com/DIY-Creality-CR-10-3D-Printer-300300400mm-Printing-Size-1_75mm-0_4mm-Nozzle-p-1085645.html?cur_warehouse=USA\">Buy on Banggood</a></li>\r\n</ul></li>\r\n<li>Creality Ender 3\r\n<ul>\r\n<li><a href=\"https://www.creality3d.cn/creality-ender-3-3d-printer-p00095p1.html\">Website</a></li>\r\n<li><a href=\"https://www.banggood.com/Creality-3D-Ender-3-V-slot-Prusa-I3-DIY-3D-Printer-Kit-220x220x250mm-Printing-Size-p-1278399.html?cur_warehouse=CN\">Buy on Banggood</a></li>\r\n<li><a href=\"https://all3dp.com/1/creality-ender-3-3d-printer-review/\">All3DP Review</a></li>\r\n</ul></li>\r\n</ul></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/DIN_rail\">Wikipedia article on DIN Rails</a></li>\r\n<li>Thingiverse items:\r\n<ul>\r\n<li><a href=\"https://www.thingiverse.com/thing:2874536\">Ender 3 bed levelling GCode</a></li>\r\n<li><a href=\"https://www.thingiverse.com/thing:2610621/files\">DIN Rail fittings</a></li>\r\n<li><a href=\"https://www.thingiverse.com/3DMakerFun/collections/creality-3d-ender-3-upgrades\">Printable upgrades for the Ender 3</a></li>\r\n</ul></li>\r\n</ul>\r\n',225,0,1,'CC-BY-SA','3D printer',0,0,1),
(2582,'2018-06-26','3 Contribution case studies',2699,'How easy is it for your potential contributors to contribute?','<p><em>How easy is it for your potential contributors to contribute?\r\nKlaatu looks at three open source and open culture projects to determine how easy they make it for your potential contributors to contribute?\r\n</em></p> ',78,0,0,'CC-BY-SA','FLOSS contributions',0,0,1),
(2590,'2018-07-06','Blowing a PC Power Supply',229,'Just a short show on how I managed to blow the power supply on my desktop PC','<p>Greetings Hacker Public Radio listeners, Tony Hughes again coming all the way from Blackpool in the North West of the UK. Originally this show was going to be about some new kit that I have recently bought at my favourite computer auction. However as luck or actually bad luck should have it I fried the power supply on my Desktop machine yesterday as I was setting it up again after moving back to my office.</p>\r\n<p>The PC is a HP Compaq Elite 8300 micro Desk top tower with a i7 3rd generation 3770 3.4Ghz CPU and since upgrades now has 16Gig Ram and a Primary 256Gig SSD. This is my daily driver and I\'vebeenrunningitforacoupleofyearssinceIboughtitatthesaidauction.ItisthebestPCI\'ve ever owned; the full specifications are here:</p>\r\n<p><a href=\"https://www.cnet.com/products/hp-compaq-elite-8300-cmt-core-i7-3770-3-4-ghz-4-gb-1-tb-b2d12utaba/specs/\" class=\"uri\">https://www.cnet.com/products/hp-compaq-elite-8300-cmt-core-i7-3770-3-4-ghz-4-gb-1-tb-b2d12utaba/specs/</a></p>\r\n<p>As I said I was re setting up my full rig after moving it back to the office upstairs after a temporary move while we had a house guest. As I was plugging in the power cable there was a flash and crack, and a few expletives were uttered, sure enough when I switched of the power at the plug and reconnected the power cable and then tried to power on the PC, it was dead. I was hoping that it was the power supply that had blown and as I had a spare I was not too concerned. However on investigation HP have done the dirty with the design of the motherboard and power supply and neither are standard ATX configuration, yes propriety hardware for this baby.</p>\r\n<p>I was lucky as a few months ago I had picked up a i3 HP using the same case, so I pulled out the power supply from this and fitted it into the i7 PC and luckily that did turn out to be the issue, and the PC sprang into life when I hit the power button. I’m now left with a PC that works, but another one that unless I can find a power supply to match is next to useless except for spares.</p>\r\n<p>Lessons learned, never connect the power cable when the socket is live, if your plug socket doesn\'thaveaswitchconnectthekettleendtothePCfirsttoreducetheriskofashortlikemine.Alsoneverassumethat2ndhandPC’sarestandardcase/motherboardformatasyoumayhaveaproblemsourcingsparesifanythinggoeswrongasinmycase.It’snotthefirstPCdisasterI\'ve had over the years and I can as in this case usually get round them, although not when I bricked the BIOS on a Lenovo x200 one time trying to clear a BIOS password, again I was left with a box of spares which actually came in very handy.</p>\r\n<p>Well that\'stheendofmytaleofwoe.I’lldoanotherepisodeontherecenttriptotheauctionandmynewlaptopsshortly.ThisisTonyHughesforHackerPublicRadiosigningofffornow.</p>\r\n',338,57,0,'CC-BY-SA','Computers,Repair,safety',0,0,1),
(2595,'2018-07-13','New laptop bargain?',252,'This is a short show about another trip to the computer auction and one of my purchases','<p>Greetings HPR listeners this is Tony Hughes again coming from Blackpool in the UK. Well, as you heard on my last episode I recently visited the computer auction I frequent here in the UK. If you want to drool over the catalogue at any time their website is here:</p>\r\n<p><a href=\"https://www.realnorth.co.uk/\" class=\"uri\">https://www.realnorth.co.uk/</a></p>\r\n<p>So at the sale in June they had some really good 3-4 year old laptops for sale so I decided to take a trip and see if I could liberate a few bargains, and one of the items I came away with was 3 Toshiba Z30a Ultra Books of the i5 4th generation. The basic specs are:</p>\r\n<ul>\r\n<li>i5-4300U CPU</li>\r\n<li>128GB mSATA solid state drive</li>\r\n<li>13.3 inch display</li>\r\n<li>8Gig DDR Ram</li>\r\n<li>3 x USB3 ports</li>\r\n<li>VGA and HDMI video out</li>\r\n<li>Full Ethernet Port</li>\r\n<li>Combined Audio in/out jack</li>\r\n<li>SD card reader</li>\r\n<li>Mobile Intel ® HD Graphics with up to 1792MB dynamically allocated</li>\r\n<li>shared graphics memory.</li>\r\n</ul>\r\n<p>There will be a link in the show notes to the full specifications</p>\r\n<p><a href=\"https://www.toshiba.co.uk/discontinued-products/portege-z30-a-1fd/\" class=\"uri\">https://www.toshiba.co.uk/discontinued-products/portege-z30-a-1fd/</a></p>\r\n<p>I had also picked up some 240Gig SSD\'sandhadplannedtoupgradethestoragebutthisisnotpossiblewitha2.5inchdriveasitdoesn\'t have a bay for this format. However it does support up to 128Gig High capacity SD cards so this could be an option if you don\'twanttogototheexpenseofupgradingthemSATAdrive,howeverasluckwouldhaveitoneofmyotherpurchaseshada256GigmSATAdriveina2.5inchcaddysothatwasquicklyswappedoutandbothlaptopsgotanupgrade.Moreofthatinanothershow.</p>\r\n<p>SoafterdoingthehardwareupgradeIproceededtoinstallUbuntu18.04MATEontothePC.Theinstallworkedflawlesslyandaftercompletionandconfiguringthemachinetomylikingeverythingseemstobeworkingjustfine.Thebatteryconditionfora4yearoldlaptopisexcellentatover90%,howeverareplacementcanbehadonEbayforaround£30ifneededandIalwaysfactorthisintoanysecondhandlaptopsIbuy.</p>\r\n<p>SinceIgotitrunningI\'ve installed Windows 7 in a Virtual Machine, in this case Virtual Box as I have a preconfigured Virtual Box HDD image that makes it less of a hassle to install as I don’t have to spend days waiting for all the updates to come through. When this is running in the background it doesn\'tovertaxthehostmachine,andforLinuxusersitdoesmeanyouhaveaccesstothatoccasionalbitoflightweightMSsoftwarethatyoumayneedwithouttheneedtolugaround2PC\'s.</p>\r\n<p>So did I bag a bargain, well 4 years ago on release these laptops went for £1100+ in the UK and even today they fetch £160 in good order on the likes of Ebay for a model with the specification as I originally purchased it. I would never have been in the market to spend £1000+ on a laptop now or then so the only way I can enjoy these types of machines is after they have been pre loved by someone else. Lets just say £160 is quite a bit more than I paid but with the upgrade to 256Gig mSATA drive I have a better machine for a little less than that, I personally think I bagged a bargain which will do me good service in the coming months/years.</p>\r\n',338,57,0,'CC-BY-SA','computer auction,laptop',0,0,1),
(2584,'2018-06-28','Plot Twists In Storytelling',719,'Lostnbronx examines plot twists, including the different types, and how they can be used.','<p>Plot twists come in several varieties, and can produce different effects in stories. They can be powerful tools, done correctly, but quickly become trite and predictable if over-used, or used poorly. What\'sthebestwaytoincludethem?Andwhenmightitbeamistaketoeventry?</p>',107,105,0,'CC-0','storytelling,plottwists,lostnbronx',0,0,1),
(2587,'2018-07-03','Cleaning out your Digital Gutters',1519,'Knightwise talks about being a geek and his quest to curate the library of his mind','<p>While cleaning out the gutters, Knightwise talks about cleaning out the digital gutters of his information consumption and looking for geeky ways to get his information fix.</p>\r\n',111,0,1,'CC-BY-SA','geek, life, lifestyle',0,0,1),
(2588,'2018-07-04','Miniature painting',1740,'Tuula rambles about how to paint miniatures while painting some toy soldiers','<p>Tuula rambles about miniature painting while painting some ancient British units (horses for chariots to be specific) for De Bellis Antiquitatis.</p>\r\n<ul>\r\n<li><p>De Bellis Antiquitatis is a quick to learn, quick to play war game for ancient period (and a bit more) - <a href=\"https://en.wikipedia.org/wiki/De_Bellis_Antiquitatis\" class=\"uri\">https://en.wikipedia.org/wiki/De_Bellis_Antiquitatis</a></p></li>\r\n<li><p>Army Painter is paint, brush and basing manufacturer - <a href=\"https://www.thearmypainter.com/\" class=\"uri\">https://www.thearmypainter.com/</a></p></li>\r\n<li><p>Osprey Publishing specializes in publishing books on modeling and history - <a href=\"https://ospreypublishing.com/\" class=\"uri\">https://ospreypublishing.com/</a></p></li>\r\n</ul>',364,114,0,'CC-BY-SA','miniatures painting',0,0,1),
(2583,'2018-06-27','Random Rant',917,'Rant on how US sound recordings copyright laws are weird & how I miss Juiced Penguin','<h3 id=\"citations\">Citations</h3>\r\n<ul>\r\n<li><a href=\"https://www.copyright.gov/docs/sound/\" class=\"uri\">https://www.copyright.gov/docs/sound/</a></li>\r\n<li><a href=\"https://www.infotoday.com/searcher/sep12/Hirtle--When-Is-1923-Going-to-Arrive-and-Other-Complications-of-the-U.S.-Public-Domain.shtml\" class=\"uri\">https://www.infotoday.com/searcher/sep12/Hirtle--When-Is-1923-Going-to-Arrive-and-Other-Complications-of-the-U.S.-Public-Domain.shtml</a></li>\r\n</ul>\r\n',354,0,1,'CC-BY-SA','Juiced Penguin,copyright,public domain',0,0,1),
(2599,'2018-07-19','Fitting a 3.5mm adapter to a bluetooth receiver.',489,'Ken cobbles together a bluetooth adapter for any 3.5mm headphone','<p>\r\nThere was a time when the perfect lightweight podcast listening station was a <a href=\"https://en.wikipedia.org/wiki/SanDisk_Sansa#Sansa_Clip\">sansa clip</a> running <a href=\"https://www.rockbox.org/\">Rockbox</a> connected to a set of <a href=\"https://www.download.p4c.philips.com/files/s/she3600_97/she3600_97_pss_aenid.pdf\">SHE3600/97 Philips In-Ear Headphones</a>.</p>\r\n<p>\r\nAlas Philips stopped producing the SHE3600/97. SanDisk reduced the specs of the clips, so Rockbox is no longer supported. We\'releftwithoutaflexibleoptiontolisteningtopodcasts.\r\n</p>\r\n<p>\r\nOntheotherhandthepriceofAndroidphoneshavefallentosub€50range,and<ahref=\"https://www.hema.nl/winkel/vrije-tijd-kantoor/school-kantoor/media-computer/elektronica-accessoires/bluetooth-sport-oortelefoon-(39620015)?variant=39620015\">bluetoothheadsets</a>canbehadfor€25,thereisapossibilitytohavetheportabilitywhilekeepingthecostlow.\r\n</p>\r\n<p>\r\nIsetouttoconvertthebluetoothheadsettoaacceptgeneric3.5mmsockets.\r\n</p>\r\n<p>\r\n<imgsrc=\"https://hackerpublicradio.org/eps/hpr2599/hema-earbud-before-and-during.jpg\"/><br/>\r\nAnewearbudsetwithcrappyinearbuds,andthehackedset.\r\n</p>\r\n<p>\r\n<imgsrc=\"https://hackerpublicradio.org/eps/hpr2599/bluetooth-enabled-philips-shp2500.jpg\"/><br/>\r\nPlaysfinewithlargeoverearheadphones.\r\n</p>\r\n<p>\r\n<imgsrc=\"https://hackerpublicradio.org/eps/hpr2599/bluetooth-with-patent-pending-earbuds.jpg\"/><br/>\r\nAlsowithsmallinearbuds,completewith<ahref=\"https://hackerpublicradio.org/eps.php?id=1801\">PatentPending</a>earidentifier\r\n</p>\r\n<p>\r\n<imgsrc=\"https://hackerpublicradio.org/eps/hpr2599/motherload.jpg\"/><br/>\r\nSomethingtoread<ahref=\"https://www.amazon.com/dp/1549676938?tag=viglink20248-20\">Motherload</a>\r\n</p>\r\n',30,0,1,'CC-BY-SA','lifehack,earphone,bluetooth',0,0,1),
(2589,'2018-07-05','Saving Money: a response to Klaatu\'sPersonalFinanceSeries',867,'AresponsetoKlaatu\'s very nice series about personal finance.','<h2>Links</h2>\r\n\r\n<ul>\r\n<li><a href=\"https://en.wikipedia.org/wiki/403(b)\">403(b) Tax-Sheltered Annuity Plans</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/United_States_Savings_Bonds\">United States Savings Bonds</a></li>\r\n<li><a href=\"https://www.classicguitar.com/robert-ruck-usarobert-ruck-usa/\">Guitar Maker Robert Ruck</a></li>\r\n</ul>\r\n',238,0,0,'CC-BY-SA','personal finance, money, saving, retirement',0,0,1),
(2593,'2018-07-11','Intro to De Bellis Antiquitatis',1648,'Short intro to tabletop wargame called DBA','<p>In this episode Tuula paints rambles about De Bellis Antiquitatis while painting more toy soldiers, so expect long pauses and missing thoughts as he tries to do two things at the same time.</p>\r\n<p>De Bellis Antiquitatis (or DBA for short): <a href=\"https://en.wikipedia.org/wiki/De_Bellis_Antiquitatis\" class=\"uri\">https://en.wikipedia.org/wiki/De_Bellis_Antiquitatis</a></p>\r\n<p>While the original site seems to be gone, WADBAG unofficial guide to DBA can be found at: <a href=\"https://www.wargames-romania.ro/wordpress/wargames/de-bellis-antiquitatis-dba/the-unofficial-guide-to-dba/\" class=\"uri\">https://www.wargames-romania.ro/wordpress/wargames/de-bellis-antiquitatis-dba/the-unofficial-guide-to-dba/</a></p>\r\n',364,95,0,'CC-BY-SA','tabletop gaming',0,0,1),
(2591,'2018-07-09','International Troubleshooting',1815,'NYbill troubleshoots a DIY kit of Ken Fallon’s.','<p>NYbill troubleshoots a DIY kit of Ken Fallon\'s.</p>\r\n<p>Thenewtoy:</p>\r\n<p>AmScopeSE400-Z<br/>\r\n(Themicroscopehasaniceworkingheightunderneathitsoyoucangetyourhandsandtoolsinthere.)</p>\r\n<p>Theoffendingchip:</p>\r\n<p><ahref=\"https://www.mccsemi.com/up_pdf/SRV05-4L(SOT23-6L).pdf\"class=\"uri\">https://www.mccsemi.com/up_pdf/SRV05-4L(SOT23-6L).pdf</a></p>\r\n<p>Picsfortheepisode:</p>\r\n<p><ahref=\"https://media.gunmonkeynet.net/u/nybill/collection/international-troubleshooting/\"class=\"uri\">https://media.gunmonkeynet.net/u/nybill/collection/international-troubleshooting/</a></p>\r\n',235,103,0,'CC-BY-SA','DIY,Kit,Electronics,Troubleshooting',0,0,1),
(2605,'2018-07-27','The Eyes Have It',599,'My history with vision issues and how I have dealt with them.','<p>My history with vision issues started when I was 3 years old, and I am still dealing with some issues. Fortunately, things are well-controlled and I am doing well.</p>\r\n<ul>\r\n<li><a href=\"https://www.mayoclinic.org/diseases-conditions/diabetic-retinopathy/symptoms-causes/syc-20371611\" class=\"uri\">https://www.mayoclinic.org/diseases-conditions/diabetic-retinopathy/symptoms-causes/syc-20371611</a></li>\r\n<li><a href=\"https://www.palain.com/?page_id=338\" class=\"uri\">https://www.palain.com/?page_id=338</a></li>\r\n<li><a href=\"https://www.webmd.com/eye-health/tc/posterior-vitreous-detachment-topic-overview\" class=\"uri\">https://www.webmd.com/eye-health/tc/posterior-vitreous-detachment-topic-overview</a></li>\r\n<li><a href=\"https://nei.nih.gov/health/maculardegen/armd_facts\" class=\"uri\">https://nei.nih.gov/health/maculardegen/armd_facts</a></li>\r\n<li><a href=\"https://www.palain.com/?page_id=340\" class=\"uri\">https://www.palain.com/?page_id=340</a></li>\r\n</ul>',198,100,0,'CC-BY-SA','Health, Medicine, Eye Care, Vision',0,0,1),
(2592,'2018-07-10','Tech Talk With Allison',3010,'This is a talk with Allison about webites, ruby, os design and other such things. ','<p>\r\n<img src=\"https://theadesilva.com/hpr_allison.jpg\"/><br/><br/>\r\n\r\nCome join us and listen to Allison talk about her tech!!! This talk includes subjects like websites, ruby, os design and other such things.<br/>\r\n</p>\r\n<p>Allison\'semailaddress:<ahref=\"mailto:allison@isams.net\"target=\"_top\">allison@isams.net</a></p>\r\n',115,0,0,'CC-BY-SA','os,ruby,webdev',0,0,1),
(2615,'2018-08-10','Cancer',1043,'My history with cancer and how I have dealt with it.','<p>I had surgery for cancer in 2010, and family history of cancer, which means certain things have had to be done.</p>\r\n<ul>\r\n<li><a href=\"https://www.palain.com/?page_id=338\" class=\"uri\">https://www.palain.com/?page_id=338</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Gleason_grading_system\" class=\"uri\">https://en.wikipedia.org/wiki/Gleason_grading_system</a></li>\r\n<li><a href=\"https://www.cancer.org/cancer/prostate-cancer/treating.html\" class=\"uri\">https://www.cancer.org/cancer/prostate-cancer/treating.html</a></li>\r\n<li><a href=\"https://www.palain.com/?page_id=344\" class=\"uri\">https://www.palain.com/?page_id=344</a></li>\r\n</ul>',198,100,0,'CC-BY-SA','Health, Medicine, Cancer, Prostate, Colon, Lungs',0,0,1),
(2598,'2018-07-18','Calculating planetary orbits in Haskell',1711,'Tuula talks about calculating planetary orbits','<p>Function signatures (it might or might not be helpful to have these at hand while listening):</p>\r\n<ul>\r\n<li>Helpers:</li>\r\n</ul>\r\n<pre><code> radToDeg :: Floating a => a -> a\r\n degToRad :: Floating a => a -> a\r\n clamp :: Float -> Float</code></pre>\r\n<ul>\r\n<li><p>Time:</p></li>\r\n</ul>\r\n<pre><code> day :: Int -> Int -> Int -> Float -> Day Float</code></pre>\r\n<ul>\r\n<li>Orbital parameters:</li>\r\n</ul>\r\n<pre><code> longitudeOfAscendingNode :: Orbit body center => body -> center -> Day d -> LongAscNode body center\r\n inclinationToEcliptic :: Orbit body center => body -> center -> Day d -> InclToEcl body center\r\n argumentOfPeriapsis :: Orbit body center => body -> center -> Day d -> ArgPeri body center\r\n semiMajorAxis :: Orbit body center => body -> center -> Day d -> SemiMajor body center\r\n eccentricity :: Orbit body center => body -> center -> Day d -> Ecc body center\r\n meanAnomaly :: Orbit body center => body -> center -> Day d -> MeanAno body center</code></pre>\r\n<ul>\r\n<li>Calculating location on orbital plane:</li>\r\n</ul>\r\n<pre><code> eccAnomaly :: MeanAno a b -> Ecc a b -> EccAnomaly a b\r\n trueAnomaly :: EccAnomaly a b -> Ecc a b -> TrueAnomaly a b\r\n dist :: EccAnomaly a b -> Ecc a b -> SemiMajor a b -> Distance a b</code></pre>\r\n<ul>\r\n<li>Translating between coordinate systems:</li>\r\n</ul>\r\n<pre><code> toEclCoord :: TrueAnomaly a b -> Distance a b -> LongAscNode a b -> ArgPeri a b -> InclToEcl a b -> EclCoord a b\r\n toEqCoordinates :: EclCoord body Earth -> Day Float -> EqCoord body</code></pre>\r\n<p>Some helpful links:</p>\r\n<ul>\r\n<li>Guide by Paul Schlyter - <a href=\"https://www.stjarnhimlen.se/comp/ppcomp.html\" class=\"uri\">https://www.stjarnhimlen.se/comp/ppcomp.html</a></li>\r\n<li>Sample calculations by Paul Schlyter - <a href=\"https://www.stjarnhimlen.se/comp/tutorial.html\" class=\"uri\">https://www.stjarnhimlen.se/comp/tutorial.html</a></li>\r\n<li>Tuula\'sblogpost-<ahref=\"https://engineersjourney.wordpress.com/2018/06/29/planetary-orbits-and-haskell/\"class=\"uri\">https://engineersjourney.wordpress.com/2018/06/29/planetary-orbits-and-haskell/</a></li>\r\n<li>DefinitionoforbitalelementsinWikipedia-<ahref=\"https://en.wikipedia.org/wiki/Orbital_elements\"class=\"uri\">https://en.wikipedia.org/wiki/Orbital_elements</a></li>\r\n<li>UnitsofangleinWikipedia-<ahref=\"https://en.wikipedia.org/wiki/Degree_(angle)\"class=\"uri\">https://en.wikipedia.org/wiki/Degree_(angle)</a>and<ahref=\"https://en.wikipedia.org/wiki/Radian\"class=\"uri\">https://en.wikipedia.org/wiki/Radian</a></li>\r\n</ul>\r\n',364,107,0,'CC-BY-SA','haskell,astronomy',0,0,1),
(2601,'2018-07-23','Liverpool Makerfest 2018',634,'This is an interview with Chris Dell','<p>This is the first in a series of interviews carried out at Liverpool Makefest 2018</p>\r\n<p>This first interview is with Chris Dell about EduBlocks</p>\r\n<ul>\r\n<li><p><a href=\"https://lpoolmakefest.org/\" class=\"uri\">https://lpoolmakefest.org/</a></p></li>\r\n<li><p><a href=\"https://edublocks.org/\" class=\"uri\">https://edublocks.org/</a></p></li>\r\n</ul>\r\n',338,78,0,'CC-BY-SA','Liverpool Makefest 2018, EduBlocks',0,0,1),
(2606,'2018-07-30','Liverpool Makefest 2018 - interview with Dan Lynch',520,'This is an interview with Dan Lynch one of this year\'sMakefestorganisers','<p>AnotherinterviewfromLiverpoolMakefest2018thistimewithDanLynchofLinuxOutlawsandFlossWeekly</p>\r\n<ul>\r\n<li><p><ahref=\"https://lpoolmakefest.org/\"class=\"uri\">https://lpoolmakefest.org/</a></p></li>\r\n<li><p><ahref=\"https://makefest.podfactory.org/\"class=\"uri\">https://makefest.podfactory.org/</a></p></li>\r\n<li><p><ahref=\"https://twit.tv/shows/floss-weekly\"class=\"uri\">https://twit.tv/shows/floss-weekly</a></p></li>\r\n<li><p><ahref=\"https://sixgun.org/linuxoutlaws/\"class=\"uri\">https://sixgun.org/linuxoutlaws/</a></p></li>\r\n</ul>\r\n',338,78,0,'CC-BY-SA','LiverpoolMakefest2018,DanLynch,LinuxOutlaws,FlossWeekly',0,0,1),
(2871,'2019-08-05','HPR Community News for July 2019',3794,'HPR Volunteers talk about shows released and comments posted in July 2019','<style>\ntable td.shrink {\n white-space:nowrap\n}\n</style>\n\n<h2>New hosts</h2>\n<p>\nWelcome to our new host: <br />\n\n <a href=\"https://hackerpublicradio.org/correspondents/0379.html\" target=\"_blank\">mightbemike</a>.\n</p>\n\n<h2>Last Month\'sShows</h2>\n<tableid=\"t01\">\n<tr>\n<th>Id</th>\n<th>Day</th>\n<th>Date</th>\n<th>Title</th>\n<th>Host</th>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=2846\"target=\"_blank\">2846</a></strong></td>\n<td>Mon</td>\n<tdclass=\"shrink\">2019-07-01</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=2846\"target=\"_blank\">HPRCommunityNewsforJune2019</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0159.html\"target=\"_blank\">HPRVolunteers</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=2847\"target=\"_blank\">2847</a></strong></td>\n<td>Tue</td>\n<tdclass=\"shrink\">2019-07-02</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=2847\"target=\"_blank\">earbuds</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0036.html\"target=\"_blank\">operat0r</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=2848\"target=\"_blank\">2848</a></strong></td>\n<td>Wed</td>\n<tdclass=\"shrink\">2019-07-03</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=2848\"target=\"_blank\">RandomnumbersinHaskell</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0364.html\"target=\"_blank\">Tuula</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=2849\"target=\"_blank\">2849</a></strong></td>\n<td>Thu</td>\n<tdclass=\"shrink\">2019-07-04</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=2849\"target=\"_blank\">HPRNYEShow2018-2019part5</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0269.html\"target=\"_blank\">Honkeymagoo</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=2850\"target=\"_blank\">2850</a></strong></td>\n<td>Fri</td>\n<tdclass=\"shrink\">2019-07-05</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=2850\"target=\"_blank\">NISTCybersecurityFramework</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0198.html\"target=\"_blank\">Ahuka</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=2851\"target=\"_blank\">2851</a></strong></td>\n<td>Mon</td>\n<tdclass=\"shrink\">2019-07-08</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=2851\"target=\"_blank\">Anintroductiontotheworkoffirefighters</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0369.html\"target=\"_blank\">JeroenBaten</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=2852\"target=\"_blank\">2852</a></strong></td>\n<td>Tue</td>\n<tdclass=\"shrink\">2019-07-09</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=2852\"target=\"_blank\">GnuAwk-Part16</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0225.html\"target=\"_blank\">DaveMorriss</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=2853\"target=\"_blank\">2853</a></strong></td>\n<td>Wed</td>\n<tdclass=\"shrink\">2019-07-10</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=2853\"target=\"_blank\">Feedingthebeast</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0309.html\"target=\"_blank\">folky</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=2854\"target=\"_blank\">2854</a></strong></td>\n<td>Thu</td>\n<tdclass=\"shrink\">2019-07-11</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=2854\"target=\"_blank\">TellingmyselfsomethingInTheMorning</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0243.ht
(3991,'2023-11-20','YOU ARE A PIRATE ',1539,'I rant I think about piracy ','<h2 id=\"xgp-save-extractor\">XGP-save-extractor</h2>\n<p>Python script to extract/backup savefiles out of Xbox Game Pass for\nPC games.</p>\n<p>When run, the script produces a ZIP file for each supported game save\nfound in the system.</p>\n<p>In most cases the files in the ZIP can be copied to the save\ndirectory of the Steam/Epic version of the game. To find out the save\nfile location, check <a\nhref=\"https://www.pcgamingwiki.com/\">PCGamingWiki</a>.</p>\n<p><a href=\"https://github.com/Z1ni/XGP-save-extractor/releases\"\nclass=\"uri\">https://github.com/Z1ni/XGP-save-extractor/releases</a></p>\n',36,0,1,'CC-BY-SA','hacking, piracy ',0,0,1),
(2891,'2019-09-02','HPR Community News for August 2019',2224,'HPR Volunteers talk about shows released and comments posted in August 2019','<style>\ntable td.shrink {\n white-space:nowrap\n}\n</style>\n\n<h2>New hosts</h2>\n<p>\nThere were no new hosts this month.\n</p>\n\n<h2>Last Month\'sShows</h2>\n<tableid=\"t01\">\n<tr>\n<th>Id</th>\n<th>Day</th>\n<th>Date</th>\n<th>Title</th>\n<th>Host</th>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=2869\"target=\"_blank\">2869</a></strong></td>\n<td>Thu</td>\n<tdclass=\"shrink\">2019-08-01</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=2869\"target=\"_blank\">buildingabike,followinginJohnKulp\'s footsteps</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0326.html\" target=\"_blank\">Brian in Ohio</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2870\" target=\"_blank\">2870</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2019-08-02</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2870\" target=\"_blank\">Hierarchy of Evidence</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0198.html\" target=\"_blank\">Ahuka</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2871\" target=\"_blank\">2871</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2019-08-05</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2871\" target=\"_blank\">HPR Community News for July 2019</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0159.html\" target=\"_blank\">HPR Volunteers</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2872\" target=\"_blank\">2872</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2019-08-06</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2872\" target=\"_blank\">Shoe Lace Tips</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0201.html\" target=\"_blank\">MrX</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2873\" target=\"_blank\">2873</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2019-08-07</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2873\" target=\"_blank\">Death Angel - Card game</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0364.html\" target=\"_blank\">Tuula</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2874\" target=\"_blank\">2874</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2019-08-08</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2874\" target=\"_blank\">Repair of G.E. Variable Speed Cassette Recorder</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0238.html\" target=\"_blank\">Jon Kulp</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2875\" target=\"_blank\">2875</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2019-08-09</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2875\" target=\"_blank\">cutting up the frames</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0326.html\" target=\"_blank\">Brian in Ohio</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2876\" target=\"_blank\">2876</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2019-08-12</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2876\" target=\"_blank\">Sausage Orzotto</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0215.html\" target=\"_blank\">Windigo</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2877\" target=\"_blank\">2877</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2019-08-13</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2877\" target=\"_blank\">Using Zenity with Pdmenu</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0225.html\" target=\"_blank\">Dave Morriss</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hacke
(2612,'2018-08-07','Liverpool Makefest 2018 - interview with Joe aka Concrete Dog',353,'An interview with Joe from Liverpool makefest','<p>In this episode I talk to Joe aka Concrete dog about amateur Rocketry</p>\r\n<ul>\r\n<li><p><a href=\"https://concretedog.blogspot.com/2018/\" class=\"uri\">https://concretedog.blogspot.com/2018/</a></p></li>\r\n<li><p><a href=\"https://twitter.com/concreted0g\" class=\"uri\">https://twitter.com/concreted0g</a></p></li>\r\n</ul>\r\n\r\n<p>\r\n<a href=\"https://hackerpublicradio.org/eps/hpr2612/hpr2612_IMG_20180630_094936.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr2612/hpr2612_IMG_20180630_094936_small.jpg\" /></a><br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr2612/hpr2612_IMG_20180630_095644.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr2612/hpr2612_IMG_20180630_095644_small.jpg\" /></a><br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr2612/hpr2612_IMG_20180630_100342.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr2612/hpr2612_IMG_20180630_100342_small.jpg\" /></a><br />\r\n</p>\r\n',338,78,0,'CC-BY-SA','Liverpool Makefest 2018',0,0,1),
(2616,'2018-08-13','Liverpool Makefest 2018 - interview with Josh - A.K.A - All About Code',310,'An interview with Josh recorded at Liverpool makefest','<p>This is another short interview recorded at this year\'sLiverpoolMakefest,thistimewithJoshwhodevelopedEduBlocks.</p>\r\n<ul>\r\n<li><p><ahref=\"https://lpoolmakefest.org/\"class=\"uri\">https://lpoolmakefest.org/</a></p></li>\r\n<li><p><ahref=\"https://edublocks.org/\"class=\"uri\">https://edublocks.org/</a></p></li>\r\n<li><p><ahref=\"https://allaboutcode.co.uk/\"class=\"uri\">https://allaboutcode.co.uk/</a></p></li>\r\n<li><p><ahref=\"https://github.com/AllAboutCode\"class=\"uri\">https://github.com/AllAboutCode</a></p></li>\r\n<li><p><ahref=\"https://twitter.com/all_about_code?lang=en\"class=\"uri\">https://twitter.com/all_about_code?lang=en</a></p></li>\r\n</ul>',338,78,0,'CC-BY-SA','LiverpoolMakefest2018,EduBlocks,computing,youngcoders',0,0,1),
(2621,'2018-08-20','Liverpool Makefest 2018 - Chan\'nelThomasa.k.alittlepinkmaker',293,'InthisepisodeItalktoChan\'nel Thomas aka little pink maker','<p>In this episode recorded at Liverpool Makefest 2018 I talk to Chan\'nelThomasakalittlepinkmaker.Chan\'nel has an amazing web site; the link is below. I was going to include a couple of pictures taken on the day but they don\'tdoherworkthejusticeitdeserves.</p>\r\n<ul>\r\n<li><p><ahref=\"https://lpoolmakefest.org/\"class=\"uri\">https://lpoolmakefest.org/</a></p></li>\r\n<li><p><ahref=\"https://www.littlepinkmaker.com/about\"class=\"uri\">https://www.littlepinkmaker.com/about</a></p></li>\r\n<li><p>Mail:<ahref=\"mailto:makeit@littlepinkmaker.com\">makeit@littlepinkmaker.com</a></p></li>\r\n</ul>',338,78,0,'CC-BY-SA','LiverpoolMakefest2018,Making,hacking,creativity,inventions',0,0,1),
(2626,'2018-08-27','Liverpool Makefest 2018 - interviews with Helen and Chris',510,'Interviews about Manchester Hackspace and Wirral Code Club','<p>In this episode I talk to Helen from Manchester Hackspace and Chris from Wirral Code Club</p>\r\n<ul>\r\n<li><p><a href=\"https://lpoolmakefest.org\" class=\"uri\">https://lpoolmakefest.org</a></p></li>\r\n<li><p><a href=\"https://hacman.org.uk/\" class=\"uri\">https://hacman.org.uk/</a></p></li>\r\n<li><p><a href=\"https://www.wirralcodeclub.org/\" class=\"uri\">https://www.wirralcodeclub.org/</a></p></li>\r\n</ul>',338,78,0,'CC-BY-SA','Liverpool Makefest 2018, computing, young coders, hackers, makers, crafts',0,0,1),
(2632,'2018-09-04','Liverpool Makefest 2018 - interviews with Robert and Carl',376,'In this episode I talk to Robert from Roberts Workshop and Carl from Edgehill University','<p>In this episode I talk to Robert from Roberts Workshop and Carl from Edgehill University</p>\r\n<p>\r\n<a href=\"https://hackerpublicradio.org/eps/hpr2632/D2632.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr2632/D2632_small.jpg\" /></a>\r\n</p>\r\n<ul>\r\n<li><p><a href=\"https://www.robertsworkshop.co.uk/contact\" class=\"uri\">https://www.robertsworkshop.co.uk/contact</a></p></li>\r\n<li><p><a href=\"https://www.edgehill.ac.uk/\" class=\"uri\">https://www.edgehill.ac.uk/</a></p></li>\r\n</ul>\r\n',338,78,0,'CC-BY-SA','Liverpool Makefest 2018, computing, young coders, hackers, makers, crafts',0,0,1),
(2636,'2018-09-10','Liverpool Makefest 2018 - interviews with Noel from JMU FabLab',603,'In this episode I talk to Noel Baker from the JMU FabLab.','<p>In this episode I talk to Noel Baker from the JMU FabLab.</p>\r\n<p>\r\n<a href=\"https://hackerpublicradio.org/eps/hpr2636/Cila2636.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr2636/Cila2636_small.jpg\" /></a>\r\n</p>\r\n<ul>\r\n<li><a href=\"https://buyonline.ljmu.ac.uk/product-catalogue/ljmu/art-materials/digital-fabrication-lab\" class=\"uri\">https://buyonline.ljmu.ac.uk/product-catalogue/ljmu/art-materials/digital-fabrication-lab</a></li>\r\n<li><a href=\"https://lpoolmakefest.org/\" class=\"uri\">https://lpoolmakefest.org/</a></li>\r\n</ul>\r\n',338,78,0,'CC-BY-SA','Liverpool Makefest 2018, Making, hacking, creativity',0,0,1),
(2594,'2018-07-12','Using nmtui, the Network Manager Terminal User interface',638,'A use case for nmtui and general discussion about how to use it','<p>This is my first show and I am happy to be here!</p>\r\n<p><code>nmtui</code>\'sdocumentationcanbefound<ahref=\"https://developer.gnome.org/NetworkManager/stable/nmtui.html\">here</a>.</p>\r\n<p>Youcanreachmeonthefreenodeircnetworkat<code>blu3r4d0n</code>.</p>',366,0,0,'CC-BY-SA','nmtui,networkmanager,linux',0,0,1),
(2596,'2018-07-16','Battling with English - part 2',1282,'Misunderstandings about English grammar, spelling, punctuation, etc.','<h1 id=\"battling-with-english---part-2\">Battling with English - part 2</h1>\r\n<h2 id=\"further-notes-about-then-and-than\">Further notes about <code>\'then\'</code> and <code>\'than\'</code></h2>\r\n<p>In the last episode I mentioned the confusion between <b><em>then</em></b> and <b><em>than</em></b>. I referred to the etymology of the two words, but I didn\'tgointodetail.</p>\r\n<p>Readingthe<em>OnlineEtymologyDictionary</em>,oneinterestingpointinthe<ahref=\"https://www.etymonline.com/word/than\"title=\"Online Etymology Dictionary: \'than\'\">pageabout<b><em>than</em></b></a>isthatitwas:</p>\r\n<blockquote>\r\n<p>Developedfromtheadverb<em>then</em>,andnotdistinguishedfromitbyspellinguntilc.1700.</p>\r\n</blockquote>\r\n<p>So,itwouldseemthatthetwowordsarerelatedandhistoricallywerethesame!However,I\'d guess that it is unlikely that people using them interchangeably now are making reference to usage in the 1700\'s.</p>\r\n<hr/>\r\n<h2id=\"problems-with-apostrophes\">Problemswithapostrophes</h2>\r\n<p>Letusnowexaminetheapostrophe,whichisapunctuationmark.Itisusedfor:</p>\r\n<ul>\r\n<li><p>Indicatingthatlettershavebeenomitted,suchasinacontractedformofwords.Forexamplewhenthephrase<b><em>theyare</em></b>iscontractedto<b><em>they\'re</em></b>.</p></li>\r\n<li><p>Turning a word into a possessive form such as in <b><em>the cat\'spaw</em></b></p></li>\r\n<li><p>Whenthepluralof<u>asingleletter</u>(ordigit)isrequiredsuchasin<b><em>dotyouri\'s and cross your t\'s</em></b>.</p></li>\r\n</ul>\r\n<p>Thereareotherusesbutyoucanlookatthe<ahref=\"https://en.wikipedia.org/wiki/Apostrophe\"title=\"Wikipedia article on the Apostrophe\">Wikipedia</a>articleforthemifyouwanttodigdeeper.Imaywellrevisitthistopicinalatershowinthisseries.</p>\r\n<h2id=\"long-notes\">Longnotes</h2>\r\n<p>Ihaveprovideddetailednotesasusual,andthesecanbe<ahref=\"https://hackerpublicradio.org/eps/hpr2596/full_shownotes.html\">viewedhere</a>.</p>\r\n<h2id=\"links\">Links</h2>\r\n<ul>\r\n<li>Apostrophe\r\n<ul>\r\n<li>Wikipediapage:<ahref=\"https://en.wikipedia.org/wiki/Apostrophe\">Apostrophe</a></li>\r\n<li>CambridgeDictionary:<ahref=\"https://dictionary.cambridge.org/grammar/british-grammar/determiners/possession-john-s-car-a-friend-of-mine\">Possession</a></li>\r\n</ul></li>\r\n<li>GrammarGirl\'s items on apostrophes:\r\n<ul>\r\n<li><a href=\"https://www.quickanddirtytips.com/education/grammar/apostrophe-catastrophe-part-one\">Apostrophe Catastrophe (Part One)</a></li>\r\n<li><a href=\"https://www.quickanddirtytips.com/education/grammar/apostrophe-catastrophe-part-two\">Apostrophe Catastrophe (Part Two)</a></li>\r\n</ul></li>\r\n<li>Oxford Dictionaries: <a href=\"https://en.oxforddictionaries.com/definition/cant\">Definition of \'cant\'</a></li>\r\n<li>Grammar Monster:\r\n<ul>\r\n<li><a href=\"https://www.grammar-monster.com/punctuation/using_apostrophes.htm\">Using Apostrophes</a></li>\r\n<li><a href=\"https://www.grammar-monster.com/plurals/plural_of_amoeba.htm\">Plural of amoeba</a></li>\r\n</ul></li>\r\n<li>Grammarbook.com:\r\n<ul>\r\n<li><a href=\"https://data.grammarbook.com/blog/pronouns/1-grammar-error/\">Its vs It\'s</a></li>\r\n</ul></li>\r\n<li>Previousepisodeinthisseries:\r\n<ul>\r\n<li><ahref=\"https://hackerpublicradio.org/eps.php?id=2558\">BattlingwithEnglish-part1</a></li>\r\n</ul></li>\r\n</ul>',225,120,1,'CC-BY-SA','grammar,spelling,punctuation,wordmisuse,English,apostrophe',0,0,1),
(2641,'2018-09-17','Liverpool Makefest 2018 - interview with Rachel from the MicroBit Foundation',564,'This is a short interview recorded at this years Liverpool Makefest with Rachel from MicroBit','<p>In this episode I talk to Rachel Lancaster from the Micro:Bit foundation.</p>\r\n<ul>\r\n<li><p><a href=\"https://microbit.org/\" class=\"uri\">https://microbit.org/</a></p></li>\r\n<li><p><a href=\"https://lpoolmakefest.org/\" class=\"uri\">https://lpoolmakefest.org/</a></p></li>\r\n</ul>',338,78,0,'CC-BY-SA','Liverpool Makefest 2018, computing, young coders, hackers, makers, crafts, microbit',0,0,1),
(2646,'2018-09-24','Liverpool Makefest 2018 - Interview with Steve and Gerrard from the Liverpool Astronomical society.',355,'In this Episode I talk to Steve and Gerrard from the Liverpool Astronomical society.','<p>In this episode I talk to Steve and Gerard from the Liverpool Astronomical society.</p>\r\n<ul>\r\n<li><p><a href=\"https://liverpoolas.org/event/weekly-public-meeting-at-the-leighton-observatory-pex-hill-4/2018-09-26/\" class=\"uri\">https://liverpoolas.org/event/weekly-public-meeting-at-the-leighton-observatory-pex-hill-4/2018-09-26/</a></p></li>\r\n<li><p><a href=\"https://liverpoolas.org/\" class=\"uri\">https://liverpoolas.org/</a></p></li>\r\n<li><p><a href=\"https://lpoolmakefest.org/\" class=\"uri\">https://lpoolmakefest.org/</a></p></li>\r\n</ul>\r\n',338,78,0,'CC-BY-SA','Liverpool Makefest 2018, Astronomy, History, Science',0,0,1),
(2597,'2018-07-17','How to Fix a Remote with Buttons that Don\'tWork',392,'AresponsetoKenFallon\'s episode about how to check whether your remote is working or not.','<p>After listening to Ken Fallon’s episode about how to check whether your remote is working or not, I checked one of our remotes that had been giving us problems and found that only a couple of the buttons produced the light. Then I found a video on YouTube showing how to fix non-working buttons and this is my report.</p>',238,0,0,'CC-BY-SA','Repairs, Remote Controls, Fixing things, Cleaning',0,0,1),
(2602,'2018-07-24','HPR Quick Tips July 2018',1474,'SpiderOAK Backup and Trekking the AT','<p>Don’t use GOOGLE DRIVE ! They flag personal content and backups as malware and will not let you download or share your own backups!!!!!</p>\r\n',36,0,1,'CC-BY-SA','SpiderOAK,Backups,DR,Trekking,Hiking',0,0,1),
(2604,'2018-07-26','Restoration of a Fasco L55A Hassock Fan',1074,'I talk about my recent restoration project of a mid-century modern hassock fan','<h2>The Fasco L55A Hassock Fan</h2>\r\n\r\n<p>Click the image to view my Flickr slideshow of the restoration process.</p>\r\n\r\n<p><a data-flickr-embed=\"true\" href=\"https://www.flickr.com/photos/137675441@N05/albums/72157697860079274\" title=\"Fasco L55A Hassock Fan Restoration\"><img src=\"https://farm1.staticflickr.com/883/42280247534_18fd9bd408_c.jpg\" width=\"800\" height=\"450\" alt=\"Fasco L55A Hassock Fan Restoration\"/></a></p>\r\n\r\n<p>A video showing my restored fan in action!</p>\r\n\r\n<iframe width=\"560\" height=\"315\" src=\"https://www.youtube.com/embed/K_N0bjR3EwU\" frameborder=\"0\" allow=\"autoplay; encrypted-media\" allowfullscreen></iframe>\r\n\r\n<h2>Links</h2>\r\n\r\n<ul>\r\n<li><a href=\"https://www.google.com/search?q=hassock+fan&hs=Qy7&tbm=isch&tbo=u&source=univ&sa=X&ved=0ahUKEwji0cLju4rcAhUB4IMKHYCKA9cQsAQInwI&biw=1600&bih=761\" target=\"_blank\">Hassock Fans on Google image search</a></li>\r\n<li><a href=\"https://www.flickr.com/photos/137675441@N05/albums/72157697860079274\" title=\"Fasco L55A Hassock Fan Restoration\">Flickr photographs</a></li>\r\n<li><a href=\"https://www.youtube.com/embed/K_N0bjR3EwU\" target=\"_blank\">YouTube video</a></li>\r\n\r\n</ul>\r\n',238,0,0,'CC-BY-SA','Fans, vintage stuff, restoration, staying cool, mid-century modern',0,0,1),
(2608,'2018-08-01','BattleTech',1108,'Quick introduction to BattleTech tabletop game by Tuula','<p>Following links might help you to get more familiar with the game.</p>\r\n<ul>\r\n<li><p>Manufacturer’s website: <a href=\"https://bg.battletech.com/\" class=\"uri\">https://bg.battletech.com/</a></p></li>\r\n<li><p>Forums, where fans have discussions about the game: <a href=\"https://bg.battletech.com/forums/\" class=\"uri\">https://bg.battletech.com/forums/</a></p></li>\r\n<li><p>Sarna, extensive wiki: <a href=\"https://www.sarna.net/wiki/Main_Page\" class=\"uri\">https://www.sarna.net/wiki/Main_Page</a></p></li>\r\n</ul>\r\n',364,95,0,'CC-BY-SA','BattleTech',0,0,1),
(2600,'2018-07-20','Special episode on 2600, Blue Boxes, Phreaking',3173,'We celebrate the history of hackers, with a nod to the old skool phreak community.','<p>\r\n2600 Hz is a frequency in hertz (cycles per second) that was used by AT&T as a steady signal to mark currently unused long-distance telephone lines.<br />\r\nA blue box is an electronic device that generates the in-band signaling audio tones formerly used to control long-distance telephone exchanges.<br />\r\nPhreaking is a slang term coined to describe the activity of a culture of people who study, experiment with, or explore telecommunication systems, such as equipment and systems connected to public telephone networks. The term phreak is a sensational spelling of the word freak with the ph- from phone, and may also refer to the use of various audio frequencies to manipulate a phone system. Phreak, phreaker, or phone phreak are names used for and by individuals who participate in phreaking.<br />\r\n</p>\r\n<h3>Radio FreeK America 1</h3>\r\n<p>\r\n02/20/02 - Trashing live, dual was \"slammed,\" trouble with Qwest, Qwest releasing customer info then backing off, Rax discusses VOMIT and subsequent fun, start your own telco or isp, Onebox.com, Slingshot pre-paid Internet access, Kondor\'sTriostribulations,funwiththephone,andmore.\r\n</p>\r\n\r\n<h3>Links</h3>\r\n<ul>\r\n<li><ahref=\"https://en.wikipedia.org/wiki/2600_hertz\">https://en.wikipedia.org/wiki/2600_hertz</a></li>\r\n<li><ahref=\"https://en.wikipedia.org/wiki/Blue_box\">https://en.wikipedia.org/wiki/Blue_box</a></li>\r\n<li><ahref=\"https://en.wikipedia.org/wiki/Phreaking\">https://en.wikipedia.org/wiki/Phreaking</a></li>\r\n<li><ahref=\"https://oldskoolphreak.com/\">https://oldskoolphreak.com/</a></li>\r\n<li><ahref=\"https://oldskoolphreak.com/radio.html\">https://oldskoolphreak.com/radio.html</a></li>\r\n</ul>\r\n',30,0,1,'CC-BY-SA','2600,BlueBox,Phreaking,RadioFreeKAmerica',0,0,1),
(2603,'2018-07-25','Dummy shares a tip and a tip/rant about asking and answering questions',1503,'Those blasted rubber coffee mug seals and \"Let me Google that for you.\"','<p>A quick tip on using paper towel or dish rag to easily remove stubborn travel coffee mug rubber seals followed by a semi ranty discussion on asking and responding to questions in the context of “Let me google that for you.”</p>\r\n<p>As a bonus, this is part of a series-ish set of shows I’m going to do recording with different equipment to give you the feel of the quality of shows possible with low cost equipment by someone who doesn’t know how to edit audio or speak to audiences.</p>\r\n',151,0,1,'CC-BY-SA','travel mug seal,asking questions',0,0,1),
(2607,'2018-07-31','Processing',1777,'Klaatu introduces Processing, a Java subset and IDE suitable for graphical programming projects','<p>Get Processing from <a href=\"https://processing.org\">processing.org</a>. Download, extract, and launch. On Linux, just click the <code>processing</code> file.</p>\r\n<p>Processing requires that <em>either</em> OpenJDK or Java to be installed.</p>\r\n<p>Processing requires a <code>void setup()</code> function, which is a function that Processing expects whenever an application is launched. If you don\'thavea<code>setup</code>function,yourapplicationstilllaunches,butwithbasicProcessingdefaults.Trythistostartwith:</p>\r\n<pre><code>voidsetup(){\r\nsize(480,720);\r\n}</code></pre>\r\n<p>Clickthe<strong>Run</strong>buttoninthetopleftcornertolaunchyour[verysimple]application:anemptywindowthatis480pixelswideand720pixelstall.</p>\r\n<p>DrawarectangleonyourcanvasbyinvokingProcessing\'s <code>void draw()</code> function:</p>\r\n<pre><code>void draw() {\r\n rect(10,10,80,80);\r\n}</code></pre>\r\n<p>Click the <strong>Run</strong> button in the top left corner to launch your application.</p>\r\n<p>Add some colour to your rectangle:</p>\r\n<pre><code>void draw() {\r\n fill(8,120,90);\r\n rect(10,10,80,80);\r\n}</code></pre>\r\n<p>Click the <strong>Run</strong> button in the top left corner to launch your application.</p>\r\n<p>Make a simple painting app:</p>\r\n<pre><code>void setup() {\r\n size(480,720);\r\n}\r\n\r\nvoid draw() {\r\n if (mousePressed) {\r\n fill(20,120,90);\r\n ellipse(mouseX,mouseY,25,25);\r\n } else {\r\n fill(random(10,120),random(10,80),random(20,200));\r\n }\r\n}</code></pre>\r\n<p>More Processing tricks: you can export your application as a standalone Java app, or as an Android <code>.apk</code> as long as you have the Android SDK installed.</p>\r\n<p>Processing\'s<ahref=\"https://processing.org/reference\">documentation</a>isexcellent.Ithasexamplesforallfunctions,<em>withpictures</em>.</p>\r\n',78,25,0,'CC-BY-SA','java,processing',0,0,1),
(2609,'2018-08-02','SparkleShare',1460,'Klaatu demonstrates SparkleShare','<p>\r\nClacke mentioned SparkleShare in <a href=\"https://hackerpublicradio.org/eps.php?id=2542\" target=\"_blank\">episode 2542</a>, and it occurred to me that not everyone knows what Sparkleshare is. So here's a show about it.\r\n</p>\r\n\r\n<p>\r\nTo setup SparkleShare, refer to <a href=\"https://sparkleshare.org\" target=\"_blank\">SparkleShare.org</a>. It\'savailableforLinux,Windows,andMac;greatforcross-platformcollaboration.\r\n</p>\r\n\r\n<p>\r\nTheLinuxinstalleruses<ahref=\"https://flatpak.org\"target=\"_blank\">FlatPak</a>,soyoudoneedtoinstallthat.\r\n</p>\r\n\r\n<p>\r\nOnceinstalled,launchSparkleShareintheusualway.Ifyouhavenousualway,youcanusethiscommand:</p>\r\n\r\n<pre>\r\n$ flatpak run org.sparkleshare.SparkleShare\r\n</pre>\r\n\r\n<p>\r\nThe first screen asks for your name and email. This doesn't have to be your real name and email, but it is what SparkleShare will use when making commits on your behalf. This name and email will be visible to anyone who can see your online Git repository.\r\n</p>\r\n\r\n<p>\r\nThe next screen displays the <strong>Sync Remote Project</strong> screen. You use this screen any time you want to add another share to your sparkle.\r\n</p>\r\n\r\n<img src=\"https://slackermedia.info/host/setup1.png\" alt=\"image showing the Sync Remote Project window of SparkleShare\" />\r\n\r\n<p>\r\nIn this episode, I set up two projects: one brand new one using my home server as host, and one that mirrors an existing project on Gitlab.com.\r\n</p>\r\n\r\n<p><strong>Adding a project from Gitlab</strong></p>\r\n\r\n<p>\r\nThe first thing you must do is give SparkleShare permission to access Gitlab. To do this, click on the SparkleShare icon in your system tray > SparkleShare > Client ID and copy your ID to your clipboard.\r\n</p>\r\n\r\n<img src=\"https://slackermedia.info/host/clientid.png\" alt=\"image describing the menu selection as listed in the above text\" />\r\n\r\n<p>\r\nNow go to your online Git host and add this "Client ID" to your approved SSH Keys. Where this is located depends on your Git host, but in Gitlab, it's located in the left column of the <strong>Settings</strong> screen. When your SSH Key has been added, Gitlab displays a key fingerprint (actually just a string of numbers) as confirmation.\r\n</p>\r\n\r\n<p>\r\nThe path to your remote Git repository is the part of an URL after the host. It usually starts with your username. For example, if I have a project on Gitlab located at <code>gitlab.com/notklaatu/foo.git</code> then the path that SparkleShare needs is <code>notklaatu/foo.git</code>\r\n</p>\r\n\r\n<p>\r\nClick the <strong>Add</strong> button to add the project to your local SparkleShare folder.\r\n</p>\r\n\r\n\r\n<p><strong>Adding a project hosted on your own server</strong></p>\r\n\r\n<p>\r\nThere are a lot more variables if you're hosting a Git repository on your own server. These are the things that you may need to account for:\r\n</p>\r\n\r\n<ul>\r\n<li><p>Is your local .ssh/config file setting some "invisible" defaults for when you SSH to your server? If so, you may need to modify or add an entry for SparkleShare.</p></li>\r\n<li><p>Your SparkleShare auto-generated "Client ID" is located in <code>$HOME/.config/org.sparkleshare.SparkleShare/ssh</code></p></li>\r\n<li><p>Is your SparkleShare SSH key (the "Client ID" in SparkleShare lingo) in your authorized_hosts file?\r\n</p></li>\r\n<li><p>Does a Git repository exist on your remote server in the location you think it exists?</p></li>\r\n</ul>\r\n\r\n<p><strong>Using SparkleShare</strong></p>\r\n\r\n<p>\r\nUse SparkleShare exactly as you would DropBox or the <a href=\"https://nextcloud.com/\" target=\"_blank\">NextCloud Desktop Client</a>: drag-and-drop a file to add it, drag it to the Trash to delete it. All SparkleShare folders sync\'d with any given project syncs automatically through the magickalfulness of Gi
(2613,'2018-08-08','Quick Awk Tip',459,'This is a tip about awk scripts.','<p>\r\nThis is obvious, but it tripped me up a few times after listening to the excellent Awk series by Dave and B-yeezi, so I though I\'dshareitheretosaveothersthetrouble.\r\n</p>\r\n\r\n<p>\r\nWhenmovingfromsimpleawkcommandstoproperawkscripts,youputashebanglineatthetopofyourscript.It\'s pretty common to many of us, because we do it for Python and Bash all the time.\r\n</p>\r\n\r\n<p>\r\nBut if you just put:\r\n</p>\r\n\r\n<pre>\r\n#!/usr/bin/awk\r\n</pre>\r\n<p>\r\nThen your awk script won\'tworkthewayyouexpect.</p>\r\n\r\n<p>\r\nYoumustprovidethe<code>-f</code>flag:\r\n</p>\r\n<pre>\r\n#!/usr/bin/awk -f\r\n</pre>\r\n\r\n<p>\r\nNow you can pipe things to your awk script as expected. \r\n</p>\r\n\r\n\r\n',78,94,0,'CC-BY-SA','tip,awk,shebang',0,0,1),
(2614,'2018-08-09','My 1948 Truetone D1835 Tube Radio',657,'I talk about my \"new\" 1948 D1835 Tube-powered radio.','<h2>The 1948 Truetone D1835 Tube Radio</h2>\r\n\r\n<p>I recently bought a vintage tube powered radio at an estate sale and in this episode I talk about it and let you hear it. Click the image to view my Flickr pictures.</p>\r\n\r\n<p><a data-flickr-embed=\"true\" href=\"https://www.flickr.com/photos/137675441@N05/albums/72157699014674225\" title=\"1948 Truetone Tube Radio\"><img src=\"https://farm1.staticflickr.com/836/28515366987_03ca2d6a84_c.jpg\" width=\"450\" height=\"800\" alt=\"1948 Truetone Tube Radio\"/></a></p>\r\n\r\n<p>Watch <a href=\"https://youtu.be/-I8GEjiBf0g\">A video showing the radio in action</a>!</p>\r\n',238,0,0,'CC-BY-SA','Vintage audio, legacy technology, radio, antiques',0,0,1),
(2610,'2018-08-03','Gnu Awk - Part 12',2050,'Advanced use of arrays','<h1 id=\"gnu-awk---part-12\">Gnu Awk - Part 12</h1>\r\n<h2 id=\"introduction\">Introduction</h2>\r\n<p>This is the twelfth episode of the “<a href=\"https://hackerpublicradio.org/series/0094.html\" title=\"Learning Awk\">Learning Awk</a>” series which is being produced by <a href=\"https://hackerpublicradio.org/correspondents/0300.html\" title=\"b-yeezi\">b-yeezi</a> and myself.</p>\r\n<p>In this episode I want to continue with the subject I started in episode 10, an advanced-level look at arrays in Awk. This episode covers <code>patsplit</code> which can split a string into an array, the built-in array <code>PROCINFO</code> which can be used to control how <code>awk</code> sorts arrays, as well as <code>asort</code> and <code>asorti</code>, built-in functions for sorting arrays.</p>\r\n<p>In case it might be of interest I have also included a section describing a recent use I made of <code>awk</code> to solve a problem.</p>\r\n<h2 id=\"long-notes\">Long notes</h2>\r\n<p>I have provided detailed notes as usual for this episode, and these can be <a href=\"https://hackerpublicradio.org/eps/hpr2610/full_shownotes.html\">viewed here</a>.</p>\r\n<h2 id=\"links\">Links</h2>\r\n<ul>\r\n<li><a href=\"https://www.gnu.org/software/gawk/manual/html_node/index.html\"><em>GNU Awk User’s Guide</em></a></li>\r\n<li>Previous shows in this series on HPR:\r\n<ul>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2114\">“<em>Gnu Awk - Part 1</em>”</a> - episode 2114</li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2129\">“<em>Gnu Awk - Part 2</em>”</a> - episode 2129</li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2143\">“<em>Gnu Awk - Part 3</em>”</a> - episode 2143</li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2163\">“<em>Gnu Awk - Part 4</em>”</a> - episode 2163</li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2184\">“<em>Gnu Awk - Part 5</em>”</a> - episode 2184</li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2238\">“<em>Gnu Awk - Part 6</em>”</a> - episode 2238</li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2330\">“<em>Gnu Awk - Part 7</em>”</a> - episode 2330</li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2438\">“<em>Gnu Awk - Part 8</em>”</a> - episode 2438</li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2476\">“<em>Gnu Awk - Part 9</em>”</a> - episode 2476</li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2526\">“<em>Gnu Awk - Part 10</em>”</a> - episode 2526</li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2554\">“<em>Gnu Awk - Part 11</em>”</a> - episode 2554</li>\r\n</ul></li>\r\n<li>Resources:\r\n<ul>\r\n<li><a href=\"https://hackerpublicradio.org/eps/hpr2610/full_shownotes.epub\">ePub version of these notes</a></li>\r\n<li>Examples: <a href=\"https://hackerpublicradio.org/eps/hpr2610/awk12_ex1.awk\">awk12_ex1.awk</a>, <a href=\"https://hackerpublicradio.org/eps/hpr2610/awk12_ex2.awk\">awk12_ex2.awk</a>, <a href=\"https://hackerpublicradio.org/eps/hpr2610/awk12_ex3.awk\">awk12_ex3.awk</a>, <a href=\"https://hackerpublicradio.org/eps/hpr2610/awk12_ex4.awk\">awk12_ex4.awk</a>, <a href=\"https://hackerpublicradio.org/eps/hpr2610/awk12_ex5.awk\">awk12_ex5.awk</a>, <a href=\"https://hackerpublicradio.org/eps/hpr2610/awk12_ex6.awk\">awk12_ex6.awk</a>, <a href=\"https://hackerpublicradio.org/eps/hpr2610/awk12_ex7.awk\">awk12_ex7.awk</a>, <a href=\"https://hackerpublicradio.org/eps/hpr2610/awk12_ex8.awk\">awk12_ex8.awk</a>, <a href=\"https://hackerpublicradio.org/eps/hpr2610/awk12_ex9.awk\">awk12_ex9.awk</a>, <a href=\"https://hackerpublicradio.org/eps/hpr2610/awk12_ex10.awk\">awk12_ex10.awk</a>, <a href=\"https://hackerpublicradio.org/eps/hpr2610/awk12_extra.awk\">awk12_extra.awk</a></li>\r\n</ul></li>\r\n</ul>',225,94,1,'CC-BY-SA','Awk utility, Awk Language, gawk, arrays, sorting',0,0,1),
(2617,'2018-08-14','Exposing a Raspberry Pi database through a REST API',1219,'In this episode, I discuss how I used python to make my speedtest data available across my network','<h2>Links from the episode</h2>\r\n\r\n<ul>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Representational_state_transfer\">Wikipedia - REST API</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Web_Server_Gateway_Interface\">Wikipedia - WSGI</a></li>\r\n<li><a href=\"https://bottlepy.org/docs/dev/\">Bottle Framework</a></li>\r\n<li><a href=\"https://sqlite.org/index.html\">SQLite</a></li>\r\n</ul>\r\n',300,0,0,'CC-BY-SA','python,development',0,0,1),
(2618,'2018-08-15','Yesod - First Impressions',1385,'Tuula talking about their first impressions of Yesod web framework','<p>First place to start is probably Yesod’s web site at: <a href=\"https://www.yesodweb.com/\" class=\"uri\">https://www.yesodweb.com/</a></p>\r\n<p>Often recommended environment for developing Haskell programs is Stack: <a href=\"https://docs.haskellstack.org/en/stable/README/\" class=\"uri\">https://docs.haskellstack.org/en/stable/README/</a></p>\r\n<p>My road to Haskell started with Learn You a Haskell for Great Good: <a href=\"https://learnyouahaskell.com/\" class=\"uri\">https://learnyouahaskell.com/</a> and going through lecture notes of CIS 194: <a href=\"https://www.seas.upenn.edu/%7Ecis194/spring13/lectures.html\">https://www.seas.upenn.edu/%7Ecis194/spring13/lectures.html</a></p>\r\n',364,107,0,'CC-BY-SA','haskell,yesod,web',0,0,1),
(2619,'2018-08-16','A Gentle Introduction to Quilt',1225,'Quilt - the patch manager. Introduction and tutorial.','<h1 id=\"a-gentle-introduction-to-quilt\">A gentle introduction to quilt</h1>\r\n<p>Or, patch management for software.</p>\r\n<h2 id=\"speaker-intro\">Speaker Intro</h2>\r\n<p>Hi, I\'mbjb.I\'m a programmer.</p>\r\n<h2 id=\"motivation-and-topic-intro\">Motivation and topic intro</h2>\r\n<p>I needed to learn how to use the software tool "quilt", so you get to listen to my podcast about an introduction to quilt.</p>\r\n<p>People collaborating on a project must edit the same set of source files. After one person commits some changes, then the other people must rebase their own changes on the new version of the shared files before they can push their changes.</p>\r\n<p>A minor fix for some old typo should not be in the same patch as a new feature; a comment correction should also be in its own patch. Essentially, two new features and some bug fixes should not all be smushed together in one patch. Each feature should be in its own patch (or patch series), and each bug fix should be in its own patch. This allows others to be able to review the proposed changes easily, and even lets them pick and choose which patches they want to apply. It becomes a chore to manage all these patches. That\'swherequiltcomesin.</p>\r\n<p>Sadly,Ihadn\'t learned quilt till this weekend ... well one way to ensure I learn it fairly well is to write a HPR episode about it! Here goes.</p>\r\n<p>I have written this episode to be understandable by anyone - you don\'thavetobeacoder.Youcouldusethistooltokeeptrackofanyplain-textfiles-recipes,todolists,html,hprshownotes,poetry,what-have-you.</p>\r\n<h2id=\"introduction\">Introduction</h2>\r\n<p>Firstlet\'s describe what a patch is. No, first let\'sdescribewhatsourcecodelookslike.Sourcecodeisaplaintextfilefullofcomputerinstructions.Itisaplaintextfile,asopposedtoawordprocessingfile.Plaintextfilesdonothaveanyformattingcodesorstylesinthem(suchaswhichfontshouldbeused,orwhatcolour,andsoon).Theyjustcontainthecharactersthatmakeupwordsofthecontent.</p>\r\n<p>Akeyfeatureofthesesourcecodefilesisthatanewsectionofthefilestartsonanewline.Thesourcecodeisalmostnever"reflowed"likeprosemightbe.Itissortoflikepoetry-themoreformalpoetry,notprosepoetry.Therearealotofreallysmallsectionsinsourcecodefiles(called"statements"and"expressions").Mostofthesesectionsfitononeline.Thisisusefulforthetoolswe\'re going to discuss because when one line changes it does not affect the following lines, as it might when text is reflowed after a change.</p>\r\n<p>People have been coding with plain text files in various languages for decades. Thus a large set of tooling has grown around this format. One of those tools is called "diff" and another one is called "patch".</p>\r\n<p>Diff is a way to compare two text files. Typically it would be used to compare the "before" and "after" of a source code file undergoing changes. So you could find out what was done to the source code file by running diff on the before and after versions of that file.</p>\r\n<p>A diff file is a series of excerpts from the original and changed files. There are various kinds of diffs. Some of them show only the changed lines. Some of them show a few lines before and a few lines after in addition to the changed lines themselves. That second kind is called a "context diff" and helps the automated machinery (and humans too) find the correct part of the file to which the change must be applied.</p>\r\n<p>By default there are 3 lines of context before and after the changed lines.</p>\r\n<p>The changed part is represented by including the old AND new line. In order to distinguish which lines are old and which are the replacements, all the lines (context lines, removed lines and added lines) are shifted ove
(2627,'2018-08-28','Home Phone Setup!!',1402,'This episode we set up a small phone system.','<p>I’m not sure what the echoing is about. It could be picked up from my cell phone’s speaker. Also, I call ftp “tiny ftp” It actually stands for “trivial ftp”</p>\r\n<p><img src=\"https://theadesilva.com/hpr_phone1.jpg\" alt=\"https://theadesilva.com/hpr_phone1.jpg\" /> <img src=\"https://theadesilva.com/hpr_phone2.jpg\" alt=\"https://theadesilva.com/hpr_phone2.jpg\" /> <img src=\"https://theadesilva.com/hpr_phone3.jpg\" alt=\"https://theadesilva.com/hpr_phone3.jpg\" /> <img src=\"https://theadesilva.com/hpr_phone4.jpg\" alt=\"https://theadesilva.com/hpr_phone4.jpg\" /></p>\r\n<p>tftp file for xinetd:</p>\r\n<pre><code>service tftp\r\n{\r\n protocol = udp\r\n port = 69\r\n socket_type = dgram\r\n wait = yes\r\n user = nobody\r\n server = /usr/sbin/in.tftpd\r\n server_args = /tftpboot\r\n disable = no\r\n per_source = 11\r\n cps = 100 2\r\n flags = IPv4\r\n}</code></pre>\r\n<p>voipbuster config files look like this:</p>\r\n<pre><code>SIPDefault.cnf:\r\n nat_enable: 1\r\n\r\nSIP<mac address>.cnf:\r\nproxy1_address: sip.voipbuster.com\r\nline1_name: outside\r\nline1_authname: <user>\r\nline1_displayname: outside\r\nline1_password: <password></code></pre>\r\n<p>github projects:</p>\r\n<ul>\r\n<li><p>SIP_Pi: <code>github.com/fabianhu/SIP_Pi (PjSIP: https://www.pjsip.org/release/2.1/pjproject-2.1.tar.bz2 )</code></p></li>\r\n<li><p>Messenger-CLI: <code>github.com/AstroCB/Messenger-CLI</code></p></li>\r\n</ul>\r\n<p>scripts:</p>\r\n<pre><code>=============================\r\nconst login = require("facebook-chat-api");\r\n\r\nlogin({email: "FB_EMAIL", password "FB_PASSWORD"}, (err, api) =>\r\n{\r\n if(err) return console.error(err);\r\n api.listen((err,message) => {\r\n api.sendMessage(message.body, message.threadID);\r\n });\r\n});\r\n\r\n=============================\r\n\r\n#!/bin/sh\r\nlame "$2" -o "$2".mp3\r\n\r\nscp "$2.mp3" planetearth.us:\r\nssh planetearth.us ./runner ""$2.mp3""\r\n\r\n==============================\r\n\r\n#!/bin/sh\r\n\r\necho "$@" | sed -e s/ /_/g > runner_tmp\r\ndoas mv "$1" /var/www/theadesilva.com/html/$cat runner_tmp)\r\nnode ./oo.js\r\n\r\n==============================\r\n\r\nfs= require('fs');\r\nlogin = require('facebook-chat-api');\r\n\r\nfs.readFile('runner_tmp', 'utf8', function (err, data) {\r\n login({email: "FB_EMAIL", password: "FB_PASSWORD"}) => {\r\n if(err) return console.error(err);\r\n\r\n api.sendMessage("New voicemail at 1109's front door "https://theadesilva.com/" + data + """ , THREAD_ID);\r\n });\r\n});\r\n\r\n===============================</code></pre>\r\n',115,0,0,'CC-BY-SA','sip kamailio ',0,0,1),
(2637,'2018-09-11','Convert it to Text',981,'This episode will make you want to TXT all the things.','<h2 id=\"why-use-plain-text\">Why use plain text?</h2>\n<ul>\n<li>Portability</li>\n<li>Use with Unix tools</li>\n<li>Use with Ranger</li>\n</ul>\n<h2 id=\"ranger-for-the-win\">Ranger for the win</h2>\n<ul>\n<li><a href=\"https://savannah.nongnu.org/projects/ranger\">Ranger</a> is a free console file manager that gives you greater flexibility and a good overview of your files without having to leave your *nix console. It visualizes the directory tree in two dimensions: the directory hierarchy on one, lists of files on the other, with a preview to the right so you know where you’ll be going.</li>\n<li>The scope functionality is where converting to text pays off. Located at <code>$HOME/.config/ranger/scope.sh</code>, scope is the feature that allows for file preview from inside the console. Text files are highlighted based on their file extension, for non-text files, different converters can be used to coerce the file into a text representation. Some items are available out of the box, but the configuration is written in such a way that any text can be presented in the preview screen.</li>\n<li>The basic format of the scope switch statement is as follows:</li>\n</ul>\n<pre><code>case "$extension" in\n odt|odp)\n try odt2txt "$path" && { dump | trim | fmt -s -w $width; exit 0; };;</code></pre>\n<h2 id=\"tools-in-the-toolset\">Tools in the toolset</h2>\n<ul>\n<li>atool</li>\n<li>caca-utils</li>\n<li>poppler-utils</li>\n<li>catdoc</li>\n<li>catppt</li>\n<li>odt2txt</li>\n<li>ods2tsv</li>\n<li>docx2txt</li>\n<li>xlsx2csv</li>\n<li>mediainfo</li>\n<li>lynx/w3m/elinks</li>\n<li>highlight</li>\n</ul>\n<h2 id=\"bonus-tools\">Bonus tools</h2>\n<ul>\n<li>q</li>\n<li>jq</li>\n<li>xmlstarlet</li>\n</ul>\n',300,0,0,'CC-BY-SA','Unix,text,portability,ranger',0,0,1),
(2628,'2018-08-29','UK Telephone Network Exploration',589,'I describe the process of finding interesting phone numbers on the UK telephone network.','<p>If you have any questions regarding the show. Please leave them on the show page, or email me at <a href=\"mailto:james@jamesdotcom.com\">james@jamesdotcom.com</a> or twitter <code>@Xtrato</code>.</p>\r\n<p>My PGP key can be found here: <a href=\"https://jamesdotcom.com/pub.txt\" class=\"uri\">https://jamesdotcom.com/pub.txt</a></p>\r\n',368,0,0,'CC-BY-SA','UK telephone network,British Telecom,BT',0,0,1),
(2630,'2018-08-31','Open Source Gaming: Revisiting Meridian 59',229,'Discussing the steam release of Meridian 59 (recorded before release)','<ul>\r\n<li><p>The game’s steam page<br />\r\n<a href=\"https://store.steampowered.com/app/893390/Meridian_59/\" class=\"uri\">https://store.steampowered.com/app/893390/Meridian_59/</a></p></li>\r\n<li><p>Community group on steam<br />\r\n<a href=\"https://steamcommunity.com/groups/m59\" class=\"uri\">https://steamcommunity.com/groups/m59</a></p></li>\r\n<li><p>Game website and source code<br />\r\n<a href=\"https://www.meridian59.com/\" class=\"uri\">https://www.meridian59.com/</a></p></li>\r\n<li><p>Article on the steam launch<br />\r\n<a href=\"https://www.mmobomb.com/news/meridian-59-game-launched-90s-finally-decides-hop-steam/\" class=\"uri\">https://www.mmobomb.com/news/meridian-59-game-launched-90s-finally-decides-hop-steam/</a></p></li>\r\n<li><p>Meridian 59 facebook group<br />\r\n<a href=\"https://www.facebook.com/groups/40338181227/?ref=br_rs\" class=\"uri\">https://www.facebook.com/groups/40338181227/?ref=br_rs</a></p></li>\r\n</ul>\r\n',354,0,1,'CC-BY-SA','Meridian 59,Steam',0,0,1),
(2633,'2018-09-05','Elm - First Impressions',1819,'My first impressions on Elm programming language','<ul>\r\n<li>Official site: <a href=\"https://elm-lang.org/\" class=\"uri\">https://elm-lang.org/</a></li>\r\n<li>Online package repository: <a href=\"https://package.elm-lang.org/\" class=\"uri\">https://package.elm-lang.org/</a></li>\r\n<li>please-focus (package for writing lenses): <a href=\"https://package.elm-lang.org/packages/SwiftsNamesake/please-focus/latest\" class=\"uri\">https://package.elm-lang.org/packages/SwiftsNamesake/please-focus/latest</a></li>\r\n<li>json-extra (for working with json): <a href=\"https://package.elm-lang.org/packages/elm-community/json-extra/latest\" class=\"uri\">https://package.elm-lang.org/packages/elm-community/json-extra/latest</a></li>\r\n<li>elm-decode-pipeline (another library for decoding json): <a href=\"https://package.elm-lang.org/packages/NoRedInk/elm-decode-pipeline/latest\" class=\"uri\">https://package.elm-lang.org/packages/NoRedInk/elm-decode-pipeline/latest</a></li>\r\n</ul>\r\n',364,0,1,'CC-BY-SA','elm, first impressions, programming language',0,0,1),
(2634,'2018-09-06','Git tag and metadata',1149,'An intro to git tags and how to view metadata about your Git repository.','<p>Tag a commit:</p>\r\n\r\n<pre>\r\n$ git tag 0.1\r\n$ git tag\r\n0.1\r\n</pre>\r\n\r\n<p>\r\nDelete a tag:\r\n</p>\r\n\r\n<pre>\r\n$ git tag -d 0.1\r\n</pre>\r\n\r\n<p>\r\nGet the latest commit hash:\r\n</p>\r\n\r\n<pre>\r\n$ git rev-list --tags --max-count=1\r\n94c5715694c5715687a962008dd71191460fc4e32370425a\r\n</pre>\r\n\r\n<p>\r\nGet any tag on a commit:\r\n</p>\r\n\r\n<pre>\r\n$ git describe --tags 94c5715\r\n0.1\r\n</pre>\r\n\r\n',78,104,0,'CC-BY-SA','git',0,0,1),
(2635,'2018-09-07','Running your own mainframe on Linux (for fun and profit)',3321,'This talk is about running your own mainframe on your own hardware.','<p>Yes, this talk is about running your own mainframe on your own hardware. Mainframes are old, yes, but they are still very much alive. New hardware is still being developed and there are a lot of fresh jobs in this area too. A lot of mainframes run COBOL workloads. COBOL is far from a dead language. It processes an estimated 85% of all business transactions, and 5 billion lines of new COBOL code are written every year. In this session the speaker will help you in take your first steps towards running your own mainframe. If you like then after this session you can continue to build your knowledge of mainframe systems using the links provided during the talk. Come on in and learn the basics of a completely different computer system! And it will take you less than an hour to do that!</p>',369,0,0,'CC-BY-SA','hercules,linux',0,0,1),
(2660,'2018-10-12','Installing a bootloader on an Arduino',399,'Ken uses a Arduino Uno to load a bootloader on an Arduino Nano','<p>\r\nIn this show you will learn how to install a bootloader on an Arduino using another Arduino via In-Circuit Serial Programming (ICSP)\r\n</p>\r\n\r\n<p>\r\nAll credit goes to <a href=\"https://www.sparkfun.com/users/150033\">M-SHORT</a> over at <a href=\"https://learn.sparkfun.com/tutorials/installing-an-arduino-bootloader\">SparkFun</a> for the excellent tutorial.\r\n</p>\r\n\r\n<ol>\r\n<li>Arduino IDE > File > Examples > 11.ArduinoISP > ArduinoISP</li>\r\n<li>Tools > Board > {your board}</li>\r\n<li>Tools > Programmer > Arduino as ISP</li>\r\n<li>Tools > Burn Bootloader</li>\r\n</ol>',30,0,1,'CC-BY-SA','Arduino, Boot Loader, ISP, ICSP',0,0,1),
(2620,'2018-08-17','Thoughts on language learning part 1',1471,'My thoughts on an approach to language learning which makes sense to me.','<p>This is the first part of a 3 part series in which I ramble on about my thoughts on language learning. I’m no expert and I barely know one language well. In a nutshell:</p>\r\n<ol type=\"1\">\r\n<li>Teach as much as possible in the new language, focusing on vocabulary.</li>\r\n<li>Rather than starting with baby books, which might not be a bad idea, try to use a similar approach but assume the learners know a bit about how the world works.</li>\r\n<li>The goal is to get to about age 5-6 level in vocabulary so the learner can then switch to language books in the new language which already exist.</li>\r\n</ol>',151,0,0,'CC-0','spoken language learning',0,0,1),
(2622,'2018-08-21','Raspberry Pi Temperaturator',272,'I invite my 6 year-old daughter on to discuss how we setup a temperature monitor on her pi','<h2>Items used</h2>\r\n<ul>\r\n<li>Raspberry pi 3 B</li>\r\n<li>0.25 watt resistors</li>\r\n<li>Reusable breadboard</li>\r\n<li>One Wire thermal probe</li>\r\n<li>Various jump wires</li>\r\n</ul>\r\n',300,103,1,'CC-BY-SA','raspberry pi',0,0,1),
(2625,'2018-08-24','My thoughts on language learning communication applications.',980,'I discuss some of my thoughts regarding using chat programs in language learning','<p>This is the second in the series of my thoughts on language learning. In this episode I talk about it might be useful to modify existing chat programs to use two spell checking databases, one for the native language and one for the new language and have words removed from the native language dictionary as the learner advances.</p>\r\n<p>I did forget to mention that something similar might be done with the grammar checkers, too.</p>\r\n',151,0,0,'CC-0','spoken language learning',0,0,1),
(2647,'2018-09-25','More Quick Tips',1010,'More Quick Tips For July - Only Key and Nerf Guns','<p><a href=\"https://onlykey.io/collections/all/products/onlykey-color-secure-password-manager-and-2-factor-token-u2f-yubikey-otp-google-auth-make-password-hacking-obsolete?variant=469626486828\" class=\"uri\">https://onlykey.io/collections/all/products/onlykey-color-secure-password-manager-and-2-factor-token-u2f-yubikey-otp-google-auth-make-password-hacking-obsolete?variant=469626486828</a></p>\r\n<p>Nerf</p>\r\n<ul>\r\n<li><a href=\"https://smile.amazon.com/gp/product/B00BXM6KFS\" class=\"uri\">https://smile.amazon.com/gp/product/B00BXM6KFS</a></li>\r\n<li><a href=\"https://smile.amazon.com/gp/product/B00DW1JT5G\" class=\"uri\">https://smile.amazon.com/gp/product/B00DW1JT5G</a></li>\r\n</ul>\r\n',36,0,1,'CC-BY-SA','Nerf gun,dart,OnlyKey,password',0,0,1),
(2652,'2018-10-02','Liverpool Makefest 2018 - Interview with Caroline and John',440,'This is the final interview from this years Liverpool Makefest','<p>This is the final interview from this years Makefest in Liverpool. In this interview I interview one of the founder members of Makefest, Caroline Keep, and the Head Teacher of the school where she works, John Carling.</p>\r\n<p><a href=\"https://lpoolmakefest.org/\" class=\"uri\">https://lpoolmakefest.org/</a></p>\r\n',338,78,0,'CC-BY-SA','Liverpool Makefest 2018, computing, young coders, hackers, makers, crafts',0,0,1),
(2629,'2018-08-30','Thoughts on language learning part 3 - game/story mode.',1564,'I discuss some of my thoughts on how games might help in language learning.','<p>This is the last of 3 parts on my thoughts on language learning. This one introduces my thoughts on how games might be used in language learning. More or less the same concepts from the first two episodes only applied to game/story design.</p>\r\n<p>NOTE: I’m not a game designer.</p>\r\n<p>On the off chance this sounds interesting to you, hpr2620 and hpr2625 are the other two.</p>',151,0,0,'CC-BY-SA','spoken language learning',0,0,1),
(2623,'2018-08-22','Actors and Agents, Sprites and Fractals',3426,'In which I sit down with cwebber and try to keep it short, but end up with an hour of tangents','<p>Plugs:</p>\r\n<ul>\r\n<li><p>Chris works on <a href=\"https://w3c-ccg.github.io/ocap-ld/\">Object Capabilities for Linked Data</a> (OCAP-LD) and other things for a living, at <a href=\"https://digitalbazaar.com/\" class=\"uri\">https://digitalbazaar.com/</a> .</p></li>\r\n<li><p>clacke works at <a href=\"https://fractalide.com/\" class=\"uri\">https://fractalide.com/</a> making better tools for future programmers.</p></li>\r\n<li><p>We’re both fortunate enough to have the chance to get paid for creating all Free Software.</p></li>\r\n<li><p>Christopher Lemmer Webber and Morgan Lemmer Webber will be speaking at <a href=\"https://con.racket-lang.org/\">RacketCon 2018</a> on the topic <em>Racket for Everyone (Else)</em>, how non-programmers can do "programmable publishing" using Scribble when writing humanities papers, and how Racket could better target not just beginner programmers and hard-core language theorists, but also the huge space in between.</p></li>\r\n</ul>\r\n<p>More information on the topics covered:</p>\r\n<ul>\r\n<li><p>For my last show with Chris, see <a href=\"https://hackerpublicradio.org/eps.php?id=2198\">hpr2198 :: How awesome is Guix and why will it take over the world</a></p></li>\r\n<li><p>His Actors library for Guile Scheme is <a href=\"https://www.gnu.org/software/8sync/\">8sync</a>. A video of him playing in front of an audience with the Multi-User Dungeon (MUD) on top of 8sync is available on the front page.</p></li>\r\n<li><p>Spritely, the media sharing platform that may or may not be the next MediaGoblin, is currently vaporware, but the underlying <a href=\"https://gitlab.com/spritely/goblins/\">Goblins</a> Actors library for Racket is real and works.</p></li>\r\n<li><p>Wikipedia has more on the <a href=\"https://en.wikipedia.org/wiki/Actor_model\">Actor Model</a>, <a href=\"https://en.wikipedia.org/wiki/Flow-based_programming\">Flow-Based Programming</a> and <a href=\"https://en.wikipedia.org/wiki/Object-capability_model\">Object Capabilities</a> (OCap).</p></li>\r\n<li><p>We also mentioned in passing <a href=\"https://en.wikipedia.org/wiki/Communicating_sequential_processes\">Communicating Sequential Processes</a>.</p></li>\r\n<li><p>I knew that OCap grew up in the context of <a href=\"https://en.wikipedia.org/wiki/E_(programming_language)\">E</a>, but I didn’t know that E itself actually grew out of the needs of a form of MUD, built by Electric Communities (EC). I’m guessing this is the graphical MMORPG <a href=\"https://en.wikipedia.org/wiki/Habitat_(video_game)\">Habitat</a> that EC built for Lucasfilm back in 1986, for the Commodore 64. Some writing about EC and the philosophy and experience around what they did is collected at <a href=\"https://www.crockford.com/ec/\" class=\"uri\">https://www.crockford.com/ec/</a>.</p></li>\r\n<li><p><a href=\"https://en.wikipedia.org/wiki/Language-oriented_programming\">Language-oriented programming</a> (LOP) is an old LISP methodology: Understand the problem, write a language for describing and solving the problem, write the solution in that language. Racket (itself a LISP) is heavily focused on this, and comes with a whole slew of languages out of the box. The Racket slogan on <a href=\"https://racket-lang.org/\" class=\"uri\">https://racket-lang.org/</a> is "solve problems—make languages".</p></li>\r\n<li><p><a href=\"https://cacm.acm.org/magazines/2018/3/225475-a-programmable-programming-language/fulltext\">A recent ACM article</a> describes in depth what the challenges of good LOP are, and how Racket helps the programmer work with it.</p></li>\r\n</ul>\r\n',311,0,0,'CC-BY-SA','flow-based, actors, fractalide, racket, ocap, mud, programming',0,0,1),
(2624,'2018-08-23','Cycling through Brussels',1327,'On a hot day Knightwise rides his bike through Brussels.','<h2 id=\"cycling-through-brussels\">Cycling Through Brussels</h2>\r\n<ul>\r\n<li><p>Apple Store at the Guldenvlieslaan: <a href=\"https://www.apple.com/benl/retail/brussels/\" class=\"uri\">https://www.apple.com/benl/retail/brussels/</a></p></li>\r\n<li><p>Matonge District: <a href=\"https://en.wikipedia.org/wiki/Ixelles#Matong%C3%A9\">https://en.wikipedia.org/wiki/Ixelles#Matong%C3%A9</a></p></li>\r\n<li><p>René Magritte: <a href=\"https://en.wikipedia.org/wiki/Ren%C3%A9_Magritte\">https://en.wikipedia.org/wiki/Ren%C3%A9_Magritte</a></p></li>\r\n<li><p>Musee des Instruments: <img src=\"https://brusselsmuseums.imgix.net/covers/MIM-Hofberg_pano_170522_110758.jpg?w=730&h=496&fit=crop&q=40&auto=format%2Cenhance%2Ccompress\" alt=\"https://brusselsmuseums.imgix.net/covers/MIM-Hofberg_pano_170522_110758.jpg?w=730&h=496&fit=crop&q=40&auto=format%2Cenhance%2Ccompress\" /></p></li>\r\n<!-- <li><p>Musee des Instruments: <img src=\"https://brusselsmuseums.imgix.net/covers/MIM-Hofberg_pano_170522_110758.jpg\" width=\"730\" height=\"496\" alt=\"https://brusselsmuseums.imgix.net/covers/MIM-Hofberg_pano_170522_110758.jpg?w=730&h=496&fit=crop&q=40&auto=format%2Cenhance%2Ccompress\" /></p></li> -->\r\n<li><p>Victor Horta: <a href=\"https://en.wikipedia.org/wiki/Victor_Horta\" class=\"uri\">https://en.wikipedia.org/wiki/Victor_Horta</a></p></li>\r\n<li><p>Belgian Waffles: 2 kinds: <a href=\"https://www.ottsworld.com/blogs/a-tale-of-two-waffles/\" class=\"uri\">https://www.ottsworld.com/blogs/a-tale-of-two-waffles/</a></p></li>\r\n<li><p>He who saves the world in Shindlers list: <a href=\"https://www.youtube.com/watch?v=49aQb7VZ6F8\" class=\"uri\">https://www.youtube.com/watch?v=49aQb7VZ6F8</a></p></li>\r\n<li><p>Central Station<br />\r\n<a href=\"https://www.google.be/maps?rlz=1C1GCEA_enBE808BE808&q=brussels+central+station&um=1&ie=UTF-8&sa=X&ved=0ahUKEwiP7Z7WodDcAhXOyKQKHTgZC0QQ_AUICigB\" class=\"uri\">https://www.google.be/maps?rlz=1C1GCEA_enBE808BE808&q=brussels+central+station&um=1&ie=UTF-8&sa=X&ved=0ahUKEwiP7Z7WodDcAhXOyKQKHTgZC0QQ_AUICigB</a></p></li>\r\n</ul>\r\n',111,0,1,'CC-BY-SA','cycling,Brussels',0,0,1),
(2638,'2018-09-12','Dirt cheap Magic',2410,'Magic the Gathering for cheapskates','<p>In this episode, Klaatu talks about playing <strong>Magic: The Gathering</strong> for cheap.\r\n</p>\r\n\r\n<p>\r\nSee <a href=\"https://rpggeek.com/thread/532036/how-build-deck-magic-gathering\" target=\"_blank\">rpggeek.com/thread/532036/how-build-deck-magic-gathering</a> by Eric Jome for a good deck building formula.\r\n</p>',78,95,0,'CC-BY-SA','magic,mtg',0,0,1),
(2639,'2018-09-13','Some ancillary Bash tips - 9',1305,'Making decisions in Bash (part 1)','<h1 id=\"some-ancillary-bash-tips---9\">Some ancillary Bash tips - 9</h1>\r\n<h2 id=\"making-decisions-in-bash\">Making decisions in Bash</h2>\r\n<p>This is my ninth contribution to the <a href=\"https://hackerpublicradio.org/series/0042.html\" title=\"*Bash Scripting* series\"><em>Bash Scripting</em></a> series under the heading of <em>Bash Tips</em>. The previous episodes are listed below in the <a href=\"#links\">Links</a> section.</p>\r\n<p>It seems to me that it would be worthwhile looking at how Bash can be used to make decisions, such as how many times a loop should cycle (<em>looping constructs</em>) or to choose between multiple choices (<em>conditional constructs</em>). Of course we need to look at some of the expressions used in conjunction with the commands that do these tasks – the tests themselves – and we’ll do this in this episode.</p>\r\n<p>This is a complex area which I had some trouble with when I first started using Bash, and there is a lot to say about it all. I have prepared a group of HPR shows about this subject, in order to do it justice, and this is the first of the group.</p>\r\n<h2 id=\"long-notes\">Long notes</h2>\r\n<p>I have provided detailed notes as usual for this episode, and these can be <a href=\"https://hackerpublicradio.org/eps/hpr2639/full_shownotes.html\">viewed here</a>.</p>\r\n<h2 id=\"links\">Links</h2>\r\n<ul>\r\n<li><a href=\"https://www.gnu.org/software/bash/manual/bash.html\">“<em>GNU BASH Reference Manual</em>”</a>\r\n<ul>\r\n<li><a href=\"https://www.gnu.org/software/bash/manual/bash.html#Bash-Conditional-Expressions\">“Bash Conditional Expressions”</a></li>\r\n<li><a href=\"https://www.gnu.org/software/bash/manual/bash.html#Bourne-Shell-Builtins\">“Bourne Shell Builtins”</a></li>\r\n</ul></li>\r\n<li><a href=\"https://hackerpublicradio.org/series/0042.html\">HPR series: <em>Bash Scripting</em></a></li>\r\n<li>Previous episodes under the heading <em>Bash Tips</em>:\r\n<ol>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=1648\">HPR episode 1648 “<em>Bash parameter manipulation</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=1843\">HPR episode 1843 “<em>Some Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=1884\">HPR episode 1884 “<em>Some more Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=1903\">HPR episode 1903 “<em>Some further Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=1951\">HPR episode 1951 “<em>Some additional Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2045\">HPR episode 2045 “<em>Some other Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2278\">HPR episode 2278 “<em>Some supplementary Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2293\">HPR episode 2293 “<em>More supplementary Bash tips</em>”</a></li>\r\n</ol></li>\r\n<li>Resources:\r\n<ul>\r\n<li>Examples: <a href=\"https://hackerpublicradio.org/eps/hpr2639/bash9_ex1.sh\">bash9_ex1.sh</a></li>\r\n</ul></li>\r\n</ul>',225,42,1,'CC-BY-SA','Bash,test,true,false',0,0,1),
(2649,'2018-09-27','More ancillary Bash tips - 10',1372,'Making decisions in Bash (part 2)','<h1 id=\"more-ancillary-bash-tips---10\">More ancillary Bash tips - 10</h1>\r\n<h2 id=\"making-decisions-in-bash\">Making decisions in Bash</h2>\r\n<p>This is my tenth contribution to the <a href=\"https://hackerpublicradio.org/series/0042.html\" title=\"*Bash Scripting* series\"><em>Bash Scripting</em></a> series under the heading of <em>Bash Tips</em>. The previous episodes are listed below in the <a href=\"#links\">Links</a> section.</p>\r\n<p>We are currently looking at decision making in Bash, and in the last episode we examined the tests themselves. In this episode we’ll look at the constructs that use these tests: looping constructs, conditional constructs and lists of commands.</p>\r\n<p><strong>Note</strong>: this episode and the preceding one were originally recorded as a single episode, but because it was so long it was split into two. As a consequence the audio contains references to examples such as <code>bash9_ex2.sh</code> where the true name is <code>bash10_ex1.sh</code>. The notes have been updated as necessary but not the audio.</p>\r\n<h2 id=\"long-notes\">Long notes</h2>\r\n<p>I have provided detailed notes as usual for this episode, and these can be <a href=\"https://hackerpublicradio.org/eps/hpr2649/full_shownotes.html\">viewed here</a>.</p>\r\n<h2 id=\"links\">Links</h2>\r\n<ul>\r\n<li><a href=\"https://www.gnu.org/software/bash/manual/bash.html\">“<em>GNU BASH Reference Manual</em>”</a>\r\n<ul>\r\n<li><a href=\"https://www.gnu.org/software/bash/manual/bash.html#Looping-Constructs\">“Bash Looping Constructs”</a></li>\r\n<li><a href=\"https://www.gnu.org/software/bash/manual/bash.html#Conditional-Constructs\">“Bash Conditional Constructs”</a></li>\r\n<li><a href=\"https://www.gnu.org/software/bash/manual/bash.html#Bourne-Shell-Builtins\">“Bourne Shell Builtins”</a></li>\r\n</ul></li>\r\n<li><a href=\"https://hackerpublicradio.org/series/0042.html\">HPR series: <em>Bash Scripting</em></a></li>\r\n<li>Previous episodes under the heading <em>Bash Tips</em>:\r\n<ol>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=1648\">HPR episode 1648 “<em>Bash parameter manipulation</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=1843\">HPR episode 1843 “<em>Some Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=1884\">HPR episode 1884 “<em>Some more Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=1903\">HPR episode 1903 “<em>Some further Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=1951\">HPR episode 1951 “<em>Some additional Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2045\">HPR episode 2045 “<em>Some other Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2278\">HPR episode 2278 “<em>Some supplementary Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2293\">HPR episode 2293 “<em>More supplementary Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2639\">HPR episode 2639 “<em>Some ancillary Bash tips - 9</em>”</a></li>\r\n</ol></li>\r\n<li>Resources:\r\n<ul>\r\n<li>Examples: <a href=\"https://hackerpublicradio.org/eps/hpr2649/bash10_ex1.sh\">bash10_ex1.sh</a>, <a href=\"https://hackerpublicradio.org/eps/hpr2649/bash10_ex2.sh\">bash10_ex2.sh</a>, <a href=\"https://hackerpublicradio.org/eps/hpr2649/bash10_ex3.sh\">bash10_ex3.sh</a></li>\r\n</ul></li>\r\n</ul>',225,42,1,'CC-BY-SA','Bash,test,while,until,if,case',0,0,1),
(2659,'2018-10-11','Further ancillary Bash tips - 11',1702,'Making decisions in Bash (part 3)','<h1 id=\"further-ancillary-bash-tips---11\">Further ancillary Bash tips - 11</h1>\r\n<p>This is the eleventh episode in the <em>Bash Tips</em> sub-series. It is the third of a group of shows about making decisions in Bash.</p>\r\n<p>In the last two episodes we saw the types of test Bash provides, and we looked briefly at some of the commands that use these tests. Now we want to start examining the expressions that can be used in these tests, and how to combine them. We will also start looking at string comparisons in extended tests.</p>\r\n<h2 id=\"long-notes\">Long notes</h2>\r\n<p>I have provided detailed notes as usual for this episode, and these can be <a href=\"https://hackerpublicradio.org/eps/hpr2659/full_shownotes.html\">viewed here</a>.</p>\r\n<h2 id=\"links\">Links</h2>\r\n<ul>\r\n<li><a href=\"https://www.gnu.org/software/bash/manual/bash.html\">“<em>GNU BASH Reference Manual</em>”</a>\r\n<ul>\r\n<li><a href=\"https://www.gnu.org/software/bash/manual/bash.html#Conditional-Constructs\">“Bash Conditional Constructs”</a></li>\r\n<li><a href=\"https://www.gnu.org/software/bash/manual/bash.html#Bash-Conditional-Expressions\">“Bash Conditional Expressions”</a></li>\r\n<li><a href=\"https://www.gnu.org/software/bash/manual/bash.html#Bourne-Shell-Builtins\">“Bourne Shell Builtins”</a></li>\r\n<li><a href=\"https://www.gnu.org/software/bash/manual/bash.html#The-Set-Builtin\">“The <code>set</code> Builtin”</a></li>\r\n<li><a href=\"https://www.gnu.org/software/bash/manual/bash.html#Pattern-Matching\">“Bash Pattern Matching”</a></li>\r\n</ul></li>\r\n<li><p><a href=\"https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html\">“<em>POSIX Shell Command Language</em>”</a> - documentation of all of the POSIX features mentioned in this series.</p></li>\r\n<li><p><a href=\"https://hackerpublicradio.org/series/0042.html\">HPR series: <em>Bash Scripting</em></a></p></li>\r\n<li>Previous episodes under the heading <em>Bash Tips</em>:\r\n<ol>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=1648\">HPR episode 1648 “<em>Bash parameter manipulation</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=1843\">HPR episode 1843 “<em>Some Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=1884\">HPR episode 1884 “<em>Some more Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=1903\">HPR episode 1903 “<em>Some further Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=1951\">HPR episode 1951 “<em>Some additional Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2045\">HPR episode 2045 “<em>Some other Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2278\">HPR episode 2278 “<em>Some supplementary Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2293\">HPR episode 2293 “<em>More supplementary Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2639\">HPR episode 2639 “<em>Some ancillary Bash tips - 9</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2649\">HPR episode 2649 “<em>More ancillary Bash tips - 10</em>”</a></li>\r\n</ol></li>\r\n<li>Resources:\r\n<ul>\r\n<li>Examples: <a href=\"https://hackerpublicradio.org/eps/hpr2659/bash11_ex1.sh\">bash11_ex1.sh</a>, <a href=\"https://hackerpublicradio.org/eps/hpr2659/bash11_ex2.sh\">bash11_ex2.sh</a>, <a href=\"https://hackerpublicradio.org/eps/hpr2659/bash11_ex3.sh\">bash11_ex3.sh</a>, <a href=\"https://hackerpublicradio.org/eps/hpr2659/bash11_ex4.sh\">bash11_ex4.sh</a>, <a href=\"https://hackerpublicradio.org/eps/hpr2659/bash11_ex5.sh\">bash11_ex5.sh</a></li>\r\n</ul></li>\r\n</ul>',225,42,1,'CC-BY-SA','Bash,test,conditional expression,string comparison,pattern',0,0,1),
(2645,'2018-09-21','Blinking LED',1390,'In this live show, Ken sees if he can follow simple instructions','<p>\r\nDuring the New Year Show Ken soldered a component tester. Unfortunately this did not work. \r\n</p>\r\n<p>\r\nNYBill offered to fix it and he succeeded in his show <a href=\"https://hackerpublicradio.org/eps.php?id=2591\">hpr2591 :: International Troubleshooting</a>. When he shipped it back he included two 555 timers with the message: <em>Now, figure out how to make LED\'sblink\r\nwiththose555\'s! </em> \r\n</p>\r\n<p>\r\n\r\nIn this show Ken uses the online guide <a href=\"https://www.instructables.com/id/Flashing-LED-using-555-Timer/\">FLASHING L.E.D. USING 555 TIMER</a> By <a href=\"https://www.instructables.com/member/Trilesto/\">Trilesto</a> to do this. \r\n</p>',30,103,1,'CC-BY-NC-SA','555, NYBill, pico, nano',0,0,1),
(2640,'2018-09-14','Another Rambling Drive Into Work',835,'An second attempt at making a show on the way into work','<p>It’s been a while since I posted my first attempt at recording a show in my car, this attempt was recorded not that long after that but I’d forgotten to post it, hopefully, it’s not too boring.</p>\r\n<p>This is the previously mentioned dictation device I used<br />\r\n<a href=\"https://www.amazon.co.uk/HccToo-Multifunctional-Rechargeable-Dictaphone-Conversation/dp/B015H9JP6S/ref=sr_1_1?ie=UTF8&qid=1502381150&sr=8-1&keywords=dictation+machines\" class=\"uri\">https://www.amazon.co.uk/HccToo-Multifunctional-Rechargeable-Dictaphone-Conversation/dp/B015H9JP6S/ref=sr_1_1?ie=UTF8&qid=1502381150&sr=8-1&keywords=dictation+machines</a></p>\r\n<p>An article that explains how to remove noise using Audacity, which was what dodddummy was talking about when he commented on my first show on <a href=\"https://hackerpublicradio.org/eps.php?id=2377\">HPR2377</a> <a href=\"https://www.podfeet.com/blog/recording/how-to-remove-noise-with-audacity/\" class=\"uri\">https://www.podfeet.com/blog/recording/how-to-remove-noise-with-audacity/</a></p>\r\n<p>Link to Dave’s (<code>thelovebug</code>) page and the original John Kulp’s $2 microphone show that kicked all this off. Looking forward to getting a chance to catch up with Dave’s drive into work show. Refer to Dave’s episode <a href=\"https://hackerpublicradio.org/eps.php?id=2400\">HPR2400</a> and John Kulp’s original $2 microphone show <a href=\"https://hackerpublicradio.org/eps.php?id=1812\">HPR1812</a></p>\r\n<p>Link to the microphone originally recommended By John Kulp<br />\r\n<a href=\"https://www.amazon.co.uk/Neewer-3-5mm-Hands-Computer-Microphone/dp/B005DOTSM4/\" class=\"uri\">https://www.amazon.co.uk/Neewer-3-5mm-Hands-Computer-Microphone/dp/B005DOTSM4/</a></p>\r\n<p>A link from StackExchange that details the wiring diagram for Kenwood style microphone used in many portable Amateur radios<br />\r\n<a href=\"https://ham.stackexchange.com/questions/1891/whats-the-pinout-for-kenwood-2-5mm-trs-3-5-mm-trs-connector\" class=\"uri\">https://ham.stackexchange.com/questions/1891/whats-the-pinout-for-kenwood-2-5mm-trs-3-5-mm-trs-connector</a></p>\r\n<p>This is a small article in Wikipedia that covers the Electret Microphone which is the type used in the microphone recommended by John Kulp, Dave (<code>thelovebug</code>) and now me.<br />\r\n<a href=\"https://en.wikipedia.org/wiki/Electret_microphone\" class=\"uri\">https://en.wikipedia.org/wiki/Electret_microphone</a></p>\r\n',201,0,1,'CC-BY-SA','recording, podcasting, audio, microphone, car, Audacity',0,0,1),
(2642,'2018-09-18','My swedish and german Podcasts Part 2',318,'I talk about 6 more podcasts in swedish and german. This time no radio network involved.','<ul>\r\n<li><strong>Helt sant</strong> <a href=\"https://api.sr.se/api/rss/pod/20447\" class=\"uri\">https://api.sr.se/api/rss/pod/20447</a></li>\r\n<li><strong>Brysselbubblan</strong> <a href=\"https://brysselbubblan.libsyn.com/rss\" class=\"uri\">https://brysselbubblan.libsyn.com/rss</a></li>\r\n<li><strong>Fri tanke podcast</strong> <a href=\"https://fritanke.podbean.com/feed/\" class=\"uri\">https://fritanke.podbean.com/feed/</a></li>\r\n<li><strong>Chaosradio</strong> <a href=\"https://chaosradio.ccc.de/chaosradio-latest.rss\" class=\"uri\">https://chaosradio.ccc.de/chaosradio-latest.rss</a></li>\r\n<li><strong>Radio Tux</strong> <a href=\"https://radiotux.de/podcast/rss/radiotux-all_ogg.xml\" class=\"uri\">https://radiotux.de/podcast/rss/radiotux-all_ogg.xml</a></li>\r\n<li><strong>Heiseshow</strong> <a href=\"https://www.heise.de/heiseshow.rss\" class=\"uri\">https://www.heise.de/heiseshow.rss</a></li>\r\n</ul>\r\n',309,75,1,'CC-BY-SA','podcast,swedish,german,ccc',0,0,1),
(2916,'2019-10-07','HPR Community News for September 2019',4081,'HPR Volunteers talk about shows released and comments posted in September 2019','<style>\ntable td.shrink {\n white-space:nowrap\n}\n</style>\n\n<h2>New hosts</h2>\n<p>\nThere were no new hosts this month.\n</p>\n\n<h2>Last Month\'sShows</h2>\n<tableid=\"t01\">\n<tr>\n<th>Id</th>\n<th>Day</th>\n<th>Date</th>\n<th>Title</th>\n<th>Host</th>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=2891\"target=\"_blank\">2891</a></strong></td>\n<td>Mon</td>\n<tdclass=\"shrink\">2019-09-02</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=2891\"target=\"_blank\">HPRCommunityNewsforAugust2019</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0159.html\"target=\"_blank\">HPRVolunteers</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=2892\"target=\"_blank\">2892</a></strong></td>\n<td>Tue</td>\n<tdclass=\"shrink\">2019-09-03</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=2892\"target=\"_blank\">StardrifterRPGPlaytestPart02</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0107.html\"target=\"_blank\">lostnbronx</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=2893\"target=\"_blank\">2893</a></strong></td>\n<td>Wed</td>\n<tdclass=\"shrink\">2019-09-04</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=2893\"target=\"_blank\">Whatsinthebox!Part2</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0235.html\"target=\"_blank\">NYbill</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=2894\"target=\"_blank\">2894</a></strong></td>\n<td>Thu</td>\n<tdclass=\"shrink\">2019-09-05</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=2894\"target=\"_blank\">RepairingaMusicalInstrumentCase</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0238.html\"target=\"_blank\">JonKulp</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=2895\"target=\"_blank\">2895</a></strong></td>\n<td>Fri</td>\n<tdclass=\"shrink\">2019-09-06</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=2895\"target=\"_blank\">Theworkoffirefighters,part2</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0369.html\"target=\"_blank\">JeroenBaten</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=2896\"target=\"_blank\">2896</a></strong></td>\n<td>Mon</td>\n<tdclass=\"shrink\">2019-09-09</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=2896\"target=\"_blank\">OrangePIZeroLTSversion</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0129.html\"target=\"_blank\">JWP</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=2897\"target=\"_blank\">2897</a></strong></td>\n<td>Tue</td>\n<tdclass=\"shrink\">2019-09-10</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=2897\"target=\"_blank\">StardrifterRPGPlaytestPart03</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0107.html\"target=\"_blank\">lostnbronx</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=2898\"target=\"_blank\">2898</a></strong></td>\n<td>Wed</td>\n<tdclass=\"shrink\">2019-09-11</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=2898\"target=\"_blank\">Modelingpeopleinspacegame</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0364.html\"target=\"_blank\">Tuula</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=2899\"target=\"_blank\">2899</a></strong></td>\n<td>Thu</td>\n<tdclass=\"shrink\">2019-09-12</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=2899\"target=\"_blank\">EndeavourOS</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0338.html\"target=\"_blank\">TonyHughesAKATonyH1212</a></td>\n</tr>\n<tr>\n<td><str
(2936,'2019-11-04','HPR Community News for October 2019',2514,'Ken discusses last months shows and talks about OggCamp, FLOSS Weekly, FOSDEM, and Star Wars.','<style>\ntable td.shrink {\n white-space:nowrap\n}\n</style>\n\n<h2>New hosts</h2>\n<p>\nWelcome to our new host: <br />\n\n <a href=\"https://hackerpublicradio.org/correspondents/0380.html\" target=\"_blank\">Carl</a>.\n</p>\n\n<h2>Last Month\'sShows</h2>\n<tableid=\"t01\">\n<tr>\n<th>Id</th>\n<th>Day</th>\n<th>Date</th>\n<th>Title</th>\n<th>Host</th>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=2912\"target=\"_blank\">2912</a></strong></td>\n<td>Tue</td>\n<tdclass=\"shrink\">2019-10-01</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=2912\"target=\"_blank\">StardrifterRPGPlaytestPart06</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0107.html\"target=\"_blank\">lostnbronx</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=2913\"target=\"_blank\">2913</a></strong></td>\n<td>Wed</td>\n<tdclass=\"shrink\">2019-10-02</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=2913\"target=\"_blank\">Windows,SDN,andFirewalls</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0231.html\"target=\"_blank\">Beto</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=2914\"target=\"_blank\">2914</a></strong></td>\n<td>Thu</td>\n<tdclass=\"shrink\">2019-10-03</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=2914\"target=\"_blank\">DescribinghowIlistentopodcastsPART4</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0201.html\"target=\"_blank\">MrX</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=2915\"target=\"_blank\">2915</a></strong></td>\n<td>Fri</td>\n<tdclass=\"shrink\">2019-10-04</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=2915\"target=\"_blank\">Intro-MyRecordingSetup</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0380.html\"target=\"_blank\">Carl</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=2916\"target=\"_blank\">2916</a></strong></td>\n<td>Mon</td>\n<tdclass=\"shrink\">2019-10-07</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=2916\"target=\"_blank\">HPRCommunityNewsforSeptember2019</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0159.html\"target=\"_blank\">HPRVolunteers</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=2917\"target=\"_blank\">2917</a></strong></td>\n<td>Tue</td>\n<tdclass=\"shrink\">2019-10-08</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=2917\"target=\"_blank\">StardrifterRPGPlaytestPart07</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0107.html\"target=\"_blank\">lostnbronx</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=2918\"target=\"_blank\">2918</a></strong></td>\n<td>Wed</td>\n<tdclass=\"shrink\">2019-10-09</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=2918\"target=\"_blank\">Selectingrandomitemfromweightedlist</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0364.html\"target=\"_blank\">Tuula</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=2919\"target=\"_blank\">2919</a></strong></td>\n<td>Thu</td>\n<tdclass=\"shrink\">2019-10-10</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=2919\"target=\"_blank\">hostingsoftwareinHPRshownotes</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0243.html\"target=\"_blank\">Jezra</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=2920\"target=\"_blank\">2920</a></strong></td>\n<td>Fri</td>\n<tdclass=\"shrink\">2019-10-11</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=2920\"target=\"_blank\">BetterSocialMedia03-MeWe</a></td>\n<td><a
(2643,'2018-09-19','The Payoff In Storytelling',677,'A brief look at the emotional structure of story endings.','<p>Lostnbronx takes a quick look at how story endings need to be structured in order to be satisfying. Lots of endings are possible, but they don’t all require the same treatment. Some can be abrupt, some can be sad, but all of them need to meet certain emotional expectations.</p>\r\n',107,105,0,'CC-0','stories,storytelling,endings,lostnbronx',0,0,1),
(2644,'2018-09-20','Error on show 2642',59,'Error error','<p>The right podcast is:</p>\r\n<ul>\r\n<li><strong>Kvalificerat Hemligt</strong> <a href=\"https://feeds.soundcloud.com/users/soundcloud:users:167287536/sounds.rss\" class=\"uri\">https://feeds.soundcloud.com/users/soundcloud:users:167287536/sounds.rss</a></li>\r\n</ul>',309,75,0,'CC-BY-SA','podcast, swedish, correction',0,0,1),
(2648,'2018-09-26','Explaining the controls on my Amateur HF Radio Part 1',1646,'I attempt to explain the controls on my Kenwood TS940S HF Amateur Radio.','<p>In this episode, I cover the transmit section controls.</p>\r\n<h2 id=\"related-links-for-the-ts940s-amateur-hf-radio\">Related links for the TS940S Amateur HF Radio</h2>\r\n<ul>\r\n<li><p>TS940 Overview<br />\r\n<a href=\"https://www.universal-radio.com/catalog/hamhf/ts940s.html\" class=\"uri\">https://www.universal-radio.com/catalog/hamhf/ts940s.html</a></p></li>\r\n<li><p>TS940 Review<br />\r\n<a href=\"https://www.eham.net/reviews/detail/239\" class=\"uri\">https://www.eham.net/reviews/detail/239</a></p></li>\r\n<li><p>TS940 User Manual<br />\r\n<a href=\"https://www.radiomanual.info/schemi/TS940_user.pdf\" class=\"uri\">https://www.radiomanual.info/schemi/TS940_user.pdf</a></p></li>\r\n</ul>\r\n<h3 id=\"further-info-and-clarification\">Further info and clarification</h3>\r\n<p>Below I’ll cover some of the items I missed or didn’t understand when I recorded my off the cuff episode. If I miss something you may find it in the user manual link above.</p>\r\n<p>Full and Semi break-in mode is used when operating in CW mode (Morse Code). In full break-in mode the radio jumps back into receive the moment the mores key is released this way you can hear if the station is trying to contact in-between each press of the key. This is very demanding on the radio as it must switch very quickly back into receive mode it can also be distracting for the operator hearing hissing noise between each dot and dash. Semi break-in mode is a bit like using VOX mode in speech the radio goes silent between each dot and dash but will return to receive after the mores key is released for a predetermined time interval.</p>\r\n<p>The digital display used on the main display of the TS940S is apparently a Vacuum Fluorescent Display not the more usual LED of the time.</p>\r\n<p>The TS 940S was manufactured around 1986, so unbelievably that means my wonderful radio that to me looks fairly modern is around 30 years Old! I believe this HF radio was top of the line for Kenwood back then.</p>\r\n<p>The Auto and thru button is used to connect the auto tuner in line with the antenna. When AUTO is selected the radio is connected to the Auto internal tuner and then to the antenna. In THRU the radio bypasses the auto tuner and connects the radio directly to the antenna.</p>\r\n<h3 id=\"the-speech-compressor\">The Speech Compressor</h3>\r\n<p>During SSB operation it is desirable to increase the relative “talk power” of the transceiver by using speech processor circuitry. The speech processor control is set by using the in and out rotary control. The in control level is set by putting the meter into Comp and adjusting the in control to no more than 10 dB of compression. The out control level is set by putting the meter into ALC and adjusting the out control to ensure the meter stays within the ALC section of the meter.</p>\r\n<p>IC meter position indicates the power transistor collector current</p>\r\n<p>VC meter position indicates the power transistor collector voltage</p>\r\n<p>Noise Blanker 1 (NB1)<br />\r\nFor pulse type noise, such as generated by automatic ignition systems.</p>\r\n<p>Noise Blanker 2 (NB2)<br />\r\nFor long duration pulse noise, like the Russian woodpecker.</p>',201,43,1,'CC-BY-SA','Amateur, Radio, Ham',0,0,1),
(2650,'2018-09-28','My Pocket Knife',505,'Shane talks about his pocket knife for a few minutes.','<p>\r\nThe pocket knife Shane talks about is the Number 6 knife made by the French company Opinel, It costs about $20 (Canadian). This version has a walnut handle.\r\n</p>\r\n<p>\r\n<a href=\"https://hackerpublicradio.org/eps/hpr2650.jpg\">\r\n<img src=\"https://hackerpublicradio.org/eps/hpr2650-small.jpg\" alt=\"Opinel pocket knife with ham and cheese sandwich\"/>\r\n</a>\r\n</p>\r\n',250,23,0,'CC-BY-SA','lock knife,Opinel knife',0,0,1),
(2653,'2018-10-03','Using the EXACT Function in Excel',199,'Shane explains that he just learned a simple and useful Excel function.','<p>The function looks like <code>=EXACT(A1,D1)</code> and its purpose is to tell you if <code>A1</code> contains the exact same value as <code>D1</code> or not.</p>\r\n',250,0,0,'CC-BY-SA','Excel',0,0,1),
(2654,'2018-10-04','Making Crepes',767,'Shane makes crepes from a simple recipe. ','<h2 id=\"crepe-recipe\">Crepe Recipe:</h2>\r\n<ul>\r\n<li>1 cup of flour</li>\r\n<li>1 cup of milk</li>\r\n<li>1 egg</li>\r\n<li>1 pinch of salt</li>\r\n</ul>\r\n<h3 id=\"cinnamon-sugar-mixture-recipe\">Cinnamon Sugar Mixture Recipe:</h3>\r\n<ul>\r\n<li>1 part cinnamon (or less)</li>\r\n<li>8 parts sugar</li>\r\n</ul>\r\n',250,93,0,'CC-BY-SA','crepes, cooking, parenting',0,0,1),
(2655,'2018-10-05','Sleep Apnea and Afib',705,'How Sleep Apnea and Atrial Fibrillation entered my life','<p>The last of my personal health issue shows covers two related issues, Sleep Apnea and Atrial Fibrillation. They are related because Sleep Apnea is a cause of Atrial Fibrillation. Fortunately both can be controlled if you follow medical directions.</p>\r\n<ul>\r\n<li><a href=\"https://www.mayoclinic.org/diseases-conditions/sleep-apnea/symptoms-causes/syc-20377631\" class=\"uri\">https://www.mayoclinic.org/diseases-conditions/sleep-apnea/symptoms-causes/syc-20377631</a></li>\r\n<li><a href=\"https://www.heart.org/en/health-topics/atrial-fibrillation/what-is-atrial-fibrillation-afib-or-af\" class=\"uri\">https://www.heart.org/en/health-topics/atrial-fibrillation/what-is-atrial-fibrillation-afib-or-af</a></li>\r\n<li><a href=\"https://www.mayoclinic.org/diseases-conditions/sleep-apnea/symptoms-causes/syc-20377631\" class=\"uri\">https://www.mayoclinic.org/diseases-conditions/sleep-apnea/symptoms-causes/syc-20377631</a></li>\r\n<li><a href=\"https://www.palain.com/?page_id=352\" class=\"uri\">https://www.palain.com/?page_id=352</a></li>\r\n</ul>\r\n',198,100,0,'CC-BY-SA','Health, Medicine, Apnea, Heart, Afib, Atrial Fibrillation',0,0,1),
(2656,'2018-10-08','Explaining the controls on my Amateur HF Radio Part 2',844,'In this episode I cover the mode and frequency selection controls of my Kenwood TS 940S','<h2 id=\"radio-mode-and-frequency-controls-on-amateur-hf-radio-ts940s\">Radio Mode and frequency controls on Amateur HF Radio TS940S</h2>\r\n<ul>\r\n<li><p>UK HF band plan information<br />\r\n<a href=\"https://rsgb.org/main/operating/band-plans/hf/\" class=\"uri\">https://rsgb.org/main/operating/band-plans/hf/</a></p></li>\r\n<li><p>Morse code (CW), Carrier Wave<br />\r\n<a href=\"https://en.wikipedia.org/wiki/Morse_code\" class=\"uri\">https://en.wikipedia.org/wiki/Morse_code</a></p></li>\r\n<li><p>Article about Sideband, including Lower Side Band (LSB) and Upper Side Band (USB)<br />\r\n<a href=\"https://en.wikipedia.org/wiki/Sideband\" class=\"uri\">https://en.wikipedia.org/wiki/Sideband</a></p></li>\r\n<li><p>Amplitude Modulation (AM)<br />\r\n<a href=\"https://en.wikipedia.org/wiki/Amplitude_modulation\" class=\"uri\">https://en.wikipedia.org/wiki/Amplitude_modulation</a></p></li>\r\n<li><p>Frequency Modulation (FM)<br />\r\n<a href=\"https://en.wikipedia.org/wiki/Frequency_modulation\" class=\"uri\">https://en.wikipedia.org/wiki/Frequency_modulation</a></p></li>\r\n<li><p>Frequency Shift Keying (FSK)<br />\r\nNote the CW ident di da dit or dot dash dot is not as I thought the letter “K” in Morse code, silly me, it’s actually the letter “R”. Told you I wasn’t great at Morse.<br />\r\n<a href=\"https://en.wikipedia.org/wiki/Frequency-shift_keying\" class=\"uri\">https://en.wikipedia.org/wiki/Frequency-shift_keying</a></p></li>\r\n</ul>\r\n<p>The “T-F Set” button is used to set the Transmit frequency when working in split mode. In split mode, you can set the radio to transmits on one frequency and receives on a different frequency.</p>',201,43,1,'CC-BY-SA','Amateur, Radio, Ham',0,0,1),
(2665,'2018-10-19','Exercise and Diet',1041,'Exercise and Diet are primary to health','<p>The best things you can do to maximize your health are to watch what you eat and make sure you get exercise. These are some of the primary tools in my kit for staying healthy and living a long life.</p>\r\n<ul>\r\n<li><a href=\"https://www.amazon.com/Dr-Bernsteins-Diabetes-Solution-Achieving-ebook/dp/B004QZ9PC4/ref=sr_1_1?s=books&ie=UTF8&qid=1483459301&sr=1-1&keywords=dr+bernstein+diabetes+solution\" class=\"uri\">https://www.amazon.com/Dr-Bernsteins-Diabetes-Solution-Achieving-ebook/dp/B004QZ9PC4/ref=sr_1_1?s=books&ie=UTF8&qid=1483459301&sr=1-1&keywords=dr+bernstein+diabetes+solution</a></li>\r\n<li><a href=\"https://www.diabetes-book.com/\" class=\"uri\">https://www.diabetes-book.com/</a></li>\r\n<li><a href=\"https://www.palain.com/?page_id=354\" class=\"uri\">https://www.palain.com/?page_id=354</a></li>\r\n</ul>\r\n',198,100,0,'CC-BY-SA','Health, Medicine, Exercise, Diet',0,0,1),
(2675,'2018-11-02','YouTube Playlists',767,'How to solve a problem with following YouTube channels','<p>I am subscribed to a number of YouTube channels, and I found a need to be able to watch all of the videos in order for certain channels. This describes how to do it.</p>\r\n<ul>\r\n<li><a href=\"https://chrome.google.com/webstore/detail/iridium-for-youtube/gbjmgndncjkjfcnpfhgidhbgokofegbl?hl=en\" class=\"uri\">https://chrome.google.com/webstore/detail/iridium-for-youtube/gbjmgndncjkjfcnpfhgidhbgokofegbl?hl=en</a></li>\r\n<li><a href=\"https://www.palain.com/?page_id=372\" class=\"uri\">https://www.palain.com/?page_id=372</a></li>\r\n</ul>\r\n',198,0,0,'CC-BY-SA','YouTube, Channels, Playlists',0,0,1),
(2685,'2018-11-16','Scientific and Medical Reports',854,'We need to be careful about evaluating news reports about medical studies','<p>We get bombarded with breathless news stories about medical breakthroughs that may not be as reliable as they are presented. This begins our look at what is reliable and what you need to watch out for.</p>\r\n<ul>\r\n<li><a href=\"https://journalistsresource.org/studies/society/news-media/health-research-misinformation-tips\" class=\"uri\">https://journalistsresource.org/studies/society/news-media/health-research-misinformation-tips</a></li>\r\n<li><a href=\"https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0196346\" class=\"uri\">https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0196346</a></li>\r\n<li><a href=\"https://journals.plos.org/\" class=\"uri\">https://journals.plos.org/</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/ArXiv\" class=\"uri\">https://en.wikipedia.org/wiki/ArXiv</a></li>\r\n<li><a href=\"https://www.palain.com/?page_id=356\" class=\"uri\">https://www.palain.com/?page_id=356</a></li>\r\n</ul>',198,100,0,'CC-BY-SA','Health, Medicine, Medical Studies, News Reports',0,0,1),
(2695,'2018-11-30','Problems with Studies',798,'Some principles for evaluating medical studies','<p>All medical studies are not alike. Some are of higher quality than others, and the conclusions they reach need to be evaluated based on some principles of good research. Here we take a look at some warning signs of bad or unreliable studies.</p>\r\n<ul>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Replication_crisis\" class=\"uri\">https://en.wikipedia.org/wiki/Replication_crisis</a></li>\r\n<li><a href=\"https://www.wired.com/story/social-science-reproducibility\" class=\"uri\">https://www.wired.com/story/social-science-reproducibility</a></li>\r\n<li><a href=\"https://www.sciencemag.org/news/2017/01/rigorous-replication-effort-succeeds-just-two-five-cancer-papers\" class=\"uri\">https://www.sciencemag.org/news/2017/01/rigorous-replication-effort-succeeds-just-two-five-cancer-papers</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Andrew_Wakefield\" class=\"uri\">https://en.wikipedia.org/wiki/Andrew_Wakefield</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Hwang_Woo-suk#Controversies\" class=\"uri\">https://en.wikipedia.org/wiki/Hwang_Woo-suk#Controversies</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Yoshiki_Sasai\" class=\"uri\">https://en.wikipedia.org/wiki/Yoshiki_Sasai</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Data_dredging\" class=\"uri\">https://en.wikipedia.org/wiki/Data_dredging</a></li>\r\n<li><a href=\"https://www.youtube.com/watch?v=Gx0fAjNHb1M\" class=\"uri\">https://www.youtube.com/watch?v=Gx0fAjNHb1M</a></li>\r\n<li><a href=\"https://journals.plos.org/plosbiology/article?id=10.1371/journal.pbio.1002106\" class=\"uri\">https://journals.plos.org/plosbiology/article?id=10.1371/journal.pbio.1002106</a></li>\r\n<li><a href=\"https://www.palain.com/?page_id=358\" class=\"uri\">https://www.palain.com/?page_id=358</a></li>\r\n</ul>',198,100,0,'CC-BY-SA','Health, Medicine, Medical Studies, Evaluating Studies',0,0,1),
(2705,'2018-12-14','Evidence-based Medicine',1013,'Medicine should be based on objective scientific evidence','<p>Basing medical care and treatment on the scientific evidence should be the norm, but frequently it is not. Doctors may treat based on how they have always done it, or how other doctors do it (i.e.best practices), but there is a movement now to reorient medicine to follow the best scientific guidelines.</p>\r\n<ul>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Evidence-based_medicine\" class=\"uri\">https://en.wikipedia.org/wiki/Evidence-based_medicine</a></li>\r\n<li><a href=\"https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3789163/\" class=\"uri\">https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3789163/</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/N_ray\" class=\"uri\">https://en.wikipedia.org/wiki/N_ray</a></li>\r\n<li><a href=\"https://www.palain.com/?page_id=360\" class=\"uri\">https://www.palain.com/?page_id=360</a></li>\r\n</ul>\r\n',198,100,0,'CC-BY-SA','Health, Medicine, Evidence, Science',0,0,1),
(2669,'2018-10-25','Additional ancillary Bash tips - 12',1702,'Making decisions in Bash (part 4)','<h1 id=\"additional-ancillary-bash-tips---12\">Additional ancillary Bash tips - 12</h1>\r\n<h2 id=\"making-decisions-in-bash\">Making decisions in Bash</h2>\r\n<p>This is the twelfth episode in the <em>Bash Tips</em> sub-series. It is the fourth of a group of shows about making decisions in Bash.</p>\r\n<p>In the last three episodes we saw the types of test Bash provides, and we looked briefly at some of the commands that use these tests. We looked at conditional expressions and all of the operators Bash provides to do this. We concentrated particularly on string comparisons which use <em>glob</em> and <em>extended glob</em> patterns.</p>\r\n<p>Now we want to look at the other form of string comparison, using <em>regular expressions</em>.</p>\r\n<h2 id=\"long-notes\">Long notes</h2>\r\n<p>I have provided detailed notes as usual for this episode, and these can be <a href=\"https://hackerpublicradio.org/eps/hpr2669/full_shownotes.html\">viewed here</a>.</p>\r\n<h2 id=\"links\">Links</h2>\r\n<ul>\r\n<li><a href=\"https://www.gnu.org/software/bash/manual/bash.html\">“<em>GNU BASH Reference Manual</em>”</a>\r\n<ul>\r\n<li><a href=\"https://www.gnu.org/software/bash/manual/bash.html#Conditional-Constructs\">“Bash Conditional Constructs”</a></li>\r\n<li><a href=\"https://www.gnu.org/software/bash/manual/bash.html#Bash-Conditional-Expressions\">“Bash Conditional Expressions”</a></li>\r\n<li><a href=\"https://www.gnu.org/software/bash/manual/bash.html#Bourne-Shell-Builtins\">“Bourne Shell Builtins”</a></li>\r\n<li><a href=\"https://www.gnu.org/software/bash/manual/bash.html#Pattern-Matching\">“Bash Pattern Matching”</a></li>\r\n</ul></li>\r\n<li><p><a href=\"https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html\">“<em>POSIX Shell Command Language</em>”</a> - documentation of all of the POSIX features mentioned in this series.</p></li>\r\n<li><a href=\"https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap09.html#tag_09_04\">“Extended Regular Expressions”</a></li>\r\n<li><p><a href=\"https://tldp.org/LDP/abs/html/x17129.html\">“A Brief Introduction to Regular Expressions”</a></p></li>\r\n<li><p><a href=\"https://hackerpublicradio.org/series/0042.html\">HPR series: <em>Bash Scripting</em></a></p></li>\r\n<li>Previous episodes under the heading <em>Bash Tips</em>:\r\n<ol>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=1648\">HPR episode 1648 “<em>Bash parameter manipulation</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=1843\">HPR episode 1843 “<em>Some Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=1884\">HPR episode 1884 “<em>Some more Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=1903\">HPR episode 1903 “<em>Some further Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=1951\">HPR episode 1951 “<em>Some additional Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2045\">HPR episode 2045 “<em>Some other Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2278\">HPR episode 2278 “<em>Some supplementary Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2293\">HPR episode 2293 “<em>More supplementary Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2639\">HPR episode 2639 “<em>Some ancillary Bash tips - 9</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2649\">HPR episode 2649 “<em>More ancillary Bash tips - 10</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2659\">HPR episode 2659 “<em>Further ancillary Bash tips - 11</em>”</a></li>\r\n</ol></li>\r\n<li>Resources:\r\n<ul>\r\n<li>Examples: <a href=\"https://hackerpublicradio.org/eps/hpr2669/bash12_ex1.sh\">bash12_ex1.sh</a>, <a href=\"https://hackerpublicradio.org
(2657,'2018-10-09','Why we are all going to shit in 30 years due to computers',1555,'Some thoughts about the increasing impact of automation','<p>Now, this is not a doom and gloom lecture.</p>\r\n<p>Actually it is a talk about what is going to happen in the next 30 years.</p>\r\n<p>It is a talk about what is called “postcapitalism”.</p>\r\n<p>It is a talk about how almost all jobs are going to disappear due to automation. But also how we are going to think about this this and come up with solutions.</p>\r\n<p>It talks about the three big challenges we need to face.</p>\r\n<p>And yes, this involves you as well!</p>\r\n',369,0,1,'CC-BY-SA','prediction,post-capitalism',0,0,1),
(2658,'2018-10-10','Questions on podcast production',2784,'Al asks Dave questions about podcast production','<h1>HPR Chat with Al</h1>\r\n<p>Al asks Dave a number of questions about podcast audio recording and post-production.</p>\r\n<h2>Al is thinking of doing National Podcast Post Month in November</h2>\r\n<p>National Podcast Post Month (or <a href=\"https://napodpomo.org/\">NaPodPoMo</a>) is a challenge in a similar vein to National Novel Writing Month (or <a href=\"https://nanowrimo.org/\">NaNoWriMo</a>) in which participants are challenged to produce and publish a piece of audio as a podcast, every day for the month of November.</p>\r\n<h2>Bad podcast audio</h2>\r\n<p>Audio quality is as important as the content that\'sbeingpresented.Badaudioisgoingtobewhatcausesnewpodcastersthemostdamageinsubscribernumbers.Anexampleofgoodaudioisthetruecrimepodcast,<ahref=\"https://oneeyeopen.podbean.com/\">OneEyeOpen</a>,whichDavestartedlisteningtoacoupleofweeksago.HealsopickedupacoupleofothertruecrimepodcastsasaresultoflisteningtoOneEyeOpenwheretheaudioqualityissobad,thattheycan\'t be heard!</p>\r\n<p><a href=\"https://en.wikipedia.org/wiki/Loudness\">Loudness</a> is a measurement of how loud something is perceived to be. Levelling is a process of ensuring that individual tracks in a podcasts are an an equivalent level, but also the podcast overall is at an equivalent level to other podcasts that have been levelled the same way.</p>\r\n<h2>Our setups</h2>\r\n<p>Al and Dave have a very similar microphone setup.</p>\r\n<ul>\r\n<li><a href=\"https://www.amazon.co.uk/Samson-SAQ2U-Microphone-Recording-Pack/dp/B001R747SG/\">Samson Q2U</a> - XLR and USB capable microphone</li>\r\n<li>Pop filters and wind screens</li>\r\n<li>Boom arm</li>\r\n<li>Shock mount</li>\r\n</ul>\r\n<h2>What is a compressor</h2>\r\n<p>The non-technical definition is that it brings up the quiet bits and brings down the louder bits so that your voice has less of a variance if you shout or whisper.</p>\r\n<h2>Different microphone types</h2>\r\n<ul>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Microphone#Cardioid\">Cardioid</a> - focuses on sounds coming from in front of the mic</li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Microphone#Omnidirectional\">Omnidirectional</a> - can theoretically pick up sound from all directions</li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Microphone#Dynamic_microphone\">Dynamic</a> - well suited for vocal use</li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Microphone#Condenser_microphone\">Condenser</a> - overall better quality sound than dynamic, but more susceptible to background noise, so requires a really quiet studio environment</li>\r\n</ul>\r\n<h2>Your level</h2>\r\n<p>You can measure your own level in <a href=\"https://www.audacityteam.org/\">Audacity</a> - make sure you stay in the green! If you stray into yellow or even red, either lower your level or move slightly away from the mic.</p>\r\n<h2>Other people\'slevels</h2>\r\n<p>Concentrateonyourown,getotherstomanagetheirs.Ifyou\'re recording multiple tracks, it <em>can</em> be managed in post-production, but once it\'sbeenmergedintoasingletrackit\'s virtually impossible.</p>\r\n<h2>File formats</h2>\r\n<ul>\r\n<li>FLAC/ALAC - <a href=\"https://en.wikipedia.org/wiki/Lossless_compression#Audio\">lossless</a> formats</li>\r\n<li>MP3/OGG/M4A - <a href=\"https://en.wikipedia.org/wiki/Data_compression#Audio\">lossy</a> formats</li>\r\n</ul>\r\n<p>Record in a lossless format, and do your edits and post-production in a lossless format. Only <a href=\"https://en.wikipedia.org/wiki/Transcoding\">transcode</a> to a lossy format once you\'rereadytopublishyourfinalfile.</p>\r\n<h2>Monitoring</h2>\r\n<p>Ifyou\'re recording yourself, and you don\'twanttohearyourselfthroughheadphones,taketheheadphonesoff.</p>\r\n<p>Ifyou\'re recording with someone else who is not in the same room, you are better off hearing yourself through your headphones at the same level as the pers
(2679,'2018-11-08','Extra ancillary Bash tips - 13',2202,'Making decisions in Bash (part 5)','<h1 id=\"extra-ancillary-bash-tips---13\">Extra ancillary Bash tips - 13</h1>\r\n<h2 id=\"making-decisions-in-bash\">Making decisions in Bash</h2>\r\n<p>This is the thirteenth episode in the <em>Bash Tips</em> sub-series. It is the fifth and final of a group of shows about making decisions in Bash.</p>\r\n<p>In the last four episodes we saw the types of test Bash provides, and we looked briefly at some of the commands that use these tests. We looked at conditional expressions and all of the operators Bash provides to do this. We concentrated particularly on string comparisons which use <em>glob</em> and <em>extended glob</em> patterns then we devoted an episode to Bash <em>regular expressions</em>.</p>\r\n<p>Now we want to look at the final topic within regular expressions, the use of <em>capture groups</em>.</p>\r\n<h2 id=\"long-notes\">Long notes</h2>\r\n<p>I have provided detailed notes as usual for this episode, and these can be <a href=\"https://hackerpublicradio.org/eps/hpr2679/full_shownotes.html\">viewed here</a>.</p>\r\n<h2 id=\"links\">Links</h2>\r\n<ul>\r\n<li><a href=\"https://www.gnu.org/software/bash/manual/bash.html\">“<em>GNU BASH Reference Manual</em>”</a>\r\n<ul>\r\n<li><a href=\"https://www.gnu.org/software/bash/manual/bash.html#Conditional-Constructs\">“Bash Conditional Constructs”</a></li>\r\n<li><a href=\"https://www.gnu.org/software/bash/manual/bash.html#Bash-Conditional-Expressions\">“Bash Conditional Expressions”</a></li>\r\n<li><a href=\"https://www.gnu.org/software/bash/manual/bash.html#Bourne-Shell-Builtins\">“Bourne Shell Builtins”</a></li>\r\n<li><a href=\"https://www.gnu.org/software/bash/manual/bash.html#The-Set-Builtin\">“The <code>set</code> Builtin”</a></li>\r\n<li><a href=\"https://www.gnu.org/software/bash/manual/bash.html#Pattern-Matching\">“Bash Pattern Matching”</a></li>\r\n</ul></li>\r\n<li><p><a href=\"https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html\">“<em>POSIX Shell Command Language</em>”</a> - documentation of all of the POSIX features mentioned in this series.</p></li>\r\n<li><p><a href=\"https://hackerpublicradio.org/series/0042.html\">HPR series: <em>Bash Scripting</em></a></p></li>\r\n<li>Previous episodes under the heading <em>Bash Tips</em>:\r\n<ol>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=1648\">HPR episode 1648 “<em>Bash parameter manipulation</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=1843\">HPR episode 1843 “<em>Some Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=1884\">HPR episode 1884 “<em>Some more Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=1903\">HPR episode 1903 “<em>Some further Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=1951\">HPR episode 1951 “<em>Some additional Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2045\">HPR episode 2045 “<em>Some other Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2278\">HPR episode 2278 “<em>Some supplementary Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2293\">HPR episode 2293 “<em>More supplementary Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2639\">HPR episode 2639 “<em>Some ancillary Bash tips - 9</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2649\">HPR episode 2649 “<em>More ancillary Bash tips - 10</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2659\">HPR episode 2659 “<em>Further ancillary Bash tips - 11</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2669\">HPR episode 2669 “<em>Additional ancillary Bash tips - 12</em>”</a></li>\r\n</ol></li>\r\n<li>Resources:\r\n<ul>\r\n<li>Examples: <a href=\"https://hackerpublicradio.org/eps/hpr2679/bash13_e
(2690,'2018-11-23','A chat about the HiveMQ Broker',425,'Ken talks with Florian Raschbichler and Anja Helmbrecht-Schaar about HiveMQ','<p>\r\nI had the opportunity to chat with Florian Raschbichler and Anja Helmbrecht-Schaar from the company <a href=\"https://www.dc-square.de/en/\">dc-square GmbH</a>, who are developers of the <a href=\"https://www.hivemq.com/\">HiveMQ</a> Broker.\r\n</p>\r\n<p>\r\nIf you are new to <a href=\"https://en.wikipedia.org/wiki/MQTT\">MQTT</a> they have <a href=\"https://www.hivemq.com/blog/mqtt-essentials/page/2/\">the ultimate kickstart for MQTT beginners</a>. They also maintain an <a href=\"https://www.hivemq.com/mqtt-client-library-encyclopedia\">MQTT Client Library Encyclopedia</a>\r\n</p>\r\n\r\n\r\n<h3>Links</h3>\r\n<ul>\r\n<li><a href=\"https://www.hivemq.com/\">https://www.hivemq.com/</a></li>\r\n<li><a href=\"https://www.dc-square.de/en/\">https://www.dc-square.de/en/</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Comparison_of_MQTT_Implementations\">https://en.wikipedia.org/wiki/Comparison_of_MQTT_Implementations</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/MQTT\">https://en.wikipedia.org/wiki/MQTT</a></li>\r\n<li><a href=\"https://www.hivemq.com/blog/mqtt-essentials/page/2/\">https://www.hivemq.com/blog/mqtt-essentials/page/2/</a></li>\r\n<li><a href=\"https://github.com/hivemq\">https://github.com/hivemq</a></li>\r\n<li><a href=\"https://www.hivemq.com/mqtt-client-library-encyclopedia\">https://www.hivemq.com/mqtt-client-library-encyclopedia</a></li>\r\n</ul>',30,78,0,'CC-BY-SA','MQTT, HiveMQ, dc-square GmbH',0,0,1),
(2662,'2018-10-16','Repairing a motherboard',196,'I repair a motherboard and get a old tower working again.','<h2 id=\"continued-from-hpr2549-dvd-ripping-using-old-hardware\">Continued from hpr2549 :: DVD ripping using old hardware</h2>\r\n<p>Acquired new user tower, replaced old tower with blown caps<br />\r\nDell Pentium 4 CPU 3.20GHz, 2Gb RAM</p>\r\n<pre><code>sudo shred -n 5 -vz /dev/sdX\r\n\r\n -n, --iterations=N \r\n -v, --verbose\r\n show progress \r\n -z, --zero\r\n add a final overwrite with zeros to hide shredding</code></pre>\r\n<p>Used same Slackware USB from old tower</p>\r\n<p>Used soldering iron from Amazon - Weller WLC100 40-Watt Soldering Station<br />\r\n<a href=\"https://www.amazon.com/gp/product/B000AS28UC/ref=oh_aui_detailpage_o02_s00?ie=UTF8&psc=1\" class=\"uri\">https://www.amazon.com/gp/product/B000AS28UC/ref=oh_aui_detailpage_o02_s00?ie=UTF8&psc=1</a></p>\r\n<p><a href=\"https://photos.app.goo.gl/VpRxvZLBy49PCo5DA\" class=\"uri\">https://photos.app.goo.gl/VpRxvZLBy49PCo5DA</a></p>\r\n',318,0,1,'CC-BY-SA','hardware, circuit board, repair',0,0,1),
(2663,'2018-10-17','Short review on a 2.5 inch SSD/HDD caddy',202,'Tony reviews a Short review on a 2.5 inch SSD/HDD caddy from ebay','<p>Well Ken made another call for shows and as my recent interview series has come to an end by the time you listen to this here is a short review of a USB3 2.5inch HDD/SSD caddy I got from E-bay a few weeks ago.</p>\r\n<p>As many of you who have listened to my previous ramblings know I frequent a local Computer auction and recently they have had some cheap 128Gig SSD’s for sale and I managed to pick several up at a good price. After using some to upgrade some desktop PC’s to SSD I had a couple of these spare and as I have USB3 on my main laptop thought it would be good to be able to use one or two of these as portable storage or even for boot drives to test out odd Linux distro or 2.</p>\r\n<p>So I purchased a caddy off that font of all things techie E-bay for £5.50, link here:<br />\r\n<a href=\"https://www.ebay.co.uk/itm/USB-3-0-to-SATA-Hard-Drive-Enclosure-Caddy-Case-For-2-5-Inch-HDD-SSD-External/282930148654?ssPageName=STRK%3AMEBIDX%3AIT&_trksid=p2057872.m2749.l2648\">https://www.ebay.co.uk/itm/USB-3-0-to-SATA-Hard-Drive-Enclosure-Caddy-Case-For-2-5-Inch-HDD-SSD-External/282930148654?ssPageName=STRK%3AMEBIDX%3AIT&_trksid=p2057872.m2749.l2648</a></p>\r\n<p>So after it arrived I plugged in one of the drives and tested it out. The first thing to notice is that SSD’s being 7mm in depth flop about a bit in the case but this is easily resolved by a bit of card under the drive to help it fit snug in the case and it does mean that the case will support the larger 9mm 2.5inch spinners if needed. I’ve not tested a larger older spinner but I suspect they will not fit as 9mm ones are very snug in the case.</p>\r\n<p>Anyway the drive was detected by the PC/Laptop and works flawlessly and as it is so quick to swap drives in the caddy means I can carry large data files and my music and video library when on the move with the advantage that it is less likely to be damaged if accidentally dropped or knocked off a surface, which is quite likely with a portable spinner HDD.</p>\r\n<p>I am very happy with this purchase and it has already become a regular part of my travelling tool kit/laptop bag.</p>\r\n',338,23,0,'CC-BY-SA','Computers, Tool Bag',0,0,1),
(2668,'2018-10-24','Explaining the controls on my Amateur HF Radio Part 3',1090,'In this episode I cover the Main / sub displays meter memory and band keys of the TS940S.','<ul>\r\n<li><p>Main display is a fluorescent display<br />\r\n<a href=\"https://en.wikipedia.org/wiki/Vacuum_fluorescent_display\" class=\"uri\">https://en.wikipedia.org/wiki/Vacuum_fluorescent_display</a></p></li>\r\n<li><p>Hertz and Kilohertz<br />\r\n<a href=\"https://en.wikipedia.org/wiki/Hertz\" class=\"uri\">https://en.wikipedia.org/wiki/Hertz</a></p></li>\r\n<li><p>Example of an old type tuning dial with moving needle display.<br />\r\n<img src=\"https://i.ytimg.com/vi/YBCuNkdP4M0/maxresdefault.jpg\" alt=\"https://i.ytimg.com/vi/YBCuNkdP4M0/maxresdefault.jpg\" /></p></li>\r\n<li><p>Example of AVO meter<br />\r\n<img src=\"https://www.richardsradios.co.uk/AVO/AVO8mk2.jpg\" alt=\"https://www.richardsradios.co.uk/AVO/AVO8mk2.jpg\" /></p></li>\r\n<li><p>Standing Wave Ration Scale<br />\r\n<a href=\"https://en.wikipedia.org/wiki/Standing_wave_ratio\" class=\"uri\">https://en.wikipedia.org/wiki/Standing_wave_ratio</a></p></li>\r\n<li><p>Explanation of Auto Limiter Control (ALC)<br />\r\n<a href=\"https://www.robkalmeijer.nl/techniek/electronica/radiotechniek/hambladen/radcom/1995/07/page61/index.html\" class=\"uri\">https://www.robkalmeijer.nl/techniek/electronica/radiotechniek/hambladen/radcom/1995/07/page61/index.html</a></p></li>\r\n</ul>\r\n<h3 id=\"sub-display\">Sub Display</h3>\r\n<p>Used either to display the time or in graph mode gives a representation of the receiver bandwidth setting when using CW or SSB.</p>\r\n<h3 id=\"memories-and-band-keys\">Memories and band keys</h3>\r\n<p>Ten memory and band keys to switch either between ten stored memories or to switch between the ten pre-set amateur HF bands when in VFO mode. Up / Down step keys jumps in 1Mhz step.</p>\r\n<h3 id=\"antenna-tuner\">Antenna Tuner</h3>\r\n<p>I tried and failed to find a simple explanation of an antenna tuner it’s a complicated topic, I can at least have a go at explaining how to use a simple manual antenna tuner, hope this makes some sense.</p>\r\n<p>A typical manual Antenna Tuner has two rotatable knobs both interact with each other. The Tuner is used to match a badly tuned antenna to your transmitter. The Tuner is placed in-between the transmitter and antenna. To use it you typically hold down the transmit key while looking at the VSWR meter and rotating one knob at a time in turn repeating this operation until the minimum VSWR is achieved.</p>\r\n<p>If you really want to dive into more detail feel free to follow this link in wikipedia. <a href=\"https://en.wikipedia.org/wiki/Antenna_tuner\" class=\"uri\">https://en.wikipedia.org/wiki/Antenna_tuner</a></p>\r\n',201,43,1,'CC-BY-SA','HF, Ham, Amateur Radio',0,0,1),
(2674,'2018-11-01','Raspberry pi3 open media server',616,'JWP emails in this episode','<ul>\r\n<li>Use Gparted for the SD card</li>\r\n<li>Use <a href=\"https://etcher.io/\">Etcher</a> from Resin.Io</li>\r\n<li>Use the normal external hard drive file os.</li>\r\n</ul>\r\n',129,0,1,'CC-BY-SA','Raspberry Pi,open media,Etcher',0,0,1),
(2664,'2018-10-18','My git workflow',495,'In this episode I talk about the workflow I use to contribute to opensource project using git','<h2 id=\"my-git-workflow\">My git workflow</h2>\r\n<p>In this episode of HPR I present the workflow I use to contribute to opensource projects using git. I have no idea if this workflow is something that is commonly used, but it is working for me, so I thought I’d share it with the HPR community.</p>\r\n<p>The first thing I do is fork the project I want to contribute to. This is done on github most of the time, although this workflow can work on gitlab, bitbucket, or even some self hosted git platform.</p>\r\n<p>Once the project is forked, I clone it on my machine :</p>\r\n<pre><code>$ git clone git://server/path/to/myproject.git</code></pre>\r\n<p>Git automatically names my remote project <code>origin</code>.</p>\r\n<p>Then I add a reference to the original project :</p>\r\n<pre><code>$ git remote add upstream https://server/path/to/originalproject.git</code></pre>\r\n<p>Now my local repository references my fork under the name <code>origin</code> and the original project under the name <code>upstream</code>.</p>\r\n<p>In this workflow, I never work on the master branch. So, when I need to fix a bug for example, I create a new branch :</p>\r\n<pre><code>$ git checkout -b bugfix</code></pre>\r\n<p>I can then make changes, test my code, make sure everything is ok, stage and commit my changes :</p>\r\n<pre><code>$ git add .\r\n$ git commit -m "commit message"</code></pre>\r\n<p>Now I need to push this local branch to my repository on github :</p>\r\n<pre><code>$ git push -u origin bugfix</code></pre>\r\n<p>Since I forked the original project, github knows that <code>origin</code> and <code>upstream</code> are linked. If there are no conflicts, github will show me a big green button to create a pull request. Once the pull request is created, I just have to wait for the maintainer to merge it in <code>upstream</code>’s master branch. Then, I need to sync both my local copy and my fork on github with the original project. In order to do that, on my local copy, I checkout my master branch, fetch <code>upstream</code>’s changes, and merge them :</p>\r\n<pre><code>$ git checkout master\r\n$ git fetch upstream\r\n$ git merge upstream/master</code></pre>\r\n<p>Now my local master branch is ahead of <code>origin</code>’s master branch, so I push those changes to github :</p>\r\n<pre><code>$ git push</code></pre>\r\n<p>I don’t need the <code>bugfix</code> branches (the local one and the github one), so I can delete those :</p>\r\n<pre><code>$ git branch -d bugfix\r\n$ git push origin -d bugfix</code></pre>\r\n<p>And now, my local repository is even with both <code>origin</code> and <code>upstream</code>, and I can start again.</p>\r\n<p>To summarize, here’s the complete workflow :</p>\r\n<pre><code>$ git checkout -b myawesomefeature\r\n$ git add .\r\n$ git commit -m "Awesome commit message"\r\n$ git push -u origin myawesomefeature</code></pre>\r\n<p>Create a pull request, wait for the maintainer to merge it.</p>\r\n<pre><code>$ git checkout master\r\n$ git fetch upstream\r\n$ git merge upstream/master\r\n$ git push\r\n$ git branch -d myawesomefeature\r\n$ git push origin -d myawesomefeature</code></pre>\r\n',370,104,0,'CC-0','git,github,workflow',0,0,1),
(2689,'2018-11-22','Bash Tips - 14',1688,'More about loops - the \'for\' loop, \'break\' and \'continue\'','<h1 id=\"bash-tips---14\">Bash Tips - 14 <small><small>(Some auxiliary Bash tips)</small></small></h1>\r\n<h2 id=\"more-about-loops\">More about loops</h2>\r\n<p>This is the fourteenth episode covering useful tips about using Bash. Episodes 9-13 covered <em>Making Decisions in Bash</em> and in these episodes we looked at <code>while</code> and <code>until</code> loops, but not <code>for</code> loops. This episode is making good this deficiency, and is also looking at <code>break</code> and <code>continue</code> which are very useful when using loops.</p>\r\n<h2 id=\"long-notes\">Long notes</h2>\r\n<p>I have provided detailed notes as usual for this episode, and these can be <a href=\"https://hackerpublicradio.org/eps/hpr2689/full_shownotes.html\">viewed here</a>.</p>\r\n<h2 id=\"links\">Links</h2>\r\n<ul>\r\n<li><a href=\"https://www.gnu.org/software/bash/manual/bash.html\">“<em>GNU BASH Reference Manual</em>”</a>\r\n<ul>\r\n<li><a href=\"https://www.gnu.org/software/bash/manual/bash.html#Looping-Constructs\">“Bash Looping Constructs”</a></li>\r\n<li><a href=\"https://www.gnu.org/software/bash/manual/bash.html#Shell-Arithmetic\">“Bash Shell Arithmetic”</a></li>\r\n<li><a href=\"https://www.gnu.org/software/bash/manual/bash.html#Bourne-Shell-Builtins\">“Bourne Shell Builtins”</a></li>\r\n<li><a href=\"https://www.gnu.org/software/bash/manual/bash.html#Brace-Expansion\">“Bash Brace Expansion”</a></li>\r\n</ul></li>\r\n<li><p><a href=\"https://hackerpublicradio.org/series/0042.html\">HPR series: <em>Bash Scripting</em></a></p></li>\r\n<li>Previous episodes under the heading <em>Bash Tips</em>:\r\n<ol>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=1648\">HPR episode 1648 “<em>Bash parameter manipulation</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=1843\">HPR episode 1843 “<em>Some Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=1884\">HPR episode 1884 “<em>Some more Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=1903\">HPR episode 1903 “<em>Some further Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=1951\">HPR episode 1951 “<em>Some additional Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2045\">HPR episode 2045 “<em>Some other Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2278\">HPR episode 2278 “<em>Some supplementary Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2293\">HPR episode 2293 “<em>More supplementary Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2639\">HPR episode 2639 “<em>Some ancillary Bash tips - 9</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2649\">HPR episode 2649 “<em>More ancillary Bash tips - 10</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2659\">HPR episode 2659 “<em>Further ancillary Bash tips - 11</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2669\">HPR episode 2669 “<em>Additional ancillary Bash tips - 12</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2679\">HPR episode 2679 “<em>Extra ancillary Bash tips - 13</em>”</a></li>\r\n</ol></li>\r\n</ul>\r\n<ul>\r\n<li>Resources:\r\n<ul>\r\n<li>Examples: <a href=\"https://hackerpublicradio.org/eps/hpr2689/bash14_ex1.sh\">bash14_ex1.sh</a>, <a href=\"https://hackerpublicradio.org/eps/hpr2689/bash14_ex2.sh\">bash14_ex2.sh</a>, <a href=\"https://hackerpublicradio.org/eps/hpr2689/bash14_ex3.sh\">bash14_ex3.sh</a>, <a href=\"https://hackerpublicradio.org/eps/hpr2689/bash14_ex4.sh\">bash14_ex4.sh</a>, <a href=\"https://hackerpublicradio.org/eps/hpr2689/bash14_ex5.sh\">bash14_ex5.sh</a></li>\r\n</ul></li>\r\n</ul>\r\n',225,42,1,'CC-BY-SA','Bash,loop,for,break,continue',0,0,1),
(2666,'2018-10-22','Slackware Post-Install',1826,'A quick and dirty guide to getting Slack up and running after it\'sinstalled.','<p>ThisepisodestartedoutasjustsomethoughtsonwhyIdecidedtomovebacktoSlackwareafterhavingbeenawayfromitforafewyears,andwoundupbeingashortsetofnotesonthepostinstallconfigurationofSlackware14.2</p>\r\n<p>Thisisbynomeansadefinitiveorexhaustiveinitsscope.It’sjustafewthoughtsandtipsonthepost-installprocessthatmightnotbecompletelycleartoanewuser.</p>\r\n<ul>\r\n<li>Website-<ahref=\"https://www.slackware.com/\"class=\"uri\">https://www.slackware.com/</a></li>\r\n<li>SlackwareInstallGuide-<ahref=\"https://docs.slackware.com/slackware:install\"class=\"uri\">https://docs.slackware.com/slackware:install</a></li>\r\n<li>SlackwarePostInstallBeginner’sGuide-<ahref=\"https://docs.slackware.com/slackware:beginners_guide\"class=\"uri\">https://docs.slackware.com/slackware:beginners_guide</a></li>\r\n<li>WikipediaSlackwarePage-<ahref=\"https://en.wikipedia.org/wiki/Slackware\"class=\"uri\">https://en.wikipedia.org/wiki/Slackware</a></li>\r\n</ul>\r\n',325,0,1,'CC-BY-SA','Slackware,Slackwarepost-install',0,0,1),
(2671,'2018-10-29','Algae farming with Desearcher',2379,'Desearcher edumacates us all on the benefits of algae farming.','<p>Apologies for the sound quality. We recorded in a small apartment with only one mic. :-</p>\r\n<ul>\r\n<li><p>Wikipedia Articles - <a href=\"https://en.m.wikipedia.org/wiki/Nannochloropsis\" class=\"uri\">https://en.m.wikipedia.org/wiki/Nannochloropsis</a><br />\r\n<a href=\"https://en.m.wikipedia.org/wiki/Phytoplankton\" class=\"uri\">https://en.m.wikipedia.org/wiki/Phytoplankton</a></p></li>\r\n<li><p>Amazon - <a href=\"https://www.amazon.com/nannochloropsis/s?page=1&rh=i%3Aaps%2Ck%3Anannochloropsis\">https://www.amazon.com/nannochloropsis/s?page=1&rh=i%3Aaps%2Ck%3Anannochloropsis</a></p></li>\r\n<li><p>Algae Research Supply - <a href=\"https://algaeresearchsupply.com/pages/f-2-media\" class=\"uri\">https://algaeresearchsupply.com/pages/f-2-media</a></p></li>\r\n<li><p>Blogs - <a href=\"https://www.nannochloropsis.org/blog/\" class=\"uri\">https://www.nannochloropsis.org/blog/</a></p></li>\r\n<li><p>Album of Desearcher’s setup - <a href=\"https://imgur.com/a/Cwqd7m9\" class=\"uri\">https://imgur.com/a/Cwqd7m9</a></p></li>\r\n</ul>\r\n',325,0,1,'CC-BY-SA','Phytoplankton,algae,Nannochloropsis',0,0,1),
(2678,'2018-11-07','Explaining the controls on my Amateur HF Radio Part 4',984,'In this episode I cover the first four Receiver section controls of the TS940S','<h2 id=\"the-three-dual-function-controls-covered-are\">The three dual function controls covered are</h2>\r\n<h3 id=\"squelchnotch\">Squelch/Notch</h3>\r\n<ul>\r\n<li>(1A) Squelch <a href=\"https://en.wikipedia.org/wiki/Squelch\" class=\"uri\">https://en.wikipedia.org/wiki/Squelch</a></li>\r\n<li>(1B) Notch filter <a href=\"https://en.wikipedia.org/wiki/Band-stop_filter\" class=\"uri\">https://en.wikipedia.org/wiki/Band-stop_filter</a></li>\r\n</ul>\r\n<h3 id=\"pitchaf-tune\">Pitch/AF Tune</h3>\r\n<ul>\r\n<li><p>(2A) Pitch (From the Kenwood manual)<br />\r\nThe CW PITCH control is provided so that you may adjust the pitch or tone of the incoming CW signal so that the tone is pleasing to you. The TS-940S accomplishes this without shifting the actual transmitter or receiver frequency, by shifting the 100kHz IF frequency, just prior to Product detection.</p></li>\r\n<li><p>(2B) AF Tune (From the Kenwood manual)<br />\r\nThe AF TUNE circuit is just the opposite of the NOTCH circuit. With this control, it is possible to accentuate the desired signal by providing additional rejection of noise and interfering signals whose pitch (tone) falls outside the audio passband. Turn the AF TUNE switch ON and adjust the AF TUNE control to peak the desired signal.</p></li>\r\n</ul>\r\n<h3 id=\"ritxit\">RIT/XIT</h3>\r\n<ul>\r\n<li><p>(3A) RIT – Receiver incremental Tune<br />\r\nThe RIT control allows shifting the receive frequency without effecting the transmit frequency</p></li>\r\n<li><p>(3B) XIT – Transmitter incremental Tune<br />\r\nThe XIT control allows shifting the transmit frequency without effecting the receive frequency</p></li>\r\n</ul>',201,43,1,'CC-BY-SA','HF, Ham, Amateur Radio',0,0,1),
(2667,'2018-10-23','Create PDF bookmarks with Pdftk',1313,'Basic intro to a few pdftk functions','<p>\r\nPdftk is a command that lets you manipulate PDFs outside of a GUI PDF creation tool.\r\nThere are several GUI tools you can use to create PDFs with valid bookmarks and other fancy features, but pdftk is often more convenient.\r\n</p>\r\n\r\n<p>\r\nExtract pages 1 through 2, and pages 5-21, and page 261 from a big PDF into a new PDF:\r\n</p>\r\n<pre><code>\r\n$ pdftk big.pdf cat 1-2 5-21 261 output small.pdf\r\n</code></pre>\r\n\r\n<p>\r\nExtract bookmarks from original PDF:\r\n</p>\r\n\r\n<pre><code>\r\n$ pdftk big.pdf dump_data output book.mark\r\n</code></pre>\r\n\r\n<p>\r\nHere is what a bookmark file looks like:\r\n</p>\r\n\r\n<pre><code>\r\nInfoBegin\r\nInfoKey: ModDate\r\nInfoValue: D:20181010181951-05\'00\'\r\nInfoBegin\r\nInfoKey: CreationDate\r\nInfoValue: D:20181010181934-05\'00\'\r\nInfoBegin\r\nInfoKey: Creator\r\nInfoValue: pdftk (Linux)\r\nInfoBegin\r\nInfoKey: Producer\r\nInfoValue: pdftk 2.02-x86_64\r\nPdfID0: d8deadbeeff34211ba60d80fda7611da\r\nPdfID1: 39186170c6134566884b79c0ffee7d59\r\nNumberOfPages: 261\r\nBookmarkBegin\r\nBookmarkTitle: Cover\r\nBookmarkLevel: 1\r\nBookmarkPageNumber: 1\r\nBookmarkBegin\r\nBookmarkTitle: Credits\r\nBookmarkLevel: 1\r\nBookmarkPageNumber: 2\r\nBookmarkBegin\r\nBookmarkTitle: Chapter One\r\nBookmarkLevel: 1\r\nBookmarkPageNumber: 3\r\nBookmarkBegin\r\nBookmarkTitle: Foo Section\r\nBookmarkLevel: 2\r\nBookmarkPageNumber: 5\r\nBookmarkBegin\r\nBookmarkTitle: Bar Baz\r\nBookmarkLevel: 3\r\nBookmarkPageNumber: 7\r\nBookmarkBegin\r\nBookmarkTitle: Back cover\r\nBookmarkLevel: 1\r\nBookmarkPageNumber: 19\r\n</code></pre>\r\n\r\n<p>\r\nApply the bookmark data back to the PDF:\r\n</p>\r\n\r\n<pre><code>\r\n$ pdftk small.pdf update_info book.mark output final.pdf\r\n</code></pre>\r\n\r\n',78,0,0,'CC-BY-SA','pdf',0,0,1),
(2670,'2018-10-26','Character Arcs In Storytelling',893,'Lostnbronx looks character arcs, and their role in storytelling.','<p>Characters are intrinsic to stories of all types, and they often have journeys, referred to as arcs. What, exactly is the character arc? Does everybody in a tale have one? Do they even need one? How do arcs affect the plot, and vice-versa? Lostnbronx shares some off-the-cuff thoughts about this often misunderstood aspect of storytelling.</p>\r\n',107,105,0,'CC-BY-SA','stories,storytelling,character arcs,lostnbronx',0,0,1),
(2672,'2018-10-30','Porteus',3477,'Installing Porteus and the cool things you can do with thumbdrive installation','<p><a href=\"https://porteus.org\" target=\"_blank\">Porteus</a> is a portable Live Linux distro, based on Slackware, intended for use on thumbdrives or optical media. It is, more or less, the new <a href=\"https://hackerpublicradio.org/eps.php?id=0055\" target=\"_blank\">Slax</a>, now that Slax has switched to Debian.</p>\r\n\r\n<h2>Install</h2>\r\n\r\n<p>The official means of installation is to burn Porteus to disc, and then (optionally) install Porteus onto a thumbdrive from within Porteus. To install Porteus to a thumbdrive, you need a thumbdrive with an EXT4 partition. You can try other filesystems and partition schemes, but EXT4 definitely works well.</p>\r\n<p>\r\nFrom either Porteus or Slackware (you can try other distros, but results <em>will</em> vary), you can do a manual install, and here are the correct commands (as of this writing, the docs on porteus.org are not accurate). Assuming you have discovered, using <code>lsblk</code>, that your target device (the thumbdrive) is <code>/dev/sdx</code>:\r\n</p>\r\n\r\n<pre><code>$ sudo bash\r\n# mkdir -p /mnt/loop /mnt/drive\r\n# mount --options loop /path/to/Porteus*iso /mnt/loop\r\n# mount /dev/sdx1 /mnt/drive\r\n# rsync -av /mnt/loop/ /mnt/drive/\r\n# cd /mnt/drive/boot\r\n# chmod +x Porteus-installer-for-Linux.com\r\n# ./Porteus*com\r\n</code></pre>\r\n\r\n<p>\r\nAlternately, you can use Porteus from a virtual machine and install to a thumbdrive, as long as your virtualisation software redirects USB. I have used <a href=\"https://virt-manager.org/\" target=\"_blank\">virt-manager</a> running on Fedora successfully for this.\r\n</p>\r\n\r\n<p>The other alternative, of course, is to run Porteus off of an optical disc. That means your system is unwritable, so nothing you do is persistent across reboots, but you can save your work to a thumbdrive. I\'veworkedwithSlaxthiswaybefore,andit\'s quite manageable.</p>\r\n\r\n<h2>Boot</h2>\r\n\r\n<p>\r\nBooting to Porteus depends a lot on the firmware of the computer you\'rebooting.AlmosteveryLinuxdistroinexistencehasaccuratedocsonthechangesyoumayormaynotneedtomaketoyourBIOSor[U]EFIinordertoboottoLinux,soyoucanfindmoredetailonthisifyouneed.Here\'s some text I borrowed from Linux Mint:\r\n</p>\r\n\r\n<p> Insert your USB stick (or DVD) into the computer.</p>\r\n<p>Restart the computer.</p>\r\n<p>Before your computer boots your current operating system (Windows, Mac, Linux) you should see your BIOS or UEFI loading screen. Check the screen or your computer’s documentation to know which key to press and instruct your computer to boot on USB (or DVD). Most BIOS or UEFI have a special key you can press to select the boot device and all of them have a special key to enter a configuration screen (from which you can define the boot order). Depending on the firmware, these special keys can be Escape, F1, F2, F8, F10, F11, F12, or Delete. That information is usually briefly displayed on screen during the boot sequence.\r\n</p>\r\n<p>\r\nOn Macs, keep your finger pressed on the Alt or Option key after hearing the boot sound.\r\n</p>\r\n\r\n<h2>Boot modes</h2>\r\n\r\n<p>Porteus can boot to its default persistent modes: graphical or text. Both of these modes auto load any Porteus modules you\'veinstalledandalsoreadanychangesyoumadesincethepreviousboot.\r\n</p>\r\n<p>Itcanalsoboottoephemeralmodes:CopytoRAMandAlwaysFresh.Thesemodesactasifyou\'ve never booted into Porteus before, loading a completely fresh version of the file system. They also do not load Porteus modules automatically.</p>\r\n\r\n<h2>Installing software</h2>\r\n\r\n<p>Porteus modules are Slackware packages converted to .xzm files, a highly-compressed SquashFS filesystem. When a Porteus module is activated, the application and other files contained in the module appear in your environment. You can think of it as a layered filesystem.</p>\r\n\r\n<p>\r\nTo install software, you mu
(2673,'2018-10-31','Urandom - Ohio Linux Fest 2-18 Podcaster Roundtable',2043,'The Urandom crew gathers the podcasters at Ohio Linux Fest for a chat.','<p>Hosts: Lyle, Thaj, Kevin O’Brian (Ahuka), Tony Beamus, FiftyOneFifty</p>\r\n<ul>\r\n<li><a href=\"https://asciinema.org/\" class=\"uri\">https://asciinema.org/</a></li>\r\n<li>HPR saves lives</li>\r\n<li>Green scooters, but not on fire</li>\r\n<li>North Market <a href=\"https://www.northmarket.com/\" class=\"uri\">https://www.northmarket.com/</a></li>\r\n<li>LIKE SHARE SUBSCRIBE!</li>\r\n<li>Urandom <a href=\"https://urandom-podcast.info\" class=\"uri\">https://urandom-podcast.info</a></li>\r\n<li>SMLR <a href=\"https://smlr.us/\" class=\"uri\">https://smlr.us/</a></li>\r\n<li>LinuxLugcast <a href=\"https://www.linuxlugcast.com/\" class=\"uri\">https://www.linuxlugcast.com/</a></li>\r\n<li>HPR <a href=\"https://hackerpublicradio.org/\" class=\"uri\">https://hackerpublicradio.org/</a></li>\r\n</ul>\r\n<p>** Record Scratch audio sample <a href=\"https://freesound.org/people/luffy/sounds/3536/\" class=\"uri\">https://freesound.org/people/luffy/sounds/3536/</a></p>\r\n',270,0,1,'CC-BY-SA','Ohio Linux Fest,Urandom,Sunday Morning Linux Review,Linux Lug Cast',0,0,1),
(2677,'2018-11-06','Thoughts on language learning part 4 - RPG.',1090,'I ponder the idea of an RPG with players not speaking the same language.','<p>I thought I was done with this topic, but got to thinking about bringing a game to life it occurred to me it was a lot of work. So I thought about it some more and hit upon the idea of an RPG probably mostly played online where a key point of the game is that the players needn’t know the same language.</p>\r\n<p>At first this seems like an odd thing for an RPG because the talking to each other is sort of a requirement. By now you’ve guessed that what I mean is that the game could be designed so that it assumes the players will have limited ability to communicate. And that drives how the game progresses.</p>\r\n<p>I see two kinds of approaches. One is that players sort of team up by the their native languages so you might have people knowing different native languages working in smaller teams while the whole game has the goal of everyone learning the new language.</p>\r\n<p>The other is that everyone could know a different native language and many or may nor cooperate with others but the goal of the game is everyone learning the same new language.</p>\r\n<p>Submitting this show mostly because I’m curious what the community thinks of the idea.</p>\r\n',151,0,1,'CC-0','spoken language learning',0,0,1),
(2681,'2018-11-12','DerbyCon Interview - Hackers for Charity',273,'Xoke interviews the amazing Hackers for Charity people','<p><a href=\"https://www.hackersforcharity.org/\" class=\"uri\">https://www.hackersforcharity.org/</a></p>',79,78,0,'CC-0','DerbyCon, Charity, Interview',0,0,1),
(2684,'2018-11-15','Making a remote control visible',77,'Yet another amazing life hack !!!','<h2>The problem</h2>\r\n<p>\r\nA black remote control on a black couch.\r\n</p>\r\n<h2>The solution</h2>\r\n<p>\r\nCover it in Earth <a href=\"https://en.wikipedia.org/wiki/Electrical_tape\">Insulating Tape</a>.\r\n</p>\r\n<p>\r\n<a href=\"https://hackerpublicradio.org/eps/hpr2684_front.jpg\">\r\n<img src=\"https://hackerpublicradio.org/eps/hpr2684_front_small.jpg\" alt=\"Remote control front\"/>\r\n</a>\r\n</p>\r\n<p>\r\n<a href=\"https://hackerpublicradio.org/eps/hpr2684_back.jpg\">\r\n<img src=\"https://hackerpublicradio.org/eps/hpr2684_back_small.jpg\" alt=\"Remote control rear\"/>\r\n</a>\r\n</p>\r\n\r\n<h3>Links</h3>\r\n<ul>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Electrical_tape\">https://en.wikipedia.org/wiki/Electrical_tape</a></li>\r\n</ul>\r\n',30,0,1,'CC-BY-SA','Life hacks',0,0,1),
(2680,'2018-11-09','Some Additional Talk About Characters -- 01',746,'Lostnbronx takes a look at what sorts of characters work best for certain types of tales. Part 01.','<p>Some characters are simple, some are complex, and some are entirely unknowable. What sorts of characters work best for grand, sweeping good vs.evil tales? Which types work best for simple character dramas? And how do characters interact with the setting and story? Lostnbronx offers some off-the-cuff observations.</p>\r\n',107,105,0,'CC-0','stories,storytelling,characters,lostnbronx',0,0,1),
(2682,'2018-11-13','(NOT) All About Blender',2753,'A meandering conversation to sooth the nerves, and warm the soul.','<p>The first part of what began a serious attempt to sit down and discuss Blender, a free and open-source piece of awesome, that slowly (rapidly) devolved into a meandering discussion. Mostly about video games.</p>\r\n<ul>\r\n<li><a href=\"https://openmw.org/en/\" class=\"uri\">https://openmw.org/en/</a></li>\r\n<li><a href=\"https://www.blender.org/\" class=\"uri\">https://www.blender.org/</a></li>\r\n<li><a href=\"https://www.blender.org/support/tutorials/\" class=\"uri\">https://www.blender.org/support/tutorials/</a></li>\r\n<li><a href=\"https://danielpocock.com/quick-start-blender-video-editing\" class=\"uri\">https://danielpocock.com/quick-start-blender-video-editing</a></li>\r\n<li><a href=\"https://m.youtube.com/user/BlenderFoundation\" class=\"uri\">https://m.youtube.com/user/BlenderFoundation</a></li>\r\n<li><a href=\"https://m.youtube.com/watch?v=_lGfeS050Xw\" class=\"uri\">https://m.youtube.com/watch?v=_lGfeS050Xw</a></li>\r\n<li><a href=\"https://zombiemud.org/\" class=\"uri\">https://zombiemud.org/</a></li>\r\n</ul>\r\n<h3 id=\"bloodpong\">BloodPong</h3>\r\n<ul>\r\n<li><a href=\"https://www.youtube.com/watch?v=GHrg48sa4ZA\" class=\"uri\">https://www.youtube.com/watch?v=GHrg48sa4ZA</a></li>\r\n<li><a href=\"https://www.youtube.com/watch?v=vqZQFbKxkxg\" class=\"uri\">https://www.youtube.com/watch?v=vqZQFbKxkxg</a></li>\r\n<li><a href=\"https://www.youtube.com/watch?v=VCYrErmTIjA\" class=\"uri\">https://www.youtube.com/watch?v=VCYrErmTIjA</a></li>\r\n</ul>\r\n',325,0,1,'CC-BY-SA','Blender',0,0,1),
(2686,'2018-11-19','(NOT) All About Blender - Part the Second',2413,'A meandering conversation to sooth the nerves, and warm the soul - part 2!!','<p>The second part of what began as a serious attempt to sit down and discuss Blender, a free and open-source piece of awesome, that slowly (rapidly) devolved into a meandering discussion. Mostly about video games.</p>\r\n<ul>\r\n<li><a href=\"https://openmw.org/en/\" class=\"uri\">https://openmw.org/en/</a></li>\r\n<li><a href=\"https://www.blender.org/\" class=\"uri\">https://www.blender.org/</a></li>\r\n<li><a href=\"https://www.blender.org/support/tutorials/\" class=\"uri\">https://www.blender.org/support/tutorials/</a></li>\r\n<li><a href=\"https://danielpocock.com/quick-start-blender-video-editing\" class=\"uri\">https://danielpocock.com/quick-start-blender-video-editing</a></li>\r\n<li><a href=\"https://m.youtube.com/user/BlenderFoundation\" class=\"uri\">https://m.youtube.com/user/BlenderFoundation</a></li>\r\n<li><a href=\"https://m.youtube.com/watch?v=_lGfeS050Xw\" class=\"uri\">https://m.youtube.com/watch?v=_lGfeS050Xw</a></li>\r\n<li><a href=\"https://zombiemud.org/\" class=\"uri\">https://zombiemud.org/</a></li>\r\n</ul>\r\n<h3 id=\"bloodpong\">BloodPong</h3>\r\n<ul>\r\n<li><a href=\"https://www.youtube.com/watch?v=GHrg48sa4ZA\" class=\"uri\">https://www.youtube.com/watch?v=GHrg48sa4ZA</a></li>\r\n<li><a href=\"https://www.youtube.com/watch?v=vqZQFbKxkxg\" class=\"uri\">https://www.youtube.com/watch?v=vqZQFbKxkxg</a></li>\r\n<li><a href=\"https://www.youtube.com/watch?v=VCYrErmTIjA\" class=\"uri\">https://www.youtube.com/watch?v=VCYrErmTIjA</a></li>\r\n</ul>',325,0,1,'CC-BY-SA','Blender',0,0,1),
(2688,'2018-11-21','Explaining the controls on my Amateur HF Radio Part 5',1039,'In this episode I cover the remaining Receiver section controls of the TS940S.','<ul>\r\n<li><p>The controls covered are</p>\r\n<ul>\r\n<li>AF / RF gain\r\n<ul>\r\n<li>(1A) AF, Audio frequency gain control (Volume)<br />\r\nTurns the volume up and down</li>\r\n<li>(1B) RF, Radiofrequency gain control (From the Kenwood manual)<br />\r\nRF GAIN is controlled by changing the AGC (Auto Gain Control) threshold voltage. Adjusting the RF GAIN so that the S-meter reading increases to a point just lower than speech peaks. This also reduces noise during reception. For normal operation, this control should be turned fully clockwise for maximum sensitivity.</li>\r\n</ul></li>\r\n<li>CW VBT (From the Kenwood manual)\r\n<ul>\r\n<li>Carrier Wave Variable Bandwidth Tuning Control<br />\r\nThis control is very similar to the SSB Slope tuning controls. However, with the CW VBT control, both sides of the IF passband are narrowed at the same time.</li>\r\n</ul></li>\r\n<li>SSB Slope Tune (High pass low pass audio filter)\r\n<ul>\r\n<li>High pass filter<br />\r\n<a href=\"https://en.wikipedia.org/wiki/High-pass_filter\" class=\"uri\">https://en.wikipedia.org/wiki/High-pass_filter</a></li>\r\n<li>Low-pass filter<br />\r\n<a href=\"https://en.wikipedia.org/wiki/Low-pass_filter\" class=\"uri\">https://en.wikipedia.org/wiki/Low-pass_filter</a></li>\r\n</ul></li>\r\n</ul></li>\r\n<li><p>I mention that the radio uses phase locked loop technologies.<br />\r\nBelow is an article in Wikipedia about PLL (Phase locked loop)<br />\r\n<a href=\"https://en.wikipedia.org/wiki/Phase-locked_loop\" class=\"uri\">https://en.wikipedia.org/wiki/Phase-locked_loop</a></p></li>\r\n<li><p>I mention that the radio doesn’t use valves.<br />\r\nBelow is an article in Wikipedia about valves (Vacuum tubes)<br />\r\n<a href=\"https://en.wikipedia.org/wiki/Vacuum_tube\" class=\"uri\">https://en.wikipedia.org/wiki/Vacuum_tube</a></p></li>\r\n<li><p>Dry joint<br />\r\nI mention that the radio developed a dry joint<br />\r\nBelow is an article in Wikipedia about soldering that covers dry joints<br />\r\n<a href=\"https://en.wikipedia.org/wiki/Soldering#Dry_joint\" class=\"uri\">https://en.wikipedia.org/wiki/Soldering#Dry_joint</a></p></li>\r\n</ul>\r\n',201,43,1,'CC-BY-SA','HF, Ham, Amateur Radio',0,0,1),
(2683,'2018-11-14','Using Open source tools to visualize the heartrate and blood oxygen saturation level of my stepchild',1911,'Using Open source tools to visualize the heartrate and blood oxygen saturation level of my stepchild','<h2 id=\"using-python-php-jquery-and-linux-to-visualize-the-heartrate-and-blood-oxygen-saturation-level-of-my-stepdaughter.\">Using Python, PHP, JQuery and Linux to visualize the heartrate and blood oxygen saturation level of my stepdaughter.</h2>\r\n<p>Jeroen Baten talks about how he used his knowledge of a couple of open source tools to visualize the heartrate and oxygen saturation in the blood of one of his children and how this aided a pediatrician at the Wilhelmina childrens hospital to come to the right conclusion and treatment. This talk is a mix of tech and 43 surgery sessions on one single human being.</p>\r\n<h2>Links</h2>\r\n<ul><li>Details, including source code, graphs and all can be found\r\nhere:<br/>\r\n<a href=\"https://www.jeroenbaten.nl/cardio-oxygen-saturation-monitoring-home/\">https://www.jeroenbaten.nl/cardio-oxygen-saturation-monitoring-home/</a></li></ul>\r\n\r\n<p>\r\n<small><small><b>Editor\'sNote</b><br/>\r\nJeroen\'s link above was added after the show had been aired.</small></small>\r\n</p>\r\n',369,0,0,'CC-BY-SA','python, php, jquery, linux',0,0,1),
(2687,'2018-11-20','Some Additional Talk About Characters -- 02',750,'Lostnbronx takes a look at what sorts of characters work best for certain types of tales. Part 02.','<p>What are some typical ways to create characters in your stories? Should you create the plot first, or the characters first? Should we think of characters in terms of heroes and villains, or protagonists and antagonists? What is the value of character depth, and is it the same as the character arc? Lostnbronx offers up even more off-the-cuff thoughts about this complicated subject.</p>\r\n',107,105,0,'CC-0','stories,storytelling,characters,lostnbronx',0,0,1),
(2956,'2019-12-02','HPR Community News for November 2019',5211,'Dave, Jeroen and Ken talk about shows released and comments posted in November 2019','<style>\ntable td.shrink {\n white-space:nowrap\n}\n</style>\n\n<h2>New hosts</h2>\n<p>\nWelcome to our new hosts: <br />\n\n <a href=\"https://hackerpublicradio.org/correspondents/0381.html\" target=\"_blank\">Nihilazo</a>, \n <a href=\"https://hackerpublicradio.org/correspondents/0382.html\" target=\"_blank\">Daniel Persson</a>.\n</p>\n\n<h2>Last Month\'sShows</h2>\n<tableid=\"t01\">\n<tr>\n<th>Id</th>\n<th>Day</th>\n<th>Date</th>\n<th>Title</th>\n<th>Host</th>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=2935\"target=\"_blank\">2935</a></strong></td>\n<td>Fri</td>\n<tdclass=\"shrink\">2019-11-01</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=2935\"target=\"_blank\">Theworkoffirefighters,part3</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0369.html\"target=\"_blank\">JeroenBaten</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=2936\"target=\"_blank\">2936</a></strong></td>\n<td>Mon</td>\n<tdclass=\"shrink\">2019-11-04</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=2936\"target=\"_blank\">HPRCommunityNewsforOctober2019</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0159.html\"target=\"_blank\">HPRVolunteers</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=2937\"target=\"_blank\">2937</a></strong></td>\n<td>Tue</td>\n<tdclass=\"shrink\">2019-11-05</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=2937\"target=\"_blank\">LordD\'s Film Reviews: His Girl Friday</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0107.html\" target=\"_blank\">lostnbronx</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2938\" target=\"_blank\">2938</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2019-11-06</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2938\" target=\"_blank\">Naming pets in space game</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0364.html\" target=\"_blank\">Tuula</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2939\" target=\"_blank\">2939</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2019-11-07</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2939\" target=\"_blank\">Submit a show to Hacker Public Radio in 10 easy steps</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0300.html\" target=\"_blank\">b-yeezi</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2940\" target=\"_blank\">2940</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2019-11-08</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2940\" target=\"_blank\">Better Social Media 05 - Mastodon</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0198.html\" target=\"_blank\">Ahuka</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2941\" target=\"_blank\">2941</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2019-11-11</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2941\" target=\"_blank\">Server Basics 107: Minishift and container management</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0078.html\" target=\"_blank\">klaatu</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2942\" target=\"_blank\">2942</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2019-11-12</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2942\" target=\"_blank\">Why I love lisps</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0381.html\" target=\"_blank\">Nihilazo</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2943\" target=\"_blank\">2943</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2019-11
(2981,'2020-01-06','HPR Community News for December 2019',4671,'HPR Volunteers talk about shows released and comments posted in December 2019','<style>\ntable td.shrink {\n white-space:nowrap\n}\n</style>\n\n<h2>New hosts</h2>\n<p>\nWelcome to our new host: <br />\n\n <a href=\"https://hackerpublicradio.org/correspondents/0383.html\" target=\"_blank\">Paul Quirk</a>.\n</p>\n\n<h2>Last Month\'sShows</h2>\n<tableid=\"t01\">\n<tr>\n<th>Id</th>\n<th>Day</th>\n<th>Date</th>\n<th>Title</th>\n<th>Host</th>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=2956\"target=\"_blank\">2956</a></strong></td>\n<td>Mon</td>\n<tdclass=\"shrink\">2019-12-02</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=2956\"target=\"_blank\">HPRCommunityNewsforNovember2019</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0159.html\"target=\"_blank\">HPRVolunteers</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=2957\"target=\"_blank\">2957</a></strong></td>\n<td>Tue</td>\n<tdclass=\"shrink\">2019-12-03</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=2957\"target=\"_blank\">LordD\'s Film Reviews: Ever</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0107.html\" target=\"_blank\">lostnbronx</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2958\" target=\"_blank\">2958</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2019-12-04</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2958\" target=\"_blank\">Haskell modules</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0364.html\" target=\"_blank\">Tuula</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2959\" target=\"_blank\">2959</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2019-12-05</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2959\" target=\"_blank\">Interview with Josh Clements about gpodder.net </a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0030.html\" target=\"_blank\">Ken Fallon</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2960\" target=\"_blank\">2960</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2019-12-06</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2960\" target=\"_blank\">Dehydrated Foods</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0198.html\" target=\"_blank\">Ahuka</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2961\" target=\"_blank\">2961</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2019-12-09</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2961\" target=\"_blank\">Kubernetics / Cloud - Terminology</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0382.html\" target=\"_blank\">Daniel Persson</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2962\" target=\"_blank\">2962</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2019-12-10</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2962\" target=\"_blank\">Bespoke bike building</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0326.html\" target=\"_blank\">Brian in Ohio</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2963\" target=\"_blank\">2963</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2019-12-11</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2963\" target=\"_blank\">A walk through my PifaceCAD Python code – Part 3</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0201.html\" target=\"_blank\">MrX</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=2964\" target=\"_blank\">2964</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2019-12-12</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=2964\" target=\"_blank\">Bolos and Bowties: Neckwear for Nerds</a></td>\n<td><a href=
(2691,'2018-11-26','DerbyCon Interview - John Strand',160,'John Strand talks about behavoural analytics and blockchain','<p>John Strand (<a href=\"https://twitter.com/strandjs\" class=\"uri\">https://twitter.com/strandjs</a>) from Black Hills Information Security (<a href=\"https://www.blackhillsinfosec.com/\" class=\"uri\">https://www.blackhillsinfosec.com/</a>)</p>\r\n<p>Download RITA (it’s free!) - Real Intelligence Threat Analytics - <a href=\"https://www.blackhillsinfosec.com/projects/rita/\" class=\"uri\">https://www.blackhillsinfosec.com/projects/rita/</a></p>',79,78,0,'CC-BY-SA','DerbyCon, Interview, Blockchain',0,0,1),
(2699,'2018-12-06','Bash Tips - 15',1794,'Some of the pitfalls when using loops in Bash','<h1 id=\"bash-tips---15\">Bash Tips - 15 <small><small>(More auxiliary Bash tips)</small></small></h1>\r\n<h2 id=\"pitfalls-for-the-unwary-bash-loop-user\">Pitfalls for the unwary Bash loop user</h2>\r\n<p>This is the fifteenth episode covering useful tips for Bash users. In the last episode we looked at the <code>\'for\'</code> loop, and prior to that we looked at <code>\'while\'</code> and <code>\'until\'</code> loops. In this one I want to look at some of the loop-related issues that can trip up the unwary user.</p>\r\n<p>Loops in Bash are extremely useful, and they are not at all difficult to use in their basic forms. However, there are some perhaps less than obvious issues that can result in unexpected behaviour.</p>\r\n<h2 id=\"long-notes\">Long notes</h2>\r\n<p>I have provided detailed notes as usual for this episode, and these can be <a href=\"https://hackerpublicradio.org/eps/hpr2699/full_shownotes.html\">viewed here</a>.</p>\r\n<h2 id=\"links\">Links</h2>\r\n<ul>\r\n<li><a href=\"https://www.gnu.org/software/bash/manual/bash.html\">“<em>GNU BASH Reference Manual</em>”</a>\r\n<ul>\r\n<li><a href=\"https://www.gnu.org/software/bash/manual/bash.html#Process-Substitution\">“Bash Process Substitution”</a></li>\r\n</ul></li>\r\n<li><p><a href=\"https://www.gnu.org/software/findutils/manual/html_mono/find.html\">“<em>GNU Findutils</em>”</a></p></li>\r\n<li><p><a href=\"https://hackerpublicradio.org/series/0042.html\">HPR series: <em>Bash Scripting</em></a></p></li>\r\n<li>Previous episodes under the heading <em>Bash Tips</em>:\r\n<ol>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=1648\">HPR episode 1648 “<em>Bash parameter manipulation</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=1843\">HPR episode 1843 “<em>Some Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=1884\">HPR episode 1884 “<em>Some more Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=1903\">HPR episode 1903 “<em>Some further Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=1951\">HPR episode 1951 “<em>Some additional Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2045\">HPR episode 2045 “<em>Some other Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2278\">HPR episode 2278 “<em>Some supplementary Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2293\">HPR episode 2293 “<em>More supplementary Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2639\">HPR episode 2639 “<em>Some ancillary Bash tips - 9</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2649\">HPR episode 2649 “<em>More ancillary Bash tips - 10</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2659\">HPR episode 2659 “<em>Further ancillary Bash tips - 11</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2669\">HPR episode 2669 “<em>Additional ancillary Bash tips - 12</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2679\">HPR episode 2679 “<em>Extra ancillary Bash tips - 13</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2689\">HPR episode 2689 “<em>Bash Tips - 14 (Some auxiliary Bash tips)</em>”</a></li>\r\n</ol></li>\r\n</ul>\r\n<ul>\r\n<li>Resources:\r\n<ul>\r\n<li>Examples: <a href=\"https://hackerpublicradio.org/eps/hpr2699/bash15_ex1.sh\">bash15_ex1.sh</a>, <a href=\"https://hackerpublicradio.org/eps/hpr2699/bash15_ex2.sh\">bash15_ex2.sh</a></li>\r\n</ul></li>\r\n</ul>\r\n',225,42,1,'CC-BY-SA','Bash,loop,ls,pipe,pipeline,find,extglob',0,0,1),
(2710,'2018-12-21','Youtube downloader for channels',844,'A followup to hpr2675 how you can download an entire youtube channel for local playout','<p>\r\nI had a very similar problem to Ahuka aka Kevin, in <a href=\"https://hackerpublicradio.org/eps.php?id=2675\">hpr2675 :: YouTube Playlists</a>. I wanted to be able to download an entire youtube channel and store them so that I could play them in the order that they were posted.\r\n</p>\r\n<p>\r\nAdd the url\'stoafilecalled<em>subscriptions.txt</em>.\r\n</p>\r\n<pre>\r\n#LASTRUN: 20181030\r\n# /home/ken/sourcecode/personal/bestofyoutube/youtube-channel-watcher.bash\r\n#\r\n# Big Clive \r\nhttps://www.youtube.com/channel/UCtM5z2gkrGRuWd0JQMx76qA 20181030\r\n# Essential Craftsman\r\nhttps://www.youtube.com/channel/UCzr30osBdTmuFUS8IfXtXmg\r\n</pre>\r\n<p>\r\nThen run the script\r\n</p>\r\n<pre>\r\n#!/bin/bash\r\n# Downloads videos from youtube based on selection from https://thebestofyoutube.com\r\n# (c) Ken Fallon https://kenfallon.com\r\n# Released under the CC-0\r\n\r\nsavepath=\"/mnt/media/Videos/channels\"\r\nsubscriptions=\"${savepath}/subscriptions.txt\"\r\nYOUNGERTHAN=\"20010101\"\r\nRUNDATE=$(date +%Y%m%d)\r\nyoutubedl=\"/home/ken/sourcecode/youtube-dl/youtube-dl\"\r\n#DRYRUN=\"echo DEBUG: \"\r\n\r\nif [ ! -e \"${subscriptions}\" ]\r\nthen\r\n echo \"Cannot find subscription file \"${subscriptions}\"\"\r\n exit 1\r\nfi\r\n\r\nif [ \"$(grep \"#LASTRUN: \" \"${subscriptions}\" | wc -l )\" -eq 0 ]\r\nthen\r\n sed --follow-symlinks \'1s/^/#LASTRUN: n/\' -i \"${subscriptions}\"\r\nfi\r\n\r\n# Read the subscriptions\r\ncat \"${subscriptions}\" | grep -v \'#\' | while read channel_info\r\ndo\r\n if [ \"$(echo \"${channel_info}\" | grep -P \'t\' | wc -l )\" -eq 0 ]\r\n then\r\n DATEAFTER=\"--dateafter ${YOUNGERTHAN}\"\r\n else\r\n DATEAFTER=\"--dateafter $(echo \"${channel_info}\" | awk \'{print $NF}\' )\"\r\n fi\r\n channel=\"$(echo \"${channel_info}\" | awk \'{print $1}\' )\"\r\n echo \"Processing Channel \"${channel}\" since ${DATEAFTER}\"\r\n ${DRYRUN} ${youtubedl} ${DATEAFTER} --ignore-errors --no-mtime --restrict-filenames --format mp4 -o ${savepath}\'/%(uploader)s/%(upload_date)s-%(title)s⋄%(id)s.%(ext)s\' ${channel}\r\n ${DRYRUN} sed --follow-symlinks \"s,${channel}.*$,${channel}t${RUNDATE},g\" -i \"${subscriptions}\"\r\ndone\r\n\r\n${DRYRUN} sed --follow-symlinks \"s/#LASTRUN: .*$/#LASTRUN: ${RUNDATE}/\" -i \"${subscriptions}\"\r\n</pre>\r\n',30,0,1,'CC-BY-SA','youtube, youtube-dl',0,0,1),
(2720,'2019-01-04','Download youtube channels using the rss feeds',1447,'Ken shares a script that will allow you to quickly keep up to date on your youtube subscriptions','<p>\r\nI had a very similar problem to Ahuka aka Kevin, in <a href=\"https://hackerpublicradio.org/eps.php?id=2675\">hpr2675 :: YouTube Playlists</a>. I wanted to be able to download an entire youtube channel and store them so that I could play them in the order that they were posted.<br />\r\nSee previous episode <a href=\"https://hackerpublicradio.org/eps.php?id=2710\">hpr2710 :: Youtube downloader for channels</a>.\r\n</p>\r\n<p>\r\nThe problem with the original script is that it needs to download and check each video in each channel and it can crawl to a halt on large channels like <a href=\"https://www.eevblog.com/\">EEEVblog</a>.\r\n</p>\r\n<p>\r\nThe solution was given in <a href=\"https://hackerpublicradio.org/eps.php?id=2544\">hpr2544 :: How I prepared episode 2493: YouTube Subscriptions - update</a> with more details in the <a href=\"https://hackerpublicradio.org/eps/hpr2544/full_shownotes.html\">full-length</a> notes.\r\n</p>\r\n\r\n<ol>\r\n<li>Subscribe:<br />Subscriptions are the currency of YouTube creators so don\'tbeafraidtocreateanaccounttosubscribetothecreators.Hereismycurrent<ahref=\"https://hackerpublicradio.org/eps/hpr2720/subscription_manager.opml\">subscription_manager.opml</a>togiveyousomeideas.</li>\r\n<li>Export:<br/>Loginto<ahref=\"https://www.youtube.com/subscription_manager\">https://www.youtube.com/subscription_manager</a>andatthebottomyouwillseetheoptionto<strong>Exportsubscriptions</strong>.Savethefileandalterthescripttopointtoit.</li>\r\n<li>Download:Runthescript<ahref=\"https://hackerpublicradio.org/eps/hpr2720/youtube-rss.bash\">youtube-rss.bash</a></li>\r\n</ol>\r\n\r\n<h3>Howitworks</h3>\r\n<p>\r\nThefirstpartallowsyoutodefinewhereyouwanttosaveyourfiles.Italsoallowsyoutosetwhatvideostoskipbasedonlengthandstringsintheirtitles.\r\n</p>\r\n<pre>\r\nsavepath=\"/mnt/media/Videos/channels\"\r\nsubscriptions=\"${savepath}/subscription_manager.opml\"\r\nlogfile=\"${savepath}/log/downloaded.log\"\r\nyoutubedl=\"/mnt/media/Videos/youtube-dl/youtube-dl\"\r\nDRYRUN=\"echo DEBUG: \"\r\nmaxlength=7200# two hours\r\nskipcrap=\"fail |react |live |Best Pets|BLOOPERS|Kids Try\"\r\n</pre>\r\n\r\n<p>\r\nAfter some checks and cleanup, we can then parse the <a href=\"https://en.wikipedia.org/wiki/OPML\">opml</a> file. This is an example of the top of mine.\r\n</p>\r\n<pre>\r\n<?xml version=\"1.0\"?>\r\n<opml version=\"1.1\">\r\n <body>\r\n <outline text=\"YouTube Subscriptions\" title=\"YouTube Subscriptions\">\r\n <outline text=\"Wintergatan\" title=\"Wintergatan\" type=\"rss\" xmlUrl=\"https://www.youtube.com/feeds/videos.xml?channel_id=UCcXhhVwCT6_WqjkEniejRJQ\"/>\r\n <outline text=\"Primitive Technology\" title=\"Primitive Technology\" type=\"rss\" xmlUrl=\"https://www.youtube.com/feeds/videos.xml?channel_id=UCAL3JXZSzSm8AlZyD3nQdBA\"/>\r\n <outline text=\"John Ward\" title=\"John Ward\" type=\"rss\" xmlUrl=\"https://www.youtube.com/feeds/videos.xml?channel_id=UC2uFFhnMKyF82UY2TbXRaNg\"/>\r\n</pre>\r\n\r\n<p>\r\nNow we use the xmlstarlet tool to extract each of the urls and also the title. The title is just used to give some feedback, while the url needs to be stored for later. Now we have a complete list of all the current urls, in all the feeds. \r\n</p>\r\n<pre>\r\nxmlstarlet sel -T -t -m \'/opml/body/outline/outline\' -v \'concat( @xmlUrl, \" \", @title)\' -n \"${subscriptions}\" | while read subscription title\r\ndo\r\n echo \"Getting \"${title}\"\"\r\n wget -q \"${subscription}\" -O - | xmlstarlet sel -T -t -m \'/_:feed/_:entry/media:group/media:content\' -v \'@url\' -n - | awk -F \'?\' \'{print $1}\' >> \"${logfile}_getlist\"\r\ndone\r\n</pre>\r\n\r\n<p>\r\nThe main part of the script then counts the total so we can have some feedback while we are running it. It then pumps the
(2693,'2018-11-28','Getting started with web based game in Haskell and Elm',1146,'First steps in writing 4x space exploration game','<p>Haskell Stack: <a href=\"https://docs.haskellstack.org/en/stable/README/\">https://docs.haskellstack.org/en/stable/README/</a></p>\r\n<p>Stack is a build tool for Haskell with focus on reproducible build plans, multi-package projects, and a consistent, easy-to-learn interface. With stack, one can create new project: <kbd>stack new my-project yesod-sqlite</kbd> (more in the quick start guide: <a href=\"https://www.yesodweb.com/page/quickstart\">https://www.yesodweb.com/page/quickstart</a>)</p>\r\n\r\n<p><a href=\"https://github.com/Tuula/deep-sky/blob/baa0807dd36b61fd02174b17c10013862af4ec18/config/models\">models</a> is used to define shape of the data and Yesod uses it to generate datatypes and database for you. For example, to define a Star that has name, spectral type, luminosity class and link to StarSystem, one can write:</p>\r\n\r\n<pre><code>\r\nStar json\r\n name Text\r\n starSystemId StarSystemId\r\n spectralType SpectralType\r\n luminosityClass LuminosityClass\r\n</code></pre>\r\n\r\n<p>Custom types, like LuminosityClass, need mapping between datatype and database. In simple cases like this, Yesod can do that:\r\n\r\n<pre><code>\r\ndata LuminosityClass = Iap | Ia | Iab | Ib | II | III | IV | V | VI | VII\r\n deriving (Show, Read, Eq)\r\nderivePersistField \"LuminosityClass\"\r\n</code></pre>\r\n\r\n<p>The \"derivePersistField\" part is template haskell call that will generate mapping needed.</p>\r\n\r\n<p>For those interested seeing some code, source is available at <a href=\"https://github.com/Tuula/deep-sky/\">https://github.com/Tuula/deep-sky/</a> (<a href=\"https://github.com/Tuula/deep-sky/tree/baa0807dd36b61fd02174b17c10013862af4ec18\">https://github.com/Tuula/deep-sky/tree/baa0807dd36b61fd02174b17c10013862af4ec18</a> is situation before lots of Elm related changes that I mentioned in passing in the episode)</p>\r\n\r\n',364,107,0,'CC-BY-SA','haskell, yesod',0,0,1),
(2703,'2018-12-12','Fog of war in Yesod based game',1515,'How to implement fog of war system in turn based web game','<p>Duality of the universe: there\'struestateoftheuniverseusedinsimulationandthere\'s state the the players perceive. These most likely will always be in conflict. One possible solution is to separate these completely. Perform simulation in one system and record what players see in other.</p>\r\n\r\n<p>For every type of entity in the game, there\'stwosetsofdata:realandreported.Reportsaretiedtotimeandfaction.Examplesaregivenforplanets.Thus,wehave<em>Planet</em>,<em>PlanetReport</em>and<em>CollatedPlanetReport</em>.Firstistherealentity,secondisreportofthatentitytiedintimeandfaction.Thirdoneisaggregatedinformationafactionhasofgivenentity.Indatabasetwofirstonesare:</p>\r\n\r\n<pre><code>\r\nPlanetjson\r\nnameText\r\npositionInt\r\nstarSystemIdStarSystemId\r\nownerIdFactionIdMaybe\r\ngravityDouble\r\nSystemPositionstarSystemIdposition\r\nderivingShow\r\n\r\nPlanetReportjson\r\nplanetIdPlanetId\r\nownerIdFactionIdMaybe\r\nstarSystemIdStarSystemId\r\nnameTextMaybe\r\npositionIntMaybe\r\ngravityDoubleMaybe\r\nfactionIdFactionId\r\ndateInt\r\nderivingShow\r\n</code></pre>\r\n<p>Thirdoneisdefinedasadatatype:</p>\r\n\r\n<pre><code>\r\ndataCollatedPlanetReport=CollatedPlanetReport\r\n{cprPlanetId::KeyPlanet\r\n,cprSystemId::KeyStarSystem\r\n,cprOwnerId::Maybe(KeyFaction)\r\n,cprName::MaybeText\r\n,cprPosition::MaybeInt\r\n,cprGravity::MaybeDouble\r\n,cprDate::Int\r\n}derivingShow\r\n</code></pre>\r\n\r\n<p>Datafromdatabaseneedtobetransformedbeforeworkingonit.Usuallyit\'s 1:1 mapping, but sometimes it makes sense to enrich it (turning IDs into names for example). For this we use <em>ReportTransform</em> type class:</p>\r\n\r\n<pre><code>\r\n-- | Class to transform a report stored in db to respective collated report\r\nclass ReportTransform a b where\r\n fromReport :: a -> b\r\n\r\ninstance ReportTransform PlanetReport CollatedPlanetReport where\r\n fromReport report =\r\n CollatedPlanetReport (planetReportPlanetId report)\r\n (planetReportStarSystemId report)\r\n (planetReportOwnerId report)\r\n (planetReportName report)\r\n (planetReportPosition report)\r\n (planetReportGravity report)\r\n (planetReportDate report)\r\n</code></pre>\r\n\r\n<p>To easily combine bunch of collated reports together, we define instances\r\n of <em>semigroup</em> and <em>monoid</em> for collated report data.\r\n Semigroup defines an associative binary operation (<>) and monoid defines a zero or empty item (mempty). My explanation about Monoid and Semigroup were a bit rambling, so maybe have a look at <a href=\"https://wiki.haskell.org/Monoid\">https://wiki.haskell.org/Monoid</a> which explains it in detail.</p>\r\n\r\n<pre><code>\r\ninstance Semigroup CollatedPlanetReport where\r\n (<>) a b = CollatedPlanetReport (cprPlanetId a)\r\n (cprSystemId a)\r\n (cprOwnerId a <|> cprOwnerId b)\r\n (cprName a <|> cprName b)\r\n (cprPosition a <|> cprPosition b)\r\n (cprGravity a <|> cprGravity b)\r\n (max (cprDate a) (cprDate b))\r\n\r\ninstance Monoid CollatedPlanetReport where\r\n mempty = CollatedPlanetReport (toSqlKey 0) (toSqlKey 0) Nothing Nothing Nothing Nothing 0\r\n</code></pre>\r\n\r\n<p>In some cases there might be a list of collated reports that are about different entities of same type (several reports for every planet in solar system). For those cases, we need a way to tell what reports belong together:</p>\r\n\r\n<pre><code>\r\n-- | Class to indicate if two reports are about same entity\r\nclass Grouped a where\r\n sameGroup :: a -> a -> Bool\r\n\r\ninstance Grouped PlanetReport where\r\n sameGroup a b =\r\n planetReportPlanetId a == plane
(2692,'2018-11-27','YouTube URL tricks',436,'URL tricks for YouTube to enhance viewing experience and an overview of my viewing methodology','<h2>YouTube URL Tricks by Desearcher</h2>\r\n<br/><table><tr><th>Recommended Episode</th></tr><tr><td><a href=\"https://hackerpublicradio.org/eps.php?id=2675\">YouTube Playlists</a> by <a href=\"https://hackerpublicradio.org/correspondents/0198.html\">Ahuka</a></td></tr></table>\r\n<br/><table><tr><th colspan=\"2\">User Upload playlist</th></tr><tr><td>BEFORE</td><td><code>https://www.youtube.com/channel/UCAL3JXZSzSm8AlZyD3nQdBA</code></td></tr><tr><td>AFTER</td><td><code>https://www.youtube.com/playlist?list=UUAL3JXZSzSm8AlZyD3nQdBA</code></td></tr></table>\r\n<br/><table><tr><th colspan=\"2\">Embeded Player</th></tr><tr><td>BEFORE</td><td><code>https://www.youtube.com/playlist?list=UUAL3JXZSzSm8AlZyD3nQdBA</code></td></tr><tr><td>AFTER</td><td><code>https://www.youtube.com/embed?list=UUAL3JXZSzSm8AlZyD3nQdBA</code></td></tr></table>\r\n<br/><table><tr><th colspan=\"2\">Watch Later</th></tr><tr><td>NORMAL</td><td><code>https://www.youtube.com/playlist?list=WL</code></td></tr><tr><td>EMBED</td><td><code>https://www.youtube.com/embed?list=WL</code></td></tr></table>\r\n<br/><table><tr><th>Show \"Remove Watched\" Button in Watch Later queue</th></tr><tr><td><code>https://www.youtube.com/playlist?list=WL&disable_polymer=true</code></td></tr></table>\r\n<br/><table><tr><th colspan=\"2\">Chrome App trick to maximize viewing area</th></tr><tr><td>Watch Later</td><td><code>chrome -app=\"https://www.youtube.com/embed?list=WL\"</code></td></tr><tr><td>Playlist</td><td><code>chrome -app=\"https://www.youtube.com/embed?list=PLZHQObOWTQDMsr9K-rj53DwVRMYO3t5Yr\"</code></td></tr></table>\r\n<br/><table><tr><th>Play On TV</th></tr><tr><td><code>https://www.youtube.com/pair</code></td></tr></table>\r\n<br/><table><tr><th>TCL Roku TV</th></tr><tr><td><a href=\"https://www.roku.com/products/finder/roku-tv\">Roku Product List</a></td></tr></table>\r\n',371,0,0,'CC-BY-SA','YouTube,URL,Chrome,Roku,Smart TV',0,0,1),
(2709,'2018-12-20','Bash Tips - 16',1440,'Arrays in Bash (part 1)','<h1 id=\"bash-tips---16\">Bash Tips - 16 <small><small>(Further auxiliary Bash tips)</small></small></h1>\r\n<h2 id=\"arrays-in-bash\">Arrays in Bash</h2>\r\n<p>This is the first of a small group of shows on the subject of arrays in Bash. It is also the sixteenth show in the <em>Bash Tips</em> sub-series.</p>\r\n<p>We have encountered Bash arrays at various points throughout this sub-series, and have even seen a number of examples, but the subject has never been examined in detail. This group of shows intends to make good this deficiency.</p>\r\n<h2 id=\"long-notes\">Long notes</h2>\r\n<p>I have provided detailed notes as usual for this episode, and these can be <a href=\"https://hackerpublicradio.org/eps/hpr2709/full_shownotes.html\">viewed here</a>.</p>\r\n<h2>Links</h2>\r\n<ul>\r\n<li><a href=\"https://www.gnu.org/software/bash/manual/bash.html\">“<em>GNU BASH Reference Manual</em>”</a>\r\n<ul>\r\n<li>Section on <a href=\"https://www.gnu.org/software/bash/manual/bash.html#Arrays\">“Bash Arrays”</a></li>\r\n</ul></li>\r\n</ul>\r\n<ul>\r\n<li>Linux Documentation Project: <a href=\"https://www.tldp.org/LDP/abs/html/index.html\">Advanced Bash-Scripting Guide</a>\r\n<ul>\r\n<li><a href=\"https://www.tldp.org/LDP/abs/html/arrays.html\">Chapter 27: Arrays</a></li>\r\n</ul></li>\r\n<li><p><a href=\"https://hackerpublicradio.org/series/0042.html\">HPR series: <em>Bash Scripting</em></a></p></li>\r\n<li>Previous episodes under the heading <em>Bash Tips</em>:\r\n<ol>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=1648\">HPR episode 1648 “<em>Bash parameter manipulation</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=1843\">HPR episode 1843 “<em>Some Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=1884\">HPR episode 1884 “<em>Some more Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=1903\">HPR episode 1903 “<em>Some further Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=1951\">HPR episode 1951 “<em>Some additional Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2045\">HPR episode 2045 “<em>Some other Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2278\">HPR episode 2278 “<em>Some supplementary Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2293\">HPR episode 2293 “<em>More supplementary Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2639\">HPR episode 2639 “<em>Some ancillary Bash tips - 9</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2649\">HPR episode 2649 “<em>More ancillary Bash tips - 10</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2659\">HPR episode 2659 “<em>Further ancillary Bash tips - 11</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2669\">HPR episode 2669 “<em>Additional ancillary Bash tips - 12</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2679\">HPR episode 2679 “<em>Extra ancillary Bash tips - 13</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2689\">HPR episode 2689 “<em>Bash Tips - 14 (Some auxiliary Bash tips)</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2699\">HPR episode 2699 “<em>Bash Tips - 15 (More auxiliary Bash tips)</em>”</a></li>\r\n</ol></li>\r\n</ul>\r\n<ul>\r\n<li>Resources:\r\n<ul>\r\n<li>Examples: <a href=\"https://hackerpublicradio.org/eps/hpr2709/bash16_ex1.sh\">bash16_ex1.sh</a></li>\r\n</ul></li>\r\n</ul>\r\n',225,42,1,'CC-BY-SA','Bash,array,indexed array,associative array',0,0,1),
(2713,'2018-12-26','Resources in 4x game',1252,'One way to implement data types for raw resources in Haskell','<p>Raw resources are integral part for most 4x games. Here’s one way of modeling them in Haskell. I wanted a system that is easy to use, doesn’t require too much typing and is type safe.</p>\r\n<p>RawResource is basic building block:</p>\r\n<pre><code>newtype RawResource a = RawResource { unRawResource :: Int }\r\n deriving (Show, Read, Eq)</code></pre>\r\n<p>It can be parametrised with anything, but I’m using three different types:</p>\r\n<pre><code>data Biological = Biological\r\ndata Mechanical = Mechanical\r\ndata Chemical = Chemical</code></pre>\r\n<p>Example of defining harvest being 100 units of biological raw resources:</p>\r\n<pre><code> harvest :: RawResource Biological\r\n harvest = RawResource 100</code></pre>\r\n<p>Raw resources are often manipulated (added and subtracted mostly). Defining Num instance allows us to use them as numbers:</p>\r\n<pre><code>instance Num (RawResource t) where\r\n (+) (RawResource a) (RawResource b) = RawResource $ a + b\r\n (-) (RawResource a) (RawResource b) = RawResource $ a - b\r\n (*) (RawResource a) (RawResource b) = RawResource $ a * b\r\n abs (RawResource a) = RawResource $ abs a\r\n signum (RawResource a) = RawResource $ signum a\r\n fromInteger a = RawResource $ fromInteger a</code></pre>\r\n<p>For example, adding harvest to stock pile:</p>\r\n<pre><code> stock :: RawResource Biological\r\n stock = RawResource 1000\r\n\r\n harvest :: RawResource Biological\r\n harvest = RawResource 100\r\n\r\n newStock = stock + harvest</code></pre>\r\n<p>Comparing size of two resource piles is common operation. Ord instance has methods we need for comparing:</p>\r\n<pre><code>instance Ord (RawResource t) where\r\n (<=) (RawResource a) (RawResource b) = a <= b</code></pre>\r\n<p>One function is enough, as rest is defined in terms of it. Sometimes (usually for reasons of optimization), one might want to define other functions too.</p>\r\n<p>Another way to add bunch of resources of same type together is defining Monoid instance:</p>\r\n<pre><code>instance Semigroup (RawResource t) where\r\n (<>) a b = a + b\r\n\r\ninstance Monoid (RawResource t) where\r\n mempty = RawResource 0</code></pre>\r\n<p>For example, combining harvests of many fields can be achieved as:</p>\r\n<pre><code> harvests :: [RawResource Biological]\r\n harvests = [RawResource 20, RawResource 50, RawResource 25]\r\n\r\n total :: RawResource Biological\r\n total = mappend harvests</code></pre>\r\n<p>All these functions keep track of type of resources being manipulated. Compiler will emit an error if two different types of resources are being mixed together.</p>\r\n<p>Raw resources are often grouped together for specific purpose. This again uses phantom types to keep track the intended usage:</p>\r\n<pre><code>data RawResources a = RawResources\r\n { ccdMechanicalCost :: RawResource Mechanical\r\n , ccdBiologicalCost :: RawResource Biological\r\n , ccdChemicalCost :: RawResource Chemical\r\n } deriving (Show, Read, Eq)\r\n\r\ndata ResourceCost = ResourceCost\r\ndata ConstructionSpeed = ConstructionSpeed\r\ndata ConstructionLeft = ConstructionLeft\r\ndata ConstructionDone = ConstructionDone\r\ndata ResourcesAvailable = ResourcesAvailable</code></pre>\r\n<p>And in order to be able to combine piles of RawResources, we’ll define Semigroup and Monoid instances. Notice how both instances make use of Semigroup and Monoid instances of RawResource:</p>\r\n<pre><code>instance Semigroup (RawResources t) where\r\n (<>) a b = RawResources\r\n { ccdMechanicalCost = ccdMechanicalCost a <> ccdMechanicalCost b\r\n , ccdBiologicalCost = ccdBiologicalCost a <> ccdBiologicalCost b\r\n , ccdChemicalCost = ccdChemicalCost a <> ccdChemicalCost b\r\n }\r\n\r\ninstance Monoid (RawResources t) where\r\n mempty = RawResources\r\n { ccdMechanicalCost = mempty\r\n , ccdBiologicalCost = mempty\r\n
(2719,'2019-01-03','Bash Tips - 17',2056,'Arrays in Bash (part 2)','<h1 id=\"bash-tips---17\">Bash Tips - 17 <small><small>(Additional auxiliary Bash tips)</small></small></h1>\r\n<h2 id=\"arrays-in-bash\">Arrays in Bash</h2>\r\n<p>This is the second of a small group of shows on the subject of arrays in Bash. It is also the seventeenth show in the <em>Bash Tips</em> sub-series.</p>\r\n<p>In the last show we saw the two types of arrays, and learned about the multiple ways of creating them and populating them. We also looked at how array elements and entire arrays are accessed.</p>\r\n<p>Now we want to continue looking at array access and some of the various parameter expansion operations available.</p>\r\n<h2 id=\"long-notes\">Long notes</h2>\r\n<p>I have provided detailed notes as usual for this episode, and these can be <a href=\"https://hackerpublicradio.org/eps/hpr2719/full_shownotes.html\">viewed here</a>.</p>\r\n<h2 id=\"links\">Links</h2>\r\n<ul>\r\n<li><a href=\"https://www.gnu.org/software/bash/manual/bash.html\">“<em>GNU BASH Reference Manual</em>”</a>\r\n<ul>\r\n<li>Section on <a href=\"https://www.gnu.org/software/bash/manual/bash.html#Arrays\">“Bash Arrays”</a></li>\r\n</ul></li>\r\n</ul>\r\n<ul>\r\n<li>Linux Documentation Project: <a href=\"https://www.tldp.org/LDP/abs/html/index.html\">Advanced Bash-Scripting Guide</a>\r\n<ul>\r\n<li><a href=\"https://www.tldp.org/LDP/abs/html/arrays.html\">Chapter 27: Arrays</a></li>\r\n</ul></li>\r\n<li><p>Wikipedia article entitled <a href=\"https://en.wikipedia.org/wiki/Fibonacci_number\">“<em>Fibonacci Number</em>”</a></p></li>\r\n<li><p><a href=\"https://hackerpublicradio.org/series/0042.html\">HPR series: <em>Bash Scripting</em></a></p></li>\r\n<li>Previous episodes under the heading <em>Bash Tips</em>:\r\n<ol>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=1648\">HPR episode 1648 “<em>Bash parameter manipulation</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=1843\">HPR episode 1843 “<em>Some Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=1884\">HPR episode 1884 “<em>Some more Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=1903\">HPR episode 1903 “<em>Some further Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=1951\">HPR episode 1951 “<em>Some additional Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2045\">HPR episode 2045 “<em>Some other Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2278\">HPR episode 2278 “<em>Some supplementary Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2293\">HPR episode 2293 “<em>More supplementary Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2639\">HPR episode 2639 “<em>Some ancillary Bash tips - 9</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2649\">HPR episode 2649 “<em>More ancillary Bash tips - 10</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2659\">HPR episode 2659 “<em>Further ancillary Bash tips - 11</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2669\">HPR episode 2669 “<em>Additional ancillary Bash tips - 12</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2679\">HPR episode 2679 “<em>Extra ancillary Bash tips - 13</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2689\">HPR episode 2689 “<em>Bash Tips - 14 (Some auxiliary Bash tips)</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2699\">HPR episode 2699 “<em>Bash Tips - 15 (More auxiliary Bash tips)</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2709\">HPR episode 2709 “<em>Bash Tips - 16 (Further auxiliary Bash tips)</em>”</a></li>\r\n</ol></li>\r\n</ul>\r\n<ul>\r\n<li>Resources:\r\n<ul>\r\n<li>Examples: <a href=\"https://hackerpublicradio.or
(2694,'2018-11-29','Bandit Update',699,'NYbill does a quick episode to mention there are new Over the Wire, Bandit levels out.','<p>(No Spoilers)</p>\r\n<p>NYbill does a quick episode to mention there are new Over the Wire, Bandit levels out.</p>\r\n<p><a href=\"https://overthewire.org/wargames/bandit/bandit0.html\" class=\"uri\">https://overthewire.org/wargames/bandit/bandit0.html</a></p>\r\n<p>Original Episode:</p>\r\n<p><a href=\"https://hackerpublicradio.org/eps.php?id=2138\" class=\"uri\">https://hackerpublicradio.org/eps.php?id=2138</a></p>\r\n',235,0,0,'CC-BY-SA','Hacking, War games, Linux',0,0,1),
(2697,'2018-12-04','The Linux Shutdown Command Explained',402,'A short pod cast about the linux shutdown command','<p>\r\nA short podcast about the shutdown command \r\n</p>\r\n<p>\r\n<a href=\"https://linuxhandbook.com/linux-shutdown-command/\">https://linuxhandbook.com/linux-shutdown-command/</a>\r\n</p>',129,0,0,'CC-BY-SA','Linux,shutdown',0,0,1),
(2698,'2018-12-05','XSV for fast CSV manipulations - Part 1',1837,'Written in Rust, xsv is my new favorite tool for manipulating csv files','<h1 id=\"xsv-for-fast-csv-manipulations---part-1-basic-usage\">XSV for fast CSV manipulations - Part 1: Basic Usage</h1>\r\n<blockquote>\r\n<p><a href=\"https://github.com/BurntSushi/xsv\" class=\"uri\">https://github.com/BurntSushi/xsv</a></p>\r\n</blockquote>\r\n<h2 id=\"introduction\">Introduction</h2>\r\n<p>xsv is a command line program for indexing, slicing, analyzing, splitting and joining CSV files. Commands should be simple, fast and composable:</p>\r\n<ol>\r\n<li>Simple tasks should be easy.</li>\r\n<li>Performance trade offs should be exposed in the CLI interface.</li>\r\n<li>Composition should not come at the expense of performance.</li>\r\n</ol>\r\n<p>We will be using the CSV file provided in the <a href=\"https://burntsushi.net/stuff/worldcitiespop.csv\">documentation</a>.</p>\r\n<h2 id=\"commands-covered-in-this-episode\">Commands covered in this episode</h2>\r\n<ul>\r\n<li>count - Count the rows of CSV data</li>\r\n<li>headers - Show the headers of CSV data, or show the intersection of all headers between many CSV files</li>\r\n<li>index - Create an index for a CSV file. This is very quick and provides constant time indexing into the CSV file.</li>\r\n<li>frequency - Build frequency tables of each column in CSV data.</li>\r\n<li>stats - Show basic types and statistics of each column in the CSV file. (i.e., mean, standard deviation, median, range, etc.)</li>\r\n<li>sort - Sort CSV data</li>\r\n<li>select - Select or re-order columns from CSV data.</li>\r\n<li>slice - Slice rows from any part of a CSV file. When an index is present, this only has to parse the rows in the slice (instead of all rows leading up to the start of the slice).</li>\r\n<li>search - Run a regex over CSV data. Applies the regex to each field individually and shows only matching rows.</li>\r\n<li>table - Show aligned output of any CSV data using elastic tabstops.</li>\r\n<li>flatten - A flattened view of CSV records. Useful for viewing one record at a time.</li>\r\n</ul>\r\n',300,0,0,'CC-BY-SA','CSV,XSV',0,0,1),
(2700,'2018-12-07','Episode 3000',26830,'We commemorate the 300 Today with a Techie and 2700 Hacker Public Radio shows','<p>\r\nOn the 19th of September 2005 a group of individuals got together to release their first show on the podcast network \"Today with a Techie\".\r\n</p>\r\n<p>\r\nThe idea was to share knowledge through podcasting. Now 13 years, 2 months, 19 days later the project is still going strong, and you dear listener are a part of it.\r\n</p>\r\n<p>\r\nToday marks the 2700th episode of \"Hacker Public Radio\" and coupled with the 300 shows from \"Today with a Techie\", marks the 3000th episode of this project.\r\n</p>\r\n<p>\r\nA big thanks goes out to all 354 individual hosts who together contributed 1452 hours of shows to the archive. \r\n</p>\r\n<p>\r\nThere is about 50 giga bytes of mp3 files alone. \r\n</p>\r\n<p>\r\nWhich played back to back gives 60 days 11 hours 40 minutes 21 seconds of continuous play. \r\n</p>\r\n<p>\r\nIf you started listening today and played the shows 24 x 7 you wouldn\'tbefinishedlisteninguntilMonday,February5th,2019.\r\n</p>\r\n<p>\r\nOfcoursebythentherewouldbe39additionalshowsreleased,soyoustillwouldn\'t be finished.\r\n</p>\r\n<p>\r\nDespite all this we still don\'thaveawikipediapage.Ifyoucan,pleasetakethetimetocreateoneforus.Thereisplentyofsupportinginformationinthe\"In the Press\"sectionofouraboutpage.\r\n</p>\r\n<p>\r\nSotomarkthe3000thepisodewearegoingtodonothingmorethanlisttheshows,hostandsummarywhereavailable.\r\n</p>\r\n<p>\r\nJustdoingthatalonecreatesawhopping7andahalfhourepisode.\r\n</p>\r\n<p>\r\nAreyoul33tenoughtolistentoitall?\r\n</p>\r\n<p>\r\nLet\'s go.\r\n</p>',30,0,0,'CC-BY-SA','TWaT, HPR, 3000',0,0,1),
(2701,'2018-12-10','First impressions of the Odroid-go',1926,'I ramble on about my first impressions of the odroid-go','<p>I ramble on about my impressions of the Odroid-go, a 32 USD handheld system similar to a gameboy built to run game system emulators and various other free software. It’s also built to be harcked.</p>\r\n<p><a href=\"https://wiki.odroid.com/odroid_go/odroid_go\" class=\"uri\">https://wiki.odroid.com/odroid_go/odroid_go</a></p>\r\n<p>The summary is this is an easy to put together kit requiring no soldering, and runs classic console emulators pretty well. Well worth the 32 USD plus shipping in my opinion. Claims 10 hours of game play and that seems about right so far for me.</p>\r\n<p>The systems emulated out of the box are:</p>\r\n<p>NES, Game Gear, Gameboy, Gameboy Color, Sega Master System, ColecoVision. Other systems of similar or earlier vintages have emulators that you have to install separately and boot into to run. I don’t think it will emulate newer systems. No Gameboy Advance emulator and I don’t see a Mame emulator. However, I do think this ‘might’ support Mame for some of the early arcade games like Asteroids and Space Invaders.</p>',151,103,0,'CC-0','Odroid-go',0,0,1),
(2702,'2018-12-11','Audacity set up and response to episode 2658',107,'Just a quick response to Ep2658','<p>Hi Guys and Girls in HPR land.</p>\r\n<p>This is Tony Hughes in Blackpool in the UK back for another show. I normally talk about my own stuff but while it is related to what I have been doing lately this is a response to Al’s interview with Dave in Episode 2658 and how to setup Audacity to record and edit audio for best sound quality when podcasting.</p>\r\n<p>I’ve recently joined the mintCast podcast team and have been editing and doing the post production of the audio recording for the last couple of episodes. The information that Dave provided during the show was invaluable in helping me in this task, I also have to give a shout out to Rob the previous host who also spent an hour and a half giving a tutorial on his post production work flow, but the additional information given by Dave in this show was also a big help.</p>\r\n<p>I’ve now purchased a boom arm and pop filter for my mic to reduce any artefacts in the recording although as it is still attached to my desk I think I may need to invest in a shock mount although I’m not sure how it will attach to my current Boom arm. Ah well that’s a problem for another day.</p>\r\n<p>As I said this was just a shout out to Al and Dave to say thanks for the show and I will save it for another day to do a show on my new post production work flow on the mintCast audio.</p>\r\n<p>This is Tony Hughes saying goodbye for now.</p>\r\n<p><a href=\"https://mintcast.org/about-the-authors/tonyh/\" class=\"uri\">https://mintcast.org/about-the-authors/tonyh/</a><br />\r\n<a href=\"mailto:th@mintcast.org\">th@mintcast.org</a></p>\r\n<p><a href=\"https://hackerpublicradio.org/eps.php?id=2658\">https://hackerpublicradio.org/eps.php?id=2658</a></p>',338,0,0,'CC-BY-SA','audio,Audacity',0,0,1),
(2715,'2018-12-28','About ONAP',618,'The Linux foundations ONAP project all about it','<p>So I went to the open networking trade show sponsored by the Linux Foundation with Ken Fallon’s help.</p>\r\n<p>The first thing they talked about was ONAP.</p>\r\n<p><a href=\"https://www.onap.org/\" class=\"uri\">https://www.onap.org/</a><br />\r\n<a href=\"https://en.wikipedia.org/wiki/ONAP\" class=\"uri\">https://en.wikipedia.org/wiki/ONAP</a></p>\r\n',129,61,1,'CC-BY-SA','Networking,ONAP,Open Networking Automation Platform',0,0,1),
(2722,'2019-01-08','RAID 6 a short description',150,'How Raid 6 works','<p>Raid 6 is a take of raid 5 but with support for 2 drive protection.</p>',129,0,1,'CC-BY-SA','Raid6',0,0,1),
(2742,'2019-02-05','SAP Hana Certification Directory',1085,'How the SAP Hana certification works','<p>SAP Hana certification is a long and hard process covered at<br />\r\n<a href=\"https://www.sap.com/dmc/exp/2014-09-02-hana-hardware/enEN/index.html\" class=\"uri\">https://www.sap.com/dmc/exp/2014-09-02-hana-hardware/enEN/index.html</a></p>',129,0,0,'CC-BY-SA','SAP HANA,certification',0,0,1),
(3001,'2020-02-03','HPR Community News for January 2020',2649,'HPR Volunteers Dave and Ken talk about shows released and comments posted in January 2020','<style>\ntable td.shrink {\n white-space:nowrap\n}\n</style>\n\n<h2>New hosts</h2>\n<p>\nThere were no new hosts this month.\n</p>\n\n<h2>Last Month\'sShows</h2>\n<tableid=\"t01\">\n<tr>\n<th>Id</th>\n<th>Day</th>\n<th>Date</th>\n<th>Title</th>\n<th>Host</th>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=2978\"target=\"_blank\">2978</a></strong></td>\n<td>Wed</td>\n<tdclass=\"shrink\">2020-01-01</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=2978\"target=\"_blank\">GARAGEDOOR</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0036.html\"target=\"_blank\">operat0r</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=2979\"target=\"_blank\">2979</a></strong></td>\n<td>Thu</td>\n<tdclass=\"shrink\">2020-01-02</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=2979\"target=\"_blank\">BicycleFreewheelMaintenance</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0238.html\"target=\"_blank\">JonKulp</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=2980\"target=\"_blank\">2980</a></strong></td>\n<td>Fri</td>\n<tdclass=\"shrink\">2020-01-03</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=2980\"target=\"_blank\">FLOSSWeekly553-HackerPublicRadio</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0030.html\"target=\"_blank\">KenFallon</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=2981\"target=\"_blank\">2981</a></strong></td>\n<td>Mon</td>\n<tdclass=\"shrink\">2020-01-06</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=2981\"target=\"_blank\">HPRCommunityNewsforDecember2019</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0159.html\"target=\"_blank\">HPRVolunteers</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=2982\"target=\"_blank\">2982</a></strong></td>\n<td>Tue</td>\n<tdclass=\"shrink\">2020-01-07</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=2982\"target=\"_blank\">WorldofCommodore2019Episode4:Baremetalc64EmulationonRaspberryPi</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0383.html\"target=\"_blank\">PaulQuirk</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=2983\"target=\"_blank\">2983</a></strong></td>\n<td>Wed</td>\n<tdclass=\"shrink\">2020-01-08</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=2983\"target=\"_blank\">myphone</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0243.html\"target=\"_blank\">Jezra</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=2984\"target=\"_blank\">2984</a></strong></td>\n<td>Thu</td>\n<tdclass=\"shrink\">2020-01-09</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=2984\"target=\"_blank\">RHEL8Workstationfirstlooks</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0129.html\"target=\"_blank\">JWP</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=2985\"target=\"_blank\">2985</a></strong></td>\n<td>Fri</td>\n<tdclass=\"shrink\">2020-01-10</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=2985\"target=\"_blank\">FirefoxUpdate</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0198.html\"target=\"_blank\">Ahuka</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=2986\"target=\"_blank\">2986</a></strong></td>\n<td>Mon</td>\n<tdclass=\"shrink\">2020-01-13</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=2986\"target=\"_blank\">OnlykeyUpdated</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0036.html\"target=\"_blank\">operat0r</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\
(3021,'2020-03-02','HPR Community News for February 2020',3272,'Call for shows is open. Ken and eventually Dave discuss the shows, media and development plans.','<style>\ntable td.shrink {\n white-space:nowrap\n}\n</style>\n\n<h2>New hosts</h2>\n<p>\nWelcome to our new host: <br />\n\n <a href=\"https://hackerpublicradio.org/correspondents/0384.html\" target=\"_blank\">monochromec</a>.\n</p>\n\n<h2>Last Month\'sShows</h2>\n<tableid=\"t01\">\n<tr>\n<th>Id</th>\n<th>Day</th>\n<th>Date</th>\n<th>Title</th>\n<th>Host</th>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3001\"target=\"_blank\">3001</a></strong></td>\n<td>Mon</td>\n<tdclass=\"shrink\">2020-02-03</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3001\"target=\"_blank\">HPRCommunityNewsforJanuary2020</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0159.html\"target=\"_blank\">HPRVolunteers</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3002\"target=\"_blank\">3002</a></strong></td>\n<td>Tue</td>\n<tdclass=\"shrink\">2020-02-04</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3002\"target=\"_blank\">WorldofCommodore2019Episode8:Voteofthanks</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0383.html\"target=\"_blank\">PaulQuirk</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3003\"target=\"_blank\">3003</a></strong></td>\n<td>Wed</td>\n<tdclass=\"shrink\">2020-02-05</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3003\"target=\"_blank\">HackerPublicRadio20192020NewYearShowEpisode4</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0265.html\"target=\"_blank\">KevinWisher</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3004\"target=\"_blank\">3004</a></strong></td>\n<td>Thu</td>\n<tdclass=\"shrink\">2020-02-06</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3004\"target=\"_blank\">FixingsimpleaudioproblemswithAudacity</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0225.html\"target=\"_blank\">DaveMorriss</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3005\"target=\"_blank\">3005</a></strong></td>\n<td>Fri</td>\n<tdclass=\"shrink\">2020-02-07</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3005\"target=\"_blank\">IsActivityPubPavingTheWaytoWeb3.0?</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0198.html\"target=\"_blank\">Ahuka</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3006\"target=\"_blank\">3006</a></strong></td>\n<td>Mon</td>\n<tdclass=\"shrink\">2020-02-10</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3006\"target=\"_blank\">HijackAuxiliaryInputofyourcar!</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0036.html\"target=\"_blank\">operat0r</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3007\"target=\"_blank\">3007</a></strong></td>\n<td>Tue</td>\n<tdclass=\"shrink\">2020-02-11</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3007\"target=\"_blank\">Photography101</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0383.html\"target=\"_blank\">PaulQuirk</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3008\"target=\"_blank\">3008</a></strong></td>\n<td>Wed</td>\n<tdclass=\"shrink\">2020-02-12</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3008\"target=\"_blank\">HackerPublicRadio2019-20NewYearShowEpisode5</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0265.html\"target=\"_blank\">KevinWisher</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3009\"target=\"_blank\">3009</a></strong></td>\n<td>Thu</td>\n<tdclass=\"shrink\">2020-02-13</td>\n<td><ahref=\"https://hackerpublicrad
(2707,'2018-12-18','Steganalysis 101',864,'Steganalysis is the process of identifying the presence of, and decrypting, steganography.','<h3 id=\"introduction\">1. Introduction</h3>\r\n<p>Hello and welcome to Hacker Public Radio, I’m Edward Miro and I’ve been a fan of HPR for a while now and really love its collaborative and random nature. It’s always been important for me to support the hacking community. I always take any opportunity to give back to this community who have given me so much throughout the years. I’ve also always subscribed to the idea that the best way to learn something is by teaching and I hope to do a good job for all you listeners. This talk is on mystical art of steganalysis which is the process of identifying the presence of and decrypting (hopefully) steganography.</p>\r\n<h3 id=\"what-is-steganography\">2. What is steganography?</h3>\r\n<p>I’m into hacking, but I’m not a professional hacker. Usually I call myself a hobbyist. I like CTFs, crypto challenges, lots of stuff from Vulnhub or OverTheWire, things like that. I’ll provide some links in the end if anyone is interested, but for those who aren’t familiar a CTF, or Capture The Flag, it’s a kind of game that helps you get better at hacking. These days there are tons of VMs that are setup to be intentionally vulnerable to different techniques or attacks. You load the VM and pretend it’s a server you want to attack and follow your standard hacking protocols. Some are setup to be boot to root challenges where you ‘win’ when you get root and some are setup with flags that you can find hidden in the target worth points. There are in person and online CTFs and they’ve gotten pretty popular with the National Cyber League being a major competition. Some are easy, some are really hard and most have really good write-ups that can teach you so much about INFOSEC, penetration testing and actually let you practice the techniques in a relatively easy and legal way.</p>\r\n<p>Where steganography comes in to this discussion is that it’s an element you sometimes see used in the kinds of challenges I mentioned previously and also in alternate reality games, online recruitment challenges by national agencies/big tech companies and militarys. They are even used in real world espionage and intelligence work or super spooky secret challenges like Cicada 3301.</p>\r\n<p>Simply put steganography (and I’m pasting this straight out of Wikipedia): “is the practice of concealing a file, message, image, or video within another file, message, image, or video”. Steganography is used to hide secrets in plain sight. It’s a way to send a message, without anyone detecting that a message is even being sent.</p>\r\n<p>I’ll give you more examples in the next section, but imagine a letter that has a secret written in invisible ink. Only the sender and receiver should know about the invisible ink and any eavesdroppers should be none the wiser. This simple example has been used by countless prisoners whose mail is routinely read and examined. Terrorists and spies the world over also use steganography and are known to embed messages in an image and post it online. With how many image hosting sites there are, with millions of people posting to them billions of images day in and day out, you can see why steganography can be such a challenge to combat. Before I move on to some more specific examples I want to stress again that I’m not an expert on cryptography or steganography. While researching for this podcast it’s overwhelmingly clear that you could spend your whole career focused on only steganography. This talk is just a primer on the subject and only the tip of the iceberg.</p>\r\n<h3 id=\"examples-also-from-wikipedia-the-great-repository-of-all-knowledge\">3. Examples (also from Wikipedia, the great repository of all knowledge)</h3>\r\n<ul>\r\n<li>Analog:\r\n<ul>\r\n<li>Head shaving</li>\r\n<li>Invisible ink</li>\r\n<li>Knots tied into ropes</li>\r\n<li>Messages hidden under stamps on envelopes</li>\r\n<li>Mixed typeface</li>\r\n<li>Using
(2704,'2018-12-13','Intro to Scribus',2380,'Klaatu provides an overview of Scribus in part 1 of a mini-series about steganography','<p>Scribus is a page layout application. If you are familiar with common publishing industry tools, then Scribus will be very familiar to you, but if you\'reusedtowordprocessorsorgraphicapplications,thenScribuswillprobablyconfuseyou.Inthisepisode,Klaatutalksabouttheworkflowofpagelayout,andhowtodosomebasictasksinScribus.\r\n</p>\r\n\r\n<p>TheexamplefilesKlaatuproducesinScribusareavailableat<ahref=\"https://slackermedia.info/tank/scribus-by-example.tar.gz\"target=\"_blank\">https://slackermedia.info/tank/scribus-by-example.tar.gz</a></p>\r\n\r\n<p>Fairwarning:thisepisodeisactually\"about\"steganography.Thekeyyouneedis<strong>OGG</strong>.</p>',78,74,0,'CC-BY-SA','design,steganography,scribus,layout',0,0,1),
(2706,'2018-12-17','Why I love the IBM AS/400 computer systems',1714,'A short talk about how I came to love the IBM As/400 systems and why.','<p>This is a talk about my love for the IBM family of AS/400 computer systems.</p>\r\n<p>Although it’s a very hacker unfriendly system there is still much to admire and love.</p>\r\n<p>It’s completely different from anything else which makes it nice but also very likely to disappear in few years from now. To prevent that piece of computing history to vanish I started a small initiative called <a href=\"https://www.as400museum.org/\" class=\"uri\">https://www.as400museum.org/</a>. It’s just me, but it does show my intention with the system.</p>\r\n',369,0,1,'CC-BY-SA','as400, ibm, computing, midrange',0,0,1),
(2708,'2018-12-19','Ghostscript',1351,'Klaatu talks about manipulating PDFs with gs and pdf-stapler','<p>\r\nGhostscript is the open source implementation of Postscript. You can read its <a href=\"https://www.ghostscript.com/doc/current/Use.htm\" target=\"_blank\">docs</a> online.\r\n</p>\r\n\r\n<p>\r\nTo compress a big PDF into something possibly smaller:\r\n</p>\r\n\r\n<pre><code>\r\n$ gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen -dBATCH -sOutputFile=output.pdf example.pdf\r\n</code></pre>\r\n\r\n<p>\r\nThat renders basically the same PDF with all images down-res\'dto72DPI.Othervalidsettingprofilesare<strong>ebook</strong>,<strong>printer</strong>,and<strong>prepress</strong>.\r\n</p>\r\n\r\n<p>\r\nTorenderaversionofaPDFwithoutanyrasterimagesinit,makingitcheaperandfastertoprint:\r\n</p>\r\n\r\n<pre><code>\r\ngs-sDEVICE=pdfwrite-dCompatibilityLevel=1.4-dPDFSETTINGS=/screen-dBATCH-dFILTERIMAGE-sOutputFile=output.pdfexample.pdf\r\n</code></pre>\r\n\r\n<p>\r\nTheFILTERIMAGEoptiondropsrasterimagesfromthefile.The<strong>FILTERVECTOR</strong>optionfiltersvectorimages,and<strong>FILTERTEXT</strong>filterstext.\r\n</p>\r\n\r\n<p>\r\nIf<ahref=\"https://hackerpublicradio.org/eps.php?id=2667\"target=\"_blank\">pdftk</a>isnotavailableforyourOS,youcanuse<ahref=\"https://github.com/hellerbarde/stapler\"target=\"_blank\">pdf-stapler</a>insteadforcuttingandconcatenatingPDFfiles.Itdoesn\'t deal with metadata as well as pdftk does, however.</p><p>It\'sworthnotingthatpdftkisavailableasasnappackage<ahref=\"https://snapcraft.io/pdftk\"target=\"_blank\">https://snapcraft.io/pdftk</a>.\r\n</p>\r\n\r\n<p>\r\nIt\'s also worth noting that this is actually episode 2 in a series about steganography.</p>\r\n\r\n',78,74,0,'CC-BY-SA','pdf, ebook, bloat, print',0,0,1),
(2711,'2018-12-24','Raspberry Pi 3A+ Review',336,'In this episode of HPR, I will do a quick review of the Raspberry Pi 3A+.','<h1 id=\"raspberry-pi-3a-review\">Raspberry Pi 3A+ review</h1>\r\n<p>In this episode of HPR, I will do a quick review of the Raspberry Pi 3A+, the latest release of the Raspberry Pi foundation.</p>\r\n<p><img src=\"https://frenchguy.ch/assets/img_1710_800.jpg\" title=\"Raspberry Pi 3A+\" alt=\"Raspberry Pi 3A+\" /> <img src=\"https://frenchguy.ch/assets/img_1711_800.jpg\" title=\"Raspberry Pi 3A+\" alt=\"Raspberry Pi 3A+\" /></p>\r\n<p><strong>Specs</strong><br />\r\nThe Raspberry Pi 3A+ has almost the same hardware as its big brother/sister the 3B+ :</p>\r\n<ul>\r\n<li>BCM2837 BO SOC (system on chip), a quad core 64-bit ARM v8 processor, running at 1.4 GHz</li>\r\n<li>On board wireless :\r\n<ul>\r\n<li>WiFi : 2.4 and 5 GHz 802.11 c/y/n/ac</li>\r\n<li>Bluetooth : 4.2 and BLE</li>\r\n</ul></li>\r\n<li>MicroSD card for storing the operating system and the data</li>\r\n<li>Full size HDMI connector</li>\r\n<li>3.5 mm jack connector for audio and composite video output</li>\r\n<li>MicroUSB connector for the power supply</li>\r\n<li>40-pin header with the same pinout as every other Raspberry Pi</li>\r\n</ul>\r\n<p>The differences are :</p>\r\n<ul>\r\n<li>Only one full size USB connector, instead of four on the 3B+</li>\r\n<li>No ethernet connector</li>\r\n<li>Only 512 MB or SDRAM instead of 1 GB on the 3B+</li>\r\n</ul>\r\n<p><strong>Size</strong><br />\r\nThe Raspberry Pi 3A+ is 6.7 x 5.6 cm (2.6 x 2.2 in) and 11 mm high (.45 in). But if you plug a ribbon in the header, then it takes a lot of space.</p>\r\n<p><img src=\"https://frenchguy.ch/assets/img_1713_800.jpg\" title=\"Raspberry Pi 3A+\" alt=\"Raspberry Pi 3A+\" /></p>\r\n<p>In this case, it’s probably better to unsolder the header, and solder a right angle header in place, so the pins are pointing to the side of the board and not upwards</p>\r\n<p><img src=\"https://frenchguy.ch/assets/img_1716_800.jpg\" title=\"Raspberry Pi 3A+\" alt=\"Raspberry Pi 3A+\" /> <img src=\"https://frenchguy.ch/assets/img_1717_800.jpg\" title=\"Raspberry Pi 3A+\" alt=\"Raspberry Pi 3A+\" /></p>\r\n<p>With a bit of caution and the help of some desoldering wick, it’s not a complex operation, because there is no component near the GPIO header.</p>\r\n<p>Of course if you plan on using a HAT, then you’re better off using the straight header. The Raspberry Pi 3A+ is actually the same size than a standard HAT.</p>\r\n<p><img src=\"https://frenchguy.ch/assets/img_1718_800.jpg\" title=\"Raspberry Pi 3A+\" alt=\"Raspberry Pi 3A+\" /> <img src=\"https://frenchguy.ch/assets/img_1719_800.jpg\" title=\"Raspberry Pi 3A+\" alt=\"Raspberry Pi 3A+\" /></p>\r\n<p><strong>Use case</strong><br />\r\n</p>\r\n<p>Since the Raspberry Pi 3A+ doesn’t have an ethernet port, I think I will not use it for server stuff like <a href=\"https://mosquitto.org/\">Mosquitto</a> or <a href=\"https://pi-hole.net/\">Pi-Hole</a>, for which a good network connection is required. Also, those servers sometimes need a keyboard and a mouse, and with only one USB port, that’s not too practical.</p>\r\n<p>For me, the A+ will be used to upgrade projects currently using a Raspberry Pi ZeroW, and for which I need a little more power. The on board WiFi and the small form factor, combined with the extra power, makes the 3A+ an ideal replacement for the ZeroW.</p>\r\n<p><strong>Credits</strong><br />\r\n</p>\r\n<p>The sound used for the opening and closing sequence is <a href=\"https://www.jamendo.com/track/1405949/speaker-x-clash-jingle\">Speaker X-Clash</a> by Daniel H, and is released under a CC-BY-NC license.</p>\r\n',370,0,0,'CC-BY-SA','raspberry pi, review',0,0,1),
(2712,'2018-12-25','Steganography',1290,'Klaatu wraps up his miniseries about steganography.','<p>Did you find the hidden message contained in Klaatu\'sprevioustwoepisodes?</p>\r\n<p>Ifnot,Klaaturevealshowtofinditinthisone,howtoduplicateit,andwhatmakesgoodsteganography.</p>',78,0,0,'CC-BY-SA','steganography,message,secretdecoderring',0,0,1),
(2714,'2018-12-27','Airplane stalls and Angle of Attack',995,'A primer on why airplanes quit flying','<h1 id=\"stalls-a-primer-on-why-aircraft-fly-and-dont-fly\">stalls, a primer on why aircraft fly, and don’t fly</h1>\r\n<h2 id=\"youtube-video-of-stall-with-narration-35-seconds\">YouTube video of stall with narration (35 seconds)</h2>\r\n<p><a href=\"https://www.youtube.com/watch?v=SiOiVHUEYao\" class=\"uri\">https://www.youtube.com/watch?v=SiOiVHUEYao</a></p>\r\n<h2 id=\"aoa-gauge-from-t-38-manual\">AoA gauge from T-38 manual</h2>\r\n<p><a href=\"https://goo.gl/images/ZH5UYx\" class=\"uri\">https://goo.gl/images/ZH5UYx</a></p>\r\n<h2 id=\"some-definitions\">Some definitions</h2>\r\n<ul>\r\n<li><p>chord - an imaginary line from the front of the wing to the back</p></li>\r\n<li><p>relative wind - movement of air relative to the chord</p></li>\r\n<li><p>angle of attack - the angle of the chord of the wing to the relative wind</p></li>\r\n<li><p>stall - a condition where the air on the top of the wing is not flowing smoothly over the wing</p></li>\r\n<li><p>critical angle of attack - the angle that the wing becomes stalled</p></li>\r\n<li><p>fun - stalling and spinning and aircraft when its safe to do so</p></li>\r\n<li><p>scary - stalling and spinning and aircraft when you don’t want to</p></li>\r\n</ul>\r\n<h2 id=\"things-not-mentioned\">Things not mentioned</h2>\r\n<p>This discussion pertained to subsonic speeds, super sonic flight introduces a whole other realm of issues.</p>\r\n<p>The wings of aircraft do not stall all at once. They are designed (usually) to stall from the wing root (where the wing is attached to the fuselage) towards the tips. This ensures good roll control at slow speed and into the stall. This stalling characteristic is achieved by designing twist in the wing (washout) allowing different parts of the wing to hit the critical angle of attack at different times.</p>\r\n<p>The most dangerous situation that you can find yourself in is a low altitude situation where one wing is stalled more than the other. The airplane then enters a spin. The dangerous part is the low altitude. Spins are fun, and the plane is still controllable, but you need altitude to recover. A wise man told me when turning low to the ground keep your nose down and speed up.</p>\r\n<p>Most light aircraft will shudder or buffet as you approach the critical angle of attack this happens because of the disturbed airflow hitting the aircraft’s fuselage or tail. In larger aircraft no (i.e.airliners) no feel is given naturally as the plane approaches a stalled condition so systems like stick shakers vibrate the control artificially as you approach the critical angle of attack as measured by the AoA sensors. <a href=\"https://goo.gl/images/7xv5A5\">DC-9 stick shaker, a big cell phone vibrator</a> artificial stall warning is mandatory in fly-by-wire aircraft (i.e.Airbus, f-16) as well as pure hydraulic controls (i.e.Boeing 757)</p>\r\n<p>Author: Brian<br />\r\nCreated: 2018-12-01 Sat 07:34<br />\r\nEmacs 25.3.1 (Org mode 8.2.10)</p>\r\n',326,0,0,'CC-BY-SA','aircraft,flight,stall',0,0,1),
(2760,'2019-03-01','What is VNF',445,'A topic from the Open Networking conference in Amsterdam','<p>A short basic info about VNF</p>\r\n<p><a href=\"https://searchsdn.techtarget.com/definition/virtual-network-functions\" class=\"uri\">https://searchsdn.techtarget.com/definition/virtual-network-functions</a></p>',129,61,0,'CC-BY-SA','Virtual network function,VNF,network functions virtualization,NFV',0,0,1),
(2785,'2019-04-05','What is uCPE',399,'A short talk on telco networking standards','<ul>\r\n<li><a href=\"https://blog.advaoptical.com/en/what-is-universal-cpe\" class=\"uri\">https://blog.advaoptical.com/en/what-is-universal-cpe</a></li>\r\n<li><a href=\"https://www.audiocodes.com/solutions-products/solutions/network-function-virtualization-nfv/universal-cpe-ucpe\" class=\"uri\">https://www.audiocodes.com/solutions-products/solutions/network-function-virtualization-nfv/universal-cpe-ucpe</a></li>\r\n<li><a href=\"https://netmanias.com/en/post/blog/12703/sdn-nfv-ucpe/what-is-universal-cpe-updated-at-may-2018\" class=\"uri\">https://netmanias.com/en/post/blog/12703/sdn-nfv-ucpe/what-is-universal-cpe-updated-at-may-2018</a></li>\r\n<li><a href=\"https://www.walkerfirst.com/uploads/files/literature/Skinny_Wire_17S.pdf?as_url_id=AAAAAAWx6lVCrvi0cYObNZzKbTqds3zxZOTme09iW_1bgRwXnxj5xBhDUZFsrEovlR-8QzYp5bjEFX-8gUDCSfEtxk2YBSqlqDxvUktl5hrlcCW3RFsY5EZqzULvKHnRBTv51vleaWM2y0uBOkqJjueTHAIu\" class=\"uri\">https://www.walkerfirst.com/uploads/files/literature/Skinny_Wire_17S.pdf?as_url_id=AAAAAAWx6lVCrvi0cYObNZzKbTqds3zxZOTme09iW_1bgRwXnxj5xBhDUZFsrEovlR-8QzYp5bjEFX-8gUDCSfEtxk2YBSqlqDxvUktl5hrlcCW3RFsY5EZqzULvKHnRBTv51vleaWM2y0uBOkqJjueTHAIu</a></li>\r\n</ul>',129,0,1,'CC-BY-SA','Network Function Virtualization,NFV,Universal customer premises equipment,uCPE',0,0,1),
(2729,'2019-01-17','Bash Tips - 18',1898,'Arrays in Bash (part 3)','<h1 id=\"bash-tips---18\">Bash Tips - 18 <small><small>(Extra auxiliary Bash tips)</small></small></h1>\r\n<h2 id=\"arrays-in-bash\">Arrays in Bash</h2>\r\n<p>This is the third of a small group of shows on the subject of arrays in Bash. It is also the eighteenth show in the <em>Bash Tips</em> sub-series.</p>\r\n<p>In the last show we looked at ways of accessing elements with negative indices and how to concatenate arrays. We then launched into parameter expansion in the context of arrays.</p>\r\n<p>There are a few more parameter expansion operations to look at in this episode, then in the next episode we will look in more depth at the <code>declare</code> built in command and at some of the commands that assist with loading data into arrays.</p>\r\n<h2 id=\"long-notes\">Long notes</h2>\r\n<p>I have provided detailed notes as usual for this episode, and these can be <a href=\"https://hackerpublicradio.org/eps/hpr2729/full_shownotes.html\">viewed here</a>.</p>\r\n<h2 id=\"links\">Links</h2>\r\n<ul>\r\n<li><a href=\"https://www.gnu.org/software/bash/manual/bash.html\">“<em>GNU BASH Reference Manual</em>”</a>\r\n<ul>\r\n<li>Section on <a href=\"https://www.gnu.org/software/bash/manual/bash.html#Arrays\">“Bash Arrays”</a></li>\r\n<li>Section on <a href=\"https://www.gnu.org/software/bash/manual/bash.html#Shell-Parameter-Expansion\">“Shell Parameter Expansion”</a></li>\r\n</ul></li>\r\n</ul>\r\n<ul>\r\n<li>Linux Documentation Project: <a href=\"https://www.tldp.org/LDP/abs/html/index.html\">Advanced Bash-Scripting Guide</a>\r\n<ul>\r\n<li><a href=\"https://www.tldp.org/LDP/abs/html/arrays.html\">Chapter 27: Arrays</a></li>\r\n</ul></li>\r\n<li><p><a href=\"https://hackerpublicradio.org/series/0042.html\">HPR series: <em>Bash Scripting</em></a></p></li>\r\n<li>Previous episodes under the heading <em>Bash Tips</em>:\r\n<ol>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=1648\">HPR episode 1648 “<em>Bash parameter manipulation</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=1843\">HPR episode 1843 “<em>Some Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=1884\">HPR episode 1884 “<em>Some more Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=1903\">HPR episode 1903 “<em>Some further Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=1951\">HPR episode 1951 “<em>Some additional Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2045\">HPR episode 2045 “<em>Some other Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2278\">HPR episode 2278 “<em>Some supplementary Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2293\">HPR episode 2293 “<em>More supplementary Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2639\">HPR episode 2639 “<em>Some ancillary Bash tips - 9</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2649\">HPR episode 2649 “<em>More ancillary Bash tips - 10</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2659\">HPR episode 2659 “<em>Further ancillary Bash tips - 11</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2669\">HPR episode 2669 “<em>Additional ancillary Bash tips - 12</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2679\">HPR episode 2679 “<em>Extra ancillary Bash tips - 13</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2689\">HPR episode 2689 “<em>Bash Tips - 14 (Some auxiliary Bash tips)</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2699\">HPR episode 2699 “<em>Bash Tips - 15 (More auxiliary Bash tips)</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2709\">HPR episode 2709 “<em>Bash Tips - 16 (Further auxiliary Bash tips)</em>”</
(2724,'2019-01-10','Using a DIN Rail to mount a Raspberry Pi',549,'I created DIN rail fittings for attaching my RPi 3B+ and an SSD disk','<h2 id=\"overview\">Overview</h2>\r\n<p>A <em>DIN Rail</em> is a metal rail for mounting pieces of electrical equipment inside an equipment rack, for performing tasks in a building, in a machine, and so forth. It’s common to see DIN rails holding circuit breakers for example.</p>\r\n<p>See the <a href=\"https://en.wikipedia.org/wiki/DIN_rail\" title=\"Wikipedia article on the DIN Rail\">Wikipedia article</a> on the subject for full details.</p>\r\n<p>A number of people in the Maker Community have made use of these rails, and there are a number of freely available designs for stands that can be 3D printed on which you can mount these rails. There are also designs for mounts onto which devices like Raspberry Pis and disks can be fitted and attached to a rail.</p>\r\n<p>This show will recount my experiences with creating a compact mounting system for one of my Raspberry Pi systems. I had the help of my son and his girlfriend in 3D printing the parts for this project.</p>\r\n<h2 id=\"long-notes\">Long notes</h2>\r\n<p>I have provided detailed notes and pictures for this episode, and these can be <a href=\"https://hackerpublicradio.org/eps/hpr2724/full_shownotes.html\">viewed here</a>.</p>\r\n<h2 id=\"links\">Links</h2>\r\n<ul>\r\n<li><p>Wikipedia article <a href=\"https://en.wikipedia.org/wiki/DIN_rail\"><em>DIN Rail</em></a></p></li>\r\n<li>Thingiverse designs used:\r\n<ul>\r\n<li><a href=\"https://www.thingiverse.com/thing:2610621\">DIN Mounts: Pi, Arduino and disks</a> by <a href=\"https://www.thingiverse.com/imstrng\">imstrng</a></li>\r\n<li><a href=\"https://www.thingiverse.com/thing:2068383\">DIN Rail Stand</a> by <a href=\"https://www.thingiverse.com/RedWraith\">RedWraith</a></li>\r\n</ul></li>\r\n</ul>\r\n<ul>\r\n<li>Other Thingiverse DIN Rail-related items:\r\n<ul>\r\n<li><a href=\"https://www.thingiverse.com/thing:2144527\">DIN Rail Stand v2</a> by <a href=\"https://www.thingiverse.com/philklaus\">philklaus</a></li>\r\n<li><a href=\"https://www.thingiverse.com/thing:2415721\">Raspberry Pi Zero Vertical Edge-Mounted DIN Mount</a> by <a href=\"https://www.thingiverse.com/coffeenut\">coffeenut</a></li>\r\n</ul></li>\r\n</ul>\r\n',225,0,1,'CC-BY-SA','3D printing,DIN rail,Raspberry Pi',0,0,1),
(2723,'2019-01-09','Using Elm in context of 4X game client',2671,'Tuula talks their decisions on structuring Elm application','<p>Original idea I had with my toy game project was to have Yesod render most of the user interface as static HTML and have as little client side scripting as possible. Later I realized that there would be parts with significant amount of client side code and it might be better if whole site was written in Elm.</p>\r\n<p>Couple goals I had in my mind when I started this:</p>\r\n<ul>\r\n<li>easy to work with</li>\r\n<li>type safe</li>\r\n<li>extensible</li>\r\n<li>user authorization\r\n<ul>\r\n<li>regular player</li>\r\n<li>administrator</li>\r\n</ul></li>\r\n</ul>\r\n<p>Backend is written in Haskell and front end in Elm. Communication between them is via REST interface and most of the data is in JSON. All JSON encoding / decoding is centralized (more or less), same with initiating requests to server.</p>\r\n<h2 id=\"api-endpoints\">API Endpoints</h2>\r\n<p>End points used for REST calls are defined in single data type that captures their name and parameters. These are used when initiating requests, meaning there’s smaller chance of typo slipping through.</p>\r\n<pre><code>type Endpoint\r\n = ApiStarDate\r\n | ApiResources\r\n | ApiStarSystem\r\n | ApiStar\r\n | ApiPlanet\r\n | ApiPopulation PlanetId\r\n | ApiBuilding PlanetId\r\n | ApiConstructionQueue PlanetId\r\n | ApiConstruction Construction\r\n | ApiBuildingConstruction\r\n | ApiAvailableBuildings</code></pre>\r\n<p>For example, sending a GET request to retrieve all construction projects on a planet is done as:</p>\r\n<pre><code>Http.send (ApiMsgCompleted << ConstructionsReceived) (get (ApiConstructionQueue planetId) (list constructionDecoder))</code></pre>\r\n<p>GET Request is sent to ApiConstructionQueue endpoint and it has planetId as parameter. When server sends response, our program will parse content of it will be a list that is parsed with constructionDecoder and create “ApiMsgCompleted ConstructionsReceived” message with result of the parsing. Update function will process this and store list of constructions somewhere safe for further use.</p>\r\n<h2 id=\"update-function\">Update function</h2>\r\n<p>Update function is in charge of reacting to messages (mouse clicks, page changes, responses from server). In a large program update function will quickly get big and unwieldy. Breaking it into smaller pieces (per page for example), will make maintenance easier. This way each page has their own message type and own update function to handle it. In addition there’s few extra ones (cleaning error display, processing API messages and reacting to page changes).</p>\r\n<p>Same way as API end points are encoded in a type, pages are too:</p>\r\n<pre><code>type Route\r\n = HomeR\r\n | ProfileR\r\n | StarSystemsR\r\n | StarSystemR StarSystemId\r\n | PlanetR StarSystemId PlanetId\r\n | BasesR\r\n | FleetR\r\n | DesignerR\r\n | ConstructionR\r\n | MessagesR\r\n | AdminR\r\n | LogoutR\r\n | ResearchR</code></pre>\r\n<p>routeToString function is used to map Route into String, that can be placed in hyperlink. Below is an excerp:</p>\r\n<pre><code>routeToString : Route -> String\r\nrouteToString route =\r\n case route of\r\n HomeR ->\r\n "/home"\r\n\r\n StarSystemR (StarSystemId sId) ->\r\n "/starsystem/" ++ String.fromInt sId\r\n\r\n PlanetR (StarSystemId sId) (PlanetId pId) ->\r\n "/starsystem/" ++ String.fromInt sId ++ "/" ++ String.fromInt pId</code></pre>\r\n<p>Because mapping needs to be bi-directional (Route used to define content of a href and string from a href used to define Route), there’s mapping to other direction too:</p>\r\n<pre><code>routes : Parser (Route -> a) a\r\nroutes =\r\n oneOf\r\n [ map HomeR top\r\n , map ProfileR (s "profile")\r\n , map ResearchR (s "research")\r\n , map StarSyste
(2803,'2019-05-01','Update on my Raspi 3 B OpenMedia Vault and Next Cloud instances',449,'A short podcast on how my little home servers are working or not','<ul>\r\n<li><p><a href=\"https://nextcloud.com/box/\" class=\"uri\">https://nextcloud.com/box/</a><br />\r\nThis link was the first product and it is not available any more.</p></li>\r\n<li><p><a href=\"https://ownyourbits.com/nextcloudpi/\" class=\"uri\">https://ownyourbits.com/nextcloudpi/</a><br />\r\nThis link tells you about all the different ways to do next cloud.</p></li>\r\n<li><p><a href=\"https://github.com/nextcloud/nextcloudpi/wiki/How-to-install-NextCloudPi\" class=\"uri\">https://github.com/nextcloud/nextcloudpi/wiki/How-to-install-NextCloudPi</a><br />\r\nThe link above is what worked exactly for me.</p></li>\r\n<li><p><a href=\"https://www.openmediavault.org/about.html\" class=\"uri\">https://www.openmediavault.org/about.html</a><br />\r\nThe link above is about what OMV is.</p></li>\r\n<li><p><a href=\"https://sourceforge.net/projects/openmediavault/files/Raspberry%20Pi%20images/\">https://sourceforge.net/projects/openmediavault/files/Raspberry%20Pi%20images/</a><br />\r\nIs were I got my image.</p></li>\r\n</ul>\r\n<p>I use a Toshiba 4TB non-powered drive external usb 3 drive.</p>\r\n',129,0,1,'CC-BY-SA','Raspberry Pi,NextCloud,openmediavault',0,0,1),
(2716,'2018-12-31','Really Simple YouTube',441,'Thaj explains how he makes YouTube come to him using RSS feeds','<p>Here are the two links I mentioned that let you pull RSS feeds out of YouTube</p>\r\n<ul>\r\n<li><a href=\"https://danielmiessler.com/blog/rss-feed-youtube-channel/\" class=\"uri\">https://danielmiessler.com/blog/rss-feed-youtube-channel/</a></li>\r\n<li><a href=\"https://support.google.com/youtube/answer/6224202?hl=en\" class=\"uri\">https://support.google.com/youtube/answer/6224202?hl=en</a></li>\r\n</ul>\r\n',270,0,0,'CC-BY-SA','RSS, YouTube, PeerTube, TInyTinyRSS, Internet Video',0,0,1),
(2739,'2019-01-31','Bash Tips - 19',1553,'Arrays in Bash (part 4)','<h2 id=\"arrays-in-bash\">Arrays in Bash <small><small>(Supplemental auxiliary Bash tips)</small></small></h2>\r\n<p>This is the fourth and last of a small group of shows on the subject of arrays in Bash. It is also the nineteenth show in the <em>Bash Tips</em> sub-series.</p>\r\n<p>In the last show we continued with the subject of parameter expansion in the context of arrays. There are other aspects of this that could be looked at, but we’ll leave it for the moment and may revisit it in the future.</p>\r\n<p>In this episode we will look in more depth at the <code>declare</code> (<code>typeset</code>) built in command and at some commands that are related (<code>readonly</code> and <code>local</code>), We will also look at the commands that assist with loading data into arrays: <code>mapfile</code> (<code>readarray</code>) and <code>read</code>.</p>\r\n<h2 id=\"long-notes\">Long notes</h2>\r\n<p>As usual I have provided detailed notes and examples for this episode, and these can be <a href=\"https://hackerpublicradio.org/eps/hpr2739/full_shownotes.html\">viewed here</a>.</p>\r\n<h2 id=\"links\">Links</h2>\r\n<ul>\r\n<li><a href=\"https://www.gnu.org/software/bash/manual/bash.html\">“<em>GNU BASH Reference Manual</em>”</a>\r\n<ul>\r\n<li>Section on <a href=\"https://www.gnu.org/software/bash/manual/bash.html#Arrays\">“Bash Arrays”</a></li>\r\n<li>Section on <a href=\"https://www.gnu.org/software/bash/manual/bash.html#Shell-Builtin-Commands\">“4 Shell Builtin Commands”</a>\r\n<ul>\r\n<li>Section on <a href=\"https://www.gnu.org/software/bash/manual/bash.html#Bourne-Shell-Builtins\">“4.1 Bourne Shell Builtins”</a></li>\r\n<li>Section on <a href=\"https://www.gnu.org/software/bash/manual/bash.html#Bash-Builtins\">“4.2 Bash Builtin Commands”</a></li>\r\n</ul></li>\r\n</ul></li>\r\n</ul>\r\n<ul>\r\n<li>Linux Documentation Project: <a href=\"https://www.tldp.org/LDP/abs/html/index.html\">Advanced Bash-Scripting Guide</a>\r\n<ul>\r\n<li><a href=\"https://www.tldp.org/LDP/abs/html/arrays.html\">Chapter 27: Arrays</a></li>\r\n</ul></li>\r\n<li><p><a href=\"https://hackerpublicradio.org/series/0042.html\">HPR series: <em>Bash Scripting</em></a></p></li>\r\n<li>Previous episodes under the heading <em>Bash Tips</em>:\r\n<ol>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=1648\">HPR episode 1648 “<em>Bash parameter manipulation</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=1843\">HPR episode 1843 “<em>Some Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=1884\">HPR episode 1884 “<em>Some more Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=1903\">HPR episode 1903 “<em>Some further Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=1951\">HPR episode 1951 “<em>Some additional Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2045\">HPR episode 2045 “<em>Some other Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2278\">HPR episode 2278 “<em>Some supplementary Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2293\">HPR episode 2293 “<em>More supplementary Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2639\">HPR episode 2639 “<em>Some ancillary Bash tips - 9</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2649\">HPR episode 2649 “<em>More ancillary Bash tips - 10</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2659\">HPR episode 2659 “<em>Further ancillary Bash tips - 11</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2669\">HPR episode 2669 “<em>Additional ancillary Bash tips - 12</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2679\">HPR episode 2679 “<em>Extra ancillary Bash tips - 13</em>”</a></li>\r\n<li><a href=\"https://
(2717,'2019-01-01','Mobile Device Security',621,'Cell phone cyber security 101','<h2 id=\"introduction\">Introduction</h2>\r\n<p>Hello and welcome to Hacker Public Radio, I’m Edward Miro and for this episode I decided to address mobile device security. As with most of the research and articles I’ve written in the past, these are geared toward standard users in a business setting and are meant to be a jumping off point for further research and to be a foundation for cyber security 101 level training classes. If you like what I do, and want to have me come speak to your team, feel free to email me.</p>\r\n<p>As an information security researcher, I have noticed a trend in what potential clients lately have been interested in: cell phones. Almost everyone I have consulted for in the area of private investigations make this area their main priority. This makes sense as users have started to transition to using mobile devices more and more. Not only do cell phones represent the main conduit to the internet for a huge chunk of people, but many use them for work also. Many companies have smartly presented policies against this, but there are still many organizations that allow bring-your-own-device style implementations. In the following podcast I will try to define the threats, defense and considerations in very broad strokes.</p>\r\n<p>Cell phones differ from a standard hacking target in a few ways. For the most part, many of the same vectors are still valid. Remote code execution however is more rare, but not out of the question. I’m going to attempt to present these different vectors in an ascending list of what is most likely to be used as an attack, in my humble (and possibly ignorant) opinion.</p>\r\n<h3 id=\"passive-surveillance\">1. Passive Surveillance</h3>\r\n<p>This vector is one many in the hacking world will already be familiar with and it is a major concern for mobile devices as well. Attackers can monitor an access point where the mobile device is connected and collect packets in all the usual ways. Open public WiFi is a treasure trove and tons of data that’s being sent in the clear can be collected, analyzed and leveraged by attackers.</p>\r\n<p>Defense here is a bit more complicated for the general user, but shouldn’t be too intrusive for most:</p>\r\n<ol type=\"1\">\r\n<li>Use a VPN on your mobile devices.</li>\r\n<li>Switch to a DNS provider that provides secure DNSSEC.</li>\r\n<li>Implement proper encryption on access points.</li>\r\n</ol>\r\n<h3 id=\"spyware\">2. Spyware</h3>\r\n<p>Many commercial spyware applications are readily available on both of the main app stores. The challenges for attackers lie in either gaining physical access to the unlocked device to install the spyware, or tricking the user into installing it themselves. Most often the target’s spouse or close contact does this. Some of these apps can be disguised to look like innocuous applications as a feature, but with devices that are rooted/jailbroken, they can be completely hidden from the user. I found a few surveys that state the average smart phone user has about 30 apps installed. I don’t think it’s unreasonable to suspect the average person wouldn’t notice a second calculator or calendar app. These apps feature the full gamut of what you’d expect from a spyware app.</p>\r\n<p>Defense against spyware is pretty simple:</p>\r\n<ol type=\"1\">\r\n<li>Don’t allow unsupervised access to your device.</li>\r\n<li>Use a strong passcode or biometric lock.</li>\r\n<li>Remove unused applications and be aware of new apps that may pop up.</li>\r\n<li>Don’t root or jailbreak your device.</li>\r\n</ol>\r\n<h3 id=\"social-engineering\">3. Social Engineering</h3>\r\n<p>The tried and true vector that has always worked and will continue to work is social engineering. It doesn’t matter what kind of device a target is using if you can get them to click a malicious link, open a malicious attachment, or disclose their password to the attackers. With a user’s password you can conduct a vast amount of surveillance through their G
(2718,'2019-01-02','Genre In Storytelling',750,'Lostnbronx takes a look at the importance of genre in storytelling.','<p>Many people see genres as being largely interchangeable, but are they really? Why can some stories only be told in a particular genre? When are genre stories truly alike? And when are setting, character, and plot more important than genre? Lostnbronx takes a quick, rambling look at this complicated subject.</p>\r\n',107,105,0,'CC-BY-SA','stories,storytelling,genre,lostnbronx',1,0,1),
(2725,'2019-01-11','The Illumos Shutdown Command Explained',812,'A short pod cast about the Illumos shutdown command','<p>In response to JWP\'s<ahref=\"https://hackerpublicradio.org/eps.php?id=2697\"target=\"_blank\">episode2697</a>and<ahref=\"https://hackerpublicradio.org/eps.php?id=2697#comments\"target=\"_blank\">ClaudioM\'s comment</a>, this show covers the <code>shutdown</code> command as it appeared in Sun Solaris and OpenSolaris, and currently appears in both Oracle Solaris and <a href=\"https://openindiana.org\" target=\"_blank\">OpenIndiana</a>.\r\n\r\n<p>\r\nThe quick version:\r\n</p>\r\n\r\n<ul>\r\n<li><code>shutdown</code></li>\r\n<li><code>-i</code> sets the destination init state (5 to shutdown, 6 to reboot, and so on; see <code>man init</code> for more)</li>\r\n<li><code>-y</code> to answer \"yes\" to the safeguard prompt asking you whether you really want to shutdown</li>\r\n<li><code>-g</code> to set how many seconds until shutdown. Default is 60.\r\n</li>\r\n</ul>\r\n\r\n<p>In practise, I don\'tevenusetheshutdowncommand.Iuse<code>poweroff</code>,whichdoesashutdownandpoweroff.</p>\r\n\r\n<p>\r\nBothshutdownandpoweroffrequirerootpermission.OnOpenIndiana,youcaneitheruse<code>sudobash</code>or<code>pfexecbash</code>togetarootprompt.\r\n</p>\r\n\r\n<p>Somelinks:</p>\r\n<p><a href=\"https://docs.openindiana.org/handbook/common-tasks/#system-shutdown-reboot\" target=\"_blank\">OpenIndiana handbook</a></p>\r\n<p><a href=\"https://docs.oracle.com/cd/E23824_01/html/821-1451/gldpm.html\" target=\"_blank\">Sun Microsystem docs</a> (with Oracle branding on it)</p>\r\n\r\n\r\n',78,0,0,'CC-BY-SA','sys admin,systems,unix,illumos',0,0,1),
(2733,'2019-01-23','Writing Web Game in Haskell - News and Notifications',2837,'Tuula talks about the game they\'rewritinginHaskellandconvolutednewssystemtheymade.','<h2id=\"intro\">Intro</h2>\r\n<p>Newsandnotificationsareusedinthegametolettheplayersknowsomethingnoteworthyhashappened.Itcouldbediscoveryofanewplanetorconstructionprojectfinallyfinishing.</p>\r\n<p>Allrelevantinformationinthenewsishyperlinked.Ifnewsmentionsaplanet,playercanclickthelinkandviewcurrentinformationofthatplanet.</p>\r\n<h2id=\"server-interface\">Serverinterface</h2>\r\n<p>Serverhasthreeresourcesfornews,althoughwe’reconcentratingonlyonehere:</p>\r\n<pre><code>/api/messageApiMessageRGETPOST\r\n/api/message/#NewsId ApiMessageIdR DELETE\r\n/api/icon ApiMessageIcons GET</code></pre>\r\n<p>First one is for retrieving all messages and posting a new one. Second one is for marking one read and third one is for retrieving all icons that players can attach to messages written by them.</p>\r\n<h2 id=\"database\">Database</h2>\r\n<p>Database is defined in /config/models file. For news, there’s only one table:</p>\r\n<pre><code>News json\r\n content Text\r\n factionId FactionId\r\n date Int\r\n dismissed Bool\r\nderiving Show Read Eq</code></pre>\r\n<p>Content field contains the actual news article data as serialized JSON. This allows storing complex data, without having to have lots of columns or multiple tables.</p>\r\n<h2 id=\"domain-objects\">Domain objects</h2>\r\n<p>There are many kinds of messages that players might see, but we’ll concentrate on one about discovering a new planet</p>\r\n<p>All different kinds of articles are of same type: NewsArticle. Each different kind of article has their own value constructor (PlanetFound in this particular case). And each of those value constructors has single parameter of a specific type that holds information particular to that certain article (PlanetFoundNews in this case). Adding a new article means adding a new value constructor and record to hold the data.</p>\r\n<pre><code>data NewsArticle =\r\n StarFound StarFoundNews\r\n | PlanetFound PlanetFoundNews\r\n | UserWritten UserWrittenNews\r\n | DesignCreated DesignCreatedNews\r\n | ConstructionFinished ConstructionFinishedNews\r\n\r\n\r\ndata PlanetFoundNews = PlanetFoundNews\r\n { planetFoundNewsPlanetName :: Text\r\n , planetFoundNewsSystemName :: Text\r\n , planetFoundNewsSystemId :: Key StarSystem\r\n , planetFoundNewsPlanetId :: Key Planet\r\n , planetFoundNewsDate :: Int\r\n }</code></pre>\r\n<p>Given a News object, we can turn it into NewsArticle. These are much nicer to deal with that densely packed News that is stored in database:</p>\r\n<pre><code>parseNews :: News -> Maybe NewsArticle\r\nparseNews =\r\n decode . toLazyByteString . encodeUtf8Builder . newsContent</code></pre>\r\n<p>Because parsing arbitrary JSON might fail, we get Maybe NewsArticle, instead of NewsArticle. It is possible to write the same code in longer way:</p>\r\n<pre><code>parseNews news =\r\n let\r\n content = newsContent news\r\n utf8Encoded = encodeUtf8Builder content\r\n byteString = toLazyByteString utf8Encoded\r\n in\r\n decode byteString</code></pre>\r\n<p>Similarly there’s two other functions for dealing with Entities (primary key, data - pair really) and list of Entities. Note that parseNewsEntities filters out all News that it didn’t manage to turn into NewsArticle. They have following signatures:</p>\r\n<pre><code>parseNewsEntity :: Entity News -> (Key News, Maybe NewsArticle)\r\n\r\nparseNewsEntities :: [Entity News] -> [(Key News, NewsArticle)]</code></pre>\r\n<p>Writing JSON encoding and decoding is tedious, template Haskell can help us here:</p>\r\n<pre><code>$(deriveJSON defaultOptions ''PlanetFoundNews)\r\n$(deriveJSON defaultOptions ''NewsArticle)</code></pre>\r\n<h2 id=\"turning-articles-into-json\">Turning Articles into JSON</
(2726,'2019-01-14','Home Theater - Part 2 Software (High Level)',1249,'I go over a high level of my notes for the software on my Media box as it relates to TV/Movies/Music','<p><a href=\"https://docs.google.com/document/d/1E1xAwWpq-C4vEh8LCRw7MD7jnaclX9Faf2L3dZWiqQY\" class=\"uri\">https://docs.google.com/document/d/1E1xAwWpq-C4vEh8LCRw7MD7jnaclX9Faf2L3dZWiqQY</a></p>\r\n<ul>\r\n<li>Future Eps for Series:\r\n<ul>\r\n<li>Sonarr / Filename Fixes</li>\r\n<li>SABnzbd</li>\r\n<li>Subsonic / orpheus.network /Audio Fixes</li>\r\n</ul></li>\r\n</ul>\r\n\r\n<p><a href=\"https://hackerpublicradio.org/eps/hpr2726.pdf\">Local copy of the shownotes</a></p>',36,0,0,'CC-BY-SA','kodi, deluge,Sonarr,Plex,Subsonic,SpiderOakONE,Zoneminder,Borg Backup,rclone,Redshift,Audacity',0,0,1),
(2727,'2019-01-15','Passwords',467,'How to do passwords better. ','<h2 id=\"introduction\">Introduction</h2>\r\n<p>Hello and welcome to Hacker Public Radio, I’m Edward Miro and for this episode I decided to record an episode on the importance of good passwords. This will be part one in a series of podcasts I’m going to call “Information Security for Everyone”. As with most of the content I create in the world of infosec, my goal is to present the information in a way that a majority of people can get value from it and anyone can play this for a friend, colleague or family member and make it easy for the non-hackers in our lives to understand.</p>\r\n<h2 id=\"passwords\">Passwords</h2>\r\n<p>One of the first things most people think about when it comes to online safety is their password. We all know that passwords are to our online accounts what keys are for our locks. Would you use the same key for your house, your car, your office and your safety deposit box? Of course not. And if you did, what would happen if a bad guy could get a copy of just that one key? They’d have access to everything. With so much of our personal, confidential, financial and medical information accessible from our various online accounts, what can we do to make things as safe as possible?</p>\r\n<p>For me personally I employ and advise a three faceted approach:</p>\r\n<ol type=\"1\">\r\n<li>Complex passwords</li>\r\n<li>Unique passwords</li>\r\n<li>Two-factor authentication (where available)</li>\r\n</ol>\r\n<p>Clearly the solution is to use a unique password for each account and make them complicated enough that an attacker couldn’t guess it or crack it in an amount of time that would be actionable. One problem this presents to general users is the inconvenience and difficulty in remembering these passwords or storing them in a secure way. This leads into my first bit of advice:</p>\r\n<h2 id=\"password-managers\">Password Managers</h2>\r\n<p>My recommendation is to use a password manager. I’m going to make references to managers such as LastPass because that’s the one I’ve always used, but I’m not saying it’s the best or would be the best for you. There are many great options and I would rather people use the one that works the best for them and not merely the one I like best. Anyways. Applications like LastPass give you the ability to store all passwords in your encrypted “vault” and then request them through browser add-ons or standalone applications. They also have built in features that allow you to generate secure passwords at any length or complexity.</p>\r\n<p>When using a password manager, all you have to remember is your ONE master password. When you sign in, the manager can then decrypt all your saved passwords and let you use them. When I sign up for a website, I use LastPass to generate the longest and most complex password supported by the site and it gets stored in my vault safely for later use.</p>\r\n<p>There are various options online to choose from and I suggest you do some research and try a few different ones to see what is comfortable for you. One thing to consider when using a password manager is that the master password is your single point of failure and should be a long and complex password that you don’t use ANYWHERE else.</p>\r\n<p>If you’re wondering how to come up with a secure password that you can remember there are various strategies online, but I follow this:</p>\r\n<p>Take a poem, song lyrics or phrase that is easy for you to remember. For this example I’ll use the phrase:</p>\r\n<pre><code>"The stars at night are big and bright. Deep in the heart of Texas."</code></pre>\r\n<p>Then I take the first letters from each word and that gives me:</p>\r\n<pre><code>TsanababdithoT.</code></pre>\r\n<p>Then I swap out the vowels for some numbers/special characters. And that gives me:</p>\r\n<pre><code>T5@n@b@bd1th0T</code></pre>\r\n<p>I checked that password on Dashlane’s Password Strength Checker, and got the following results:</p>\r\n<pre><code>It would take a computer about
(2730,'2019-01-18','Resizing images for vcard on Android',688,'Automating the steps needed to get images formatted for VCard import into Android phones','<p>I have had problems importing vcards onto my Android phone. After a lot of troubleshooting, I tracked it down to embedded images in the card. The PHOTO;VALUE field to be precise.</p>\r\n\r\n<p>Some images worked and some didn\'t,andlookingatthepropertiessomethatworkedwerelargerthanothersthatdidn\'t. In the end I tracked down a post on <a href=\"https://stackoverflow.com/questions/17834815/how-to-find-the-max-image-size-supported-for-contacts-images\">stackoverflow</a> that hinted that the aspect ratio was important. And sure enough it was.</p>\r\n\r\n<blockquote class=\"wp-block-quote\">\r\n<p>starting with jelly bean (4.1), android now supports contact images that are 720x720.<br />before, starting with ICS (4.0), android has supported contact images that are 256x256.<br />and before that, contact photos had just a size of a thumbnail - 96x96.</p>\r\n<cite><a href=\"https://stackoverflow.com/users/878126/android-developer\">Stack exchange</a> </cite>\r\n</blockquote>\r\n\r\n\r\n<p>I tried a 720x720 on a few phones but decided to settle on 256x256 for now. </p>\r\n\r\n\r\n<p>To do image manipulation, I tend to use the <a href=\"https://www.graphicsmagick.org/\">GraphicsMagick</a> tools instead of the more popular <a href=\"https://www.imagemagick.org/script/index.php\">ImageMagick</a> suite. You should be able to achieve the same result in either.</p>\r\n\r\n\r\n<p>My requirements were:</p>\r\n<ul>\r\n<li>The images should be scaled so that the maximum height/width shrinks to 256, maintaining the aspect ratio.</li>\r\n<li>The images should always be 256x256 in size.</li>\r\n<li>Scaled images should be padded and centered on a white background.</li>\r\n<li>All color profile information should be removed.</li>\r\n</ul>\r\n\r\n\r\n<p>To use an example I took the following image and saved it as Linus_Torvalds.jpg</p>\r\n\r\n\r\n<p>By <a title=\"User:Krd\" href=\"//commons.wikimedia.org/wiki/User:Krd\">Krd</a> (photo)<a class=\"new\" title=\"User:Von Sprat (page does not exist)\" href=\"//commons.wikimedia.org/w/index.php?title=User:Von_Sprat&action=edit&redlink=1\">Von Sprat</a> (crop/extraction) - <a title=\"File:LinuxCon Europe Linus Torvalds 03.jpg\" href=\"//commons.wikimedia.org/wiki/File:LinuxCon_Europe_Linus_Torvalds_03.jpg\">File:LinuxCon Europe Linus Torvalds 03.jpg</a>, <a title=\"Creative Commons Attribution-Share Alike 4.0\" href=\"https://creativecommons.org/licenses/by-sa/4.0\">CC BY-SA 4.0</a>, <a href=\"https://commons.wikimedia.org/w/index.php?curid=54706023\">Link</a></p>\r\n\r\n\r\n<p>Step one is to use the <a href=\"https://href="https://www.graphicsmagick.org/GraphicsMagick.html#details-size\">-size</a> 256x256 option which you would think would do the scaling, but in fact it only reduces the file to 366x509 which is not what I expected.</p>\r\n\r\n<pre><code>$ gm convert -size 256x256 \"Linus_Torvalds.jpg\" Linus_Torvalds_1.jpg<br />$ gm identify Linus_Torvalds_1.jpg\r\nLinus_Torvalds_1.jpg JPEG 366x509+0+0 DirectClass 8-bit 56.1Ki 0.000u 0m:0.000002</code></pre>\r\n\r\n\r\n<p><img style=\"border-style: solid;\" src=\"https://hackerpublicradio.org/eps/hpr2730/Linus_Torvalds_1.jpg\" /></p>\r\n\r\n\r\n<p>However it appears that the option is used when creating new files, and is also used by the processor to determine the intended target size. Which is why I left it in. So what we actually need is the <a href=\"https://www.graphicsmagick.org/GraphicsMagick.html#details-resize\">-resize</a> option.</p>\r\n\r\n<pre><code>\r\n$ gm convert -size 256x256 \"Linus_Torvalds.jpg\" -resize 256x256 Linus_Torvalds_2.jpg\r\n$ gm identify Linus_Torvalds_2.jpg\r\nLinus_Torvalds_2.jpg JPEG 184x256+0+0 DirectClass 8-bit 47.7Ki 0.000u 0m:0.000001s</code><code>\r\n</code></pre>\r\n\r\n<p><img style=\"border-style: solid;\" src=\"https://hackerpublicradio.org/eps/hpr2730/Linus_Torvalds_2.jpg\" /></p>\r\n\r\n<p>So this has done a good job at sca
(2728,'2019-01-16','The Unreliable Narrator In Storytelling',814,'Lostnbronx looks at unreliable narrators and narrative techniques in stories.','<p>In some stories, the narrator or dominating character can’t be trusted by the audience, creating opportunities for various storytelling effects. What makes for an unreliable narrator? What are some of the strengths and weaknesses of this technique? How can the underlying structure of a tale be similar to an unreliable narrator, even if the story doesn’t actually have one? Lostnbronx takes a rambling, off-the-cuff look at this interesting literary tool</p>\r\n',107,105,0,'CC-BY-SA','stories,storytelling,narration,lostnbronx',0,0,1),
(2731,'2019-01-21','My 8 bit Christmas',1579,'I got a new, old computer for Christmas - an Acorn BBC microcomputer model B.','<p>For Christmas 2018 Santa – well, Mrs mcnalu – gave me a <a href=\"https://en.wikipedia.org/wiki/BBC_Micro\">BBC Model B</a> which was my first computer back in the early 1980s. This request was heavily implied in <a href=\"https://tuxjam.otherside.network/?p=382\">TuxJam 70 - Gift for Geeks</a>.</p>\r\n<p>I can highly <a href=\"https://www.ebay.co.uk/usr/retrofix-uk?_trksid=p2047675.l2559\">recommend the seller</a> who, as you will hear, was extremely helpful when this 36 year old bundle of 8 bit loveliness became very poorly on Boxing Day. It came with a Turbo MMC installed and you can see it in action on <a href=\"https://www.youtube.com/watch?v=FunVINQS0Rw\">another BBC Model B in this video</a>.</p>\r\n<p>The noise you hear at the start - the beeeeee BEEP - is the sound of me turning on the BBC. I mention in the show that mode 0 of the Beeb, as it is affectionately known, has 80 columns and 40 rows. This isn’t quite right, there are only 32 rows in mode 0.</p>\r\n',268,0,0,'CC-BY-SA','retro,BBC,8-bit,assembler',0,0,1),
(2734,'2019-01-24','Mashpodder',1139,'A poor rushed attempt at covering the excellent podcast client mashppoder','<p>After I recorded this episode I had a little look on the HPR site I found that Ken Fallon had already covered mashpodder, no doubt he did a better job than me as this was done in a bit of a rush.</p>\r\n<p>Hopefully somebody will find this of some use</p>\r\n<p>Related links below:-</p>\r\n<ul>\r\n<li><p>HPR episode by Ken Fallon covering Mashpodder<br />\r\n<a href=\"https://hackerpublicradio.org/eps.php?id=0481\" class=\"uri\">https://hackerpublicradio.org/eps.php?id=0481</a></p></li>\r\n<li><p>HPR episode where I talk about my Compaq Ipaq home server<br />\r\n<a href=\"https://hackerpublicradio.org/eps.php?id=2112\" class=\"uri\">https://hackerpublicradio.org/eps.php?id=2112</a></p></li>\r\n<li><p>HPR episode where I cover my previous pocast client Hpodder<br />\r\n<a href=\"https://hackerpublicradio.org/eps.php?id=2106\" class=\"uri\">https://hackerpublicradio.org/eps.php?id=2106</a></p></li>\r\n<li><p>Bashpodder homepage<br />\r\n<a href=\"https://lincgeek.org/bashpodder/\" class=\"uri\">https://lincgeek.org/bashpodder/</a></p></li>\r\n<li><p>Mashpodder homepage<br />\r\n<a href=\"https://github.com/chessgriffin/mashpodder\" class=\"uri\">https://github.com/chessgriffin/mashpodder</a> The original link to mashpodder on google code is dead, currently now on github</p></li>\r\n<li><p>Link to the original Linux reality also now dead, but found a link archive to the shows on podbay<br />\r\n<a href=\"https://podbay.fm/show/125849458\" class=\"uri\">https://podbay.fm/show/125849458</a></p></li>\r\n<li><p>Link to the excellent GNU world order by Klaatu, I think it was this episode that he mentioned the great Chess Griffin from Linux reality. Apologies if this is the wrong episode.<br />\r\n<a href=\"https://gnuworldorder.info/audiophile/gnuWorldOrder_12x24.ogg\" class=\"uri\">https://gnuworldorder.info/audiophile/gnuWorldOrder_12x24.ogg</a></p></li>\r\n</ul>\r\n',201,0,1,'CC-BY-SA','Podcast, ncurses, command-line',0,0,1),
(2750,'2019-02-15','Windmill is on the Fritz',270,'Using Fritzing to help reverse engineer a circuit in a winter model village windmill','<p>\r\nIn this episode Ken uses <a href=\"https://fritzing.org/\">Fritzing</a> tool to keep track of how a winter model village windmill is wired together. Leading to identifying the problem component.\r\n</p>\r\n<p><a href=\"https://hackerpublicradio.org/eps/hpr2750/xmas-mill.fzz\"><img src=\"https://hackerpublicradio.org/eps/hpr2750/xmas-mill_schem.jpg\" /></a></p>\r\n\r\n<p>\r\nFritzing is an open-source initiative to develop amateur or hobby CAD software for the design of electronics hardware, to support designers and artists ready to move from experimenting with a prototype to building a more permanent circuit. It was developed at the University of Applied Sciences of Potsdam.\r\n<br />\r\nFrom <a href=\"https://en.wikipedia.org/wiki/Fritzing\">https://en.wikipedia.org/wiki/Fritzing</a></p>',30,103,0,'CC-BY-SA','Fritzing, Reverse Engineering, LED',0,0,1),
(2732,'2019-01-22','Storytelling formula compliance',1692,'Telling a story? want a reaction? USE THE FORMULA','<p>\r\nStorytelling has had a formula for yearsAndYears. Some people speak of it in disdain (\"it was too formulaïc\") and others (creative writing and intro film teachers, mostly) praise it. Everybody else (us) is a sucker for it.\r\n</p>\r\n\r\n<p>\r\nHere is the literal formula, in pseudo code:\r\n</p>\r\n\r\n<pre><code>{A} \r\n{A} Reinforced\r\n\r\n{Z}\r\n\r\n{A} Returned\r\n\r\n{B...Y}\r\n\r\n{Z} Returned\r\n</code></pre>\r\n\r\n<p>\r\nYou can (and should, because it\'sfreeandyoucanthrowoutyourworkifyoudon\'t like it) practise this formula by plugging in events to represent A and Z, where A and Z are polar opposites.\r\n</p>\r\n\r\n<p>\r\nReally obvious examples are any given romantic comedy:\r\n</p>\r\n\r\n<pre><code>{A} Jack is A=\"single and free\"\r\n{A} Scene to reinforce that Jack is in relationships with no strings attached. Jack is {A}.\r\n\r\n{Z} Jack meets Jill, realises she makes him happy. He decides he\'shadenoughofbeing{A}andwanttobe{Z=married}\r\n\r\n{A}ReunionwitholdschoolmatemakesJackquestionhisresolve.HeleavesJillsohecanbe{A}\r\n\r\n{B...Y}Plothappens.Jackdoesstuff,Jilldoesstuff.Funny?Tragic?Youdecide!\r\n\r\n{Z}Jackrealizesatlastthathe\'s only happy with Jill, and that being {Z} with Jill is the only way to be truly free.\r\n</code></pre>\r\n\r\n<p>\r\nYou can also try it with the old Evil Empire plot line.\r\n</p>\r\n\r\n<pre><code>{A} Jill is an {A=obedient citizen}. Loves her mama, loves Jesus and America, too.\r\n{A} Scene in which Jill witnesses a Rebel being mistreated unjustly, but does nothing to stand up for what is right, because she is {A}.\r\n\r\n{Z} Jill meets Jack, an outlaw and rebel against the Empire. He\'sintrouble,soshehelpshimevadethepolice.\r\n\r\n{A}Jill,horrifiedatherownrebellion,conformsallthemore.SheisdedicatedtotheEmpire,andworksdiligentlytohuntdownJackandhisragtagbandofrebels.\r\n\r\n{B...Y}Plothappens.Action,laserguns,laserswords,nationalism,motorcyclegangs.\r\n\r\n{Z}Jill,seeingthedevastationherallegiancehascaused,realisesthattheEmpireisactuallyEvil.Shejoinstherebelstofightforfreedom.\r\n</code></pre>\r\n\r\n<p>\r\nNowgopracticethis.Soonyouwillbetellingstories,jokes,andanecdotesthathaveaclearbeginning,aclearconflict,andaclearending.\r\n</p>\r\n\r\n',78,99,1,'CC-BY-SA','story,character,plot,writing',0,0,1),
(2735,'2019-01-25','Soffritto',138,'A short episode on a common cookery technique','<p>Hello and a belated Happy New Year to you all in HPR land, Ken has recently made a call for more shows as the queue is a little light at the moment so I was pondering what to waffle on about.</p>\r\n<p>You may know from a couple of my previous shows that as well as being into tech and Linux I’m also a keen Cook, and try and prepare as much of the food we eat at home from scratch as possible.</p>\r\n<p>One of the keys to good dishes is a base of sweated vegetables such as onion, celery carrot and garlic which when cooked in olive oil, is called a <em>Soffritto</em> in Italian cookery. In other parts of the Mediterranean and Latin America where Europeans settled this base to dishes may include other vegetables such as peppers, tomatoes and mushrooms, and have other names such as <em>mirepoix</em> (/mɪərˈpwɑː/ meer-PWAH); but the idea is the same to give a base flavour to soups, sauces, risotto and stew type dishes.</p>\r\n<p>Although not called the same thing this is also replicated in Asian cookery where spices and other aromatics are included such as ginger, lemon grass, chillies, cumin and coriander seeds.</p>\r\n<p>While it is not obligatory to start dishes in such a way if you do use a base of flavours like this when cooking you will find that the finished dish has a more complex and deep flavour at the end, so if you don’t do this give it a try.</p>\r\n<p>A simple starter is to make a tomato sauce for pasta using a base of finely chopped onion, celery, carrot and garlic soften all the vegetables in a pan with some olive oil, add a tin of tomatoes or jar of passata (sieved tomatoes) reduce for 10-15 minutes until all the flavours combine and use as a sauce over pasta with grated cheese.</p>\r\n<p><a href=\"https://en.wikipedia.org/wiki/Sofrito\" class=\"uri\">https://en.wikipedia.org/wiki/Sofrito</a></p>\r\n',338,93,0,'CC-BY-SA','Food, cookery, how to, food preparation',0,0,1),
(2736,'2019-01-28','Response to show 2720',1104,'Some suggestions on how to improve a Bash script','<h2 id=\"introduction\">Introduction</h2>\r\n<p>On January 4<sup>th</sup> 2019 Ken Fallon did a great show entitled <a href=\"https://hackerpublicradio.org/eps.php?id=2720\" title=\"Download youtube channels using the rss feeds\"><em>hpr2720 :: Download youtube channels using the rss feeds</em></a> where he presented a Bash script called <a href=\"https://hackerpublicradio.org/eps/hpr2720/youtube-rss.bash\" title=\"youtube-rss.bash\"><code>youtube-rss.bash</code></a> for managing YouTube downloads through RSS feeds.</p>\r\n<p>Ken said he welcomed constructive feedback <font size=\"+3\">☺</font></p>\r\n<p>When I see a Bash script these days I usually find myself looking for ways to rewrite it to make it fit in with what I have been learning while doing my <em>Bash Tips</em> sub-series. Either that or I find it’s got some better ideas than I’ve been using which I have to find out about.</p>\r\n<p>I also spend time going over my own old scripts (I was writing them in the 1990’s in some cases) and trying to incorporate newer Bash features.</p>\r\n<p>Suffice it to say that I spotted some areas for improvement in Ken’s script and thought this might be the way to share my thoughts about them. We’re low on shows as I write this, so that gave me more motivation to make a show rather than add a comment or send Ken an email.</p>\r\n<p><small><b>Apology:</b> I’m still suffering from the aftermath of some flu-like illness so have had to edit coughing fits out of the audio at various points. If you detect any remnants then I’m sorry!</small></p>\r\n<h2 id=\"long-notes\">Long notes</h2>\r\n<p>I have provided detailed notes as usual for this episode, and these can be <a href=\"https://hackerpublicradio.org/eps/hpr2736/full_shownotes.html\">viewed here</a>.</p>\r\n<h2 id=\"links\">Links</h2>\r\n<ul>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2720\">HPR episode 2720 “<em>hpr2720 :: Download youtube channels using the rss feeds</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps/hpr2720/youtube-rss.bash\"><code>youtube-rss.bash</code></a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Cat_(Unix)\">Wikipedia article on <code>cat</code></a>\r\n<ul>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Cat_(Unix)#Useless_use_of_cat\">Useless use of <code>cat</code></a></li>\r\n</ul></li>\r\n</ul>',225,42,1,'CC-BY-SA','Bash,ShellCheck',0,0,1),
(2737,'2019-01-29','My Pioneer RT-707 Reel-to-Reel Tape Deck',1381,'An intro to more of my legacy audio equipment.','<p>I\'vehadthisPioneerRT-707reel-to-reeltapedeckforsomethinglike10years,butonlyrecentlystartedusingitwithenthusiasm.InthisepisodeItalkaboutthetapedeck,aboutthetechnology,andaboutmymemoriesofusingthiskindofaudiotapeasakid.Idemonstrateplaybackofoneofmyparents\' mix tapes, and I also used this machine to record the last few minutes of the podcast onto a reel to reel tape, which of course I then had to transfer back to digital before submitting the show.</p>\r\n\r\n<p>Click image below to see a photo album relating to the tape deck.</p>\r\n\r\n<a href=\"https://www.flickr.com/photos/137675441@N05/albums/72157705976621534\" title=\"Pioneer Reel-to-Reel Tape Deck\"><img src=\"https://hackerpublicradio.org/eps/hpr2737_46803567611_7e1583f534_z.jpg\" alt=\"Pioneer Reel-to-Reel Tape Deck\"></a>\r\n\r\n<p>Tape deck in action (video)</p>\r\n\r\n<p>\r\n<a href=\"https://www.youtube.com/embed/VezOKPwhZgg\"><img src=\"https://hackerpublicradio.org/eps/hpr2737_maxresdefault.jpg\" />\r\n</p>',238,0,0,'CC-BY-SA','audio, vintage audio, stereo components, audio tape, recording',0,0,1),
(3046,'2020-04-06','HPR Community News for March 2020',4545,'HPR Volunteers talk about shows released and comments posted in March 2020','<style>\ntable td.shrink {\n white-space:nowrap\n}\n</style>\n\n<h2>New hosts</h2>\n<p>\nWelcome to our new host: <br />\n\n <a href=\"https://hackerpublicradio.org/correspondents/0385.html\" target=\"_blank\">crvs</a>.\n</p>\n\n<h2>Last Month\'sShows</h2>\n<tableid=\"t01\">\n<tr>\n<th>Id</th>\n<th>Day</th>\n<th>Date</th>\n<th>Title</th>\n<th>Host</th>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3021\"target=\"_blank\">3021</a></strong></td>\n<td>Mon</td>\n<tdclass=\"shrink\">2020-03-02</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3021\"target=\"_blank\">HPRCommunityNewsforFebruary2020</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0159.html\"target=\"_blank\">HPRVolunteers</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3022\"target=\"_blank\">3022</a></strong></td>\n<td>Tue</td>\n<tdclass=\"shrink\">2020-03-03</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3022\"target=\"_blank\">FOSDEM2020StandInterviews</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0030.html\"target=\"_blank\">KenFallon</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3023\"target=\"_blank\">3023</a></strong></td>\n<td>Wed</td>\n<tdclass=\"shrink\">2020-03-04</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3023\"target=\"_blank\">CritiqueMyScript,Episode1-Qots-Crew-Gen</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0380.html\"target=\"_blank\">Carl</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3024\"target=\"_blank\">3024</a></strong></td>\n<td>Thu</td>\n<tdclass=\"shrink\">2020-03-05</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3024\"target=\"_blank\">Afunnythinghappenedtheotherday</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0201.html\"target=\"_blank\">MrX</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3025\"target=\"_blank\">3025</a></strong></td>\n<td>Fri</td>\n<tdclass=\"shrink\">2020-03-06</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3025\"target=\"_blank\">KeepunwantedmessagesofftheFediverse</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0198.html\"target=\"_blank\">Ahuka</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3026\"target=\"_blank\">3026</a></strong></td>\n<td>Mon</td>\n<tdclass=\"shrink\">2020-03-09</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3026\"target=\"_blank\">HexBugandBattleBots</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0036.html\"target=\"_blank\">operat0r</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3027\"target=\"_blank\">3027</a></strong></td>\n<td>Tue</td>\n<tdclass=\"shrink\">2020-03-10</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3027\"target=\"_blank\">Whatisquantumcomputingandwhyshouldwecare?</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0379.html\"target=\"_blank\">mightbemike</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3028\"target=\"_blank\">3028</a></strong></td>\n<td>Wed</td>\n<tdclass=\"shrink\">2020-03-11</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3028\"target=\"_blank\">MonadsandHaskell</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0385.html\"target=\"_blank\">crvs</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3029\"target=\"_blank\">3029</a></strong></td>\n<td>Thu</td>\n<tdclass=\"shrink\">2020-03-12</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3029\"target=\"_blank\">AtUnionStationwithatraindelay</a></td>\n<td><ahref=
(2745,'2019-02-08','My YouTube Subscriptions #1',1262,'Part one of my list of subscribed channels','<p>I am subscribed to a number of YouTube channels, and I am sharing them with you</p>\r\n<ul>\r\n<li>Deep Look - <a href=\"https://www.youtube.com/channel/UC-3SbfTPJsL8fJAPKiVqBLg\" class=\"uri\">https://www.youtube.com/channel/UC-3SbfTPJsL8fJAPKiVqBLg</a></li>\r\n<li>Axanar - <a href=\"https://www.youtube.com/channel/UCxRrQIpejUXUi8i4mAbzSlg\" class=\"uri\">https://www.youtube.com/channel/UCxRrQIpejUXUi8i4mAbzSlg</a></li>\r\n<li>Lawrence Systems - <a href=\"https://www.youtube.com/channel/UCHkYOD-3fZbuGhwsADBd9ZQ\" class=\"uri\">https://www.youtube.com/channel/UCHkYOD-3fZbuGhwsADBd9ZQ</a></li>\r\n<li>Rick Beato - <a href=\"https://www.youtube.com/channel/UCJquYOG5EL82sKTfH9aMA9Q\" class=\"uri\">https://www.youtube.com/channel/UCJquYOG5EL82sKTfH9aMA9Q</a></li>\r\n<li>Wolters’ World - <a href=\"https://www.youtube.com/channel/UCFr3sz2t3bDp6Cux08B93KQ\" class=\"uri\">https://www.youtube.com/channel/UCFr3sz2t3bDp6Cux08B93KQ</a></li>\r\n<li>Fab Four Archivist - <a href=\"https://www.youtube.com/channel/UCxWFyPG8Qgj-1BVqC_r6rLg\" class=\"uri\">https://www.youtube.com/channel/UCxWFyPG8Qgj-1BVqC_r6rLg</a></li>\r\n<li>Fraser Cain - <a href=\"https://www.youtube.com/channel/UCogrSQkBJn1KF0N9I4oM7eQ\" class=\"uri\">https://www.youtube.com/channel/UCogrSQkBJn1KF0N9I4oM7eQ</a></li>\r\n<li>Science and Futurism with Isaac Arthur - <a href=\"https://www.youtube.com/channel/UCZFipeZtQM5CKUjx6grh54g\" class=\"uri\">https://www.youtube.com/channel/UCZFipeZtQM5CKUjx6grh54g</a></li>\r\n<li>Creativity RV - <a href=\"https://www.youtube.com/channel/UCigPwB_DERbV5BlwV4OY9mw\" class=\"uri\">https://www.youtube.com/channel/UCigPwB_DERbV5BlwV4OY9mw</a></li>\r\n<li>Drivin’ and Vibin’ - <a href=\"https://www.youtube.com/channel/UClkhrrakVty75SWLJIbcxDA\" class=\"uri\">https://www.youtube.com/channel/UClkhrrakVty75SWLJIbcxDA</a></li>\r\n<li>Hebard’s Travels - <a href=\"https://www.youtube.com/channel/UCQ5BTuWY7B0hTaa9zK0JKNg\" class=\"uri\">https://www.youtube.com/channel/UCQ5BTuWY7B0hTaa9zK0JKNg</a></li>\r\n<li>RV Roof Installation - <a href=\"https://www.youtube.com/channel/UCPbqiR5gZQukf6uk8waWcoA\" class=\"uri\">https://www.youtube.com/channel/UCPbqiR5gZQukf6uk8waWcoA</a></li>\r\n<li>Enjoy the Journey.Life - <a href=\"https://www.youtube.com/channel/UCuhIeTBsCysER-73DnGEegQ\" class=\"uri\">https://www.youtube.com/channel/UCuhIeTBsCysER-73DnGEegQ</a></li>\r\n<li>Geeks on Tour - <a href=\"https://www.youtube.com/channel/UCLM_wnCtDaGBWkYGQS4T6Bw\" class=\"uri\">https://www.youtube.com/channel/UCLM_wnCtDaGBWkYGQS4T6Bw</a></li>\r\n<li>History with Hilbert - <a href=\"https://www.youtube.com/channel/UC1Zc6_BhPXiCWZlrZP4EsEg\" class=\"uri\">https://www.youtube.com/channel/UC1Zc6_BhPXiCWZlrZP4EsEg</a></li>\r\n<li>Keep Your Daydream - <a href=\"https://www.youtube.com/channel/UCEhJLsShZt8McryMf_DHLZQ\" class=\"uri\">https://www.youtube.com/channel/UCEhJLsShZt8McryMf_DHLZQ</a></li>\r\n<li>Living Free Forever - <a href=\"https://www.youtube.com/channel/UCozdfxd0Z7EwZFnZpBkl9Pw\" class=\"uri\">https://www.youtube.com/channel/UCozdfxd0Z7EwZFnZpBkl9Pw</a></li>\r\n<li>Mike Lux Media - <a href=\"https://www.youtube.com/channel/UCBEHEEUFV6IFY7gF2xhyPYw\" class=\"uri\">https://www.youtube.com/channel/UCBEHEEUFV6IFY7gF2xhyPYw</a></li>\r\n<li>RV Love - <a href=\"https://www.youtube.com/channel/UCsjA83xRW2iaqPox8IbDLKQ\" class=\"uri\">https://www.youtube.com/channel/UCsjA83xRW2iaqPox8IbDLKQ</a></li>\r\n<li>Shadiversity - <a href=\"https://www.youtube.com/channel/UCkmMACUKpQeIxN9D9ARli1Q\" class=\"uri\">https://www.youtube.com/channel/UCkmMACUKpQeIxN9D9ARli1Q</a></li>\r\n<li>The Fit RV - <a href=\"https://www.youtube.com/channel/UCxPSwn42fcQlQdp8DTQGRUA\" class=\"uri\">https://www.youtube.com/channel/UCxPSwn42fcQlQdp8DTQGRUA</a></li>\r\n<li>The More We Explore - <a href=\"https://www.youtube.com/channel/UC33Loj6OxDXepBuc3ry0rMg\" class=\"uri\">https://www.youtube.com/channel/UC33Loj6OxDXepBuc3ry0rMg</a></li>\r\n<li>All About RVs - <a href=\"https://www.youtub
(2755,'2019-02-22','My YouTube Subscriptions #2',1329,'Part two of my list of subscribed channels','<p>I am subscribed to a number of YouTube channels, and I am sharing them with you</p>\r\n<ul>\r\n<li>Anthony Robustelli - <a href=\"https://www.youtube.com/channel/UCxgAH7EcmKhC9bLm7xQ971g\" class=\"uri\">https://www.youtube.com/channel/UCxgAH7EcmKhC9bLm7xQ971g</a></li>\r\n<li>Apple Scruff Radio - <a href=\"https://www.youtube.com/channel/UCGAFIXNYCwA7mJWMY5zFxzw\" class=\"uri\">https://www.youtube.com/channel/UCGAFIXNYCwA7mJWMY5zFxzw</a></li>\r\n<li>Arthur C Clarke Center for Human Imagination - <a href=\"https://www.youtube.com/channel/UCigIJEygfuAhNEc9kavK2QA\" class=\"uri\">https://www.youtube.com/channel/UCigIJEygfuAhNEc9kavK2QA</a></li>\r\n<li>Baker Street - <a href=\"https://www.youtube.com/channel/UC8IaZ7-169c2vl3GOehxa6w\" class=\"uri\">https://www.youtube.com/channel/UC8IaZ7-169c2vl3GOehxa6w</a></li>\r\n<li>BBC Earth Unplugged - <a href=\"https://www.youtube.com/channel/UCbwp5B-uDBy-fS4bDA0TEaw\" class=\"uri\">https://www.youtube.com/channel/UCbwp5B-uDBy-fS4bDA0TEaw</a></li>\r\n<li>Brain Stuff - <a href=\"https://www.youtube.com/channel/UCiefLm_nIz_gOH7XHbgpdCQ\" class=\"uri\">https://www.youtube.com/channel/UCiefLm_nIz_gOH7XHbgpdCQ</a></li>\r\n<li>Candyrat Records - <a href=\"https://www.youtube.com/channel/UCMJecdKUslHToOEpeuRGwXg\" class=\"uri\">https://www.youtube.com/channel/UCMJecdKUslHToOEpeuRGwXg</a></li>\r\n<li>Cheryl Brin - <a href=\"https://www.youtube.com/channel/UCtbMXq5siIn3l-u_HKbAmrw\" class=\"uri\">https://www.youtube.com/channel/UCtbMXq5siIn3l-u_HKbAmrw</a></li>\r\n<li>Colonial Airstream - <a href=\"https://www.youtube.com/channel/UCaZKKtI5caSI6-WO4zm3VGQ\" class=\"uri\">https://www.youtube.com/channel/UCaZKKtI5caSI6-WO4zm3VGQ</a></li>\r\n<li>Computerphile - <a href=\"https://www.youtube.com/channel/UC9-y-6csu5WGm29I7JiwpnA\" class=\"uri\">https://www.youtube.com/channel/UC9-y-6csu5WGm29I7JiwpnA</a></li>\r\n<li>Couch’s RV Nation - <a href=\"https://www.youtube.com/channel/UCvAONLxaOn8oc7PS33KN22Q\" class=\"uri\">https://www.youtube.com/channel/UCvAONLxaOn8oc7PS33KN22Q</a></li>\r\n<li>Darren Kitchen - <a href=\"https://www.youtube.com/channel/UCTkpeicFNBuHJCvp4LZEuvw\" class=\"uri\">https://www.youtube.com/channel/UCTkpeicFNBuHJCvp4LZEuvw</a></li>\r\n<li>Don Ross - <a href=\"https://www.youtube.com/channel/UCRd5EO6FvhIrqQnk0cscSDA\" class=\"uri\">https://www.youtube.com/channel/UCRd5EO6FvhIrqQnk0cscSDA</a></li>\r\n<li>Geeks on Tour - <a href=\"https://www.youtube.com/channel/UCLM_wnCtDaGBWkYGQS4T6Bw\" class=\"uri\">https://www.youtube.com/channel/UCLM_wnCtDaGBWkYGQS4T6Bw</a></li>\r\n<li>Duet Justus - <a href=\"https://www.youtube.com/channel/UCIeTn13FYQI1YL4InzvuWuQ\" class=\"uri\">https://www.youtube.com/channel/UCIeTn13FYQI1YL4InzvuWuQ</a></li>\r\n<li>Firesign Theatre - <a href=\"https://www.youtube.com/channel/UCXdhVqpbttKSvBWGWHSBkgw\" class=\"uri\">https://www.youtube.com/channel/UCXdhVqpbttKSvBWGWHSBkgw</a></li>\r\n<li>Hana Malhas - <a href=\"https://www.youtube.com/channel/UCpoMVaoVRf3Xvf10_EIZKrg\" class=\"uri\">https://www.youtube.com/channel/UCpoMVaoVRf3Xvf10_EIZKrg</a></li>\r\n<li>Healthcare Triage - <a href=\"https://www.youtube.com/channel/UCabaQPYxxKepWUsEVQMT4Kw\" class=\"uri\">https://www.youtube.com/channel/UCabaQPYxxKepWUsEVQMT4Kw</a></li>\r\n<li>How Stuff Works - <a href=\"https://www.youtube.com/channel/UCa35qyNpnlZ_u8n9qoAZbMQ\" class=\"uri\">https://www.youtube.com/channel/UCa35qyNpnlZ_u8n9qoAZbMQ</a></li>\r\n<li>Jeff Pevar - <a href=\"https://www.youtube.com/channel/UCGd3v3LEwBJOsXkN-RZgFzQ\" class=\"uri\">https://www.youtube.com/channel/UCGd3v3LEwBJOsXkN-RZgFzQ</a></li>\r\n<li><a href=\"https://www.palain.com/\" class=\"uri\">https://www.palain.com/</a></li>\r\n</ul>\r\n',198,106,0,'CC-BY-SA','YouTube, Channels, Subscriptions',0,0,1),
(2765,'2019-03-08','My YouTube Subscriptions #3',1329,'Part three of my list of subscribed channels','<p>I am subscribed to a number of YouTube channels, and I am sharing them with you</p>\r\n<ul>\r\n<li>Jennie Breeden - <a href=\"https://www.youtube.com/channel/UCMwWHArL7o7n-So1r-T_u3w\" class=\"uri\">https://www.youtube.com/channel/UCMwWHArL7o7n-So1r-T_u3w</a></li>\r\n<li>Kate Techtonics - <a href=\"https://www.youtube.com/channel/UC4uxJvPa2nGe1ItPJsz2ORg\" class=\"uri\">https://www.youtube.com/channel/UC4uxJvPa2nGe1ItPJsz2ORg</a></li>\r\n<li>Lydian Collective - <a href=\"https://www.youtube.com/channel/UCGFAwyexOW5Vi24zvYOSc-A\" class=\"uri\">https://www.youtube.com/channel/UCGFAwyexOW5Vi24zvYOSc-A</a></li>\r\n<li>Metropole Orkest - <a href=\"https://www.youtube.com/channel/UClOuC_V57_bW5sZ5yuh2IKw\" class=\"uri\">https://www.youtube.com/channel/UClOuC_V57_bW5sZ5yuh2IKw</a></li>\r\n<li>Mike Pachelli - <a href=\"https://www.youtube.com/channel/UCHnZrxYdMc0lNk8kEZVUoTA\" class=\"uri\">https://www.youtube.com/channel/UCHnZrxYdMc0lNk8kEZVUoTA</a></li>\r\n<li>Mortons on the Move - <a href=\"https://www.youtube.com/channel/UCirNI5XV3xZZApeIe0a5-6Q\" class=\"uri\">https://www.youtube.com/channel/UCirNI5XV3xZZApeIe0a5-6Q</a></li>\r\n<li>Nixie Pixel - <a href=\"https://www.youtube.com/channel/UCBE-FO9JUOghSysV9gjTeHw\" class=\"uri\">https://www.youtube.com/channel/UCBE-FO9JUOghSysV9gjTeHw</a></li>\r\n<li>Numberphile - <a href=\"https://www.youtube.com/channel/UCoxcjq-8xIDTYp3uz647V5A\" class=\"uri\">https://www.youtube.com/channel/UCoxcjq-8xIDTYp3uz647V5A</a></li>\r\n<li>Nature Video - <a href=\"https://www.youtube.com/channel/UC7c8mE90qCtu11z47U0KErg\" class=\"uri\">https://www.youtube.com/channel/UC7c8mE90qCtu11z47U0KErg</a></li>\r\n<li>Ohio LinuxFest - <a href=\"https://www.youtube.com/channel/UCpbGjYCdBwaenhnN2OKXmRg\" class=\"uri\">https://www.youtube.com/channel/UCpbGjYCdBwaenhnN2OKXmRg</a></li>\r\n<li>Piled Higher and Deeper - <a href=\"https://www.youtube.com/channel/UCUL-pmhmDcZDwsA4cX2HO5w\" class=\"uri\">https://www.youtube.com/channel/UCUL-pmhmDcZDwsA4cX2HO5w</a></li>\r\n<li>Postmodern Jukebox - <a href=\"https://www.youtube.com/channel/UCORIeT1hk6tYBuntEXsguLg\" class=\"uri\">https://www.youtube.com/channel/UCORIeT1hk6tYBuntEXsguLg</a></li>\r\n<li>RV Geeks - <a href=\"https://www.youtube.com/channel/UC2EOriLgUuwQn-uCHl58m_Q\" class=\"uri\">https://www.youtube.com/channel/UC2EOriLgUuwQn-uCHl58m_Q</a></li>\r\n<li>RVtravel - <a href=\"https://www.youtube.com/channel/UCARpsGWj6MJ7JE78OcfWKWw\" class=\"uri\">https://www.youtube.com/channel/UCARpsGWj6MJ7JE78OcfWKWw</a></li>\r\n<li>Science News - <a href=\"https://www.youtube.com/channel/UCBX5er6E37_yWB3gCM32p3g\" class=\"uri\">https://www.youtube.com/channel/UCBX5er6E37_yWB3gCM32p3g</a></li>\r\n<li>SciShow - <a href=\"https://www.youtube.com/channel/UCZYTClx2T1of7BRZ86-8fow\" class=\"uri\">https://www.youtube.com/channel/UCZYTClx2T1of7BRZ86-8fow</a></li>\r\n<li>SciShow Space - <a href=\"https://www.youtube.com/channel/UCrMePiHCWG4Vwqv3t7W9EFg\" class=\"uri\">https://www.youtube.com/channel/UCrMePiHCWG4Vwqv3t7W9EFg</a></li>\r\n<li>Sophie Alloway - <a href=\"https://www.youtube.com/channel/UCCwcpSK-9Zbo8QDsPWdM1Bg\" class=\"uri\">https://www.youtube.com/channel/UCCwcpSK-9Zbo8QDsPWdM1Bg</a></li>\r\n<li>Ten Minute History - <a href=\"https://www.youtube.com/channel/UC22BdTgxefuvUivrjesETjg\" class=\"uri\">https://www.youtube.com/channel/UC22BdTgxefuvUivrjesETjg</a></li>\r\n<li>The Fab Faux - <a href=\"https://www.youtube.com/channel/UCsU8AeRj_497u2IMxVA6OcQ\" class=\"uri\">https://www.youtube.com/channel/UCsU8AeRj_497u2IMxVA6OcQ</a></li>\r\n<li><a href=\"https://www.palain.com/\" class=\"uri\">https://www.palain.com/</a></li>\r\n</ul>\r\n',198,106,0,'CC-BY-SA','YouTube, Channels, Subscriptions',0,0,1),
(2775,'2019-03-22','My YouTube Subscriptions #4',1198,'Part four of my list of subscribed channels','<p>I am subscribed to a number of YouTube channels, and I am sharing them with you</p>\r\n<ul>\r\n<li>The HollyHobs - <a href=\"https://www.youtube.com/channel/UCkhSH-DB2xK4BIJZoql9djQ\" class=\"uri\">https://www.youtube.com/channel/UCkhSH-DB2xK4BIJZoql9djQ</a></li>\r\n<li>Adam Neely - <a href=\"https://www.youtube.com/channel/UCnkp4xDOwqqJD7sSM3xdUiQ\" class=\"uri\">https://www.youtube.com/channel/UCnkp4xDOwqqJD7sSM3xdUiQ</a></li>\r\n<li>Airstream of Scottsdale - <a href=\"https://www.youtube.com/channel/UChNNDq91qW6zDkUXM2IuIYQ\" class=\"uri\">https://www.youtube.com/channel/UChNNDq91qW6zDkUXM2IuIYQ</a></li>\r\n<li>Alternate History Hub - <a href=\"https://www.youtube.com/channel/UClfEht64_NrzHf8Y0slKEjw\" class=\"uri\">https://www.youtube.com/channel/UClfEht64_NrzHf8Y0slKEjw</a></li>\r\n<li>Alton Brown - <a href=\"https://www.youtube.com/channel/UCfDNi1aEljAQ17mUrfUjkvg\" class=\"uri\">https://www.youtube.com/channel/UCfDNi1aEljAQ17mUrfUjkvg</a></li>\r\n<li>Apartment Sessions - <a href=\"https://www.youtube.com/channel/UCpU_PAsVFl2fO649QF6Zj0Q\" class=\"uri\">https://www.youtube.com/channel/UCpU_PAsVFl2fO649QF6Zj0Q</a></li>\r\n<li>AStreaminLife - <a href=\"https://www.youtube.com/channel/UCtrZvxP1SQkBJ8kZLsslimw\" class=\"uri\">https://www.youtube.com/channel/UCtrZvxP1SQkBJ8kZLsslimw</a></li>\r\n<li>Big Truck Big RV - <a href=\"https://www.youtube.com/channel/UCaX2-JkluLd8aG0DXp0L2Xw\" class=\"uri\">https://www.youtube.com/channel/UCaX2-JkluLd8aG0DXp0L2Xw</a></li>\r\n<li>Bill Holbrook - <a href=\"https://www.youtube.com/channel/UChE4ujkOdzJ02k-F9ZqwpMw\" class=\"uri\">https://www.youtube.com/channel/UChE4ujkOdzJ02k-F9ZqwpMw</a></li>\r\n<li>CGP Grey - <a href=\"https://www.youtube.com/channel/UC2C_jShtL725hvbm1arSV9w\" class=\"uri\">https://www.youtube.com/channel/UC2C_jShtL725hvbm1arSV9w</a></li>\r\n<li>Crash Course - <a href=\"https://www.youtube.com/channel/UCX6b17PVsYBQ0ip5gyeme-Q\" class=\"uri\">https://www.youtube.com/channel/UCX6b17PVsYBQ0ip5gyeme-Q</a></li>\r\n<li>Deep Sky Videos - <a href=\"https://www.youtube.com/channel/UCo-3ThNQmPmQSQL_L6Lx1_w\" class=\"uri\">https://www.youtube.com/channel/UCo-3ThNQmPmQSQL_L6Lx1_w</a></li>\r\n<li>Doctor Who - <a href=\"https://www.youtube.com/channel/UCcOkA2Xmk1valTOWSyKyp4g\" class=\"uri\">https://www.youtube.com/channel/UCcOkA2Xmk1valTOWSyKyp4g</a></li>\r\n<li>Emperor Tigerstar - <a href=\"https://www.youtube.com/channel/UCUXqYwTCR6R3Wr-FkLTD4AQ\" class=\"uri\">https://www.youtube.com/channel/UCUXqYwTCR6R3Wr-FkLTD4AQ</a></li>\r\n<li>Fastway Trailer - <a href=\"https://www.youtube.com/channel/UCDKtrIOnj4IvatnpJkh2aXA\" class=\"uri\">https://www.youtube.com/channel/UCDKtrIOnj4IvatnpJkh2aXA</a></li>\r\n<li>fyfluiddynamics - <a href=\"https://www.youtube.com/channel/UCxuET3jfy0v8EJa7TKNiI2g\" class=\"uri\">https://www.youtube.com/channel/UCxuET3jfy0v8EJa7TKNiI2g</a></li>\r\n<li>Haylett RV - <a href=\"https://www.youtube.com/channel/UCRS9u1f7074u0Rrgu05K9Wg\" class=\"uri\">https://www.youtube.com/channel/UCRS9u1f7074u0Rrgu05K9Wg</a></li>\r\n<li>It’s OK To Be Smart - <a href=\"https://www.youtube.com/channel/UCH4BNI0-FOK2dMXoFtViWHw\" class=\"uri\">https://www.youtube.com/channel/UCH4BNI0-FOK2dMXoFtViWHw</a></li>\r\n<li>Less Junk, More Journey - <a href=\"https://www.youtube.com/channel/UC2IENUorXc6kRtIiAGPRKZA\" class=\"uri\">https://www.youtube.com/channel/UC2IENUorXc6kRtIiAGPRKZA</a></li>\r\n<li>Long, Long Honeymoon - <a href=\"https://www.youtube.com/channel/UCw5WYtMXQ799GErKpvR_5Rw\" class=\"uri\">https://www.youtube.com/channel/UCw5WYtMXQ799GErKpvR_5Rw</a></li>\r\n<li>Matt’s RV Reviews - <a href=\"https://www.youtube.com/channel/UCBHww2yk8soPJ9IcbZ0n_Uw\" class=\"uri\">https://www.youtube.com/channel/UCBHww2yk8soPJ9IcbZ0n_Uw</a></li>\r\n<li><a href=\"https://www.palain.com/\" class=\"uri\">https://www.palain.com/</a></li>\r\n</ul>\r\n',198,106,0,'CC-BY-SA','YouTube, Channels, Subscriptions',0,0,1),
(2790,'2019-04-12','My YouTube Subscriptions #5',1206,'Part five of my list of subscribed channels','<p>I am subscribed to a number of YouTube channels, and I am sharing them with you</p>\r\n<ul>\r\n<li>Mental Floss - <a href=\"https://www.youtube.com/channel/UCpZ5qUqpW4hW4zdfuBxMSJA\" class=\"uri\">https://www.youtube.com/channel/UCpZ5qUqpW4hW4zdfuBxMSJA</a></li>\r\n<li>Minute Earth - <a href=\"https://www.youtube.com/channel/UCeiYXex_fwgYDonaTcSIk6w\" class=\"uri\">https://www.youtube.com/channel/UCeiYXex_fwgYDonaTcSIk6w</a></li>\r\n<li>Minute Physics - <a href=\"https://www.youtube.com/channel/UCUHW94eEFW7hkUMVaZz4eDg\" class=\"uri\">https://www.youtube.com/channel/UCUHW94eEFW7hkUMVaZz4eDg</a></li>\r\n<li>Mona Lisa Twins - <a href=\"https://www.youtube.com/channel/UCWK_fTtt5p1nBw__P_V_qBw\" class=\"uri\">https://www.youtube.com/channel/UCWK_fTtt5p1nBw__P_V_qBw</a></li>\r\n<li>Monty Python - <a href=\"https://www.youtube.com/channel/UCGm3CO6LPcN-Y7HIuyE0Rew\" class=\"uri\">https://www.youtube.com/channel/UCGm3CO6LPcN-Y7HIuyE0Rew</a></li>\r\n<li>Objectivity - <a href=\"https://www.youtube.com/channel/UCtwKon9qMt5YLVgQt1tvJKg\" class=\"uri\">https://www.youtube.com/channel/UCtwKon9qMt5YLVgQt1tvJKg</a></li>\r\n<li>OfficialGoRVing - <a href=\"https://www.youtube.com/channel/UC8nwC2SO4k6AF-E2liOiSQQ\" class=\"uri\">https://www.youtube.com/channel/UC8nwC2SO4k6AF-E2liOiSQQ</a></li>\r\n<li>PBS Eons - <a href=\"https://www.youtube.com/channel/UCzR-rom72PHN9Zg7RML9EbA\" class=\"uri\">https://www.youtube.com/channel/UCzR-rom72PHN9Zg7RML9EbA</a></li>\r\n<li>PBS SpaceTime - <a href=\"https://www.youtube.com/channel/UC7_gcs09iThXybpVgjHZ_7g\" class=\"uri\">https://www.youtube.com/channel/UC7_gcs09iThXybpVgjHZ_7g</a></li>\r\n<li>Periodic Videos - <a href=\"https://www.youtube.com/channel/UCtESv1e7ntJaLJYKIO1FoYw\" class=\"uri\">https://www.youtube.com/channel/UCtESv1e7ntJaLJYKIO1FoYw</a></li>\r\n<li>Physics Girl - <a href=\"https://www.youtube.com/channel/UC7DdEm33SyaTDtWYGO2CwdA\" class=\"uri\">https://www.youtube.com/channel/UC7DdEm33SyaTDtWYGO2CwdA</a></li>\r\n<li>Rollin’ On TV - <a href=\"https://www.youtube.com/channel/UCAfquicUYGba3nuzQ-n0tnw\" class=\"uri\">https://www.youtube.com/channel/UCAfquicUYGba3nuzQ-n0tnw</a></li>\r\n<li>RV Education 101 - <a href=\"https://www.youtube.com/channel/UCQNg-4bXbDGS61casEa5LyQ\" class=\"uri\">https://www.youtube.com/channel/UCQNg-4bXbDGS61casEa5LyQ</a></li>\r\n<li>RV to Freedom - <a href=\"https://www.youtube.com/channel/UCJxweRfyWOMcbwxpK4FnsyA\" class=\"uri\">https://www.youtube.com/channel/UCJxweRfyWOMcbwxpK4FnsyA</a></li>\r\n<li>Sciencium - <a href=\"https://www.youtube.com/channel/UCGRB1ZjIqAiaGwt-XLq9CnA\" class=\"uri\">https://www.youtube.com/channel/UCGRB1ZjIqAiaGwt-XLq9CnA</a></li>\r\n<li>SciFri - <a href=\"https://www.youtube.com/channel/UCDjGU4DP3b-eGxrsipCvoVQ\" class=\"uri\">https://www.youtube.com/channel/UCDjGU4DP3b-eGxrsipCvoVQ</a></li>\r\n<li>SciShow Psych - <a href=\"https://www.youtube.com/channel/UCUdettijNYvLAm4AixZv4RA\" class=\"uri\">https://www.youtube.com/channel/UCUdettijNYvLAm4AixZv4RA</a></li>\r\n<li><a href=\"https://www.palain.com/\" class=\"uri\">https://www.palain.com/</a></li>\r\n</ul>\r\n',198,106,0,'CC-BY-SA','YouTube, Channels, Subscriptions',0,0,1),
(2800,'2019-04-26','My YouTube Subscriptions #6',1169,'Part six of my list of subscribed channels','<p>I am subscribed to a number of YouTube channels, and I am sharing them with you</p>\r\n<ul>\r\n<li>SgtPepper Channel - <a href=\"https://www.youtube.com/channel/UCAZZwDyOoSG32tIpMjQ-EKA\" class=\"uri\">https://www.youtube.com/channel/UCAZZwDyOoSG32tIpMjQ-EKA</a></li>\r\n<li>Sid Meier’s Civilization - <a href=\"https://www.youtube.com/channel/UCWj7XnnfbKHGVnZ8iSoETSQ\" class=\"uri\">https://www.youtube.com/channel/UCWj7XnnfbKHGVnZ8iSoETSQ</a></li>\r\n<li>Sixty Symbols - <a href=\"https://www.youtube.com/channel/UCvBqzzvUBLCs8Y7Axb-jZew\" class=\"uri\">https://www.youtube.com/channel/UCvBqzzvUBLCs8Y7Axb-jZew</a></li>\r\n<li>Smarter Every Day - <a href=\"https://www.youtube.com/channel/UC6107grRI4m0o2-emgoDnAA\" class=\"uri\">https://www.youtube.com/channel/UC6107grRI4m0o2-emgoDnAA</a></li>\r\n<li>Space Frontier Foundation - <a href=\"https://www.youtube.com/channel/UCe_aC8RselByR6B2UMnprQA\" class=\"uri\">https://www.youtube.com/channel/UCe_aC8RselByR6B2UMnprQA</a></li>\r\n<li>Streamin’ Freedom - <a href=\"https://www.youtube.com/channel/UCEl_3AAj2pA-GvkxTS7-mxg\" class=\"uri\">https://www.youtube.com/channel/UCEl_3AAj2pA-GvkxTS7-mxg</a></li>\r\n<li>Suibhne - <a href=\"https://www.youtube.com/channel/UCQD-0MjUbDBwm2UTVYr0Dag\" class=\"uri\">https://www.youtube.com/channel/UCQD-0MjUbDBwm2UTVYr0Dag</a></li>\r\n<li>Talk More Talk - <a href=\"https://www.youtube.com/channel/UC7rNO8_kPBH-caQH9vzNe8A\" class=\"uri\">https://www.youtube.com/channel/UC7rNO8_kPBH-caQH9vzNe8A</a></li>\r\n<li>The Beatles - <a href=\"https://www.youtube.com/channel/UCc4K7bAqpdBP8jh1j9XZAww\" class=\"uri\">https://www.youtube.com/channel/UCc4K7bAqpdBP8jh1j9XZAww</a></li>\r\n<li>The Economist - <a href=\"https://www.youtube.com/channel/UC0p5jTq6Xx_DosDFxVXnWaQ\" class=\"uri\">https://www.youtube.com/channel/UC0p5jTq6Xx_DosDFxVXnWaQ</a></li>\r\n<li>The Extraordinary Universe - <a href=\"https://www.youtube.com/channel/UC_2MM6tCMKWCj-AnvjIhJtw\" class=\"uri\">https://www.youtube.com/channel/UC_2MM6tCMKWCj-AnvjIhJtw</a></li>\r\n<li>The Great War - <a href=\"https://www.youtube.com/channel/UCUcyEsEjhPEDf69RRVhRh4A\" class=\"uri\">https://www.youtube.com/channel/UCUcyEsEjhPEDf69RRVhRh4A</a></li>\r\n<li>The Planetary Society - <a href=\"https://www.youtube.com/channel/UCi0TZmFfgS4oQPcRQ6-KRXg\" class=\"uri\">https://www.youtube.com/channel/UCi0TZmFfgS4oQPcRQ6-KRXg</a></li>\r\n<li>The Saxy Gamer - <a href=\"https://www.youtube.com/channel/UCJCY4j5zSuV1TFN2VQGeD0Q\" class=\"uri\">https://www.youtube.com/channel/UCJCY4j5zSuV1TFN2VQGeD0Q</a></li>\r\n<li>Totally Trailer - <a href=\"https://www.youtube.com/channel/UCuMYtpUa2kaPaG4tBlJAZOA\" class=\"uri\">https://www.youtube.com/channel/UCuMYtpUa2kaPaG4tBlJAZOA</a></li>\r\n<li>Trailer Life DIY - <a href=\"https://www.youtube.com/channel/UCMmzjxJREn4kDK-ypq9oA7w\" class=\"uri\">https://www.youtube.com/channel/UCMmzjxJREn4kDK-ypq9oA7w</a></li>\r\n<li>Veritasium - <a href=\"https://www.youtube.com/channel/UCHnyfMqiRRG1u-2MsSQLbXA\" class=\"uri\">https://www.youtube.com/channel/UCHnyfMqiRRG1u-2MsSQLbXA</a></li>\r\n<li>Vintage space - <a href=\"https://www.youtube.com/channel/UCw95T_TgbGHhTml4xZ9yIqg\" class=\"uri\">https://www.youtube.com/channel/UCw95T_TgbGHhTml4xZ9yIqg</a></li>\r\n<li>Vlogbrothers - <a href=\"https://www.youtube.com/channel/UCGaVdbSav8xWuFWTadK6loA\" class=\"uri\">https://www.youtube.com/channel/UCGaVdbSav8xWuFWTadK6loA</a></li>\r\n<li><a href=\"https://www.palain.com/\" class=\"uri\">https://www.palain.com/</a></li>\r\n</ul>\r\n',198,106,0,'CC-BY-SA','YouTube, Channels, Subscriptions',0,0,1),
(2738,'2019-01-30','My Applications',229,'just a short show on the applications I use on my Linux Mint Box','<p>Hi again, this is Tony Hughes from Blackpool in the UK. Ken is still short of shows so here is another quick show to help out with the queue.</p>\r\n<p>This one is going to be about the applications I use on my Linux Mint 19.1 install. I’ve been using Linux for over 10 years now and during that time have never felt that there was anything that was lacking in the software department for day to day productivity and general day to day use, so this is just a list of some of the things that I, and I suspect most computer users, need to make electronic life a reality.</p>\r\n<p>So for internet browsing I use Firefox, I’ve been using this since my Windows days and it was just natural that, as this is the default web browser in Linux Mint, that this is what I would continue to use when I moved over to Linux.</p>\r\n<p>Email – I have several web based accounts which means these are operating system agnostic, but for my Internet Service provider account I use Thunderbird to download and store my e-mail onto my main desktop PC. I can also use this to access my web based accounts and store emails for these off line as well if needed.</p>\r\n<p>Office productivity is provided for with LibreOffice which is a very mature and comprehensive office suite comprising of all the main tools needed such as a word processor, spreadsheet and presentation software. It also has a Database and drawing package, and for maths geeks an advanced maths formula creating program which I have never used, but could be very useful for students and scientists.</p>\r\n<p>For audio and video playback I use VLC which again is something I first used back in my windows days, it works with all the audio and video codecs you can throw at it, and if you have the Libdvdcss codecs installed will play proprietary DVD’s.</p>\r\n<p>For recording and editing audio including this podcast I use Audacity, which is again a cross platform programme and a very powerful piece of software, as myself and many others that use it will be able to tell you</p>\r\n<p>So that is a short list of the programmes that I use on a day to day basis. I hope you found it useful, if not it doesn’t matter as Ken still got a show out of me.</p>\r\n<p>Well that’s it for this one. This is Tony Hughes signing off for now.</p>\r\n',338,0,0,'CC-BY-SA','productivity software',0,0,1),
(2740,'2019-02-01','Pop!_OS 18.10 (quick) review',438,'In this episode, Yannick does a quick review of Pop OS 18.10','<p>This episode is a re-edition of the review of Pop_OS! I did for <a href=\"https://tuxjam.otherside.network/?p=391\">TuxJam</a> back in December 2018. Pop_OS! is published by <a href=\"https://system76.com/pop\">System76</a>.</p>\r\n',370,0,0,'CC-BY-SA','linux,distro,distribution,pop_os,system76,ubuntu',0,0,1),
(2744,'2019-02-07','Yet Another Rambling Drive Into Work',2022,'Yet another rambling attempt at making a show on the way into work','<p>I came across this show sitting in my digital recorder I recorded it back in November 2017 but never posted it, my thoughts on some of the things I mention in this show have since evolved, I’ll stick these changed thoughts at the end of these notes and may also stick in an extra recorded section at the end of the show.</p>\r\n<ul>\r\n<li><p>Previous Ford Focus<br />\r\n<a href=\"https://en.wikipedia.org/wiki/Ford_Focus#First_generation_(1998%E2%80%932004)\">https://en.wikipedia.org/wiki/Ford_Focus#First_generation_(1998%E2%80%932004)</a></p></li>\r\n<li><p>Renault 19, 16V<br />\r\nMine was not a a soft top<br />\r\n<a href=\"https://en.wikipedia.org/wiki/Renault_19#16S\" class=\"uri\">https://en.wikipedia.org/wiki/Renault_19#16S</a><br />\r\n<img src=\"https://upload.wikimedia.org/wikipedia/commons/d/d8/Ren1916vcabph1b.jpg\" alt=\"https://upload.wikimedia.org/wikipedia/commons/d/d8/Ren1916vcabph1b.jpg\" /></p></li>\r\n<li><p>Current Ford Focus<br />\r\n<a href=\"https://en.wikipedia.org/wiki/Ford_Focus#Second_generation_(2004%E2%80%932011)\">https://en.wikipedia.org/wiki/Ford_Focus#Second_generation_(2004%E2%80%932011)</a></p></li>\r\n<li><p>Nissan Leaf 24kw<br />\r\n<a href=\"https://en.wikipedia.org/wiki/Nissan_Leaf#2014/15_model_year\" class=\"uri\">https://en.wikipedia.org/wiki/Nissan_Leaf#2014/15_model_year</a></p></li>\r\n<li><p>Nissan Leaf 30Kw<br />\r\n<a href=\"https://en.wikipedia.org/wiki/Nissan_Leaf#2016_model_year\" class=\"uri\">https://en.wikipedia.org/wiki/Nissan_Leaf#2016_model_year</a></p></li>\r\n<li><p>Nissan leaf 40Kw<br />\r\n<a href=\"https://en.wikipedia.org/wiki/Nissan_Leaf#Second_generation_(2017%E2%80%93present)\">https://en.wikipedia.org/wiki/Nissan_Leaf#Second_generation_(2017%E2%80%93present)</a></p></li>\r\n<li><p>Kilts<br />\r\n<a href=\"https://en.wikipedia.org/wiki/Kilt\" class=\"uri\">https://en.wikipedia.org/wiki/Kilt</a></p></li>\r\n<li><p>Bagpipes<br />\r\n<a href=\"https://en.wikipedia.org/wiki/Bagpipes\" class=\"uri\">https://en.wikipedia.org/wiki/Bagpipes</a></p></li>\r\n<li><p>Accordion<br />\r\n<a href=\"https://en.wikipedia.org/wiki/Accordion\" class=\"uri\">https://en.wikipedia.org/wiki/Accordion</a></p></li>\r\n<li><p>Squeeze Box<br />\r\n<a href=\"https://en.wikipedia.org/wiki/Squeezebox\" class=\"uri\">https://en.wikipedia.org/wiki/Squeezebox</a></p></li>\r\n<li><p>Haggis<br />\r\n<a href=\"https://en.wikipedia.org/wiki/Haggis\" class=\"uri\">https://en.wikipedia.org/wiki/Haggis</a></p></li>\r\n<li><p>Co-op<br />\r\n<a href=\"https://en.wikipedia.org/wiki/Cooperative\" class=\"uri\">https://en.wikipedia.org/wiki/Cooperative</a></p></li>\r\n<li><p>Example of a Haggis Pizza, though not from the Co-op<br />\r\n<a href=\"https://www.sainsburys.co.uk/webapp/wcs/stores/servlet/gb/groceries/cosmo-haggis-pizza-450g?langId=44&storeId=10151&krypto=9555DKfWSs9%2FPZXDDPtNmunNVefFVynanbSeQICSqvaqFAqsHBIPIKiSBqw2aq4oL2g8H8Mht9FuPj%2FYvtWLegub3%2F9KqGLI16COGk2qTEwkFeo9zgw2ELE4DtGbDzzRldgf51yrZVaYL9WXmfOvDS%2FiJx9pqI12OIXlHwmPkmc%3D&ddkey=https%3Agb%2Fgroceries%2Fcosmo-haggis-pizza-450g\">https://www.sainsburys.co.uk/webapp/wcs/stores/servlet/gb/groceries/cosmo-haggis-pizza-450g?langId=44&storeId=10151&krypto=9555DKfWSs9%2FPZXDDPtNmunNVefFVynanbSeQICSqvaqFAqsHBIPIKiSBqw2aq4oL2g8H8Mht9FuPj%2FYvtWLegub3%2F9KqGLI16COGk2qTEwkFeo9zgw2ELE4DtGbDzzRldgf51yrZVaYL9WXmfOvDS%2FiJx9pqI12OIXlHwmPkmc%3D&ddkey=https%3Agb%2Fgroceries%2Fcosmo-haggis-pizza-450g</a></p></li>\r\n<li><p>Nissan Leaf Phone App to remotely control heating system<br />\r\n<a href=\"https://youplus.nissan.co.uk/GB/en/YouPlus/ConnectedServices.html\" class=\"uri\">https://youplus.nissan.co.uk/GB/en/YouPlus/ConnectedServices.html</a></p></li>\r\n<li><p>Citroen BX, Hydraulic suspension<br />\r\n<a href=\"https://en.wikipedia.org/wiki/Citro%C3%ABn_BX\">https://en.wikipedia.org/wiki/Citro%C3%ABn_BX</a></p></li>\r\n<li><p>Reversing sensors, and camera<br />\r\n<a href=\"https://
(2746,'2019-02-11','My software part 2',326,'More about the software I use regularly on Linux ','<p>Good day to all in HPR land, this is Tony Hughes coming to you from Blackpool in the UK again. This is a second instalment about some of the software I use on Linux Mint 19.1, on a regular basis. So without further ado lets get on with the show.</p>\r\n<ul>\r\n<li><p>USB Image writer</p></li>\r\n<li><p>VirtualBox – Virtualisation software to virtualise x86 and AMD64 bit PC’s</p></li>\r\n<li><p>OBS – Open Broadcast software</p></li>\r\n<li><p>Brasero/XFburn – CD/DVD writing software</p></li>\r\n<li><p>GIMP – GNU Image manipulation Program</p></li>\r\n</ul>\r\n<p>So that’s it for this episode. I’ll be back to talk about some of the utilities I use on Mint on another show. This is Tony Hughes signing off for now.</p>\r\n',338,0,0,'CC-BY-SA','Linux Mint 19.1,utilities',0,0,1),
(2747,'2019-02-12','checking oil',317,'checking your oil may not be so simple','<blockquote>\r\n<p>a 914 shows up…<br />\r\nit has a 911 engine…<br />\r\ni check the oil…<br />\r\nthe car lives…</p>\r\n</blockquote>\r\n',329,0,1,'CC-BY-SA','automotive',0,0,1),
(2748,'2019-02-13','Writing Web Game in Haskell - Special events',2645,'Tuula walks through implementation of special events in web based game','<h2 id=\"intro\">Intro</h2>\r\n<p>I was tasked to write kragii worms in the game and informed that they’re small (10cm / 4 inches) long worms that burrow in ground and are drawn to farming fields and people. They’re dangerous and might eat harvest or people.</p>\r\n<p>Special events build on top of the new system I explained in <a href=\"https://hackerpublicradio.org/eps.php?id=2733\">episode 2733</a>. They are read from same API as regular news and need same <code>ToJSON</code>, <code>FromJSON</code>, <code>ToDto</code> and <code>FromDto</code> instances as regular news (for translating them data transfer objects and then into JSON for sending to client).</p>\r\n<h2 id=\"loading\">Loading</h2>\r\n<p>Starting from the API interface, the first real difference is when JSON stored into database is turned into <code>NewsArticle</code>. Two cases, where special news have available options added to them and regular news are left unchanged. These options tell player what choices they have when dealing with the situation and evaluated every time special event is loaded, because situation might have changed since special event got stored into database and available options might have changed.</p>\r\n<pre><code>addOptions (key, article) = case article of\r\n Special news ->\r\n (key, Special $ availableOptions news)\r\n _ ->\r\n (key, article)\r\n\r\navailableOptions :: SpecialNews -> SpecialNews\r\navailableOptions x =\r\n case x of\r\n KragiiWorms event _ choice ->\r\n KragiiWorms event (eventOptions event) choice</code></pre>\r\n<p><code>eventOptions</code> is one of the events defined in <code>SpecialEvent</code> type class that specifies two functions every special event has to have. <code>eventOptions</code> lists what options the event has currently available and <code>resolveEvent</code> resolves the event according to choice user might have made (hence <code>Maybe</code> in it).</p>\r\n<p>Type class is parametrized with three types (imaginatively named to <code>a</code>, <code>b</code> and <code>c</code>). First is data type that holds information about special event (where it’s happening and to who for example), second one is one that tells all possible choices player has and third one lists various results that might occur when resolving the event. In this example they’re <code>KragiiWormsEvent</code>, <code>KragiiWormsChoice</code> and <code>KragiiResults</code>.</p>\r\n<pre><code>data KragiiWormsEvent = KragiiWormsEvent\r\n { kragiiWormsPlanetId :: Key Planet\r\n , kragiiWormsPlanetName :: Text\r\n , kragiiWormsSystemId :: Key StarSystem\r\n , kragiiWormsSystemName :: Text\r\n , kragiiWormsDate :: Int\r\n }\r\n\r\ndata KragiiWormsChoice =\r\n EvadeWorms\r\n | AttackWorms\r\n | TameWorms\r\n\r\ndata KragiiResults =\r\n WormsStillPresent\r\n | WormsRemoved\r\n | WormsTamed\r\n | CropsDestroyed (RawResource Biological)\r\n | FarmersInjured</code></pre>\r\n<p>Definition of the <code>SpecialEvent</code> type class is shown below. Type signature of <code>resolveEvent</code> is gnarly because it’s reading and writing database.</p>\r\n<pre><code>class SpecialEvent a b c | a -> b, a -> c where\r\n eventOptions :: a -> [UserOption b]\r\n resolveEvent :: ( PersistQueryRead backend, PersistQueryWrite backend\r\n , MonadIO m, BaseBackend backend ~ SqlBackend ) =>\r\n (Key News, a) -> Maybe b -> ReaderT backend m (Maybe EventRemoval, [c])</code></pre>\r\n<p>One more piece we need is <code>UserOption</code>. This records options in a format that is useful in the client side. Each option player has are given title and explanation that are shown on UI.</p>\r\n<pre><code>data UserOption a =\r\n UserOption
(2743,'2019-02-06','Character build in the d20 system',3949,'Klaatu and Lostnbronx build an RPG character in the d20 system of Starfinder','<p>Klaatu and Lostnbronx spend an hour building an RPG character at a leisurely, and hopefully informative, pace. While the build process here is technically specific to the sci-fi (or science fantasy, really) game Starfinder, the idea is to convey the generic process of stepping through a character build instruction, cross-referencing important rules, and generally learning how to build a character in an unfamiliar system.\r\n</p>',78,99,0,'CC-BY-SA','Starfinder,RPG,character,build',0,0,1),
(2749,'2019-02-14','Lostnbronx and Klaatu commentary from episode 2743',890,'Thoughts about RPG character building, modern RPG play style compared to the Old School, and more','<p>\r\nOut-takes from episode 2743. This is commentary about modern RPG play style, the character build process, Starfinder as a system, and more.\r\n</p>\r\n<p>\r\nDid you know that Lostnbronx and Klaatu have a gaming blog? We do! You should go subscribe to it at <a href=\"https://mixedsignals.ml\" target=\"_blank\">mixedsignals.ml</a></p>\r\n\r\n<p>The blog features commentary about gaming, tech, geek culture, a podcast or two, and lots more.</p>',78,0,0,'CC-BY-SA','rpg, game, gaming',0,0,1),
(2751,'2019-02-18','Battling with English - part 3',822,'Misunderstandings about English grammar, spelling, punctuation, etc.','<h1 id=\"battling-with-english---part-3\">Battling with English - part 3</h1>\r\n<h2 id=\"some-word-confusions\">Some word confusions</h2>\r\n<p>In this episode, the third of this series, I’m looking at some words that are sometimes used in the wrong places, often being confused one with another. These words are often particularly difficult to differentiate by people for whom <a href=\"https://www.englishpractice.com/common-mistakes\" title=\"English Practice - Common Mistakes\">English is not their first language</a>.</p>\r\n<h2 id=\"long-notes\">Long notes</h2>\r\n<p>As usual I have provided detailed notes and examples for this episode, and these can be <a href=\"https://hackerpublicradio.org/eps/hpr2751/full_shownotes.html\">viewed here</a>.</p>\r\n<h2 id=\"links\">Links</h2>\r\n<ul>\r\n<li>Been:\r\n<ul>\r\n<li>Oxford Dictionaries: <a href=\"https://en.oxforddictionaries.com/definition/been\">Definition of “been”</a></li>\r\n<li>Online Etymology Dictionary: <a href=\"https://www.etymonline.com/word/been\">“been”</a></li>\r\n</ul></li>\r\n<li>Being:\r\n<ul>\r\n<li>Oxford Dictionaries: <a href=\"https://en.oxforddictionaries.com/definition/being\">Definition of “being”</a></li>\r\n<li>Online Etymology Dictionary: <a href=\"https://www.etymonline.com/word/being\">“being”</a></li>\r\n</ul></li>\r\n<li>Been versus Being\r\n<ul>\r\n<li><a href=\"https://www.englishpractice.com/common-mistakes/difference-9/\">English Practice - Difference between being and been</a></li>\r\n</ul></li>\r\n<li>Examples of the use of Being:\r\n<ul>\r\n<li><a href=\"https://sentence.yourdictionary.com/being\">Example sentences using <em>being</em></a></li>\r\n</ul></li>\r\n</ul>\r\n<ul>\r\n<li>Weather:\r\n<ul>\r\n<li>Oxford Dictionaries: <a href=\"https://en.oxforddictionaries.com/definition/weather\">Definition of “weather”</a></li>\r\n<li>Online Etymology Dictionary: <a href=\"https://www.etymonline.com/word/weather\">“weather”</a></li>\r\n</ul></li>\r\n<li>Wether:\r\n<ul>\r\n<li>Oxford Dictionaries: <a href=\"https://en.oxforddictionaries.com/definition/wether\">Definition of “wether”</a></li>\r\n<li>Online Etymology Dictionary: <a href=\"https://www.etymonline.com/word/wether\">“wether”</a></li>\r\n</ul></li>\r\n<li>Whether:\r\n<ul>\r\n<li>Oxford Dictionaries: <a href=\"https://en.oxforddictionaries.com/definition/whether\">Definition of “whether”</a></li>\r\n<li>Online Etymology Dictionary: <a href=\"https://www.etymonline.com/word/whether\">“whether”</a></li>\r\n</ul></li>\r\n<li>Wither:\r\n<ul>\r\n<li>Oxford Dictionaries: <a href=\"https://en.oxforddictionaries.com/definition/wither\">Definition of “wither”</a></li>\r\n<li>Online Etymology Dictionary: <a href=\"https://www.etymonline.com/word/wither\">“wither”</a></li>\r\n</ul></li>\r\n<li>Whither:\r\n<ul>\r\n<li>Oxford Dictionaries: <a href=\"https://en.oxforddictionaries.com/definition/whither\">Definition of “whither”</a></li>\r\n<li>Online Etymology Dictionary: <a href=\"https://www.etymonline.com/word/whither\">“whither”</a></li>\r\n</ul></li>\r\n<li>Weather, wether, and the rest:\r\n<ul>\r\n<li><a href=\"https://grammarist.com/usage/wither-whither/\">Grammarist</a></li>\r\n<li><a href=\"https://www.grammar-monster.com/easily_confused/weather_whether_wether.htm\">Grammar Monster</a></li>\r\n</ul></li>\r\n</ul>\r\n<ul>\r\n<li>Previous episodes in this series:\r\n<ul>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2558\">Battling with English - part 1</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2596\">Battling with English - part 2</a></li>\r\n</ul></li>\r\n</ul>',225,120,1,'CC-BY-SA','grammar,spelling,punctuation,word misuse,English',0,0,1),
(3857,'2023-05-16','Yesterday I saw a solar flare',668,'An account of the first time I saw a solar flare with my own eyes.','<p>A solar flare is a huge release of energy at and near the surface of the Sun in the form of electromagnetic radiation and fast particles. On 19 January 2023 at around 11:00 UTC I was lucky enough to see a solar flare with my own eyes using a <a href=\"https://www.meadeuk.com/Coronado-Personal-Solar-Telescope-PST.html\">Coronado PST Solar Telescope</a> that belongs to the <a href=\"https://theasg.org.uk/\">Astronomical Society of Glasgow</a>.</p>\n\n<p>This audio was recorded the day after I had seen it so the details remained fresh in my mind.</p>\n\n<p>A view of how the Sun appears through the Coronado PST Hα telescope taken with the main camera of Samsung Galaxy S9+ phone at the eyepiece, after much trial and error! This was taken on 20 January 2023 at 13:08 UTC the day after the flare. The enormous sun spot is still visible.</p>\n<p><a href=\"https://hackerpublicradio.org/eps/hpr3857/20230120_111458_1.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3857/20230120_111458_1_thumbnail.jpg\" title=\"The enormous sun spot is still visible on 20 January 2023 at 13:08 UTC.\" alt=\"Sunspot\" /></a></p>\n<!-- INSERT 20230120_111458_1.jpg -->\n\n<p>The X-ray flux from the Sun measured by the <a href=\"https://www.swpc.noaa.gov/products/goes-x-ray-flux\">GOES satellite(s)</a>.</p>\n<p><a href=\"https://hackerpublicradio.org/eps/hpr3857/goes_190123.png\"><img src=\"https://hackerpublicradio.org/eps/hpr3857/goes_190123_thumbnail.png\" title=\"The X-ray flux from the Sun\" alt=\"X-ray flux\" /></a></p>\n<!-- INSERT goes_190123.png -->\n\n<p>A short movie of images covering the period from 10:01 UTC to 11:21 UTC observed by the <a href=\"https://sdo.gsfc.nasa.gov/data/\">SDO satellite\'sAIAinstrument</a>.</p>\n<videocontrolswidth=\"800\">\n<sourcesrc=\"https://hackerpublicradio.org/eps/hpr3857/2023_01_19_10_01_17_2023_01_19_11_21_41_AIA_304-hq.mp4\"type=\"video/mp4\">\nYourbrowserdoesnotsupportthevideotag.\n</video>\n<!-- INSERT 2023_01_19_10_01_17_2023_01_19_11_21_41_AIA_304-hq.mp4 -->\n',268,0,0,'CC-BY-SA','solar,astronomy,telescopes,planes',0,0,1),
(2752,'2019-02-19','XSV for fast CSV manipulations - Part 2',1359,'Part 2 of my introduction to the XSV tool','<h1 id=\"xsv-for-fast-csv-manipulations---part-1-basic-usage\">XSV for fast CSV manipulations - Part 1: Basic Usage</h1>\r\n<blockquote>\r\n<p><a href=\"https://github.com/BurntSushi/xsv\" class=\"uri\">https://github.com/BurntSushi/xsv</a></p>\r\n</blockquote>\r\n<h2 id=\"introduction\">Introduction</h2>\r\n<p>xsv is a command line program for indexing, slicing, analyzing, splitting and joining CSV files. Commands should be simple, fast and composable:</p>\r\n<ol>\r\n<li>Simple tasks should be easy.</li>\r\n<li>Performance trade offs should be exposed in the CLI interface.</li>\r\n<li>Composition should not come at the expense of performance.</li>\r\n</ol>\r\n<p>We will be using the CSV file provided in the <a href=\"https://burntsushi.net/stuff/worldcitiespop.csv\">documentation</a>.</p>\r\n<h2 id=\"commands-covered-in-this-episode\">Commands covered in this episode</h2>\r\n<ul>\r\n<li><strong>fixedlengths</strong> - Force a CSV file to have same-length records by either padding or truncating them.</li>\r\n<li><strong>fmt</strong> - Reformat CSV data with different delimiters, record terminators or quoting rules. (Supports ASCII delimited data.)</li>\r\n<li><strong>input</strong> - Read CSV data with exotic quoting/escaping rules.</li>\r\n<li><strong>partition</strong> - Partition CSV data based on a column value.</li>\r\n<li><strong>split</strong> - Split one CSV file into many CSV files of N chunks.</li>\r\n<li><strong>sample</strong> - Randomly draw rows from CSV data using reservoir sampling (i.e., use memory proportional to the size of the sample).</li>\r\n<li><strong>cat</strong> - Concatenate CSV files by row or by column.</li>\r\n</ul>\r\n',300,0,0,'CC-BY-SA','csv,command-line,data',0,0,1),
(2759,'2019-02-28','Cleaning the Potentiometers on a Peavey Bandit 65',1244,'I disassemble and clean the pots on my Peavey Bandit 65 to fix static in the knobs.','<p>Since my daughter has been learning a bit of guitar in the last several months, I\'veactuallygottenmyoldelectricguitarandamplifierbackoutagainaftermanyyearsinthecloset.TheampisaPeaveyBandit65,whichwasaanaffordablesolid-stateworkhorsekindofampbackinthemid-80sandI\'ve had it since it was new. In this episode I talk through the process of removing the brains of the amp and cleaning the potentiometers to try to get rid of some of the static that\'shappeningwhenIturntheknobs.IalsodiscoverbelatedlythatthereasonIwasnotgettinganydistortionwhenIturnedthesaturationupwasthattheampwasstuckonthecleanchannel—showshowlongit\'s been since I used the amp, I kind of forgot how the thing works!</p>\r\n\r\n<p>Click image below to view photo gallery</p>\r\n\r\n<p><a href=\"https://www.flickr.com/photos/137675441@N05/albums/72157706214884694\" title=\"Peavey Bandit 65 Cleaning\" target=\"_blank\"><img src=\"https://hackerpublicradio.org/eps/hpr2759.jpg\" alt=\"Peavey Bandit 65 Cleaning\"></a></p>\r\n\r\n<h2>Links</h2>\r\n\r\n<ul>\r\n <li><a href=\"https://peavey.com/\">Peavey Electronics Corporation</a></li>\r\n <li><a href=\"https://www.fender.com/products/electric-guitars/stratocaster\">The Fender Stratocaster</a></li>\r\n</ul>\r\n\r\n<h2>Credits</h2>\r\n\r\n<ul>\r\n <li>Music bumpers are from Kimiko Ishizaka\'s<em>TheOpenGoldbergVariations</em>:<ahref=\"https://www.opengoldbergvariations.org/\">https://www.opengoldbergvariations.org/</a>,usedbypermissionoftheir<ahref=\"https://creativecommons.org/publicdomain/zero/1.0/\">CC01.0Universal(CC01.0)PublicDomainDedicationlicense</a>.</li>\r\n</ul>',238,0,0,'CC-BY-SA','Guitars,electronics,amplifiers,maintenance,repair',0,0,1),
(2753,'2019-02-20','Specific Settings In Storytelling',1027,'Lostnbronx looks at why you might choose specific settings for your tales.','<p>How does setting interact with plot or character? Why would you choose one type of setting over another? And how do certain specific settings become intrinsic aspects of the story itself?</p>\r\n<p>Lostnbronx takes a breezy, mostly incoherent stab at this rather complicated topic.</p>\r\n',107,105,0,'CC-BY-SA','stories, storytelling, setting, lostnbronx',0,0,1),
(2758,'2019-02-27','Haskell - Data types and database actions',2566,'Brief summary of how to declare your own datatypes in Haskell and how to store data in database','<h2 id=\"intro\">Intro</h2>\r\n<p>I have been doing series about web programming in Haskell and realized that I might have skipped over some very basic details. Better later than never, I’ll go over some of them briefly (data types and database actions). Hopefully things will make more sense after this (like with my friend, whose last programming course was programming 101 and they said afterwards that now all that 3d and game programming is suddenly making sense).</p>\r\n<h2 id=\"data-types\">Data types</h2>\r\n<p>Data here has nothing to do with databases (yet). This is how you can declare your own data types in Haskell. They’re declared with keyword <code>data</code> followed with type name, equals sign and one or more value constructors. Type name and value constructors have to start with uppercase letter.</p>\r\n<p>Simplest type is following:</p>\r\n<pre><code>data Simple = One</code></pre>\r\n<p>This declares a type called <code>Simple</code> that has single possible value: <code>One</code>.</p>\r\n<p>More interesting type is shown below. <code>Colour</code> has three possible values: <code>Red</code>, <code>Green</code> and <code>Blue</code>.</p>\r\n<pre><code>data Colour =\r\n Red\r\n | Green\r\n | Blue</code></pre>\r\n<p>It’s possible to have parameters in value constructor. Following is <code>Payment</code> type that could be used to indicate how payment was done. In case of <code>Cash</code> amount is stored. In case of <code>IOU</code> free text is recorded.</p>\r\n<pre><code>data Payment =\r\n Cash Double\r\n | IOU Text</code></pre>\r\n<p>Fictional usage of the <code>Payment</code> is shown below. Function <code>paymentExplanation</code> takes a <code>Payment</code> as parameter and returns <code>Text</code> describing the payment. In case of cash payment, brief explanation of how much was paid is returned. In case of IOU slip the function returns explanation stored in <code>IOU</code> value.</p>\r\n<p><code>paymentExplanation :: Payment -> Text</code> part is type declaration. It states that <code>paymentExplanation</code> takes argument of type <code>Payment</code> and returns result as <code>Text</code>.</p>\r\n<pre><code>paymentExplanation :: Payment -> Text\r\npaymentExplanation payment =\r\n case payment of\r\n Cash amount ->\r\n "Cash payment of " <> (show amount) <> " euros"\r\n IOU explanation ->\r\n explanation</code></pre>\r\n<p>Parameters don’t have to be hard coded in the type definition. Parametrized types allows creating more general code. <code>Maybe</code> is very useful data type that is often used for data that might or might not be present. It can have two values: <code>Nothing</code> indicating that there isn’t value and <code>Just a</code> indicating that value is present.</p>\r\n<pre><code>data Maybe a =\r\n Nothing\r\n | Just a</code></pre>\r\n<p><code>a</code> is type parameter that is filled in when declaring type. Below is a function that takes <code>Maybe Payment</code> as a parameter and if value of <code>payment</code> parameter is <code>Just</code> returns explanation of it (reusing the function we declared earlier). In case of <code>Nothing</code> <code>"No payment to handle"</code> is returned.</p>\r\n<pre><code>invoice :: Maybe Payment -> Text\r\ninvoice payment =\r\n case payment of\r\n Just x ->\r\n paymentExplanation x\r\n Nothing ->\r\n "No payment to handle"</code></pre>\r\n<p>Alternatively one can omit <code>case</code> expression as shown below and write different value constructors directly as parameters. In both cases, compiler will check that programmer has covered all cases and emit a warning if that’s not the case.</p>\r\n<pre><code>invoice :: Maybe Payment -> Text\r\ninvoice (Just payment) =\r\n paymentExplanat
(2754,'2019-02-21','Craigslist Scam Catch',460,'Helped a client avoid being scammed on Craigslist and wanted to share some tips to HPR.','<h2 id=\"introduction\">Introduction</h2>\r\n<p>Hello and welcome to Hacker Public Radio, I’m Edward Miro and for this episode I decided to record on a personal experience I had recently helping a client catch a Craigslist Scam. This will be part two in my series I’m calling “Information Security for Everyone”. As with most of the content I publish in the world of INFOSEC, my goal is to present the information in a way that a majority of people can get value from and anyone can play this for a friend, colleague or family member and make it easy for the non-hackers in our lives to understand. This particular episode shows a powerful way social-engineering can be implemented to steal money from unsuspecting victims and I will break down a few main points and red flags to look out for at the end.</p>\r\n<p>A couple weeks ago I was sitting with a client when she asked me offhandedly if I’d ever sent a Moneygram before. I told her I had and ask curiously why she wanted to know. She explained that she was very excited to be adopting a puppy from online and she needed to send $350 USD to the service that ships pets across the country. This immediately caused my hacker-sense to start tingling so I probed a bit more about the transaction.</p>\r\n<p>I asked if she had spoken to the seller on the phone, and she said she hadn’t. I said that seemed weird, but she assured me that the seller said it had to do with her religion. I wasn’t aware of any religious prohibitions to speaking on the phone that also allowed using Craigslist, but okay. I told her that that seemed a bit fishy to me. She asserted that she thought it did too at first, but she knew it was legit because she wasn’t sending the money to the seller, it was being sent to a third party pet transportation company that the seller had had contact her. She even showed the website of the company on her cell phone, which to be blunt, to my eyes looked extremely janky. I asked her if we could sit down for a few minutes and take a look at a few details before she sends anyone any money. She reluctantly agreed and really wanted this puppy.</p>\r\n<p>The first thing I asked to look at was the emails back and forth from the seller. I checked Google and all other major social media sites for the sellers name. No matches. Couldn’t Google the sellers email address due to the Craigslist email relay system. This in and of itself might be okay, we all use pseudonyms online sometimes and Craigslist is a site you might not wanna use your real name. Fine.</p>\r\n<p>She then showed me the email thread with the shipping company.</p>\r\n<p>The first strange thing I noticed from the emails was the link to the pet shipping company. The name didn’t match the URL in the link. You’d think a business would be able to get their own name right. I also saw that if you Googled the name given by the shipper, it’s extremely similar to a legitimate pet shipping company and indeed that legit company comes up as the first site found due to Google “fixing” our query. When you go to the link in the email however, the site itself was terrible to my eyes, but not to my client who is not as seasoned as I am at catching scams. I also showed her that the “company” didn’t have any social media presence. At all. No Facebook, Twitter, anything. Also the email address that was contacting her was <code>reallylongcompanyname@outlook.com</code></p>\r\n<p>She also told me she had spoken to the shippers on the phone and I asked if she still had their number. She did, but she told me she couldn’t ever get through when she called them and they’d always have to call her back. I asked for the number and called it on my phone. It was a Google Voice number! Not only that it was set to screening mode. She also told me when he did call her, he was rude and tried to get her to hurry up and send the money. I told her I was 100% confident this was a scam and I ad
(2756,'2019-02-25','Bash Tips - 20',1955,'Deleting arrays; positional and special parameters in Bash','<h2 id=\"tidying-loose-ends-some-collateral-bash-tips\">Tidying loose ends <small><small>(Some collateral Bash tips)</small></small></h2>\r\n<h3 id=\"deleting-arrays\">Deleting arrays</h3>\r\n<p>I forgot to cover one thing on my list when doing the last show: I forgot to explain how to delete arrays and array elements. I’ll cover that topic in this episode.</p>\r\n<h3 id=\"positional-and-special-parameters\">Positional and Special parameters</h3>\r\n<p>I have also avoided talking much about the positional and special parameters in Bash: <code>\'$1\'</code>, <code>\'$2\'</code>, <code>\'$#\'</code> and the rest. I will cover (some of) these in this episode.</p>\r\n<h3 id=\"silly-titles\">Silly titles</h3>\r\n<p>I stopped doing the weird episode titles by episode 14 because I thought the joke was getting tired. However, I think a few people missed them (and a certain HPR colleague was found <em>vandalising my new titles as they were being posted</em> ;-), so I have added them inside the notes on the older shows and am adding one here – as a homage to silliness.</p>\r\n<h2 id=\"long-notes\">Long notes</h2>\r\n<p>I have provided detailed notes as usual for this episode, and these can be <a href=\"https://hackerpublicradio.org/eps/hpr2756/full_shownotes.html\">viewed here</a>.</p>\r\n<h2 id=\"links\">Links</h2>\r\n<ul>\r\n<li><a href=\"https://www.gnu.org/software/bash/manual/bash.html\">“<em>GNU BASH Reference Manual</em>”</a>\r\n<ul>\r\n<li>Section <a href=\"https://www.gnu.org/software/bash/manual/bash.html#Shell-Parameter-Expansion\">“3.4 Shell Parameters”</a></li>\r\n<li>Section <a href=\"https://www.gnu.org/software/bash/manual/bash.html#Shell-Builtin-Commands\">“4 Shell Builtin Commands”</a>\r\n<ul>\r\n<li>Section <a href=\"https://www.gnu.org/software/bash/manual/bash.html#Bourne-Shell-Builtins\">“4.1 Bourne Shell Builtins”</a></li>\r\n<li>Section <a href=\"https://www.gnu.org/software/bash/manual/bash.html#Bash-Builtins\">“4.2 Bash Builtin Commands”</a></li>\r\n</ul></li>\r\n<li>Section <a href=\"https://www.gnu.org/software/bash/manual/bash.html#The-Set-Builtin\">“4.3.1 The Set Builtin”</a></li>\r\n</ul></li>\r\n</ul>\r\n<ul>\r\n<li><p>POSIX Shell Command Language: <a href=\"https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#unset\"><em>unset</em></a></p></li>\r\n<li><p><a href=\"https://hackerpublicradio.org/series/0042.html\">HPR series: <em>Bash Scripting</em></a></p></li>\r\n<li>Previous episodes under the heading <em>Bash Tips</em>:\r\n<ol>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=1648\">HPR episode 1648 “<em>Bash parameter manipulation</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=1843\">HPR episode 1843 “<em>Some Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=1884\">HPR episode 1884 “<em>Some more Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=1903\">HPR episode 1903 “<em>Some further Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=1951\">HPR episode 1951 “<em>Some additional Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2045\">HPR episode 2045 “<em>Some other Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2278\">HPR episode 2278 “<em>Some supplementary Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2293\">HPR episode 2293 “<em>More supplementary Bash tips</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2639\">HPR episode 2639 “<em>Some ancillary Bash tips - 9</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2649\">HPR episode 2649 “<em>More ancillary Bash tips - 10</em>”</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2659\">HPR episode 2659 “<em>Further ancillary Bash tips - 11</em>”</a></l
(2757,'2019-02-26','How to DM',2694,'Klaatu explains how to DM an RPG, and Lostnbronx demonstrates, step by step, how to build a dungeon','<h2>Klaatu</h2>\r\n<p>\r\nI\'vegottenalotofgreatfeedbackontheInterfaceZeroplay-throughandtheepisodeaboutgettingstartedwithRPGsIdidwithLostnbronx.\r\nPeoplehavetoldmethatoneofthebiggestblockerstogettingstartedisknowingwhattodoasGM.</p><p>\r\nNow,I\'ve read lots of rulebooks and GM guides, and it seems to me that most of them assume you\'veeitherplayedanRPGbefore,andsoyou\'ve seen an example of a Game Master at play, or you\'veseenoneonYoutubeorTwitch.It\'s a safe assumption, but it\'seasytoforgetallofthosegreatexamplesunderpressure.\r\nSointhisepisode,LostnbronxandIaregoingtoprovideyouwithsomeclearanddirectinstructionsonwhatexactlyaGMdoes.\r\n</p><p>\r\nTheshortversionisthis:</p>\r\n<ol><li><p>\r\nTelltheplayerswheretheyareandwhattheyseearoundthem.\r\n</p></li><li><p>\r\nListentotheplayerswhentheytellyouwhattheywanttodo.\r\n</p></li><li><p>\r\nTelltheplayerstheoutcome,basedonyourprivilegedknowledgeofthegameworldoronarollofthedice,oftheiractions.\r\n</p></li></ol>\r\n<p>\r\nYouloopoverthatsequence,andyou\'re game mastering!\r\n</p><p>\r\nBut that makes for a short episode, and anyway, there are details about the process that we can talk about to make you feel more comfortable with the prospect of deciphering a game world with your friends.\r\n</p><p>\r\nTo that end, Lostnbronx and I have started a <a href=\"https://mixedsignals.ml\" target=\"_blank\">website dedicated to gaming</a>! You should check it out, subscribe to our feed. We discuss everything game-related there, plus a little tech and all manner of topics of interest to geeks.\r\n</p>\r\n\r\n<h2>Lostnbronx</h2>\r\n<p>\r\nRight off the bat, it\'simportanttounderstandthateveryGMisdifferent.Notwostylesofrunningagamematchcompletely,norshouldthey.Andwhilethere\'s no one correct way to run a game, there are plenty of ways to do it poorly. The GM wears many hats, but in my opinion, the most important job is to make sure that everyone has a good time. Your players are giving you an evening out of their lives. Next week they\'llprobablygiveyouanother.It\'s your job to make sure that time isn\'twasted.\r\n</p><p>\r\nBydefinition,games,evenrole-playinggames,areaformofentertainment-- like reading a book, watching a movie, or enjoying the circus. When you go to that, the GM is the ringmaster, presenting the show; while the players are both the audience, and the main attraction. The GM controls the world, the people, the monsters, the history, even the weather. The GM controls everything, in fact...except for the player characters. A game master presents the situation, but it\'s the players who decide what to do with that information.\r\n</p><p>\r\nNow, this is all pretty vague, and describing RPG\'s is far less informative than playing them. Considering this is a podcast, I encourage you to go back and listen to Klaatu\'s aforementioned \"Interface Zero\" episodes. These are excellent examples of actual game play. If you\'re having a hard time imagining how RPG\'s are presented and experienced, you\'ll appreciate those shows.\r\n</p><p>\r\nNow then, almost all games are divided into genre types: sword and sorcery; space opera; spies; super-heroes; and pretty much everything else. And I mean everything! If there\'s a genre of fiction and storytelling that you enjoy, chances are there\'s a game or game setting for it somewhere. The most popular style of RPG\'s out there are fantasy. Think \"Lord of the Rings\". Think \"Harry Potter\". Think of anything, in fact, because all of it is possible.\r\n</p><p>\r\nA staple of the high fantasy genre of gaming is the dungeon. Now, that term has two meanings in this sort of game: first, the usual meaning, of what amounts to the basement of a castle, with jails, interrogation rooms, storage rooms, and more. The othe
(2762,'2019-03-05','What You Really Are',996,'Lostnbronx looks back at his early gaming days.','<p>I got into Dungeons & Dragons back in the 1970s. This is my memory of that time and that gaming group, and especially, of the guy who taught me how to play.</p>',107,95,0,'CC-BY-SA','gaming, D&D, lostnbronx',0,0,1),
(2763,'2019-03-06','Deepgeek explains SPF records',849,'Confused about SPF? Klaatu was. Here\'sDeepgeek\'s explanation.','<p>\r\nKlaatu reads a <a href=\"https://gopher.info-underground.net:70/scottphlog/9997-SPF-Intro.txt\" target=\"_blog\">phlog (gopher) post</a> by Deepgeek explaining the practical uses of SPF records.\r\n</p>',78,99,0,'CC-BY-SA','email,spf,mx,postfix,smtp',0,0,1),
(2770,'2019-03-15','Navigating the maze of RPG books',1873,'There are so many kinds of RPG books out there, where do you start? Klaatu tells all!','<p>\r\nTaxonomy of RPG-related books:\r\n</p>\r\n\r\n<ol>\r\n<li><p>\r\nRulebooks tell you how to play the game.\r\n</p></li>\r\n<li><p>\r\nOptional books of rules add modular components to the base game. They add nuance to specific actions (for example, a book might add rules on owning and managing a castle in a fantasy world, or it might add rules on hacking in a sci fi game; these are things you can do without rules in the game, but if you want added stakes, then these books are ones you would want to obtain).\r\n</p></li>\r\n<li><p>\r\nAdventures (formerly called \"modules\") provide game plots and locations, in the event that you have no interest in designing your own.\r\n</p></li>\r\n<li><p>\r\nSource books or \"settings\" provide additional information on the setting of a game, sometimes even providing an alternate game universe with additional rules.\r\n</p></li>\r\n<li><p>\r\nExtra media, like novels, comics, movies, and video games, provide more information (sometimes in canon, sometimes not) about the game universe in which you are playing. Rarely do these have impact on the rules of the game, but they may provide a common language and shared experience for the players.\r\n</p></li>\r\n</ol>\r\n\r\n<p>\r\nThe only essential purchase is the rulebook. Everything else can be generated by gamers. Purchasing additional material is optional, and can either be seen as a great way to support a company providing your entertainment, or as an insidious plot by greedy corporations to rope you into a perpetual cycle of capitalism. However, RPG is a pretty healthy (and often open) system, so free and open content abounds.\r\n</p>\r\n\r\n\r\n',78,95,0,'CC-BY-SA','book,rpg,game',0,0,1),
(2782,'2019-04-02','Never stop gaming',1277,'Ways to feed the gaming impulse, even when you can\'tgame','<p>\r\nShownotesareon<ahref=\"https://mixedsignals.ml/games/blog/blog/blog_lifestyle-gamer\"target=\"_blank\">mixedsignals.ml</a>\r\n</p>',78,95,0,'CC-BY-SA','rpg,dm,gm,gamemaster,dungeonmaster,dnd',0,0,1),
(2795,'2019-04-19','Dead Earth',2210,'A review of a 20-year old, GNU Free Documentation Licensed, RPG about post-apocalyptic turmoil','<p>\r\nFull shownotes are on <a href=\"https://mixedsignals.ml/games/blog/blog/blog_dead-earth\" target=\"_blank\">mixedsignals.ml</a>\r\n</p>\r\n\r\n<p>\r\nYou can download Klaatu\'supdaterevisionofthegamematerialshere:<ahref=\"https://mixedsignals.ml/download/deadearth-bundle-gfdl.7z\">https://mixedsignals.ml/download/deadearth-bundle-gfdl.7z</a>\r\n</p>',78,95,0,'CC-BY-SA','RPG,TabletopGame,DeadEarth',0,0,1),
(2768,'2019-03-13','Writing Web Game in Haskell - Planetary statuses',1122,'Tuula describes system for recording planetary statuses in their game','<h2 id=\"intro\">Intro</h2>\r\n<p>In episode hpr2748 Writing Web Game in Haskell - Special events, I talked about how to add special events in the game. One drawback with the system presented there was that the kragii worms might attack planet that already had kragii worms present. This time we’ll look into how to prevent this. As a nice bonus, we also come up with system that can be used to record when a planet has particularly good harvest season.</p>\r\n<h2 id=\"data-types-and-database\">Data types and Database</h2>\r\n<p>We need a way to represent different kinds of statuses that a planet might have. These will include things like on going kragii attack or a particularly good harvest season. And since these are will be stored in database, we are also going to use derivePersistField to generate code needed for that.</p>\r\n<pre><code>data PlanetaryStatus =\r\n GoodHarvest\r\n | PoorHarvest\r\n | GoodMechanicals\r\n | PoorMechanicals\r\n | GoodChemicals\r\n | PoorChemicals\r\n | KragiiAttack\r\n\r\nderivePersistField "PlanetaryStatus"</code></pre>\r\n<p>We could have recorded statuses as strings, but declaring a separate data type means that compiler can catch typos for us. It also makes code easier to read as <code>PlanetaryStatus</code> is much more informative than <code>String</code> or <code>Text</code>.</p>\r\n<p>For database, we use following definition shown below in models file. It creates database table <code>planet_status</code> and respective Haskell data type <code>PlanetStatus</code>. There will be one row in database for each status that a planet has. I could have stored all statuses in a list and store that in database, effectively having one row for any planet. Now there’s one row for any planet + status combination. Choice wasn’t really based on any deep analysis, but merely a gut feeling that this feels like a good idea.</p>\r\n<pre><code>PlanetStatus json\r\n planetId PlanetId\r\n status PlanetaryStatus\r\n expiration Int Maybe\r\n deriving Show Read Eq</code></pre>\r\n<p><code>expiration</code> column doesn’t have <code>NOT NULL</code> constraint like all other columns in the table. This is reflected in <code>PlanetStatus</code> record where data type of <code>planetStatusExpiration</code> is <code>Maybe Int</code> instead of <code>Int</code>. So some statuses will have expiration time, while others might not. I originally chose to represent time as <code>Int</code> instead of own data type, but I have been recently wondering if that was really a good decision.</p>\r\n<h2 id=\"kragii-attack-redux\">Kragii attack, redux</h2>\r\n<p>Code that does actual database query looks pretty scary on a first glance and it’s rather long. First part of the code is there to query database and join several tables into the query. Second part of the code deals with counting and grouping data and eventually returning <code>[Entity Planet]</code> data that contains all planets that match the criteria.</p>\r\n<pre><code>-- | Load planets that are kragii attack candidates\r\nkragiiTargetPlanets :: (MonadIO m, BackendCompatible SqlBackend backend\r\n , PersistQueryRead backend, PersistUniqueRead backend) =>\r\n Int -> Int -> Key Faction -> ReaderT backend m [Entity Planet]\r\nkragiiTargetPlanets pop farms fId = do\r\n planets <- E.select $\r\n E.from $ (planet `E.LeftOuterJoin` population `E.LeftOuterJoin` building `E.LeftOuterJoin` status) -> do\r\n E.on (status E.?. PlanetStatusPlanetId E.==. E.just (planet E.^. PlanetId)\r\n E.&&. status E.?. PlanetStatusStatus E.==. E.val (Just KragiiAttack))\r\n E.on (building E.?. BuildingPlanetId E.==. E.just (planet E.^. PlanetId))\r\n E.on (population E.?. PlanetPopulationPlanetId E.==. E.just (planet E.^. PlanetId))\r\n E.where_ (plan
(2764,'2019-03-07','Personal password algorithms',2444,'Is it possible to generate a unique password for every site? Klaatu tries.','<p>\r\nHere is a bash script to generate an org-mode word list matrix.\r\nIt requires at least one file ending in <code>.list</code> to be used as a source of words or strings.\r\n</p>\r\n\r\n<pre><code>\r\n#!/bin/bash\r\n\r\nif [ -z $1 ]; then\r\n DEST=matrix.org\r\nelse\r\n DEST=$1\r\nfi\r\n\r\ncat >> \"${DEST}\" <<EOF\r\n| | a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | q | r | s | t | u | v | w | x | y | z | ? |\r\n|-+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---|\r\nEOF\r\n\r\nVERT=(a b c d e f g h i j k l m n o p q r s t u v w x y z ?)\r\n\r\ncat *list > tmp || exit\r\n\r\nBIG=`wc -l tmp | cut -f1 -d\'\'`\r\n\r\nc=\"0\"\r\n\r\nwhile [ \"$c\" -lt \"27\" ]; do\r\n # horizontal row across\r\n n=\"0\"\r\n v=`echo ${VERT[$c]}`\r\n printf \"| $v |\" >> \"${DEST}\"\r\n while [ \"$n\" -lt \"27\" ]; do\r\n i=`echo $((1 + RANDOM % $BIG))`\r\n w=`awk \"FNR==$i\" tmp`\r\n #reduce chance of empty cell\r\n if [[ -z $w ]]; then\r\n i=`echo $((1 + RANDOM % $BIG))`\r\n w=`awk \"FNR==$i\" tmp`\r\n echo \"blank cell found\"\r\n fi\r\n printf \"$w | \" >> \"${DEST}\"\r\n n=$[$n+1]\r\n done\r\n echo \" \" >> \"${DEST}\"\r\n c=$[$c+1]\r\ndone\r\n\r\n/usr/bin/rm tmp\r\n</code></pre>\r\n\r\n<p>\r\nWhen you open the resulting file (matrix.org by default) in emacs, use the fill-paragraph (m-x fill-paragraph) function to align the cells into a pretty table.\r\n</p>\r\n\r\n<p>\r\nInvent your own key, and generate some test passwords.\r\nDo this 6 or 8 times, and then try to reverse the key using the passwords and the table.\r\nIf the logic to reverse the key is too simple, then try using values relying on the metadata, rather than data, of the table (for instance, the number of letters in the first word in the table starting with the same letter as the site name, or whatever).\r\n</p>\r\n\r\n<p>\r\nDo you have analogue methods of generating passwords?\r\nPost ideas to either the comments or, better yet, as an HPR episode!\r\n</p>\r\n\r\n<p>\r\n Here is a word list for testing:<br/>\r\n <a href=\"https://hackerpublicradio.org/eps/hpr2764_wordlist.html\">https://hackerpublicradio.org/eps/hpr2764_wordlist.html</a>\r\n</p>\r\n',78,99,0,'CC-BY-SA','password,security,algorithm,puzzle,cipher',0,0,1),
(2766,'2019-03-11','Disk enumeration on Linux',1443,'Klaatu reviews the various commands used to enumerate drives on Linux','<p>\r\nThe old way:\r\n</p>\r\n\r\n<pre><code>\r\n$ ls /dev/sd*\r\n</code></pre>\r\n\r\n<p>\r\nAnother old way:\r\n</p>\r\n\r\n<pre><code>\r\n$ fdisk --list\r\n</code></pre>\r\n\r\n<p>\r\nAn old way to see what you just plugged in:\r\n</p>\r\n\r\n<pre><code>\r\n$ sudo dmesg | tail\r\n</code></pre>\r\n\r\n<p>\r\nSome new tricks:\r\n</p>\r\n<pre><code>\r\n$ lsblk\r\nNAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT\r\nsda 8:0 0 2.7T 0 disk \r\n├─sda1 8:1 0 23.3G 0 part \r\n└─sda2 8:2 0 2.7T 0 part \r\nsdb 8:16 0 3.9G 0 disk \r\nsdc 8:32 0 111.8G 0 disk \r\n├─sdc1 8:33 0 100M 0 part /boot/efi\r\n└─sdc2 8:34 0 111.7G 0 part /\r\nsdd 8:48 0 1.8T 0 disk \r\n├─sdd1 8:49 0 120G 0 part /var\r\n├─sdd2 8:50 0 120G 0 part /tmp\r\n├─sdd3 8:51 0 60G 0 part /opt\r\n└─sdd4 8:52 0 1.5T 0 part /home\r\nsde 8:64 0 298.1G 0 disk \r\n├─sde1 8:65 0 500M 0 part \r\n├─sde2 8:66 0 296.8G 0 part \r\n└─sde3 8:67 0 826M 0 part \r\nsdf 8:80 0 931.5G 0 disk \r\n└─sdf1 8:81 0 931.5G 0 part \r\nsdg 8:96 1 7.5G 0 disk \r\n└─sdg1 8:97 1 7.5G 0 part \r\n</code></pre>\r\n\r\n<p>\r\nUser-friendly udisks:\r\n</p>\r\n\r\n<pre><code>\r\n$ udisks --monitor /dev\r\nCtrl-c\r\n$ udisk --enumerate | sort\r\n/org/freedesktop/UDisks/devices/sda\r\n/org/freedesktop/UDisks/devices/sda1\r\n/org/freedesktop/UDisks/devices/sda2\r\n/org/freedesktop/UDisks/devices/sdb\r\n/org/freedesktop/UDisks/devices/sdc\r\n/org/freedesktop/UDisks/devices/sdc1\r\n[...]\r\n$ udisks --mount /dev/sdc1\r\nMounted /dev/sdc1 on /media/mythumbdrive\r\n$ udisks --unmount /dev/sdc1\r\n</code></pre>\r\n',78,0,0,'CC-BY-SA','fdisk,dmesg,lsblk,udisks',0,0,1),
(2767,'2019-03-12','Djvu and other paperless document formats',1935,'A tutorial on how to read and generate djvu files','<p>\r\nDjVu is a digital document format with advanced compression technology. \r\nDjVu allows for the distribution of very high resolution images of scanned documents, digital documents, and photographs. \r\nDjVu viewers are available for the <a href=\"https://github.com/RussCoder/djvujs\" target=\"_blank\">web browser</a> (search for djvujs in Firefox for an extension), the desktop ( <a href=\"https://wiki.gnome.org/Apps/Evince\" target=\"_blank\">Evince</a>, <a href=\"https://okular.kde.org/\" target=\"_blank\">Okular</a> an BSD/Linux, and <a href=\"https://djvu.sourceforge.net/djview4.html\" target=\"_blank\">djview</a> on BSD/Linux/Windows/Mac), and <a href=\"https://f-droid.org/en/packages/org.sufficientlysecure.viewer/\" target=\"_blank\">mobile</a> devices.\r\n</p>\r\n\r\n<p>\r\nThe toolchain for encoding and decoding DjVu is \r\n<a href=\"https://djvu.sourceforge.net/\" target=\"_blank\">djvulibre</a>\r\n</p>\r\n<p>\r\n<a href=\"https://djvu.js.org/\" target=\"_blank\">djvu.js</a> is a Javascript library useful for online viewing.\r\n</p>\r\n\r\n<p>\r\n<a href=\"https://djvu.org/\" target=\"_blank\">djvu.org</a> contains sample documents and specification documents.</p>\r\n\r\n<h2>Creating a djvu file</h2>\r\n\r\n<p>\r\nThe tool you use to convert something to the .djvu format depends on your requirements. If you\'reconvertingabasic,black-and-whitedocument,then<code>cjb2</code>(partofthedjvulibredistribution)works:\r\n</p>\r\n\r\n<pre><code>\r\n$cjb2-dpi300foo.tiff\r\n$ls\r\nfoo.tiff\r\nfoo.djvu\r\n</code></pre>\r\n\r\n<p>\r\nIfyouwanttoconvertsomethingmorecomplex,thenuse<code>c44</code>(alsoapartofthedjvulibredistribution):\r\n</p>\r\n\r\n<pre><code>\r\n$c44-dpi300bar.jpgbar.djvu\r\n$ls\r\nbar.jpg\r\nbar.djvu\r\n</code></pre>\r\n\r\n<p>\r\nToputbothofthesefilesinasingleDjVucontainer:\r\n</p>\r\n\r\n<pre><code>\r\n$djvm-cbaz.djvufoo.djvubar.djvu\r\n$ls\r\nbar.djvu\r\nbaz.djvu\r\nfoo.djvu\r\n</code></pre>\r\n\r\n<p>\r\nYoucanaddbookmarks,too.\r\nOpenatextfilecalled<code>book.marks</code>(oranynameyouprefer)andenter:\r\n<p/>\r\n\r\n<pre><code>\r\n(bookmarks\r\n(\"Foo\"\"#1\")\r\n(\"Bar\"\"#2\")\r\n)\r\n</code></pre>\r\n\r\n<p>\r\nAndthenapplyittoyourDjVufile:\r\n</p>\r\n\r\n<pre><code>\r\n$djvused-e\'set-outline book.marks\'-sbaz.djvu\r\n</code></pre>\r\n\r\n<p>\r\nThere\'s more you can do with DjVu, but this has been an overview of how I use it.\r\n</p>\r\n',78,0,0,'CC-BY-SA','pdf, ebook, bloat, djvu',0,0,1),
(2773,'2019-03-20','Lead/Acid Battery Maintenance and Calcium Charge Voltage',1869,'Discussion on installing new Calcium battery into older vehicle and resulting maintenance issues.','<p>Although Lead/Acid batteries are old tech, the use of Calcium as an alloy metal has been a more modern development. Unfortunately many people do not realize this causes an incompatibility with older vehicles due to charging voltage. This episode discusses the use of smart chargers for long term battery maintenance.</p>',373,0,0,'CC-BY-SA','automotive, battery, maintenance, charger',0,0,1),
(2769,'2019-03-14','Quick Review of the AstroAI WH5000A Multimeter',1455,'NYbill reviews, yet another, inexpensive multimeter.','<p>NYbill does <b>yet another</b> inexpensive multimeter review. This time the AstroAI WH5000A. (Its time for a multimeter intervention!)</p>\r\n<p>The meter:</p>\r\n<ul>\r\n<li><a href=\"https://www.astroai.com/portfolio-items/astroai-digital-multimeter-trms-6000-counts-multimeters/\" class=\"uri\">https://www.astroai.com/portfolio-items/astroai-digital-multimeter-trms-6000-counts-multimeters/</a></li>\r\n</ul>\r\n<p>Pics for the episode:</p>\r\n<ul>\r\n<li><a href=\"https://media.gunmonkeynet.net/u/nybill/collection/astroai-wh5000a-dmm/\" class=\"uri\">https://media.gunmonkeynet.net/u/nybill/collection/astroai-wh5000a-dmm/</a></li>\r\n</ul>',235,0,0,'CC-BY-SA','multimeter, electronics, test equipment, hardware review',0,0,1),
(2771,'2019-03-18','Embedding hidden text in Djvu files',2476,'Part 2 of Klaatu\'sDjvuminiseries','<p>\r\nToembedtextintoaDjvufile,youmustcreatea<code>djvused</code>scriptdetailingthepageandbitmaplocationofoneof:character,word,line,paragraph,orregion.\r\n</p>\r\n\r\n<p>\r\nForgoodmeasure,youshouldfirstlistthecontentsofyourDjvubundle:\r\n</p>\r\n\r\n<pre><code>$djvused-e\'select; ls\'test.djvu\r\n1P177062p0001.djvu\r\n2P199144p0002.djvu\r\n3P12323p0003.djvu\r\n4P57059p0004.djvu\r\n5P96725p0005.djvu\r\n6P53868p0006.djvu\r\n</code></pre>\r\n\r\n<p>\r\nThendefinethelocationoftextinafilecalled,forinstance,<code>content.dsed</code>.Assumethatmypageis1000pxby1000px:\r\n</p>\r\n\r\n<pre><code>select; remove-ant; remove-txt\r\n\r\nselect \"p0004.djvu\" # page 4\r\nset-txt\r\n(page 0 0 1000 1000\r\n (word 100 600 450 800 \"Hello\" )\r\n (word 100 600 450 800 \"world\" ))\r\n\r\n.\r\n\r\nselect \"p0005.djvu\"\r\nset-txt\r\n(page 0 0 1000 1000\r\n (line 100 400 900 600 \"Hacker Puppy Radio\"))\r\n</code></pre>\r\n\r\n<p>\r\nApply this script to your Djvu file with <code>dvjused</code>:\r\n</p>\r\n\r\n<pre><code>djvused -f ./content.dsed -s test.djvu\r\n</code></pre>\r\n\r\n<h2>Converting from PDF to Djvu</h2>\r\n\r\n<p>\r\nYou can convert PDF files to Djvu with the <code>djvudigital</code> command. Due to license incompatibility, it does require you to compile a Ghostscript plugin, but it\'s an easy build. Get the <a href=\"https://sourceforge.net/projects/djvu/files/GSDjVu/1.10\" target=\"_blank\">gsdjvu</a> code, and then follow its README instructions.\r\n</p>\r\n\r\n<p>\r\nOnce you\'ve built the Ghostscript driver, you can convert PDF to Djvu:\r\n</p>\r\n\r\n<pre><code>djvudigital --words foo.pdf foo.djvu\r\n</code></pre>\r\n',78,0,0,'CC-BY-SA','pdf, ebook, bloat, djvu',0,0,1),
(2772,'2019-03-19','My applications and software part 3',585,'A short show about the software I use in Linux Mint','<p>Hallo HPR listeners – in my recent episodes hpr2738 and hpr2746 I talked about some of the applications and software I regularly use as part of my day to day use of Linux Mint. This follow up show will continue with a few more of the same.</p>\r\n<ul>\r\n<li><p>CUPS – Common Unix Printing Software; printing in Linux with this utility is fairly well supported, if you don’t have a very recent printer it’s a good chance that CUPS will be able to find a driver for your printer if a Linux one has not been supplied when you bought it or through the manufacturers support site. In the menu just search for print and it will bring up the application for adding a new printer.</p></li>\r\n<li><p>Gparted – fully featured disc management tool for formatting and partitioning discs</p></li>\r\n<li><p>Document viewer – generic pdf viewer</p></li>\r\n<li><p>Software manager</p>\r\n<ul>\r\n<li>Synaptic package manager</li>\r\n</ul></li>\r\n<li><p>Terminal – apt command for updating the system and installing new software</p></li>\r\n<li><p>get_iplayer</p></li>\r\n</ul>\r\n',338,0,0,'CC-BY-SA','Software, applications, utilities',0,0,1),
(2774,'2019-03-21','CJDNS and Yggdrasil',629,'A summary of the things I like about CJDNS and Yggdrasil, and the places I think they could improve.','<p>This is my first time doing this sort of thing, so I’m sorry if it’s not very good.</p>\r\n<ul>\r\n<li><a href=\"https://github.com/cjdelisle/cjdns/\">https://github.com/cjdelisle/cjdns/</a></li>\r\n<li><a href=\"https://yggdrasil-network.github.io/\">https://yggdrasil-network.github.io/</a></li>\r\n</ul>',374,0,0,'CC-BY-SA','CJDNS,Yggdrasil',0,0,1),
(2776,'2019-03-25','Sub-Plots In Storytelling',1093,'Lostnbronx looks at the importance of tightly-structured subplots in storytelling.','<p>What makes for strong subplots? Why can some subplots be chopped out of a tale without harming it? Why can some be chopped out, and it actually makes the tale stronger? Is this modular approach the best way to bring in subplots, or is there another method that might be better?</p>\r\n<p>Story construction is a complicated topic; Lostnbronx tries (and largely fails) to make sense of this small part of it.</p>\r\n',107,105,0,'CC-BY-SA','stories, storytelling, sub-plots, lostnbronx',0,0,1),
(2777,'2019-03-26','The quest for the perfect laptop.',1867,'Knightwise is out looking for a new laptop and describes what he is looking for and why.','<p>Looking for a new laptop.</p>\r\n<p>Candidates</p>\r\n<ul>\r\n<li>HP Envy x360</li>\r\n<li>Lenovo X280</li>\r\n<li>Lenovo X380</li>\r\n<li>Lenovo X380 Yoga</li>\r\n<li>Lenovo X1</li>\r\n<li>Lenovo X1 Yoga</li>\r\n</ul>\r\n',111,0,0,'CC-BY-SA','computer, hardware, geek, buy',0,0,1),
(2786,'2019-04-08','My YouTube Channels',423,'A short show about some of my YouTube channels inspired by Ahuka','<p>Hallo HPR listeners this is Tony Hughes again coming from Blackpool in the UK.</p>\r\n<p>Recently Ahuka started a series on the YouTube channels that he subscribes to and this seems like a good topic to share some of my favourite YouTube channels. This time I’ll share some of the tech and Linux based channels I watch.</p>\r\n<ul>\r\n<li><p>bigclive.com – Clive strips down and tests equipment particularly cheap Chinese electronics - <a href=\"https://www.youtube.com/user/bigclivedotcom/videos\" class=\"uri\">https://www.youtube.com/user/bigclivedotcom/videos</a></p></li>\r\n<li><p>Category5 Technology TV – A general technology based show with a large focus on Linux and open source software. <a href=\"https://www.youtube.com/user/category5tv\" class=\"uri\">https://www.youtube.com/user/category5tv</a></p></li>\r\n<li><p>Explaining Computers – Exactly what it says on the tin, they review new computer hardware and computer related tech, including single board Computers such as the Raspberry Pi and Pine 64. <a href=\"https://www.youtube.com/user/explainingcomputers\" class=\"uri\">https://www.youtube.com/user/explainingcomputers</a></p></li>\r\n<li><p>DASGeek – Ryan is a fairly new person to Linux and is part of the Destination Linux podcast crew - <a href=\"https://destinationlinux.org/\" class=\"uri\">https://destinationlinux.org/</a> Ryan is an avid gamer and as well as reviewing Linux he will often look at the latest games and how well they will work on a Linux PC. <a href=\"https://www.youtube.com/channel/UCIme1suHyN7cAGrTy8RBdhQ\" class=\"uri\">https://www.youtube.com/channel/UCIme1suHyN7cAGrTy8RBdhQ</a></p></li>\r\n<li><p>Big Daddy Linux – A new video LUG which have a new episode every week at 8pm EST or you can watch a recording of the show later. <a href=\"https://www.youtube.com/channel/UCtZRKfyvx7GUEi-Lr7f4Nxg/videos\" class=\"uri\">https://www.youtube.com/channel/UCtZRKfyvx7GUEi-Lr7f4Nxg/videos</a></p></li>\r\n<li><p>Raspberry Pi – Videos from the Foundation and community contributors. <a href=\"https://www.youtube.com/channel/UCFIjVWFZ__KhtTXHDJ7vgng/videos\" class=\"uri\">https://www.youtube.com/channel/UCFIjVWFZ__KhtTXHDJ7vgng/videos</a></p></li>\r\n<li><p>Free Audacity Tutorials – Very handy for those of us that regularly record and edit audio with Audacity, for learning more about how to do various things with this software. <a href=\"https://www.youtube.com/user/FreeAudacityTutorial/videos\" class=\"uri\">https://www.youtube.com/user/FreeAudacityTutorial/videos</a></p></li>\r\n</ul>\r\n<p>And finally for this episode</p>\r\n<ul>\r\n<li>Linus Tech Tips – Another Computer review show all about tips and tricks relating to all stuff geeky. Be aware that this show is heavily sponsored although Linus does seem to be very fair with both praise and criticism for what he is reviewing. <a href=\"https://www.youtube.com/user/LinusTechTips/videos\" class=\"uri\">https://www.youtube.com/user/LinusTechTips/videos</a></li>\r\n</ul>\r\n',338,106,0,'CC-BY-SA','Linux, Computers, YouTube, Gaming, Electronics, Audacity',0,0,1),
(2778,'2019-03-27','Functor and applicative in Haskell',1841,'Brief introduction on functor and applicative patterns in Haskell and where they can be used','<p>Two common patterns that I seem to run all the time while working on my 4x space game are functor and applicative. This episode explains them briefly.</p>\r\n<h2 id=\"functor\">Functor</h2>\r\n<p>Functor is a way to apply function over a structure we don’t want to alter. Type of the structure stays same, but values inside of it can change. One of the most common one is list, but there are many others.</p>\r\n<p>Functor type class is defined below. There’s one function <code>fmap</code> that takes two parameters: a function from <code>a</code> to <code>b</code> and structure <code>f a</code>. Result will be structure <code>f b</code>.</p>\r\n<pre><code>class Functor f where\r\n fmap :: (a -> b) -> f a -> f b</code></pre>\r\n<p>This is fairly abstract, so couple example might help. First we define a little helper function that raises it’s argument to 2nd power (in the episode I talk about doubling the value, my mistake there).</p>\r\n<pre><code>-- | this really raises x to 2nd power and doesn't double it\r\ndouble x = x * x</code></pre>\r\n<p>Given a list of <code>Int</code> we can raise them to power of two by using <code>fmap</code>:</p>\r\n<pre><code>> fmap double [1, 2, 3, 4, 5]\r\n[1, 4, 9, 16, 25]</code></pre>\r\n<p>Since function being applied to structure is type of <code>(a -> b)</code>, we can change type of the value inside of the structure. Below is example of turning list of <code>Int</code> to list of <code>Text</code>.</p>\r\n<pre><code>> fmap show [1, 2, 3, 4, 5]\r\n["1", "2", "3", "4", "5"]</code></pre>\r\n<p>This pattern isn’t limited to list and there are many others. You can even define your own ones, if you’re so inclined. The pattern stays the same. One function, <code>fmap</code>, that takes function of type <code>(a -> b)</code> and structure <code>f a</code> and turns it into structure of <code>f b</code>. Details how this is actually done depend on the specific functor.</p>\r\n<p>Other common functor is <code>Maybe</code> that is often used in cases where data might or might not be present. <code>Maybe a</code> has two possible values <code>Just a</code> indicating that value <code>a</code> is present and <code>Nothing</code> indicating that there is no value present. When <code>fmap</code> is used in this context, <code>Just a</code> will turn to <code>Just b</code> and <code>Nothing</code> will stay as <code>Nothing</code>.</p>\r\n<pre><code>> fmap (x -> x * x) $ Just 2\r\nJust 4\r\n> fmap (x -> x * x) Nothing\r\nNothing</code></pre>\r\n<p><code>Either a b</code> is sometimes used for value that can be correct or an error. It has two value constructors <code>Right b</code> indicates that value is correct, <code>Left a</code> indicates an error case. <code>a</code> and <code>b</code> don’t have to be of same type (and usually aren’t). For example, if we have <code>Either Text Int</code>, then we have value where error case is <code>Text</code> and correct value is <code>Int</code>.</p>\r\n<pre><code>> fmap double $ Right 5\r\nRight 25\r\n> fmap double $ Left "distance calculation failed because of flux-capacitor malfunction"\r\nLeft "distance calculation failed because of flux-capacitor malfunction"</code></pre>\r\n<p>Functors can be placed inside of functors. The only difference is that you have to reach through multiple layers. Simplest way of doing that is to compose multiple <code>fmap</code> functions together like in the example below. Pay attention to in which order nested functors are defined as <code>Maybe [Int]</code> and <code>[Maybe Int]</code> are different things. Former is for case where list of <code>Int</code> might or might not be present. Latter is for case where there’s always list, but single element inside of the list might or might not be present.</p>\r\n<pre><code>> (fmap . fmap) do
(2779,'2019-03-28','HTTP, IPFS, and torrents',711,'Replacing the web with new, decentralized protocols','<p>Some ramblings about how we might replace HTTP with more robust, decentralized protocols.</p>\r\n<ul>\r\n<li><a href=\"https://en.wikipedia.org/wiki/InterPlanetary_File_System\">https://en.wikipedia.org/wiki/InterPlanetary_File_System</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol\">https://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol</a></li>\r\n</ul>',374,0,0,'CC-BY-SA','HTTP, IPFS, torrents',0,0,1),
(2780,'2019-03-29','My SBC Nextcloud Install Pt. 1 - Hardware',1375,'How I built my self-enclosed Nextcloud server using a single board computer and a RAID enclosure','<p>I explain the build process for my home Nextcloud server using a single board computer and a 4 bay RAID enclosure. This is part 1 of a 3 part series.</p>\r\n<p>My parts list for the server build:</p>\r\n<ul>\r\n<li><p>Rockpro64<br />\r\n<a href=\"https://www.pine64.org/?product=rockpro64-4gb-single-board-computer\" class=\"uri\">https://www.pine64.org/?product=rockpro64-4gb-single-board-computer</a></p></li>\r\n<li><p>eMMC module<br />\r\n<a href=\"https://www.pine64.org/?product=16gb-emmc\" class=\"uri\">https://www.pine64.org/?product=16gb-emmc</a></p></li>\r\n<li><p>USB Adapter for eMMC module<br />\r\n<a href=\"https://www.pine64.org/?product=usb-adapter-for-emmc-module\" class=\"uri\">https://www.pine64.org/?product=usb-adapter-for-emmc-module</a></p></li>\r\n<li><p>Power supply<br />\r\n<a href=\"https://www.pine64.org/?product=rockpro64-12v-5a-us-power-supply\" class=\"uri\">https://www.pine64.org/?product=rockpro64-12v-5a-us-power-supply</a></p></li>\r\n<li><p>Heatsink<br />\r\n<a href=\"https://www.pine64.org/?product=rockpro64-20mm-mid-profile-heatsink\" class=\"uri\">https://www.pine64.org/?product=rockpro64-20mm-mid-profile-heatsink</a></p></li>\r\n<li><p>90˚ male to female USB extension<br />\r\n<a href=\"https://www.amazon.com/wawpi-Cable-Extension-Degree-Female/dp/B01EDOGO4E\" class=\"uri\">https://www.amazon.com/wawpi-Cable-Extension-Degree-Female/dp/B01EDOGO4E</a></p></li>\r\n<li><p>4 bay RAID enclosure<br />\r\n<a href=\"https://www.mediasonic.ca/product.php?id=1358153144\" class=\"uri\">https://www.mediasonic.ca/product.php?id=1358153144</a></p></li>\r\n<li><p>HDDs<br />\r\nThe 4TB HDDs were ones I already had but you can use any ones, just make sure they are the same brand/model/size/etc to minimize any complications.</p></li>\r\n</ul>\r\n<p>minnix at uymail dot com for help, questions, or just general chatter</p>\r\n',375,0,0,'CC-BY-SA','nextcloud,single board computer,home server,sbc,arm',0,0,1),
(2783,'2019-04-03','The Windows \"Shutdown.exe\" Command Explained',923,'A rundown of the Windows \"shutdown.exe\" command.','<h3>Shutdown.exe</h3>\r\n<ul>\r\n<li>Introduced in Windows 2000 as a way to shutdown the PC via the command prompt.</li>\r\n<li>Included in all versions since Windows 2000 all the way to Windows 10 and Windows Server 2019.</li>\r\n<li>ReactOS, the open source binary-compatible clone of Windows, also includes the shutdown.exe command and the commands are the same.</li>\r\n<li>Located in %windir%\\System32. The variable %windir% is usually c:\\windows. In ReactOS, the variable is usually c:\\reactos (failed to mention this in the recording).\r\n</li>\r\n</ul>\r\n<p>Links: </p>\r\n<ul>\r\n<li><a href=\"https://ipfs.io/ipfs/QmXoypizjW3WknFiJnKLwHCnL72vedxjQkDDP1mXWo6uco/wiki/Shutdown.exe.html\">https://ipfs.io/ipfs/QmXoypizjW3WknFiJnKLwHCnL72vedxjQkDDP1mXWo6uco/wiki/Shutdown.exe.html</a></li>\r\n<li><a href=\"https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/shutdown\">https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/shutdown</a></li>\r\n<li><a href=\"https://ss64.com/nt/shutdown.html\">https://ss64.com/nt/shutdown.html</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Shutdown_(computing)#Windows_and_ReactOS\">https://en.wikipedia.org/wiki/Shutdown_(computing)#Windows_and_ReactOS</a></li>\r\n</li>\r\n</ul>\r\n',152,0,0,'CC-BY-SA','shutdown, windows, commandprompt, cmd',0,0,1),
(2805,'2019-05-03','My 50th Show',1064,'This is a review of the other 49 shows I\'vepostedinthelast3years','<p>HallothisisagainTonyHughesforHPR.Thisisanauspiciousshowformeasit’smy50thshowthatIhaverecordedandreleasedonHPRinmyownright.Howeverpriortomy1stshowinmyownrightIdidgueston2shows.</p>\r\n<p>Thefirstofthesewas:</p>\r\n<ul>\r\n<li>hpr0844::TheFlyingHandbaghostedbyHPRVolunteers<br/>\r\nReleased:2011-10-26</li>\r\n</ul>\r\n<p>WhichwasashowthatwasrecordedatBarcampBlackpoolin2011,whenagroupofusgottogethertorecordapodcast,thehilariousthingwasthattheonlyplacewecouldfindtorecordwasastairwellwhichhappenedtobenexttothetoilets,definitelynotfamilyfriendlybutifyouwantalaughhavealisten.</p>\r\n<p>ThenextshowIappearedonwasaninterviewIdidwithKenFallonatmyfirstOggCampinthesameyear.</p>\r\n<ul>\r\n<li>hpr0863::TonyHughesFreeCyclehostedbyKenFallon<br/>\r\nReleased:2011-11-22.</li>\r\n</ul>\r\n<p>KenwasasusualtryingtorecruitnewhostsandinterviewedmewiththehopethatIwouldbecomeone.WellIdidbutittookanother5yearsbeforeIfinallyrecordedmyfirstshowinmyownright.</p>\r\n<p>Firstjusttosaytheideaforthisshowcomesfromhpr2700inwhichKencreatedascripttoautomatethebotvoicereadingalistofeveryshowthathasbeenreleasedonHPR,sotocelebratemy50thShowIthoughtIwouldlistmyshowsbutwithmerunningthroughthemanddoabriefsummaryoftheshowwhereappropriate.</p>\r\n<oltype=\"1\">\r\n<li><p>hpr2051::MyLinuxJourney<br/>\r\nReleasedon2016-06-13<br/>\r\ninthisepisodeItalkedaboutmyjourneyincomputingandstartingtouseLinux</p></li>\r\n<li><p>hpr2056::Interviewwithayounghacker<br/>\r\nReleasedon2016-06-20<br/>\r\nThiswasmyfirstofseveralinterviewswith<spanclass=\"citation\"data-cites=\"All_about_Code\">@All_about_Code</span>atmylocalRaspberryJam</p></li>\r\n<li><p>hpr2065::WhatsinMyBag<br/>\r\nReleasedon2016-07-01<br/>\r\nLookingatthisshowsotellsmeIhavetoredothisshowasmybagisverydifferentthesedays</p></li>\r\n<li><p>hpr2076::WhatMagazinesIreadPart1<br/>\r\nReleasedon2016-07-18<br/>\r\njustwhatthetitlesaid,ItalkedaboutthemagazinesIwasreadingatthatpointintime.</p></li>\r\n<li><p>hpr2087::MagazinesIreadPart2<br/>\r\nReleasedon2016-08-02<br/>\r\nThiswasafollowupofthelastshow</p></li>\r\n<li><p>hpr2097::NewToys<br/>\r\nReleasedon2016-08-16<br/>\r\nItalkedaboutmyhardwarejourneyoverthelast30oddyearsandtalkedaboutthei7systemIhadjustbought2ndhand</p></li>\r\n<li><p>hpr2101::What’sonmypodcatcher<br/>\r\nReleasedon2016-08-22<br/>\r\nAshowaboutthepodcastsIlistento.</p></li>\r\n<li><p>hpr2144::AnInterviewwithAllAboutCodeatManchesterBarCamp<br/>\r\nReleasedon2016-10-20<br/>\r\nafollowupinterviewwithJosh</p></li>\r\n<li><p>hpr2151::BarCampManchesterpart2<br/>\r\nReleasedon2016-10-31<br/>\r\nAninterviewwithClaire,theorganiserofBarCampManchester.</p></li>\r\n<li><p>hpr2157::BarCampManchesterpart3<br/>\r\nReleasedon2016-11-08<br/>\r\nThiswasaninterviewwithAlanO’DonohoewhohadstartedtheRaspberryJammovement</p></li>\r\n<li><p>hpr2257::WattOS<br/>\r\nReleasedon2017-03-28<br/>\r\nAcerAspireOneNetbook–Review</p></li>\r\n<li><p>hpr2265::WattOSonLenovoX61s<br/>\r\nReleasedon2017<br/>\r\nLenovoX61s–Review</p></li>\r\n<li><p>hpr2271::RaspberryPiZeroW<br/>\r\nReleasedon2017-04-17<br/>\r\nReviewEpisodeonthethenNewPiZeroW</p></li>\r\n<li><p>hpr2280::LenovoX61sPart2<br/>\r\nReleasedon2017-04-28<br/>\r\nFollowupreviewafteraSSDupgradeandusingLinuxLite</p></li>\r\n<li><p>hpr2286::SurvivingaStroke<br/>\r\nReleasedon2017-05-08<br/>\r\nAverypersonalepisodeaboutmysurvivingaStrokeinFebruary2017</p></li>\r\n<li><p>hpr2295::MXLinux<br/>\r\nReleasedon2017-
(2784,'2019-04-04','The Yamaha Disklavier',1440,'I talk about the Yamaha Disklavier DKC500RW that\'sinmyofficeatwork','<p>InthisepisodeItalkaboutthe<ahref=\"https://en.wikipedia.org/wiki/Disklavier\"target=\"_blank\">YamahaDisklavier</a>DKC500RWthat\'s in my office at work. This is a very high-tech player piano and one of the coolest pieces of music gear I\'veeverseen.</p>\r\n\r\n<h3>PhotoAlbum(clickimage)</h3>\r\n\r\n<p><adata-flickr-embed=\"true\"href=\"https://www.flickr.com/photos/137675441@N05/albums/72157707383776874\"title=\"Yamaha Disklavier\"target=\"_blank\"><imgsrc=\"https://farm8.staticflickr.com/7862/33424303208_c9f831fce7.jpg\"width=\"500\"height=\"375\"alt=\"Yamaha Disklavier\"></a></p>\r\n\r\n<h2>Links</h2>\r\n\r\n<ul>\r\n<li>Websiteshowinghowtodeterminewhichmodeldisklavieryouhave:<ahref=\"https://yamahaden.com/news/disklavier-tips/item/276-how-to-determine-your-disklavier-model/276-how-to-determine-your-disklavier-model\"target=\"_blank\">Yamahaden</a></li>\r\n<li><ahref=\"https://www.kuhmann.com/Yamaha.htm\"target=\"_blank\">DisklavierTMWorld</a>:Thisisaprivatelyoperated,PublicService(non-profit)webpage.10,781piano-musicfilesin\'FIL\'(e-SEQ)&MIDIformat&SoftwarefortheYamahaDisklavier.PUBLIC-DOMAIN/\'Live\'MIDI-Performances/FREESequences</li>\r\n<li>Video:JonathanKulp,<em>ThreeEasyPiecesforPianoFour-Hands</em>:<ahref=\"https://www.youtube.com/watch?v=y4loSIApjPA\"target=\"_blank\">Videoofpremiereperformance</a></li>\r\n<li>Video:<ahref=\"https://youtu.be/_hNzz_DubCo\"target=\"_blank\">Disklavierinaction</a></li>\r\n</ul>',238,0,1,'CC-BY-SA','Music,Piano,Keyboard,MusicalInstruments,PlayerPianos,RecordingDevices',0,0,1),
(2810,'2019-05-10','Wi-Fi on Android',462,'Ken fixes an Android Firewalled Wi-Fi connection that reports no Internet and won’t connect','<h3>Background</h3>\r\n<p>\r\nYou\'rerunningafirewallonyourworkandhomenetworksright,soofcourseyou\'re running one on your Smart Phone. Given this device holds more information about you than you probably know yourself, it would be only prudent to make sure that you are protecting what gets in but also what gets out.\r\n</p>\r\n<p>\r\nI run <a href=\"https://f-droid.org/en/packages/dev.ukanth.ufirewall/\">AFWall+</a> which is available from the <a href=\"https://f-droid.org/\">F-Droid</a> app store. It runs fine on <a href=\"https://www.lineageos.org/\">LineageOS</a>.\r\n</p>\r\n<p>\r\nI then set it on the children\'sphonesothatnoapplicationisallowedtousemobiledata,andthenonlyapplicationsthatneedInternetgetInternetAccess.Thisworkswellasit\'s a normal use case for mobile applications to have intermittent access to the Internet.\r\n</p>\r\n<p>\r\nI see no reason why the Linux Kernel should need unfettered access to the Internet, so it\'snotallowedout.OneissueyoumaycomeacrossisthateventhoughyouknowthatthereisaConnectionyourphonedoesn\'t, and so it will display the <em>Wi-Fi Connected, no Internet</em> message. \r\n</p>\r\n<p>\r\n<img src=\"https://hackerpublicradio.org/eps/hpr2810_1.png\" />\r\n</p>\r\n<p>\r\nI\'mnotsurehowthischeckisdonebut<ahref=\"https://android.stackexchange.com/users/53535/abqnm\">abqnm</a>suggestsatintheStackExchangequestion<ahref=\"https://android.stackexchange.com/questions/63481/how-does-android-determine-if-it-has-an-internet-connection\">HowdoesAndroiddetermineifithasanInternetconnection?</a>thatitmayberelatedtoGoogleCloudMessaging.\r\n</p>\r\n\r\n<quote>\r\n...thismeansthatthedeviceisunabletoreceivearesponsefromGCM(GoogleCloudMessaging,theframeworkthathandlespushnotifications).Thistrafficissentthroughports5228,5229,and5230.IftheAPisblockingorinterferingwithtrafficonthoseports,pushnotificationswon\'t work ... \r\n<quote>\r\n<p>\r\nI do indeed see blocked attempts by Google Play Services on my own phone, but not on the other phones that have no google services installed. The only entry I see in the logs is an ICMP attempt to \"Comcast Cable Communications, Inc\". If you know more please record a show for <a href=\"https://hackerpublicradio.org\">Hacker Public Radio</a> about it.\r\n</p>\r\n\r\n<h3>Giving Access</h3>\r\n<p>\r\nNormally you will get a message saying that the Wi-Fi has no Internet access. \r\n</p>\r\n<p>\r\n<img alt=\"Android System. Wi-Fi has no Internet access. Tap for options\" src=\"https://hackerpublicradio.org/eps/hpr2810_2.png\" />\r\n</p>\r\n<p>\r\nIf you tap the message a popup will allow you to stay connected and will let you remember the choice.\r\n</p>\r\n<p>\r\n<img alt=\"OpenWireless.Org. This network has no Internet access. Stay connected? [] Don\'taskagainforthisnetworkNOYES\" src=\"https://hackerpublicradio.org/eps/hpr2810_3.png\" />\r\n</p>\r\n<p>\r\nIn some cases the router helpfully resets the connection before you can reply to the message meaning it goes into a loop continually popping up the message but not reacting to it.\r\n</p>\r\n<p>\r\nIn this case we can use <a href=\"https://f-droid.org/en/packages/com.termux/\">Termux</a> a Android Terminal emulator, to drop to a shell and fix the problem.\r\n</p>\r\n<p>\r\n<img src=\"https://hackerpublicradio.org/eps/hpr2810_4.png\" />\r\n</p>\r\n\r\n<p>\r\nI used <em>su</em> to get root access but you could also change to the user <em>wifi</em>.\r\n</p>\r\n<p>\r\nThe file you need to edit is <strong>/data/misc/wifi/wpa_supplicant.conf</strong>. It\'s probably best to edit this file with the wifi off.\r\n</p>\r\n<pre>\r\nnetwork={\r\n ssid=\"OpenWireless.Org\"\r\n key_mgmt=NONE\r\n priority=15\r\n id_str=\"{snip}\"\r\n}\r\n</pre>\r\n<p>\r\nScroll down to the network that is giving you trouble and add <strong>disabled=1</strong>\r\n</
(2787,'2019-04-09','NodeJS Part 1',613,'I don\'tknowJavascriptdo?','<h2id=\"links\">Links</h2>\r\n<ul>\r\n<li><ahref=\"https://github.com/crazy-max/nodejs-portable\"class=\"uri\">https://github.com/crazy-max/nodejs-portable</a></li>\r\n<li><ahref=\"https://github.com/GoogleChrome/puppeteer\"class=\"uri\">https://github.com/GoogleChrome/puppeteer</a></li>\r\n</ul>\r\n',36,0,0,'CC-BY-SA','NodeJS,puppeteer,programming,Javascript',0,0,1),
(2796,'2019-04-22','IRS,Credit Freezes and Junk Mail Ohh My!',746,'IRS Credit Freezes and Junk Mail','<h2 id=\"links\">Links</h2>\r\n<ul>\r\n<li><p><a href=\"https://darknetdiaries.com/episode/26/\" class=\"uri\">https://darknetdiaries.com/episode/26/</a></p></li>\r\n<li><a href=\"https://clark.com/personal-finance-credit/credit-freeze-and-thaw-guide/\" class=\"uri\">https://clark.com/personal-finance-credit/credit-freeze-and-thaw-guide/</a></li>\r\n<li><a href=\"https://clark.com/personal-finance-credit/free-credit-freezes/\" class=\"uri\">https://clark.com/personal-finance-credit/free-credit-freezes/</a></li>\r\n<li><p><a href=\"https://clark.com/consumer-issues-id-theft/opting-out-of-assorted-junk-mailings/\" class=\"uri\">https://clark.com/consumer-issues-id-theft/opting-out-of-assorted-junk-mailings/</a></p></li>\r\n<li><p><a href=\"https://www.youtube.com/watch?v=zWVoyrzqRbU\" class=\"uri\">https://www.youtube.com/watch?v=zWVoyrzqRbU</a> DROP HOE!</p></li>\r\n</ul>\r\n',36,0,0,'CC-BY-SA','IRS,Credit Freeze,Junk Mail,hacking',0,0,1),
(2788,'2019-04-10','Looping in Haskell',2848,'Tuula describes some loop-like constructs in Haskell','<p>Haskell is functional language where data is immutable. This means that regular for-loops don’t really exist. Looping however is very common pattern in programs in general. Here are some patterns how to do that in Haskell.</p>\r\n<h2 id=\"recursion\">Recursion</h2>\r\n<p>Calculating Fibonacci numbers is common example (sort of like hello world in Haskell). There’s many different implementations at https://wiki.haskell.org/The_Fibonacci_sequence if you’re interested on having a look.</p>\r\n<p>Simple recursive definition:</p>\r\n<pre><code>fibs :: Integer -> Integer\r\nfibs 0 = 0\r\nfibs 1 = 1\r\nfibs n = fibs (n-1) + fibs (n-2)</code></pre>\r\n<p>When called with <code>0</code> result is <code>0</code>. When called with <code>1</code> result is <code>1</code>. For all other cases, <code>fibs</code> is called with values <code>n-1</code> and <code>n-1</code> and the results are summed together. This works fine when <code>n</code> is small, but calculation gets slow really quickly with bigger values.</p>\r\n<p>Another way is to define list of all Fibonacci numbers recursively:</p>\r\n<pre><code>allFibs :: [Integer]\r\nallFibs = 0 : 1 : zipWith (+) allFibs (tail allFibs)</code></pre>\r\n<p>Here a list is constructed. First element is <code>0</code>, second element is <code>1</code> and rest of the list is obtained by summing the list with its tail (everything but the first element of the list). Definition is recursive and defines all Fibonacci numbers. However, Haskell doesn’t evaluate whole list, but only as much of it as is required.</p>\r\n<p>Common pattern of processing elements in a list, producing a new list:</p>\r\n<pre><code>addOne :: [Integer] -> [Integer]\r\naddOne [] = []\r\naddOne (x:xs) = x + 1 : addOne xs</code></pre>\r\n<p>Two cases, when called with an empty list <code>[]</code>, result is empty list. For all other cases, list is taken apart <code>(x:xs)</code>, <code>x</code> contains first element of the list and <code>xs</code> is rest of the list. Body of the function creates a new list where head is <code>x + 1</code> and tail is <code>addOne xs</code>. This processes whole list of <code>Integer</code> by adding one to each value. It also reverses the list.</p>\r\n<p>Second common pattern is processing a list and reducing it to a single value:</p>\r\n<pre><code>sumAll :: Integer -> [Integer] -> Integer\r\nsumAll n [] = n\r\nsumAll n (x:xs) = sumAll (n + x) xs</code></pre>\r\n<p>If given list is empty (the terminal case), result is <code>n</code>. Second case again takes list apart <code>(x:xs)</code>, adds <code>x</code> and <code>n</code> together and recursive call <code>sumAll</code> with tail of the list.</p>\r\n<p>This common pattern is discarding some elements of a list:</p>\r\n<pre><code>evenOnly :: [Integer] -> [Integer]\r\nevenOnly [] = []\r\nevenOnly (x:xs) = \r\n if even x\r\n then x : evenOnly xs\r\n else evenOnly xs</code></pre>\r\n<p>Again, result of empty list is just empty list. In all other cases we first check if <code>x</code> is even. If so, new list is constructed where head is <code>x</code> and tail is <code>evenOnly xs</code>. If <code>x</code> isn’t even, it’s discarded and <code>evenOnly</code> is called recursively with tail of the list.</p>\r\n<h2 id=\"more-tools\">More tools</h2>\r\n<p>Writing recursion by hand gets tedious and sometimes confusing (if you listened to the show, you probably noticed how I got confused and had to check that <code>evenOnly</code> actually works as I thought it would). For that reason, there are tools that abstract these common patterns and given them names.</p>\r\n<p>First is <code>map</code>. It applies given function to each element of a list, thus producing a new list:</p>\r\n<pre><code>> map (+1) [1..10]\r\n[2, 3, 4, 5, 6, 7, 8, 9, 10, 11]\r\n> map odd [1..10]\r\n[True, False, True, False, True, False, True, False, True, False]</code></pre>\r\n<p>Second is <code>fold</code>. There is good
(2789,'2019-04-11','Pacing In Storytelling',998,'Lostnbronx takes a stab at explaining why the pace of your story matters.','<p>Some stories, that are otherwise cookie-cutter in form, possessing familiar situations and clichéd characters, seem to nonetheless stand out. Other tales that might have great ideas, intriguing plots, and vivid characters, seem to hit the ground with a thud. The determining value here may lie with the pacing of the story.</p>\r\n<p>How does pacing (that is, timing) affect your story? Why does it matter? Can you make improvements in the pace by moving things around? What’s the best approach for creating it to begin with?</p>\r\n<p>Lostnbronx meanders for a while, often losing his way, and rarely making a coherent point regarding this complicated topic.</p>',107,105,0,'CC-0','stories, storytelling, pacing, lostnbronx',0,0,1),
(2791,'2019-04-15','LUKS like truecrypt',1523,'Klaatu demonstrates how to use LVM and cryptsetup to create and use portable encrypted filesystems','<p>\r\nCreate an empty file of a predetermined size:\r\n</p>\r\n\r\n<pre><code>$ fallocate --length 512M foo.img\r\n</code></pre>\r\n<p>Create a LUKS container on it:</p>\r\n<pre><code>$ cryptsetup --verify-passphrase luksFormat foo.img\r\n</code></pre>\r\n<p>Set it up:</p>\r\n<pre><code>$ sudo cryptsetup luksOpen foo.img foo\r\n$ ls /dev/mapper\r\nfoo\r\n$\r\n</code></pre>\r\n<p>Make a file system on it:</p>\r\n<pre><code>$ sudo mkfs.ext2 /dev/mapper/foo\r\n</code></pre>\r\n<p>If you don\'tneeditforanythingnow,youcancloseit:\r\n</p>\r\n<pre><code>$sudocryptsetupluksClosefoo\r\n$ls/dev/mapper\r\n$\r\n</code></pre>\r\n<p>Mountitasausablefilesystem:</p>\r\n<pre><code>$sudomkdir/crypt\r\n$sudomount/dev/mapper/foo/crypt\r\n</code></pre>\r\n<p>\r\nDependingonyoursystemconfiguration,youmayneedtosetupreasonablepermissions:\r\n</p>\r\n<pre><code>$sudomkdir/crypt/mystuff\r\n$sudochownklaatu:users/crypt/mystuff\r\n$sudochmod770/crypt/mystuff\r\n$echo\"hello world\">>/crypt/mystuff/file.txt\r\n</code></pre>\r\n<p>\r\nWhenyou\'re finished using your encrypted vault, unmount and close it:\r\n</p>\r\n<pre><code>$ sudo umount /crypt\r\n$ sudo cryptsetup luksClose foo\r\n</code></pre>\r\n\r\n',78,74,0,'CC-BY-SA','encryption',0,0,1),
(2793,'2019-04-17','bash coproc: the future (2009) is here',1276,'clacke discovers bash\'scoprockeywordandexplainssometoyexamples','<p>Ifyouwantthefullmanuscript,that’sat<ahref=\"https://gitlab.com/clacke/hpr/blob/master/hpr2793_bash_coproc_manuscript.adoc\">gitlab:hpr2793_bash_coproc_manuscript.adoc</a>.It’salmostatranscript,butIaddedspontaneouscommentarywhilereadingtheexamples,sothat’snotinthemanuscript.</p>\r\n<p>Episodeerrata:</p>\r\n<ul>\r\n<li><p>Commandsubstitutionwith<code>$()</code>isperfectlyvalidaccordingtoPOSIX,andisacceptedbothby<code>dash</code>andby<code>bash--posix</code>.It’snottobeconsideredabashism.</p></li>\r\n<li><p>Ifumbledthepronunciationofthe<code>printf</code>formatstringinoneplaceandsaid"parenthesis"insteadof"percentagesign".</p></li>\r\n<li><p>Itriedtosay"space"everytimethere’saspace,butIknowIforgotitinafewplaces.Butyouprobablyneedtolookattheshownotestoreallymakesenseofthecommandsanyway.</p></li>\r\n</ul>\r\n<p>Example#1:</p>\r\n<div class=\"sourceCode\" id=\"cb1\"><pre class=\"sourceCode bash\"><code class=\"sourceCode bash\"><a class=\"sourceLine\" id=\"cb1-1\" data-line-number=\"1\">$ <span class=\"bu\">echo</span> <span class=\"va\">$(</span><span class=\"bu\">echo</span> hacker public radio<span class=\"va\">)</span></a>\r\n<a class=\"sourceLine\" id=\"cb1-2\" data-line-number=\"2\"><span class=\"ex\">hacker</span> public radio</a>\r\n<a class=\"sourceLine\" id=\"cb1-3\" data-line-number=\"3\">$ <span class=\"va\">$(</span><span class=\"bu\">echo</span> echo hacker public radio<span class=\"va\">)</span> # <span class=\"ex\">It</span> can even supply the command itself, not just parameters. Note the word splitting.</a>\r\n<a class=\"sourceLine\" id=\"cb1-4\" data-line-number=\"4\"><span class=\"ex\">hacker</span> public radio</a>\r\n<a class=\"sourceLine\" id=\"cb1-5\" data-line-number=\"5\">$ <span class=\"st\">"</span><span class=\"va\">$(</span><span class=\"bu\">echo</span> echo hacker public radio<span class=\"va\">)</span><span class=\"st\">"</span> # <span class=\"ex\">Counteract</span> word splitting by putting the command substitution in quotes.</a>\r\n<a class=\"sourceLine\" id=\"cb1-6\" data-line-number=\"6\"><span class=\"ex\">bash</span>: echo hacker public radio: command not found</a>\r\n<a class=\"sourceLine\" id=\"cb1-7\" data-line-number=\"7\">$ <span class=\"kw\">`</span><span class=\"bu\">echo</span> echo hacker public radio<span class=\"kw\">`</span> # <span class=\"ex\">Old-style</span> command substitution</a>\r\n<a class=\"sourceLine\" id=\"cb1-8\" data-line-number=\"8\"><span class=\"ex\">hacker</span> public radio</a></code></pre></div>\r\n<p>More on command substitution in Dave’s <a href=\"https://hackerpublicradio.org/eps.php?id=1903\">hpr1903: Some further Bash tips</a>.</p>\r\n<p>Example #2:</p>\r\n<div class=\"sourceCode\" id=\"cb2\"><pre class=\"sourceCode bash\"><code class=\"sourceCode bash\"><a class=\"sourceLine\" id=\"cb2-1\" data-line-number=\"1\">$ <span class=\"bu\">echo</span> <span class=\"op\"><(</span><span class=\"bu\">echo</span> hacker public radio<span class=\"op\">)</span></a>\r\n<a class=\"sourceLine\" id=\"cb2-2\" data-line-number=\"2\"><span class=\"ex\">/dev/fd/63</span></a>\r\n<a class=\"sourceLine\" id=\"cb2-3\" data-line-number=\"3\">$ <span class=\"fu\">cat</span> <span class=\"op\"><(</span><span class=\"bu\">echo</span> hacker public radio<span class=\"op\">)</span></a>\r\n<a class=\"sourceLine\" id=\"cb2-4\" data-line-number=\"4\"><span class=\"ex\">hacker</span> public radio</a></code></pre></div>\r\n<p>You can also combine process substitution with redirection.</p>\r\n<p>Example #3:</p>\r\n<div class=\"sourceCode\" id=\"cb3\"><pre class=\"sourceCode bash\"><code class=\"sourceCode bash\"><a class=\"sourceLine\" id=\"cb3-1\" data-line-number=\"1\">$ <span class=\"bu\">echo</span> hacker public radio <span class=\"op\">></span> <span class=\"op\">>
(2797,'2019-04-23','Writing Web Game in Haskell - Simulation at high level',1547,'Tuula gives overview of simulation in their 4x game','<p>So far we have been concentrating on separate pieces of the game. Now it’s time to put some of them together as a simulation.</p>\n<h2 id=\"overview-of-simulation\">Overview of simulation</h2>\n<p>Simulation is done in discrete steps. Each step is roughly 1 earth month (completely arbitrary decision). Shorter than that and there might not be enough happening during turns to keep things interesting. Much longer than that and player might not have enough control on how to react things.</p>\n<p>In any case, current time is stored in database in table <code>time</code>. There should be only one row in that table at any given time. And that row has only one value, current time. Time is stored as integer as I didn’t want to deal with problems that you get when adding fractions to a float time after time. So current time (March 2019) would be <code>2019.3</code> in game terms and stored as <code>20193</code> in database.</p>\n<p>Main processing is done in function called <code>processTurn</code> that is shown below. It advances time for one decimal month, removes all expired statuses as explained in <a href=\"https://hackerpublicradio.org/eps.php?id=2768\">episode 2768</a> and then loads all factions.</p>\n<p>After that, various steps of the simulation are carried out for all loaded factions. These include handling special events as explained in <a href=\"https://hackerpublicradio.org/eps.php?id=2748\">episode 2748</a> and doing observations and report writing in manner described <a href=\"https://hackerpublicradio.org/eps.php?id=2703\">episode 2703</a>.</p>\n<pre><code>processTurn :: (BaseBackend backend ~ SqlBackend,\n BackendCompatible SqlBackend backend, PersistUniqueRead backend,\n PersistQueryWrite backend,\n PersistQueryRead backend, PersistStoreWrite backend, MonadIO m) =>\n ReaderT backend m Time\nprocessTurn = do\n newTime <- advanceTime\n _ <- removeExpiredStatuses newTime\n factions <- selectList [] [ Asc FactionId ]\n _ <- mapM (handleFactionEvents newTime) factions\n mapM_ handleFactionFood factions\n mapM_ (handleFactionConstruction newTime) factions\n _ <- mapM (addSpecialEvents newTime) factions\n -- Doing observations should always be done last to ensure players have\n -- recent reports of property they have full control, ie. planets.\n -- Otherwise it's possible that they'll receive reports that are one\n -- turn out of sync.\n mapM_ (handleFactionObservations newTime) factions\n return newTime</code></pre>\n<h2 id=\"more-mapping\">More mapping</h2>\n<p>Remember <code>map</code> and <code>fmap</code> that are used to run a function to each element in a list or general structure? <code>mapM</code> works in a similar way, but is used in monadic context. In <code>processTurn</code> function, we’re dealing with input and output and have IO monad present to allow us to do that (<code>MonadIO m</code> part of the type signature).</p>\n<p>If you step back a bit and squint a bit, then <code>map :: (a -> b) -> [a] -> [b]</code> and <code>fmap :: (a -> b) -> f a -> f b</code> and <code>mapM :: Monad m => (a -> m b) -> t a -> m (t b)</code> look pretty similar. Each take a function, structure and produce a new structure which values were created by running the given function for each element of the original structure.</p>\n<p>The difference is that <code>map</code> works only for lists, <code>fmap</code> works for functors (that were covered in <a href=\"https://hackerpublicradio.org/eps.php?id=2778\">episode 2778</a>) and <code>mapM</code> works for structures in monadic context.</p>\n<p>Best way to contact me nowadays is either by email or through fediverse where I’m Tuula@mastodon.social.</p>\n',364,107,0,'CC-BY-SA','haskell, persistent',0,0,1),
(2798,'2019-04-24','Should Podcasters be Pirates ?',725,'Knightwise waxes nostalgically on the early days of podcasting and wonders if we all sold out?','<p>In a car rant I think back to the early days of podcasting and how the ambience and vision of podcasting was far from the mainstream media approach from today. Have we all sold out ?</p>\r\n',111,0,1,'CC-BY-SA','podcast,pirate radio,decentralisation',0,0,1),
(2802,'2019-04-30','Mid-life (?) assessment',991,'It seems life goes faster and faster and then turns around and goes slower and slower','<p>At 40, I’m at the middle of the mean life expectancy in most parts of the world. What’s happened so far, and where do I go from here?</p>\r\n<p>I look at my life’s past in increasingly smaller chunks of years, and then at my life’s future in increasingly larger chunks of years, and speculate about those 80 years—or perhaps many more?—of expected lifetime.</p>\r\n<p>I’m saying mostly the things I wrote at <a href=\"https://loadaverage.org/conversation/10689347\" class=\"uri\">https://loadaverage.org/conversation/10689347</a> but with some small updates from the last 9 months.</p>\r\n',311,0,0,'CC-BY-SA','life, kids, work, medicine, future',0,0,1),
(2792,'2019-04-16','Playing around with text to speech synthesis on Linux',1203,'Playing around with different text to speech programs to see what is possible.','<p>Below the script I used to generate a bunch of wav files with different text to speech applications.</p>\r\n<pre><code>#!/bin/bash\r\n\r\nstring="This is HPR episode 2792 entitled \\"Playing around with text to speech synthesis on Linux\\" and is part of the series \\"Sound Scapes\\". It is hosted by Yeroon Bahten and is about 20 minutes long and carries a clean flag."\r\necho "${string}" > text.txt\r\n\r\nespeak -w espeak.wav "${string}" \r\nespeak -w espeak-ng-v-mb-us1.wav -v mb-us1 "${string}"\r\nespeak -w espeak-ng-v-mb-us2.wav -v mb-us2 "${string}"\r\nespeak -w espeak-ng-v-mb-us3.wav -v mb-us3 "${string}"\r\nespeak-ng "${string}"\r\nespeak-ng -v en-gb "${string}"\r\nespeak-ng -w espeak-ng-en-gb-scotland.wav -v en-gb-scotland "${string}"\r\nespeak-ng -w espeak-ng-en-us.wav -v en-us "${string}"\r\n\r\nflite -o flite-voice-cmu_us_slt.wav -voice cmu_us_slt "${string}"\r\n\r\necho "${string}"| festival --language english --tts # same as next line\r\necho "${string}"| text2wave --language british_english --tts -o festival_british_english.wav\r\ntext2wave -o festival_british_english.wav text.txt\r\n\r\nfor voice in don_diphone kal_diphone ked_diphone rab_diphone\r\ndo\r\n text2wave -o festival_voice_${voice}.wav -eval "(voice_${voice} )" text.txt\r\ndone\r\n\r\n# Gnustep say, recorded with audio recorder.\r\nsay "${string}"\r\n\r\ntext2wave -o festival_voice_cmu_us_slt_arctic_hts.wav -eval "(voice_cmu_us_slt_arctic_hts )" text.txt\r\n\r\n# merlin https://github.com/CSTR-Edinburgh/merlin\r\n\r\n# marytts: https://github.com/marytts</code></pre>\r\n',369,101,0,'CC-BY-SA','speech synthesis linux',0,0,1),
(2794,'2019-04-18','Interview with Martin Wimpress',2412,'In this episode, Yannick talks with Martin Wimpress about the Ubuntu MATE project','<p>Ubuntu, MATE.</p>\r\n<p>Two words which, taken separately, refer to great products.</p>\r\n<p>On one side, Ubuntu, one of the most popular, if not <em>the</em> most popular, linux distribution.</p>\r\n<p>On the other side, the MATE desktop environment, also very popular.</p>\r\n<p>One person took those two elements and combined them together to make Ubuntu MATE. That person is Martin Wimpress, and he joined me on the 21st of March to talk about the past, present, and future of the project.</p>\r\n',370,78,0,'CC-BY-SA','ubuntu, mate, ubuntu mate, martin wimpress, raspberry pi, desktop environment, linux',0,0,1),
(2808,'2019-05-08','Haskell function types',1469,'Tuula gives overview of function types in Haskell','<p>Haskell is statically typed language, meaning that during compilation, programs are checked for type correctness. This means that you won’t accidentally mix for example text and numbers. Haskell does type inference. The compiler will try and figure out what kind of types would make your program to be valid in terms of types. Programmer could completely omit types, but it’s often helpful to write type signatures for at least top level definitions. These will be helpful for both the programmers and compilers.</p>\r\n<h2 id=\"concrete-types\">concrete types</h2>\r\n<p>Simplest case is where types are spelled out definitely. Function <code>add</code> below takes two <code>Integer</code> parameters and produces <code>Integer</code> value. Note that types are written in upper case.</p>\r\n<p><code>add :: Integer -> Integer -> Integer</code></p>\r\n<p>It’s possible to not use concrete types. In following example <code>a</code> (note the lower case) can be anything. So function takes two values of <code>a</code>, a <code>Boolea</code> and produces <code>a</code>. This is useful technique for writing very general functions.</p>\r\n<p><code>choose :: a -> a -> Boolean -> a</code></p>\r\n<h2 id=\"ad-hoc-polymorphism\">ad hoc polymorphism</h2>\r\n<p>In previous example, we wouldn’t be able to do much at all with <code>a</code> as we don’t know its type. Sometimes we need to know a bit more about type, without specifically declaring its type. For those cases type constraints are useful.</p>\r\n<p><code>add :: (Num a) => a -> a -> a</code></p>\r\n<p>This version of <code>add</code> again takes two parameters, both being type <code>a</code> and produces value <code>a</code>. But <code>(Num a) =></code> part in the signature constraints <code>a</code> to be instance of <code>Num</code>. This type class (I’ll talk about these some other time) defines that each instance of it will have set of functions: <code>+</code>, <code>-</code>, <code>*</code>, <code>negate</code>, <code>abs</code>, <code>signum</code> and <code>fromInteger</code>. So now our <code>add</code> function can use those functions, regardless of what specific type <code>a</code> is.</p>\r\n<h2 id=\"parametrized-functions\">parametrized functions</h2>\r\n<p>Types used in function signature can be parametrized. If we wanted a function that returns a first element of any list, we could have following signature: <code>first :: [a] -> Maybe a</code></p>\r\n<p><code>first</code> takes single parameter, list of <code>a</code> and returns <code>Maybe a</code>. <code>Maybe</code> is a type that is used to signify a value that might or might not be present and has following definition:</p>\r\n<pre><code>data Maybe a =\r\n Nothing\r\n | Just a</code></pre>\r\n<p>So our function would return <code>Nothing</code> when given an empty list and <code>Just a</code> when given a list of at least one element.</p>\r\n<h2 id=\"using-functions\">using functions</h2>\r\n<p>Function application in Haskell doesn’t require parentheses around arguments. Calling our <code>add</code> function is just <code>add 1 2</code>. If one of the values is result of another function call, we need to tell which parameters belong to which function. Using <code>$</code> is one option: <code>add 1 $ add 2 3</code>, another option is to use parentheses: <code>add 1 (add 2 3)</code>.</p>\r\n<p>When function is called with less parameters than it expect, instead of run time error you’ll going to receive a function. In following example <code>addLots 5</code> will produce same value as <code>add 1000 5</code>:</p>\r\n<pre><code>addLots = add 1000\r\naddLots 5</code></pre>\r\n<p>Another contrived example of partial application:</p>\r\n<pre><code>findPodcasts :: [Podcast] -> Text -> [Podcast]\r\nsearch = findPodcasts loadedPodcasts\r\nmyPodcasts = search "Tuula"</code></pre>\r\n<h2 id=\"functions-as-types\">functions as types</h2>\r\n<p>Functions h
INSERTINTO`eps`(`id`,`date`,`title`,`duration`,`summary`,`notes`,`hostid`,`series`,`explicit`,`license`,`tags`,`version`,`downloads`,`valid`)VALUES(2799,'2019-04-25','building an arduino programmer',1212,'turn an arduino nano into a programmer','<ol type=\"1\">\r\n<li>intro</li>\r\n</ol>\r\n<p>1.1 brian in ohio</p>\r\n<p>1.2 out from under my rock</p>\r\n<ol start=\"2\" type=\"1\">\r\n<li>motivation</li>\r\n</ol>\r\n<p>2.1 ken fallon bootloader episode</p>\r\n<ul>\r\n<li>hpr 2660</li>\r\n<li>burned many bootloaders</li>\r\n<li>used usbtiny programmer</li>\r\n<li>putting together a programmer would be a good learning experience</li>\r\n</ul>\r\n<p>2.2 still use arduino</p>\r\n<ul>\r\n<li>easy to check out a new piece of hardware</li>\r\n<li>boards are cheap and easy to find</li>\r\n<li>boards are robust</li>\r\n</ul>\r\n<p>2.3 need to run an arduino board at lower frequency</p>\r\n<ul>\r\n<li>developing a data logger</li>\r\n<li>write code in c using the avr open source tool chain</li>\r\n<li>prototype on arduino board</li>\r\n</ul>\r\n<ol start=\"3\" type=\"1\">\r\n<li>needed supplies</li>\r\n</ol>\r\n<p>3.1 arduino ide</p>\r\n<ul>\r\n<li>get from your distro’s repository</li>\r\n<li>slackbuilds i used the version that repackages the binaries, the little a arduino</li>\r\n<li>read this good information<br />\r\n<a href=\"https://www.arduino.cc/en/Tutorial/ArduinoISP\" class=\"uri\">https://www.arduino.cc/en/Tutorial/ArduinoISP</a></li>\r\n</ul>\r\n<p>3.2 avrdude</p>\r\n<ul>\r\n<li>use it to test the programmer outside of the arduino environment</li>\r\n<li>part of the gnu avr toolchain</li>\r\n</ul>\r\n<p>3.3 arduino nano clone - un assembled</p>\r\n<p><img src=\"https://www.hackerpublicradio.org/eps/hpr2799-bare-nano.jpg\" alt=\"hpr2799-bare-nano.jpg\" /></p>\r\n<ul>\r\n<li>look for the boards that have the unpoplated icsp header</li>\r\n<li>make sure its a nano and not a pro-mini</li>\r\n</ul>\r\n<p>3.4 3 leds 3mm or smaller</p>\r\n<p><img src=\"https://www.hackerpublicradio.org/eps/hpr2799-led.jpg\" alt=\"hpr2799-led.jpg\" /></p>\r\n<ul>\r\n<li>optional but are useful, especially the heartbeat led</li>\r\n</ul>\r\n<p>3.5 3 resistors 200 ohm - small</p>\r\n<ul>\r\n<li>if you install the led’s</li>\r\n</ul>\r\n<p>3.6 1 5-10 uF electrolytic capacitor</p>\r\n<p>3.7 3-4 inch long jumper wire</p>\r\n<p>3.8 2x3 female header</p>\r\n<p><img src=\"https://www.hackerpublicradio.org/eps/hpr2799-2x3header.jpg\" alt=\"hpr2799-2x3header.jpg\" /></p>\r\n<p>3.9 some way to cut wire</p>\r\n<p>3.10 soldering supplies</p>\r\n<ol start=\"4\" type=\"1\">\r\n<li>howto</li>\r\n</ol>\r\n<p>4.1 upload arduino isp sketch to nano</p>\r\n<p>File→Examples→11.ArduinoISP→ArduinoISP</p>\r\n<ul>\r\n<li>i modified the sketch changing where the led’s are placed</li>\r\n<li><p>i put the led’s at digital 9, 7, and 5 for spacing</p>\r\n<pre><code>#define RESET 10 // Use pin 10 to reset the target rather than SS\r\n#define LED_HB 9 // No change define LED_ERR 7 // changed define\r\n#LED_PMODE 5 // changed</code></pre></li>\r\n<li><p>upload the sketch</p></li>\r\n</ul>\r\n<p>4.2 solder on led’s</p>\r\n<p><img src=\"https://www.hackerpublicradio.org/eps/hpr2799-led-on-board.jpg\" alt=\"hpr2799-led-on-board.jpg\" /></p>\r\n<ul>\r\n<li>solder the anode leg to the apropriate digital pin on the board</li>\r\n<li>add a resistor to the cathode leg of the led (usually the shorter leg)</li>\r\n<li>solder the resistor attached to the cathode to ground pin of the board</li>\r\n<li>i started with pin 9</li>\r\n<li>you can test each led before moving on to the next led</li>\r\n<li>my soldering ended up messy but it gets the job done</li>\r\n</ul>\r\n<p><img src=\"https://www.hackerpublicradio.org/eps/hpr2799-leds-done.jpg\" alt=\"hpr2799-leds-done.jpg\" /></p>\r\n<p>4.3 modify sketch and test leds</p>\r\n<ul>\r\n<li>you can modify the sketch</li>\r\n<li>change the heartbeat pin to whatever led you just soldered</li>\r\n<li>upload the modified sketch</li>\r\n<li>the led you just soldered should pulse</li>\r\n</ul>\r\n<p>4.4 clip jumper
(2801,'2019-04-29','Guitar Set Up Part 1.',1724,'NYbill talks about setting up a guitar.','<p>NYbill talks about setting up a guitar.</p>\r\n<p>Pics for the episode:</p>\r\n<p><a href=\"https://media.gunmonkeynet.net/u/nybill/collection/guitar-set-up/\" class=\"uri\">https://media.gunmonkeynet.net/u/nybill/collection/guitar-set-up/</a></p>\r\n',235,0,0,'CC-BY-SA','Guitar, DIY',0,0,1),
(2804,'2019-05-02','Awk Part 13: Fix-Width Field Processing',381,'In this episode, I discuss how to deal with fix-width field text files using Awk','<h1 id=\"basic-usage\">Basic usage</h1>\r\n<p>Use the <code>FIELDWIDTHS = "n1 n2 n3 ..."</code> annotation in the <code>BEGIN</code> section of an awk command to specify the widths of the fields.</p>\r\n<p>For instance, the following file has widths of 20, 10, and 12 characters.</p>\r\n<pre><code>NAME STATE TELEPHONE\r\nJohn Smith WA 418-311-4111\r\nMary Hartford CA 319-219-4341\r\nEvan Nolan IL 219-532-5301\r\nBoris Ratinski NC 201-553-5555\r\n</code></pre>\r\n<p>Below is an example of processing such a file:</p>\r\n<pre><code>BEGIN { FIELDWIDTHS = "20 10 12" }\r\nNR > 1 {\r\n name = $1\r\n state = $2\r\n phone = $3\r\n sub(/ +$/, "", name)\r\n sub(/ +$/, "", state)\r\n sub(/ +$/, "", phone)\r\n printf("%s lives in %s. The phone number is %s.\\n", name, state, phone)\r\n}\r\n</code></pre>\r\n<p>Then you can run the command:</p>\r\n<pre><code>awk -f process_fixed_width.awk fixed_width.txt\r\n</code></pre>\r\n',300,94,1,'CC-BY-SA','bash,linux,cli,command-line,awk',0,0,1),
(2807,'2019-05-07','Are bash local variables local?',661,'A lesson on dynamic scope vs lexical scope','<p><a href=\"https://en.wikipedia.org/wiki/Scope_%28computer_science%29\">https://en.wikipedia.org/wiki/Scope_%28computer_science%29</a></p>\r\n<p>In <a href=\"https://hackerpublicradio.org/eps.php?id=2739\">hpr2739</a>, Dave talked briefly about local variables. But what are they?</p>\r\n<p>In most modern languages, especially in compiled languages, "local" means that the value of a variable cannot be directly known, by looking up the name, outside the bounds of that function, but that’s not how it works in bash.</p>\r\n<p>Languages like C and Python have <em>lexical scope</em>. Lexical scope means local variables are local in the <em>text</em>. The names are local.</p>\r\n<p>If I’m writing code that is textually located outside the function, I cannot even describe how to access the variables within the function, because <code>myvariable</code> in my function is not the same variable, not the same place, as <code>myvariable</code> in your function.</p>\r\n<p>Languages like Bash and Elisp have <em>dynamic scope</em>. That means local variables are local in <em>time</em>. The names are global.</p>\r\n<p>What happens when you declare a variable <code>local</code> in bash is that the existing value of that variable is stowed away, to be brought back when your function exits.</p>\r\n<pre><code>#!/usr/bin/env bash\r\nfunction sayscope() {\r\n echo The scope is $whatsmyscope\r\n}\r\n\r\nfunction globalscope() {\r\n whatsmyscope=global\r\n}\r\n\r\nfunction dynamicscope() {\r\n whatsmyscope=dynamic\r\n}\r\n\r\nfunction localscope() {\r\n local whatsmyscope=local\r\n sayscope\r\n dynamicscope\r\n sayscope\r\n}\r\n\r\nglobalscope\r\nsayscope\r\nlocalscope\r\nsayscope</code></pre>\r\n<pre><code>The scope is global\r\nThe scope is local\r\nThe scope is dynamic\r\nThe scope is global</code></pre>\r\n<p>Perl has both, and it calls them <code>local</code> (dynamic scope, like bash) and <code>my</code> (lexical scope):</p>\r\n<pre><code>#!/usr/bin/env perl\r\nuse v5.10;\r\n\r\nsub sayscope {\r\n say "Dynamic scope is $whatsmyscope";\r\n}\r\n\r\nsub globalscope {\r\n $whatsmyscope="global";\r\n}\r\n\r\nsub dynamicscope {\r\n $whatsmyscope="dynamic";\r\n}\r\n\r\nsub lexicalscope {\r\n my $whatsmyscope="lexical";\r\n say "Lexical scope is $whatsmyscope";\r\n sayscope;\r\n}\r\n\r\nsub localscope {\r\n local $whatsmyscope="local";\r\n sayscope;\r\n dynamicscope;\r\n sayscope;\r\n lexicalscope;\r\n}\r\n\r\nglobalscope;\r\nsayscope;\r\nlocalscope;\r\nsayscope;</code></pre>\r\n<pre><code>Dynamic scope is global\r\nDynamic scope is local\r\nDynamic scope is dynamic\r\nLexical scope is lexical\r\nDynamic scope is dynamic\r\nDynamic scope is global</code></pre>\r\n<p>You almost never want to use <code>local</code> in Perl, it’s mostly there for historical reasons—lexical scope is a Perl 5 feature. <a href=\"https://perl.plover.com/local.html\" class=\"uri\">https://perl.plover.com/local.html</a> covers well the remaining few and narrow exceptions where <code>local</code> might be useful.</p>\r\n<p>As dynamic scope has <em>some</em> valid use, it’s available in some otherwise lexically scoped languages. For example, Common LISP has the <em>special</em> form, and several Schemes and Racket have <em>parameter objects</em>:</p>\r\n<ul>\r\n<li><p><a href=\"https://www.lispworks.com/documentation/HyperSpec/Body/d_specia.htm\" class=\"uri\">https://www.lispworks.com/documentation/HyperSpec/Body/d_specia.htm</a></p></li>\r\n<li><p><a href=\"https://srfi.schemers.org/srfi-39/srfi-39.html\" class=\"uri\">https://srfi.schemers.org/srfi-39/srfi-39.html</a></p></li>\r\n<li><p><a href=\"https://docs.racket-lang.org/reference/parameters.html\" class=\"uri\">https://docs.racket-lang.org/reference/parameters.html</a></p></li>\r\n</ul>\r\n<p>To dig fully into the history and flora of dynamic and lexical scope merits another e
(2823,'2019-05-29','Gentoo and why I use it',748,'I talk about what Gentoo is, and why I love it so much.','<p>Thanks to <a href=\"https://hackerpublicradio.org/correspondents/0342.html\">norrist</a> for suggesting I do this episode!</p>\r\n<ul>\r\n<li><a href=\"https://gentoo.org/\" class=\"uri\">https://gentoo.org/</a></li>\r\n</ul>\r\n',374,0,0,'CC-BY-SA','Gentoo',0,0,1),
(2824,'2019-05-30','Gnu Awk - Part 15',1916,'Redirection of input and output - part 2','<h2 id=\"introduction\">Introduction</h2>\r\n<p>This is the fifteenth episode of the “<a href=\"https://hackerpublicradio.org/series/0094.html\" title=\"Learning Awk\">Learning Awk</a>” series which is being produced by <a href=\"https://hackerpublicradio.org/correspondents/0300.html\" title=\"b-yeezi\">b-yeezi</a> and myself.</p>\r\n<p>This is the second of a pair of episodes looking at <em>redirection</em> in Awk scripts.</p>\r\n<p>In this episode I will spend some time looking at the <code>getline</code> command used for <em>explicit input</em> (as opposed to the usual <em>implicit</em> sort), often with redirection. The <code>getline</code> command is a complex subject which I will cover only relatively briefly. You are directed to the <a href=\"https://www.gnu.org/software/gawk/manual/gawk.html#Getline\" title=\"Explicit Input with getline\"><code>getline</code> section</a> of the GNU Awk User’s Guide for the full details.</p>\r\n<h2 id=\"long-notes\">Long notes</h2>\r\n<p>I have provided detailed notes as usual for this episode, and these can be <a href=\"https://hackerpublicradio.org/eps/hpr2824/full_shownotes.html\">viewed here</a>.</p>\r\n<h2 id=\"links\">Links</h2>\r\n<ul>\r\n<li><a href=\"https://www.gnu.org/software/gawk/manual/html_node/index.html\"><em>GNU Awk User’s Guide</em></a>\r\n<ul>\r\n<li><a href=\"https://www.gnu.org/software/gawk/manual/gawk.html#Getline\">Explicit Input with <code>getline</code></a></li>\r\n<li><a href=\"https://www.gnu.org/software/gawk/manual/gawk.html#Plain-Getline\">Using <code>getline</code> with No Arguments</a></li>\r\n<li><a href=\"https://www.gnu.org/software/gawk/manual/gawk.html#Getline_002fCoprocess\">Using <code>getline</code> with a <em>coprocess</em></a></li>\r\n<li><a href=\"https://www.gnu.org/software/gawk/manual/gawk.html#Getline-Notes\">Getline notes</a></li>\r\n<li><a href=\"https://www.gnu.org/software/gawk/manual/gawk.html#Two_002dway-I_002fO\">Two-way I/O</a></li>\r\n</ul></li>\r\n</ul>\r\n<ul>\r\n<li>Previous shows in this series on HPR:\r\n<ul>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2114\">“<em>Gnu Awk - Part 1</em>”</a> - episode 2114</li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2129\">“<em>Gnu Awk - Part 2</em>”</a> - episode 2129</li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2143\">“<em>Gnu Awk - Part 3</em>”</a> - episode 2143</li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2163\">“<em>Gnu Awk - Part 4</em>”</a> - episode 2163</li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2184\">“<em>Gnu Awk - Part 5</em>”</a> - episode 2184</li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2238\">“<em>Gnu Awk - Part 6</em>”</a> - episode 2238</li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2330\">“<em>Gnu Awk - Part 7</em>”</a> - episode 2330</li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2438\">“<em>Gnu Awk - Part 8</em>”</a> - episode 2438</li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2476\">“<em>Gnu Awk - Part 9</em>”</a> - episode 2476</li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2526\">“<em>Gnu Awk - Part 10</em>”</a> - episode 2526</li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2554\">“<em>Gnu Awk - Part 11</em>”</a> - episode 2554</li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2610\">“<em>Gnu Awk - Part 12</em>”</a> - episode 2610</li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2804\">“<em>Gnu Awk - Part 13</em>”</a> - episode 2804</li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2816\">“<em>Gnu Awk - Part 14</em>”</a> - episode 2816</li>\r\n</ul></li>\r\n<li>Resources:\r\n<ul>\r\n<li><a href=\"https://hackerpublicradio.org/eps/hpr2824/full_shownotes.epub\">ePub version of these notes</a></li>\r\n<li>Examples: <a href=\"https://hackerpublicradio.org/eps/hpr2824/awk15_testdata1\">awk15_te
(2809,'2019-05-09','The Blue Oak Model License and Its One Big Gotcha',1268,'Introducing and examining a new and elegant permissive software license.','<p>The Blue Oak Model License 1.0.0 was just released this month. In this episode I read the license, explain where it sits in among other software licenses, and enumerate some of the problems it purports to solve.</p>\r\n<p>I’m no legal expert, so take all of this as sort of a rough introduction to the license.</p>\r\n<p>Overall, if you are looking at permissive (vs copyleft) licenses, I would strongly suggest you consider this license! It’s concise, robust, it was developed by credible people, and gives your users future-proof safety from a number of common legal traps.</p>\r\n<p>However: just note that it has a feature, some would say bug, that <em>might</em> be a big deciding factor in whether you feel comfortable with it (listen for details)</p>\r\n<p>Nevertheless, I believe this license, or at least its style of language, will soon become extremely common.</p>\r\n<p>Further links:</p>\r\n<ul>\r\n<li><a href=\"https://blueoakcouncil.org/license/1.0.0\">The Blue Oak Model License 1.0.0</a> — the license itself. You may also wish to read <a href=\"https://blueoakcouncil.org/2019/03/06/model.html\">the group’s statement</a> about their methodology and how the license came to be.</li>\r\n<li><a href=\"https://writing.kemitchell.com/2019/03/09/Deprecation-Notice.html\"><em>Deprecation Notice: MIT and BSD</em></a> — the blog post I mention in the recording, by Blue Oak council member, developer and IP lawyer Kyle Mitchell. He explains some problems he sees with the MIT and BSD licenses and how the BOML addresses them.</li>\r\n<li><a href=\"https://news.ycombinator.com/item?id=19347797\">Discussion on Hacker News</a> — This was a pretty good discussion. Kyle Mitchell also chimed in here to respond to some criticisms and tire-kicking of this license (you can recognize him by his handle <code>kemitchell</code>).</li>\r\n</ul>\r\n<p>Not mentioned in the recording: One thing that caused me a bit of confusion at first was the term “attribution”. Kyle and the Blue Oak folks use this term mainly to talk about <em>license terms</em>, not <em>authorship</em> or <em>credit</em>. So for them an attribution requirement is a requirement to include the <em>license terms</em> with any distributed copies, not a requirement to give authorship credit to people.</p>\r\n<p>If you want to use this license as a starting point for your own “bespoke” license, you can! As I mention in the recording, I created my own variant of the Blue Oak license for one of my own projects. My main change was a strong requirement for downstream users to give credit to upstream contributors—not just when redistributing source code, but in all published software, books and websites created with the software!</p>\r\n<ul>\r\n<li><a href=\"https://thelocalyarn.com/cgi-bin/yarncode/doc/licensing/LICENSE.md\">The Local Yarn License 1.0.0</a> — This is the license as it currently sits in an experimental branch in my project’s Fossil repository</li>\r\n<li><a href=\"https://thelocalyarn.com/cgi-bin/yarncode/technote/8dfa234a1779782be090b36a6b1bcccfabd95b20\">Notes about my customizations</a> — Another tech note from the Fossil repo.</li>\r\n</ul>\r\n<p>Of course, when you make your own changes, you had better think hard about them, and if possible, get the advice of an Actual Lawyer who can discuss your particular situation.</p>\r\n',376,0,0,'CC-BY-SA','legal, licensing',0,0,1),
(2812,'2019-05-14','Is 5G mobile data a danger to your health?',484,'Apply Betteridge’s Law of Headlines to find out the answer','<p>This is mostly verbatim from my Fediverse post <a href=\"https://libranet.de/display/0b6b25a8-165c-9c7f-b55d-c7a077813050\" class=\"uri\">https://libranet.de/display/0b6b25a8-165c-9c7f-b55d-c7a077813050</a>, with a few minor edits.</p>\r\n<p>The anti-5G campaign has been cooking for many years now, and at the epicenter of it all are two men, Lennart Hardell and Rainer Nyberg. It’s a Swedish-Finnish phenomenon that is now really making the rounds and spreading internationally, as actual commercial deployment of 5G networks draws nearer.</p>\r\n<p>As a Swede, I apologize. These two do not represent the Swedish or Finnish cancer or radiation research community, and our media have given them far more space in the public discourse than their work merits.</p>\r\n<p>They are heavily quoted in networks of pseudoscience, including anti-vaccine sites, right-wing "alternative facts" sites and Strålskyddsstiftelsen ("Swedish Radiation Protection Foundation"), a private foundation created in 2012 with a deceptive name meant to invoke authority, which has had to be corrected on multiple occasions by the actual Swedish Radiation Safety Authority, Strålskyddsmyndigheten.</p>\r\n<p>Strålskyddsstiftelsen received the 2013 "Misleader of the Year" award from the main Swedish scientific skeptics\'society,VetenskapochFolkbildning("ScienceandPublicEducation")for"[theirfearmongeringpropagandaandbiasedreportingonthehealtheffectsofmobiletelephonyuseandwirelessnetworks]".</p>\r\n<p><ahref=\"https://www.vof.se/utmarkelser/tidigare-utmarkelser/aretas-forvillare-2013/\"class=\"uri\">https://www.vof.se/utmarkelser/tidigare-utmarkelser/aretas-forvillare-2013/</a>(inSwedish)</p>\r\n<p>Thesenetworksarepartofafeedbackloopwheretheygetmediaattention,politicianspickupontheirclaimsandusethemtoinvoketheprecautionaryprincipleandgetprecautionaryregulationinplace,orjudgesrulebasedontheclaims,whichthengetsquotedbytheseentitiesasevidencethattheywererightallalong.</p>\r\n<p>Theymakeitveryhardtofindfactualinformationonwhethermillimeter-wavelengthradiationactuallyhasanydifferenteffectfromthecentimeter-wavelengthradiationthatwehavebeenusingforovertwodecadeswithoutanydocumentedharmfuleffects,becausewhereveryoulookyoujustfindthesesitesclaimingthatwehavedefinitelyhadadversehealtheffectsforthelasttwodecadesandthenewfrequencybandswilldefinitelybefarworse.</p>\r\n<p>Whenyoudigdeeperintotheclaimsonthesesitesyoufindahandfulofcherry-pickedarticles,leadingbacktothetwomenmentionedatthetop,tostudieswithflawedmethodologylikeself-reportedsurveysonmobiletelephonyuseamongcancerpatients,ortothepseudoscience/media/politics/lawfeedbackloop.Andit’sallaboutcentimeterwaves,whichsimplyhaveshownnoconclusivesignofincreasingbraincancersoranyotheradversehealtheffectrelatedtotheradiation.Foreverypositivereportmadeyoucanfindonethatreportsbraincancerfellasweintroducedmobilephones.Thereisamassivebodyofdata,andifthesignalwerethere,wewouldhaveseenitbynow.</p>\r\n<p>I’mnocancerresearcher,butneitherisRainerNyberg,he’saretiredprofessorinpedagogy.He’saconcernedcitizen.<ahref=\"https://en.wikipedia.org/wiki/Lennart_Hardell\"class=\"uri\">https://en.wikipedia.org/wiki/Lennart_Hardell</a>isanactualoncologistandprofessorwhohasstudiedcarcinogens,buthisresearchresultsonthewireless/cancerconnectionhavebeendismissedas"non-informative","posthoc","barelystatisticallysignificant"and"flawed"byhispeers.Thereisnothingthere.</p>\r\n<p>Weknowthathigh-voltage16.7Hzfieldsincreasetheriskforleukemiaintraindrivers,butwedon’tknowwhy.Iamopentotheposs
(2818,'2019-05-22','Writing Web Game in Haskell - Science, part 1',2606,'Tuula explains types and data they used to model science in their Haskell game','<h2 id=\"background\">Background</h2>\r\n<p>This is rather large topic, so I split it in two episodes. Next one should follow in two weeks if everything goes as planned. First part is about modeling research, while second part concentrates on how things change over time.</p>\r\n<p>There’s three types of research: engineering, natural sciences and social sciences. Research costs points that are produced by various buildings.</p>\r\n<h2 id=\"implementation\">Implementation</h2>\r\n<p>There’s three database tables, which are defined below:</p>\r\n<pre><code>CurrentResearch\r\n type Technology\r\n progress Int\r\n factionId FactionId\r\n\r\nAvailableResearch\r\n type Technology\r\n category TopResearchCategory\r\n factionId FactionId\r\n\r\nCompletedResearch\r\n type Technology\r\n level Int\r\n factionId FactionId\r\n date Int</code></pre>\r\n<h2 id=\"data-types\">Data types</h2>\r\n<p><code>Technology</code> is enumeration of all possible technologies. Knowing these enable player to build specific buildings and space ships, enact various laws and so on. In the end this will be (hopefully) large list of technologies.</p>\r\n<pre><code>data Technology =\r\n HighSensitivitySensors\r\n | SideChannelSensors\r\n | HighTensileMaterials\r\n | SatelliteTechnology\r\n | BawleyHulls\r\n | SchoonerHulls\r\n | CaravelHulls\r\n ...\r\n deriving (Show, Read, Eq, Enum, Bounded, Ord)</code></pre>\r\n<p>All research belong to one of the top categories that are shown below:</p>\r\n<pre><code>data TopResearchCategory =\r\n Eng\r\n | NatSci\r\n | SocSci\r\n deriving (Show, Read, Eq, Ord)</code></pre>\r\n<p><code>ResearchCategory</code> is more fine grained division of research. Each of the categories is further divided into sub-categories. Only <code>EngineeringSubField</code> is shown below, but other two are similarly divided.</p>\r\n<pre><code>data ResearchCategory =\r\n Engineering EngineeringSubField\r\n | NaturalScience NaturalScienceSubField\r\n | SocialScience SocialScienceSubField\r\n deriving (Show, Read, Eq)\r\n\r\ndata EngineeringSubField =\r\n Industry\r\n | Materials\r\n | Propulsion\r\n | FieldManipulation\r\n deriving (Show, Read, Eq)</code></pre>\r\n<p><code>ResearchScore</code> is measure of how big some research is. It has type parameter <code>a</code> that is used to further quantify what kind of <code>ResearchScore</code> we’re talking about.</p>\r\n<pre><code>newtype ResearchScore a = ResearchScore { unResearchScore :: Int }\r\n deriving (Show, Read, Eq, Ord, Num)</code></pre>\r\n<p><code>TotalResearchScore</code> is record of three different types of researches. I’m not sure if I should keep it as a record of three fields or if I should change it so that only one of those values can be present at any given time.</p>\r\n<pre><code>data TotalResearchScore a = TotalResearchScore\r\n { totalResearchScoreEngineering :: ResearchScore EngineeringCost\r\n , totalResearchScoreNatural :: ResearchScore NaturalScienceCost\r\n , totalResearchScoreSocial :: ResearchScore SocialScienceCost\r\n }\r\n deriving (Show, Read, Eq)</code></pre>\r\n<p>Following singleton values are used with <code>ResearchScore</code> and <code>TotalResearchScore</code> to quantify what kind of value we’re talking about.</p>\r\n<pre><code>data EngineeringCost = EngineeringCost\r\n deriving (Show, Read, Eq)\r\n\r\ndata NaturalScienceCost = NaturalScienceCost\r\n deriving (Show, Read, Eq)\r\n\r\ndata SocialScienceCost = SocialScienceCost\r\n deriving (Show, Read, Eq)\r\n\r\ndata ResearchCost = ResearchCost\r\n deriving (Show, Read, Eq)\r\n\r\ndata ResearchProduction = ResearchProduction\r\n deriving (Show, Read, Eq)\r\n\r\ndata ResearchLeft = ResearchLeft\r\n deriving (Show, Read, Eq)</code></pre>\r\n<p>Finally there’s <code>Research</code>, which is a record that uses
(2811,'2019-05-13','Interview with Alan Pope',5387,'In this episode, Yannick talks with Alan Pope about snaps, snapcraft and all things related','<p>A few years ago, when you wanted to install a package on your Linux system, you had to grab the source code, and the nightmare began. But nowadays, this is over. You have deb files, and snaps, and flatpacks, and many other package formats available. On this episode, I was joined by Alan Pope, from Canonical, to talk about one of them in particular : snaps.</p>',370,78,0,'CC-BY-SA','ubuntu, snap, snapcraft, flatpack, linux, appimage, alan pope, popey',0,0,1),
(3066,'2020-05-04','HPR Community News for April 2020',2508,'Dave talks about shows released and comments posted in April 2020','<style>\ntable td.shrink {\n white-space:nowrap\n}\n</style>\n\n<h2>New hosts</h2>\n<p>\nWelcome to our new host: <br />\n\n <a href=\"https://hackerpublicradio.org/correspondents/0386.html\" target=\"_blank\">DanNixon</a>.\n</p>\n\n<h2>Last Month\'sShows</h2>\n<tableid=\"t01\">\n<tr>\n<th>Id</th>\n<th>Day</th>\n<th>Date</th>\n<th>Title</th>\n<th>Host</th>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3043\"target=\"_blank\">3043</a></strong></td>\n<td>Wed</td>\n<tdclass=\"shrink\">2020-04-01</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3043\"target=\"_blank\">HowIrecordforHPR</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0318.html\"target=\"_blank\">Archer72</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3044\"target=\"_blank\">3044</a></strong></td>\n<td>Thu</td>\n<tdclass=\"shrink\">2020-04-02</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3044\"target=\"_blank\">mocpsnoozetip</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0201.html\"target=\"_blank\">MrX</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3045\"target=\"_blank\">3045</a></strong></td>\n<td>Fri</td>\n<tdclass=\"shrink\">2020-04-03</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3045\"target=\"_blank\">OSScompliancewithprivacybydefaultanddesign</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0198.html\"target=\"_blank\">Ahuka</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3046\"target=\"_blank\">3046</a></strong></td>\n<td>Mon</td>\n<tdclass=\"shrink\">2020-04-06</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3046\"target=\"_blank\">HPRCommunityNewsforMarch2020</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0159.html\"target=\"_blank\">HPRVolunteers</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3047\"target=\"_blank\">3047</a></strong></td>\n<td>Tue</td>\n<tdclass=\"shrink\">2020-04-07</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3047\"target=\"_blank\">TheCOVID-19WorkFromHomeStream-Day1</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0270.html\"target=\"_blank\">ThajSara</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3048\"target=\"_blank\">3048</a></strong></td>\n<td>Wed</td>\n<tdclass=\"shrink\">2020-04-08</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3048\"target=\"_blank\">Alternativestotoiletpaper</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0078.html\"target=\"_blank\">klaatu</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3049\"target=\"_blank\">3049</a></strong></td>\n<td>Thu</td>\n<tdclass=\"shrink\">2020-04-09</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3049\"target=\"_blank\">Whatcomputerstaughtmeaboutreality</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0078.html\"target=\"_blank\">klaatu</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3050\"target=\"_blank\">3050</a></strong></td>\n<td>Fri</td>\n<tdclass=\"shrink\">2020-04-10</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3050\"target=\"_blank\">LinuxInlawsS01E04What\'s in a name</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0384.html\" target=\"_blank\">monochromec</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3051\" target=\"_blank\">3051</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2020-04-13</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3051\" target=\"_blank\">The COVID-19 Work From Home Stream - Day 2</a></td>\n<td><a href=\"https:
(3086,'2020-06-01','HPR Community News for May 2020',3253,'Dave and Ken talk about shows released and comments posted in May 2020','<style>\ntable td.shrink {\n white-space:nowrap\n}\n</style>\n\n<h2>New hosts</h2>\n<p>\nThere were no new hosts this month.\n</p>\n\n<h2>Last Month\'sShows</h2>\n<tableid=\"t01\">\n<tr>\n<th>Id</th>\n<th>Day</th>\n<th>Date</th>\n<th>Title</th>\n<th>Host</th>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3065\"target=\"_blank\">3065</a></strong></td>\n<td>Fri</td>\n<tdclass=\"shrink\">2020-05-01</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3065\"target=\"_blank\">Thecasefortheunattributedmessage</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0198.html\"target=\"_blank\">Ahuka</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3066\"target=\"_blank\">3066</a></strong></td>\n<td>Mon</td>\n<tdclass=\"shrink\">2020-05-04</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3066\"target=\"_blank\">HPRCommunityNewsforApril2020</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0159.html\"target=\"_blank\">HPRVolunteers</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3067\"target=\"_blank\">3067</a></strong></td>\n<td>Tue</td>\n<tdclass=\"shrink\">2020-05-05</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3067\"target=\"_blank\">GettingmyPython3codeworkinginPython2</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0201.html\"target=\"_blank\">MrX</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3068\"target=\"_blank\">3068</a></strong></td>\n<td>Wed</td>\n<tdclass=\"shrink\">2020-05-06</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3068\"target=\"_blank\">KeepingtrackofdownloadsinElm</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0364.html\"target=\"_blank\">Tuula</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3069\"target=\"_blank\">3069</a></strong></td>\n<td>Thu</td>\n<tdclass=\"shrink\">2020-05-07</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3069\"target=\"_blank\">LinuxInlawsS01E05PornandSkynet</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0384.html\"target=\"_blank\">monochromec</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3070\"target=\"_blank\">3070</a></strong></td>\n<td>Fri</td>\n<tdclass=\"shrink\">2020-05-08</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3070\"target=\"_blank\">makingvimxdgcompatible</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0385.html\"target=\"_blank\">crvs</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3071\"target=\"_blank\">3071</a></strong></td>\n<td>Mon</td>\n<tdclass=\"shrink\">2020-05-11</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3071\"target=\"_blank\">Bashsnippet-quotesinsidequotedstrings</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0225.html\"target=\"_blank\">DaveMorriss</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3072\"target=\"_blank\">3072</a></strong></td>\n<td>Tue</td>\n<tdclass=\"shrink\">2020-05-12</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3072\"target=\"_blank\">Thejoyofpip-toolsandpyenv-virtualenv</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0311.html\"target=\"_blank\">clacke</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3073\"target=\"_blank\">3073</a></strong></td>\n<td>Wed</td>\n<tdclass=\"shrink\">2020-05-13</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3073\"target=\"_blank\">MatchboxandDiecastRestoration</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0338.html\"target=\"_blank\">TonyHughesAKA
(2813,'2019-05-15','Should we dump the linux Desktop.',1229,'Knightwise wonders if we should let go of the linux desktop environments and focus on cross-platform','<p>Knightwise wonders if we should let go of the linux desktop environments and focus on cross-platform applications instead. Please bring your torches and pitchforks.</p>',111,0,1,'CC-BY-SA','linux, desktop, rant',0,0,1),
(2814,'2019-05-16','Spectre and Meltdown and OpenBSD and our future',1251,'A discussion about CPU\'sandourfuturewiththem,wherearewegoing?','<p>IdiscusstheentireSpectreandMeltdownissuesandwherewemightgopostanIntelworld.MyobjectiveistoencourageotherstoleaveSpeculativeprocessingbackedbymanagementenginebasedchips.SCATTERHUMANS!!!WEMUSTLEAVE!!!!</p>\r\n',377,0,0,'CC-BY-SA','SCATTERHUMANS!!!',0,0,1),
(2815,'2019-05-17','Copy pasta',2300,'Copying and pasting on Linux: X selections, xsel, clipboard managers, GPM, screen, and more','<p>\r\nYou can copy and paste on Linux the same way you do on any other OS: Ctrl+C to copy and Ctrl+V to paste (or use the Edit menu, or a right-click menu).\r\n</p>\r\n\r\n<p>\r\nHowever, Linux doesn\'tlimityoutojustthat.\r\nTheprimaryGUIenvironmentofLinux(atthetimeofthisrecording)isX,andthe<ahref=\"https://www.x.org/releases/X11R7.7/doc/xorg-docs/icccm/icccm.html\">Inter-ClientCommunicationConventionsManual</a>definesthree<strong>XSelection</strong>states: Primary, Secondary, and Clipboard.\r\nThe Secondary is rarely (if ever?) used, so I don\'t cover it here.\r\n</p>\r\n\r\n<h2>Primary</h2>\r\n\r\n<p>\r\nThe primary X Selection is anything literally selected at any given moment.\r\nIf you highlight a word in Firefox with your mouse, for instance, then it becomes the Primary Selection, and it is owned by Firefox.\r\nIf you press the Middle Mouse Button in any application, then that application asks the owner (Firefox, in this example) for the data contained in the Primary Selection.\r\nFirefox sends the data to that application so that it can paste it for you.\r\n</p>\r\n\r\n<p>\r\nA Primary selection remains the Primary Selection until it is overwritten by a new Primary Selection.\r\nIn other words, text needn\'t be highlighted to be retained in the Primary Selection slot.\r\n</p>\r\n\r\n\r\n<h2>Clipboard</h2>\r\n\r\n<p>\r\nThe Clipboard Selection is data that has explicitly been sent to the clipboard by a copy action.\r\nThis is usually a right-click > Copy or a selection of Edit > Copy.\r\nWhen another application is told to paste from the clipboard, it pastes data from the Clipboard Selection.\r\n</p>\r\n\r\n<h2>Both</h2>\r\n\r\n<p>\r\nYou can (and often do) have both a Primary Selection and a Clipboard selection.\r\nIf you press Ctrl+V, you get the contents of the Clipboard Selection.\r\nIf you press the middle mouse button, then you get the contents of the Primary Selection.\r\n</p>\r\n\r\n<h2>xsel</h2>\r\n\r\n<p>\r\nThe <code>xsel</code> command allows you to retrieve the contents of an X Selection.\r\n</p>\r\n\r\n<pre><code>\r\n$ xsel --primary\r\ndungeons\r\n$ xsel --clipboard\r\ndragons\r\n</code></pre>\r\n\r\n<h2>Clipboard managers</h2>\r\n\r\nClipboard managers such as Klipper, CopyQ, <a href=\"https://parcellite.sourceforge.net/\" target=\"_blank\">Parcellite</a>, and so on, provide a history for your clipboard.\r\nThey track the latest 10 (or so) items you have copied or selected.\r\nThey can be a little confusing, because they do tend to blur the line between the Primary Selection and the Clipboard Selection, but now that you know the technical difference, it shouldn\'t confuse you to see them both listed by a clipboard manager designed to conflate them.\r\n</p>\r\n\r\n<h2>GPM</h2>\r\n\r\n<p>\r\nGPM is a daemon allowing you to use your mouse without a GUI.\r\nAmong its features, it permits you to select text in a text console (TTY) and then paste it with the middle mouse button.\r\n</p>\r\n\r\n<h2>GNU Screen and Tmux</h2>\r\n\r\n<p>\r\nScreen and tmux are "window managers for text consoles".\r\nI don\'t tend to use tmux as often as I should, having learnt GNU Screen long ago, so I\'m not familiar with the process of copying and pasting with tmux.\r\nFor Screen, you can copy text in this way:\r\n</p>\r\n\r\n<ol>\r\n<li><p>\r\nPress Ctrl+A to get out of insert mode.\r\n</p></li>\r\n<li><p>\r\nPress left-square_bracket to enter copy-mode\r\n</p></li>\r\n<li><p>\r\nMove your text to the position you want to start selecting and press Enter or Return\r\n</p></li>\r\n<li><p>\r\nArrow to the position at which you want to end your selection and press Enter or Return again\r\n</p></li>\r\n</ol>\r\n\r\n<p>\r\nTo paste your selection:\r\n</p>\r\n\r\n<ol>\r\n<li><p>\r\nPress Ctrl+A to get out of insert mode.\r\n</p></li>\r\n<li><p>\r\nPress right-square_bracket to paste\r\n</p></li>\r\n</ol>\r\n\r\n\r\n\r\n',78,0,0,'CC-BY-SA','copy,paste
(2816,'2019-05-20','Gnu Awk - Part 14',1357,'Redirection of input and output - part 1','<h2 id=\"introduction\">Introduction</h2>\r\n<p>This is the fourteenth episode of the “<a href=\"https://hackerpublicradio.org/series/0094.html\" title=\"Learning Awk\">Learning Awk</a>” series which is being produced by <a href=\"https://hackerpublicradio.org/correspondents/0300.html\" title=\"b-yeezi\">b-yeezi</a> and myself.</p>\r\n<p>In this episode and the next I want to start looking at <em>redirection</em> within Awk programs. I had originally intended to cover the subject in one episode, but there is just too much.</p>\r\n<p>So, in the first episode I will be starting with <a href=\"https://www.gnu.org/software/gawk/manual/gawk.html#Redirection\" title=\"Redirecting output of `print` and `printf`\">output redirection</a> and then in the next episode will spend some time looking at the <code>getline</code> command used for <em>explicit input</em>, often with redirection.</p>\r\n<h2 id=\"long-notes\">Long notes</h2>\r\n<p>I have provided detailed notes as usual for this episode, and these can be <a href=\"https://hackerpublicradio.org/eps/hpr2816/full_shownotes.html\">viewed here</a>.</p>\r\n<h2 id=\"links\">Links</h2>\r\n<ul>\r\n<li><a href=\"https://www.gnu.org/software/gawk/manual/html_node/index.html\"><em>GNU Awk User’s Guide</em></a>\r\n<ul>\r\n<li><a href=\"https://www.gnu.org/software/gawk/manual/gawk.html#Redirection\">Redirecting output of <code>print</code> and <code>printf</code></a></li>\r\n<li><a href=\"https://www.gnu.org/software/gawk/manual/gawk.html#Special-FD\">Special Files for Standard Preopened Data Streams</a></li>\r\n<li><a href=\"https://www.gnu.org/software/gawk/manual/gawk.html#Special-Files\">Special File names in gawk</a></li>\r\n</ul></li>\r\n</ul>\r\n<ul>\r\n<li>Previous shows in this series on HPR:\r\n<ul>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2114\">“<em>Gnu Awk - Part 1</em>”</a> - episode 2114</li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2129\">“<em>Gnu Awk - Part 2</em>”</a> - episode 2129</li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2143\">“<em>Gnu Awk - Part 3</em>”</a> - episode 2143</li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2163\">“<em>Gnu Awk - Part 4</em>”</a> - episode 2163</li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2184\">“<em>Gnu Awk - Part 5</em>”</a> - episode 2184</li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2238\">“<em>Gnu Awk - Part 6</em>”</a> - episode 2238</li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2330\">“<em>Gnu Awk - Part 7</em>”</a> - episode 2330</li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2438\">“<em>Gnu Awk - Part 8</em>”</a> - episode 2438</li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2476\">“<em>Gnu Awk - Part 9</em>”</a> - episode 2476</li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2526\">“<em>Gnu Awk - Part 10</em>”</a> - episode 2526</li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2554\">“<em>Gnu Awk - Part 11</em>”</a> - episode 2554</li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2610\">“<em>Gnu Awk - Part 12</em>”</a> - episode 2610</li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2804\">“<em>Gnu Awk - Part 13</em>”</a> - episode 2804</li>\r\n</ul></li>\r\n<li>Resources:\r\n<ul>\r\n<li><a href=\"https://hackerpublicradio.org/eps/hpr2816/full_shownotes.epub\">ePub version of these notes</a></li>\r\n<li>Examples: <a href=\"https://hackerpublicradio.org/eps/hpr2816/awk14_fruit_data.txt\">awk14_fruit_data.txt</a>, <a href=\"https://hackerpublicradio.org/eps/hpr2816/awk14_ex1.awk\">awk14_ex1.awk</a>, <a href=\"https://hackerpublicradio.org/eps/hpr2816/awk14_ex2.awk\">awk14_ex2.awk</a>, <a href=\"https://hackerpublicradio.org/eps/hpr2816/awk14_ex3.awk\">awk14_ex3.awk</a></li>\r\n</ul></li>\r\n</ul>\r\n',225,94,1,'CC-BY-SA','Awk utility, Awk Language, gawk,redirection',0,0,1),
(2830,'2019-06-07','2018-2019 New Years Eve show part 1',12194,'The HPR community comes together to say happy new year and chat','<h2>Hacker Public Radio New Years Show episode 1</h2>\r\n<p>Welcome to the 7th Annual Hacker Public Radio show. It is December the 31st 2018 and the time is 10 hundred hours UTC.</p>\r\n<ul>\r\n<li>Ken introduces the New year show, gives some history and thanks Kevin Wisher and HonkeyMagoo for organising this.</li>\r\n<li>Wondering where Klaatu is,</li>\r\n<li>Fifty one fifty talks about his new isp<br /><a href=\"https://www.blazinghog.com\">https://www.blazinghog.com</a></li>\r\n<li>Ken GETS STUCK IN CAPS LOCK<br /> <a href=\"https://wiki.archlinux.org/index.php/Xorg/Keyboard_configuration\">https://wiki.archlinux.org/index.php/Xorg/Keyboard_configuration</a></li>\r\n<li>ISO8601 YYYY-MM-DD <a href=\"https://en.wikipedia.org/wiki/ISO_8601\">https://en.wikipedia.org/wiki/ISO_8601</a></li>\r\n<li><a href=\"https://www.hostelworld.com/hosteldetails.php/STF-IYHF-af-Chapman/Stockholm/32555\">https://www.hostelworld.com/hosteldetails.php/STF-IYHF-af-Chapman/Stockholm/32555</a></li>\r\n<li>Honkey is on his way to work</li>\r\n<li><pre>$ alias utc=\'/bin/date-u+%Y-%m-%d_%H-%M-%S%Z_%A\'</pre></li>\r\n<li><a href=\"https://www.youtube.com/watch?v=9PfdQod8HTw\">https://www.youtube.com/watch?v=9PfdQod8HTw</a> History Buffs: Tora! Tora! Tora!</li>\r\n<li>klaatu joins us, career at Red Hat, IBM takeover, teaching Linux to non-tech people<br /><a href=\"https://en.wikipedia.org/wiki/Dalton_Plan\">https://en.wikipedia.org/wiki/Dalton_Plan</a></li>\r\n<li>Computer musems<br /><a href=\"https://vonhagen.org/collection.html\">https://vonhagen.org/collection.html</a></li>\r\n<li>barcamp (yes related to foo)<br /><a href=\"https://en.wikipedia.org/wiki/BarCamp\">https://en.wikipedia.org/wiki/BarCamp</a></li>\r\n<li>Oggcamp<br /><a href=\"https://oggcamp.org/\">https://oggcamp.org/</a></li>\r\n<li>Mint Cast Podcast<br /><a href=\"https://mintcast.org/\">https://mintcast.org/</a></li>\r\n<li>Brexit<br /><a href=\"https://en.wikipedia.org/wiki/Brexit\">https://en.wikipedia.org/wiki/Brexit</a></li>\r\n</ul>\r\n<p>\"we should have bought stock\"</p>\r\n\r\n',159,121,1,'CC-BY-SA','hpr nye, new years eve, community',0,0,1),
(2817,'2019-05-21','Are you successful? Click to find out more!',281,'The answer may surprise you!','<p>Based on <a href=\"https://libranet.de/display/0b6b25a8-125c-a71f-c7ae-f1a686792961\" class=\"uri\">https://libranet.de/display/0b6b25a8-125c-a71f-c7ae-f1a686792961</a>.</p>\r\n<p>It’s pretty short, less than 4 minutes, but I think it’s important.</p>\r\n<p>Who defines whether you are successful, or whether your project is successful, and does it matter?</p>',311,0,0,'CC-BY-SA','success, self-care',0,0,1),
(2828,'2019-06-05','Writing Web Game in Haskell - Science, part 2',2734,'Tuula continues their explanation on simulating science in a game written in Haskell','<h2 id=\"intro\">Intro</h2>\r\n<p>Last time we looked how to model technology and research. This time we’ll do some actual research. I’m skipping over some of the details as the episode is long enough as it is. Hopefully it’s still possible to follow with the show notes.</p>\r\n<p>Main concepts that I’m mentioning: Technology allows usage of specific buildings, ship components and such. Research unlock technologies and may have antecedents that has to be completed before the research can be started. Research cost is measure of how expensive a research is in terms of research points, which are produced by different buildings.</p>\r\n<p>Earlier I modeled tech tree as Map that had Technology as keys and Research as values. I realized that this is suboptimal and will replace it at some point in the future.</p>\r\n<h2 id=\"server-api\">Server API</h2>\r\n<p>There’s three resources that client can connect to. First one is for retrieving list of available research, second one for manipulating current research and last one for retrieving info on how much research points is being produced.</p>\r\n<pre><code>/api/research/available ApiAvailableResearchR GET\r\n/api/research/current ApiCurrentResearchR GET POST DELETE\r\n/api/research/production ApiResearchProductionR GET</code></pre>\r\n<h2 id=\"simulation\">Simulation</h2>\r\n<p>Simulation of research is done by <code>handleFactionResearch</code>, which does simulation for one faction for a given date. After calculating current research point production and retrieving list of current research, function calculates progress of current researches. Unfinished ones are written back to database, while completed are moved into <code>completed_research</code> table. Final step is updating what research will be available in the next turn.</p>\r\n<pre><code>handleFactionResearch date faction = do\r\n production <- totalProduction $ entityKey faction\r\n current <- selectList [ CurrentResearchFactionId ==. entityKey faction ] []\r\n let updated = updateProgress production <$> current\r\n _ <- updateUnfinished updated\r\n _ <- handleCompleted date updated $ entityKey faction\r\n _ <- updateAvailableResearch $ entityKey faction\r\n return ()</code></pre>\r\n<h2 id=\"research-point-production\">Research point production</h2>\r\n<p>Research points are produced by buildings. So first step is to load all planets owned by the faction and buildings on those planets. Applying <code>researchOutput</code> function to each building yields a list of <code>TotalResearchScore</code>, which is then summed up by <code>mconcat</code>. We can use <code>mconcat</code> as <code>TotalResearchScore</code> is a monoid (I talked about these couple episodes ago).</p>\r\n<pre><code>totalProduction fId = do\r\n pnbs <- factionBuildings fId\r\n let buildings = join $ fmap snd pnbs\r\n return $ mconcat $ researchOutput . entityVal <$> buildings</code></pre>\r\n<p><code>researchOutput</code> function below uses pattern matching. Instead of writing one function definition and case expression inside of it, we’re writing multiple definitions. Each of them matches building of different type. First example is definition that is used for <code>ResearchComplex</code>, while second one is for <code>ParticleAccelerator</code>. Final case uses underscore to match anything and indicate that we’re not even interested on the particular value being matched. <code>mempty</code> is again from our monoid definition. It is empty or unit value of monoid, which in case of <code>TotalResearchScore</code> is zero points in all research categories.</p>\r\n<pre><code>researchOutput Building { buildingType = ResearchComplex } =\r\n TotalResearchScore\r\n { totalResearchScoreEngineering = ResearchScore 10\r\n , totalResearchScoreNatural = ResearchScore 10\r\n , totalResear
(2838,'2019-06-19','Why Haskell?',1900,'Tuula tries to answer Beeza\'squestiononwhywouldsomeonewanttouseHaskell','<p>Igotreallygoodcommentonepisode<ahref=\"https://hackerpublicradio.org/eps.php?id=2778\">2778-FunctorandapplicativeinHaskell</a>fromBeezathatI’mincludingbelow:</p>\r\n<blockquote>\r\n<p>I’vebeenwritingsoftwareforover30yearsbutIfindthesyntaxofHaskellanythingbutintuitive-infactlesssothananyotherprogramminglanguageIhavelookedat.ThankstoyourexcellentshownotesIcanmakesenseofitbutIhavetosayIwouldnotliketohavetodevelopaprojectusingthislanguage.</p>\r\n</blockquote>\r\n<blockquote>\r\n<p>ObviouslyIammissingthepointasnobodywoulddesignalanguagewiththeintentionofitsbeingdifficulttouse.Perhapsyoucouldproduceanotherepisodeaddressingthequestion“WhyHaskell?”</p>\r\n</blockquote>\r\n<p>Inthisepisode,I’mtryingtoanswertothatfrommypointofview.</p>\r\n',364,107,0,'CC-BY-SA','haskell,response',0,0,1),
(2835,'2019-06-14','2018-2019 New Years Eve show part 2',9088,'The HPR community comes together to say happy new year and chat','<h2>Hacker Public Radio New Years Show episode 2</h2>\r\n<ul>\r\n<li>Claudio talks about doing IT for a school</li>\r\n<li>Pinebook discussion - complaints about keyboard, speakers, trackpad<br />\r\n<a href=\"https://www.pine64.org\">https://www.pine64.org</a></li>\r\n<li>Scanning photo negatives</li>\r\n<li>Camera discussion</li>\r\n<li>Firefly<br />\r\n<a href=\"https://www.imdb.com/title/tt0303461\">https://www.imdb.com/title/tt0303461</a></li>\r\n<li>Serenity<br />\r\n<a href=\"https://www.imdb.com/title/tt0379786\">https://www.imdb.com/title/tt0379786</a></li>\r\n<li>Babylon 5<br />\r\n<a href=\"https://www.imdb.com/title/tt0105946\">https://www.imdb.com/title/tt0105946</a></li>\r\n<li>POLYBIUS - The Video Game That Doesn\'tExist<br/>\r\n<ahref=\"https://www.youtube.com/watch?v=_7X6Yeydgyg\">https://www.youtube.com/watch?v=_7X6Yeydgyg</a><br/>\r\n<ahref=\"https://en.wikipedia.org/wiki/Polybius\">https://en.wikipedia.org/wiki/Polybius</a></li>\r\n<li>Cicada3301<br/>\r\n<ahref=\"https://en.wikipedia.org/wiki/Cicada_3301\">https://en.wikipedia.org/wiki/Cicada_3301</a></li>\r\n<li>Ahoyyouchannel<br/>\r\n<ahref=\"https://www.youtube.com/channel/UCE1jXbVAGJQEORz9nZqb5bQ\">https://www.youtube.com/channel/UCE1jXbVAGJQEORz9nZqb5bQ</a></li>\r\n<li>ResiloSync<br/>\r\n<ahref=\"https://en.wikipedia.org/wiki/Resilio_Sync\">https://en.wikipedia.org/wiki/Resilio_Sync</a></li>\r\n<li>Mintcast<br/>\r\n<ahref=\"https://mintcast.org/\">https://mintcast.org/</a></li>\r\n<li>ZoomH2<br/>\r\n<ahref=\"https://www.zoom-na.com/products/field-video-recording/field-recording/h2-handy-recorder\">https://www.zoom-na.com/products/field-video-recording/field-recording/h2-handy-recorder</a></li>\r\n<li>LGToneheadsets<br/>\r\n<ahref=\"https://www.lg.com/us/bluetooth-headsets-headphones\">https://www.lg.com/us/bluetooth-headsets-headphones</a></li>\r\n<li>UrbaniteXL<br/>\r\n<ahref=\"https://en-us.sennheiser.com/urbanite-xl\">https://en-us.sennheiser.com/urbanite-xl</a></li>\r\n<li>cmhobbsjoinsandasksforepisodeinput.willrecordwinterfieldday2019fromnorthwestarkansas.</li>\r\n\r\n<li>Book&audiobook</li>\r\n<li>Recommendationsforbooks:<br/>\r\n<ol>\r\n<li>DaemonbyDanielSuarez,<ahref=\"https://daniel-suarez.com/\">https://daniel-suarez.com/</a></li>\r\n<li>SkywardbyBrandonSanderson,<ahref=\"https://brandonsanderson.com/books/skyward/skyward/\">https://brandonsanderson.com/books/skyward/skyward/</a></li>\r\n</ol>\r\n</li>\r\n<li>Audiobookreadingtips:<br/>\r\n<ol>\r\n<li>Togetintoaudiobooks,trylisteningtoabookyou\'ve read before</li>\r\n<li>Try increasing or decreasing the speed of the book</li>\r\n<li>Use the TTS feature of your eBook reader to create your own audiobooks</li>\r\n<li>Oddity of TTS mispronouncing words can be fun or frustrating</li>\r\n</ol>\r\n<li>Linux desktop upgrade fun</li>\r\n<li>MX Linux<br />\r\n<a href=\"https://mxlinux.org/\">https://mxlinux.org/</a></li>\r\n<li>AntiX Linux<br />\r\n<a href=\"https://antixlinux.com/\">https://antixlinux.com/</a></li>\r\n<li>exwm<br />\r\n<a href=\"https://github.com/ch11ng/exwm\">https://github.com/ch11ng/exwm</a></li>\r\n<li>ZFS on Linux<br />\r\n<a href=\"https://zfsonlinux.org/\">https://zfsonlinux.org/</a></li>\r\n<li>Dell venue 11 pro<br />\r\n<a href=-\"https://www.dell.com/en-us/work/shop/cty/venue-11-pro/spd/dell-venue-11-pro\">https://www.dell.com/en-us/work/shop/cty/venue-11-pro/spd/dell-venue-11-pro</a></li>\r\n<li>Acer aspire 1<br />\r\n<a href=\"https://www.acer.com/ac/en/US/content/series/aspire1\">https://www.acer.com/ac/en/US/content/series/aspire1</a></li>\r\n</ul>\r\n',159,121,0,'CC-BY-SA','HPR new years show, new years, community',0,0,1),
(2840,'2019-06-21','2018-2019 New Years Eve show part 3',7293,'The HPR community comes together to say happy new year and chat','<h2>Hacker Public Radio New Years Show episode 3</h2>\r\n<p>Welcome to the 7th Annual Hacker Public Radio New Years Show. 2018-2019</p>\r\n<ul>\r\n<li>Gaming PC vs Console</li>\r\n<li>Steam<br />\r\n<a href=\"https://store.steampowered.com/\">https://store.steampowered.com/</a></li>\r\n<li>Gaming on Linux with Proton<br />\r\n<a href=\"https://steamcommunity.com/games/221410/announcements/detail/1696055855739350561\">https://steamcommunity.com/games/221410/announcements/detail/1696055855739350561</a></li>\r\n<li>Good ol Games<br />\r\n<a href=\"https://www.gog.com/\">https://www.gog.com/</a></li>\r\n<li>Humble Bundle<br />\r\n<a href=\"https://www.humblebundle.com/\">https://www.humblebundle.com/</a></li>\r\n<li>God of War<br />\r\n<a href=\"https://godofwar.playstation.com/\">https://godofwar.playstation.com/</a></li>\r\n<li>The Witcher<br />\r\n<a href=\"https://thewitcher.com/en/\">https://thewitcher.com/en/</a></li>\r\n<li>Ghost of Tsushima<br />\r\n<a href=\"https://www.suckerpunch.com/category/games/ghost-of-tsushima/\">https://www.suckerpunch.com/category/games/ghost-of-tsushima/</a></li>\r\n<li>Plumble<br />\r\n<a href=\"https://play.google.com/store/apps/details?id=com.morlunk.mumbleclient.free&hl=en_US\">https://play.google.com/store/apps/details?id=com.morlunk.mumbleclient.free&hl=en_US</a></li>\r\n<li>mint cast<br />\r\n<a href=\"https://mintcast.org/\">https://mintcast.org/</a></li>\r\n<li>Free DOS<br />\r\n<a href=\"https://www.freedos.org/\">https://www.freedos.org/</a></li>\r\n<li>Compact flash<br />\r\n<a href=\"https://en.wikipedia.org/wiki/CompactFlash\">https://en.wikipedia.org/wiki/CompactFlash</a></li>\r\n<li>rtl-sdr<br />\r\n<a href=\"https://www.amazon.com/RTL-SDR-Blog-RTL2832U-Software-Defined/dp/B0129EBDS2\">https://www.amazon.com/RTL-SDR-Blog-RTL2832U-Software-Defined/dp/B0129EBDS2</a></li>\r\n<li>Cigarettes</li>\r\n<li>Taxing</li>\r\n<li>Alcohol</li>\r\n<li>Old Speckled Hen beer<br />\r\n<a href=\"https://en.wikipedia.org/wiki/Old_Speckled_Hen\">https://en.wikipedia.org/wiki/Old_Speckled_Hen</a></li>\r\n<li>Motorcycles</li>\r\n<li>Harley Davidson<br />\r\n<a href=\"https://en.wikipedia.org/wiki/Harley-Davidson\">https://en.wikipedia.org/wiki/Harley-Davidson</a></li>\r\n<li>Electric Cars</li>\r\n</ul>\r\n',159,121,0,'CC-BY-SA','HPR new years show, new years, community',0,0,1),
(2845,'2019-06-28','2018-2019 New Years Eve show part 4',10265,'The HPR community comes together to say happy new year and chat','<h2>Hacker Public Radio New Years Show episode 4</h2>\r\n<p>Welcome to the 7th Annual Hacker Public Radio New Years Show. 2018-2019</p>\r\n<ul>\r\n<li>3D Printing</li>\r\n<li>OSMC<br />\r\n<a href=\"https://osmc.tv/\">https://osmc.tv/</a></li>\r\n<li>Anet A8<br />\r\n<a href=\"https://3dprint.wiki/reprap/anet/a8\">https://3dprint.wiki/reprap/anet/a8</a></li>\r\n<li>Dell Venue 11 pro 7130<br />\r\n<ol>\r\n<li><a href=\"https://www.cnet.com/products/dell-venue-11-pro/specs/\">https://www.cnet.com/products/dell-venue-11-pro/specs/</a></li>\r\n<li><a href=\"https://www.studioteabag.com/science/dell-venue-pro-linux/DV11P/\">https://www.studioteabag.com/science/dell-venue-pro-linux/DV11P/</a></li>\r\n</ol>\r\n</li>\r\n<li>Drag vape<br />\r\n<a href=\"https://en.voopootech.com/drag-param\">https://en.voopootech.com/drag-param</a></li>\r\n<li>Gigabyte Brix<br />\r\n<a href=\"https://www.gigabyte.com/us/Mini-PcBarebone\">https://www.gigabyte.com/us/Mini-PcBarebone</a></li>\r\n<li>SDR talk</li>\r\n<li>DSP hack a day<br />\r\n<a href=\"https://hackaday.com/tag/dsp/\">https://hackaday.com/tag/dsp/</a></li>\r\n<li>Mastodon<br />\r\n<a href=\"https://joinmastodon.org/\">https://joinmastodon.org/</a></li>\r\n<li>hpr 2627 Home phone setup<br />\r\n<a href=\"https://hackerpublicradio.org/eps.php?id=2627\">https://hackerpublicradio.org/eps.php?id=2627</a></li>\r\n<li>Asterisk<br />\r\n<a href=\"https://en.wikipedia.org/wiki/Asterisk_(PBX)\">https://en.wikipedia.org/wiki/Asterisk_(PBX)</a></li>\r\n<li>Hanging LED lights</li>\r\n<li>The Wall</li>\r\n<li>Clipper chip<br />\r\n<a href=\"https://en.wikipedia.org/wiki/Clipper_chip\">https://en.wikipedia.org/wiki/Clipper_chip</a></li>\r\n<li>Podcasting</li>\r\n<li>Time zones yet again</li>\r\n<li>Firearms</li>\r\n<li>President Trump</li>\r\n<li>Linux action news<br />\r\n<a href=\"https://linuxactionnews.com/\">https://linuxactionnews.com/</a></li>\r\n<li>Late night Linux<br />\r\n<a href=\"https://latenightlinux.com/\">https://latenightlinux.com/</a></li>\r\n<li>User error<br />\r\n<a href=\"https://www.jupiterbroadcasting.com/show/error/\">https://www.jupiterbroadcasting.com/show/error/</a></li>\r\n</ul>\r\n',159,121,1,'CC-BY-SA','HPR new years show, new years, community',0,0,1),
(2825,'2019-05-31','More text to speech trials',286,'A supplementary show to Jeroens episode 2792','<p>\r\nA supplementary show to Jeroens episode <a href=\"https://hackerpublicradio.org/eps.php?id=2792\">HPR2792 :: Playing around with text to speech synthesis on Linux</a>.\r\n</p>\r\n<p>\r\nI found two addional options. The first is <a href=\"https://mimic.mycroft.ai/\">mimic</a>\r\n</p>\r\n<pre>\r\n# dnf info mimic\r\nSummary : Mycroft\'sTTSengine\r\nURL:https://mimic.mycroft.ai/\r\nLicense:BSD\r\nDescription:Mimicisafast,lightweightText-to-speechenginedevelopedbyMycroftA.I.\r\n:andVocalID,basedonCarnegieMellonUniversity’sFLITEsoftware.Mimictakes\r\n:intextandreadsitoutloudtocreateahighqualityvoice.Mimic\'s\r\n : low-latency, small resource footprint, and good quality voices set it apart\r\n : from other open source text-to-speech projects.\r\n</pre>\r\n\r\n<p>\r\nAnd the second is <a href=\"https://gtts.readthedocs.io/en/latest/index.html\">gTTS</a> which is a interface to the google TTS api.\r\n</p>\r\n',30,0,0,'CC-BY-SA','gTTS, Mimic, tts',0,0,1),
(2848,'2019-07-03','Random numbers in Haskell',1957,'Tuula talks how to generate random numbers (and other values) in Haskell','<p>There’s lots of random and similar sounding words in this episode. I hope you can still follow what I’m trying to explain, but I’m aware that it might be hard.</p>\r\n<p>Haskell functions are pure, meaning that they will always produce same values for same set of arguments. This might sound hard when you want to generate random numbers, but it turns out that the solution isn’t too tricky.</p>\r\n<p>First part to the puzzle is type class <code>RandomGen</code>:</p>\r\n<pre><code>class RandomGen g where\r\n next :: g -> (Int, g)\r\n genRange :: g -> (Int, Int)\r\n split :: g -> (g, g)</code></pre>\r\n<p><code>next</code> produces tuple, where first element is random <code>Int</code> and second element is new random generator. <code>genRange</code> returns tuple defining minimum and maximum values this generator will return. <code>split</code> produces tuple with two new random generators.</p>\r\n<p>Using <code>RandomGen</code> to produce random values of specific type or for specific range requires a bit of arithmetic. It’s easier to use <code>Random</code> that defines functions for that specific task:</p>\r\n<pre><code>class Random a where\r\n randomR :: RandomGen g => (a, a) -> g -> (a, g)\r\n random :: RandomGen g => g -> (a, g)\r\n randomRs :: RandomGen g => (a, a) -> g -> [a]\r\n randoms :: RandomGen g => g -> [a]\r\n randomRIO :: (a, a) -> IO a\r\n randomIO :: IO a</code></pre>\r\n<ul>\r\n<li><code>randomR</code>, when given range and random generator, produces tuple with random number and new generator</li>\r\n<li><code>random</code>, is similar but doesn’t take range. Instead it will use minimum and maximum specific to that data type</li>\r\n<li><code>randomRs</code>, takes range and produces infinite list of random values within that range</li>\r\n<li><code>randoms</code>, simply produces infinite list of random values using range that is specific to datatype</li>\r\n<li><code>randomRIO</code> and <code>randomIO</code> are effectful versions that don’t need random generator, but use some default one</li>\r\n</ul>\r\n<p>In short, <code>RandomGen</code> is source of randomness and <code>Random</code> is datatype specific way of generating random values using random generator <code>RandomGen</code>.</p>\r\n<p>Final part of the puzzle is where to get <code>RandomGen</code>? One could initialize one manually, but then it wouldn’t be random. However, there’s function <code>getStdGen</code> that will seed <code>RandomGen</code> using OS default random number generator, current time or some other method. Since it has signature of <code>getStdGen :: IO StdGen</code>, one can only call it in IO monad.</p>\r\n<p>Functions that operate with IO can only be called from other IO functions. They can call pure functions, but pure functions can’t call them. So there’s two options: have the code that needs random numbers in effectful function or get <code>RandomGen</code> in effectful function and pass it to pure function.</p>\r\n<h2 id=\"example\">Example</h2>\r\n<pre><code>import System.Random\r\nimport Data.List\r\n\r\n-- | get n unique entries from given list in random order\r\n-- | if n > length of list, all items of the list will be returned\r\ngetR :: RandomGen g => g -> Int -> [a] -> [a]\r\ngetR g n xs =\r\n fmap (xs !!) ids\r\n where\r\n ids = take (min n $ length xs) $ nub $ randomRs (0, length xs - 1) g\r\n\r\n-- | Returns 4 unique numbers between 1 and 10 (inclusive)\r\ntest :: IO [Int]\r\ntest = do\r\n g <- getStdGen\r\n return $ getR g 4 [1..10]</code></pre>\r\n<h2 id=\"in-closing\">In closing</h2>\r\n<p>Pseudo randomness doesn’t require IO, only seeding the generator does. Simple computation that don’t require many calls to <code>random</code> are easy enough. If you need lots of random values, <a href=\"https://hackage.haskell.org/package/MonadRandom-0.4.1/
(2820,'2019-05-24','29 - CERT Home Security Tips',1337,'What CERT recommends to mitigate security and privacy threats to your home network.','<p>The Computer Emergency Readiness Team of the US Department of Homeland Security issues a security bulletin, ST15-002, which has tips for home network security. In this episode we review these tips and why they make sense.</p>\r\n<h2 id=\"links\">Links:</h2>\r\n<ul>\r\n<li><a href=\"https://www.us-cert.gov/ncas/tips/ST15-002\" class=\"uri\">https://www.us-cert.gov/ncas/tips/ST15-002</a></li>\r\n<li><a href=\"https://www.zwilnik.com/\" class=\"uri\">https://www.zwilnik.com/</a></li>\r\n</ul>\r\n',198,74,0,'CC-BY-SA','Home Networks, Security',0,0,1),
(2821,'2019-05-27','Interviewing some exhibitors at the 2019 vcfe.org event',2784,'I interviewed some of the exhibitors at the recent vcfe.org event in Munich, Germany.','<p>I visited the vcfe.org event in Munich, Germany.</p>\r\n<p>Below you will find some urls for the projects that I came across.</p>\r\n<ul>\r\n<li>Steckschwein 6502 computer: <a href=\"https://steckschwein.de/\" class=\"uri\">https://steckschwein.de/</a></li>\r\n<li>Siemens Simatic S5 PLC: <a href=\"https://en.wikipedia.org/wiki/Simatic_S5_PLC\" class=\"uri\">https://en.wikipedia.org/wiki/Simatic_S5_PLC</a></li>\r\n<li>CP/M operating system: <a href=\"https://en.wikipedia.org/wiki/CP/M\" class=\"uri\">https://en.wikipedia.org/wiki/CP/M</a></li>\r\n<li>Old fashioned MUD game Nemesis: <a href=\"https://nemesis.de\" class=\"uri\">https://nemesis.de</a></li>\r\n<li>Eastern Germany Robotron hardware: <a href=\"https://en.wikipedia.org/wiki/VEB_Robotron\" class=\"uri\">https://en.wikipedia.org/wiki/VEB_Robotron</a></li>\r\n</ul>\r\n<p>If you like these things, the next exhibition will be in September in Berlin (you can find more info on <a href=\"https://vcfb.de/2019/\">vcfb.de</a>).</p>\r\n<p>Regards, Jeroen Baten</p>',369,78,0,'CC-BY-SA','vcfe, vintage, computers, exhibition, munich, germany',0,0,1),
(3111,'2020-07-06','HPR Community News for June 2020',3596,'Dave struggles to keep Ken on track as they talk about shows and comments in June 2020','<style>\ntable td.shrink {\n white-space:nowrap\n}\n</style>\n\n<h2>New hosts</h2>\n<p>\nThere were no new hosts this month.\n</p>\n\n<h2>Last Month\'sShows</h2>\n<tableid=\"t01\">\n<tr>\n<th>Id</th>\n<th>Day</th>\n<th>Date</th>\n<th>Title</th>\n<th>Host</th>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3086\"target=\"_blank\">3086</a></strong></td>\n<td>Mon</td>\n<tdclass=\"shrink\">2020-06-01</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3086\"target=\"_blank\">HPRCommunityNewsforMay2020</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0159.html\"target=\"_blank\">HPRVolunteers</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3087\"target=\"_blank\">3087</a></strong></td>\n<td>Tue</td>\n<tdclass=\"shrink\">2020-06-02</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3087\"target=\"_blank\">Phoneticalphabet</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0078.html\"target=\"_blank\">klaatu</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3088\"target=\"_blank\">3088</a></strong></td>\n<td>Wed</td>\n<tdclass=\"shrink\">2020-06-03</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3088\"target=\"_blank\">MatchboxRestorationPart2</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0338.html\"target=\"_blank\">TonyHughesAKATonyH1212</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3089\"target=\"_blank\">3089</a></strong></td>\n<td>Thu</td>\n<tdclass=\"shrink\">2020-06-04</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3089\"target=\"_blank\">FormyEntertainment</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0318.html\"target=\"_blank\">Archer72</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3090\"target=\"_blank\">3090</a></strong></td>\n<td>Fri</td>\n<tdclass=\"shrink\">2020-06-05</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3090\"target=\"_blank\">LocatingComputeronaEnterpriseNetwork</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0036.html\"target=\"_blank\">operat0r</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3091\"target=\"_blank\">3091</a></strong></td>\n<td>Mon</td>\n<tdclass=\"shrink\">2020-06-08</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3091\"target=\"_blank\">fuguserv</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0377.html\"target=\"_blank\">Zen_Floater2</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3092\"target=\"_blank\">3092</a></strong></td>\n<td>Tue</td>\n<tdclass=\"shrink\">2020-06-09</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3092\"target=\"_blank\">Pens,pencils,paperandink-2</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0225.html\"target=\"_blank\">DaveMorriss</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3093\"target=\"_blank\">3093</a></strong></td>\n<td>Wed</td>\n<tdclass=\"shrink\">2020-06-10</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3093\"target=\"_blank\">ResponsetoLinuxInlawsS01E06(hpr3079)onNeXT</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0152.html\"target=\"_blank\">ClaudioMiranda</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3094\"target=\"_blank\">3094</a></strong></td>\n<td>Thu</td>\n<tdclass=\"shrink\">2020-06-11</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3094\"target=\"_blank\">Holycrud!Ihaveakinesisadvantage2keyboard!</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0115.html\"target=\"_blank\">sigf
(3131,'2020-08-03','HPR Community News for July 2020',7227,'Warning Ken and Dave discuss some disturbing agricultural practices. Listener discretion is advised.','<style>\ntable td.shrink {\n white-space:nowrap\n}\n</style>\n\n<h2>New hosts</h2>\n<p>\nThere were no new hosts this month.\n</p>\n\n<h2>Last Month\'sShows</h2>\n<tableid=\"t01\">\n<tr>\n<th>Id</th>\n<th>Day</th>\n<th>Date</th>\n<th>Title</th>\n<th>Host</th>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3108\"target=\"_blank\">3108</a></strong></td>\n<td>Wed</td>\n<tdclass=\"shrink\">2020-07-01</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3108\"target=\"_blank\">FuguitaasaDesktop</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0377.html\"target=\"_blank\">Zen_Floater2</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3109\"target=\"_blank\">3109</a></strong></td>\n<td>Thu</td>\n<tdclass=\"shrink\">2020-07-02</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3109\"target=\"_blank\">MatchboxRestorationPart4</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0338.html\"target=\"_blank\">TonyHughesAKATonyH1212</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3110\"target=\"_blank\">3110</a></strong></td>\n<td>Fri</td>\n<tdclass=\"shrink\">2020-07-03</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3110\"target=\"_blank\">FindinganAndroidphonetorunLineageOS</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0030.html\"target=\"_blank\">KenFallon</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3111\"target=\"_blank\">3111</a></strong></td>\n<td>Mon</td>\n<tdclass=\"shrink\">2020-07-06</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3111\"target=\"_blank\">HPRCommunityNewsforJune2020</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0159.html\"target=\"_blank\">HPRVolunteers</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3112\"target=\"_blank\">3112</a></strong></td>\n<td>Tue</td>\n<tdclass=\"shrink\">2020-07-07</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3112\"target=\"_blank\">finishingtheframeonthelongwheelbaserecumbent</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0326.html\"target=\"_blank\">BrianinOhio</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3113\"target=\"_blank\">3113</a></strong></td>\n<td>Wed</td>\n<tdclass=\"shrink\">2020-07-08</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3113\"target=\"_blank\">OpenJDK15-UnsafeGarbage</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0382.html\"target=\"_blank\">DanielPersson</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3114\"target=\"_blank\">3114</a></strong></td>\n<td>Thu</td>\n<tdclass=\"shrink\">2020-07-09</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3114\"target=\"_blank\">UsingtheAkasoEK7000Pro</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0198.html\"target=\"_blank\">Ahuka</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3115\"target=\"_blank\">3115</a></strong></td>\n<td>Fri</td>\n<tdclass=\"shrink\">2020-07-10</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3115\"target=\"_blank\">PestControl</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0036.html\"target=\"_blank\">operat0r</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3116\"target=\"_blank\">3116</a></strong></td>\n<td>Mon</td>\n<tdclass=\"shrink\">2020-07-13</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3116\"target=\"_blank\">Unscriptedramblingsonawalk:CrisisatTheManor</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0241.h
(2819,'2019-05-23','Reply to Knightwise - podcasts',493,'I provide a slightly different view on podcasts to that recently given by Knightwise.','<p>Knightwise, in <a href=\"https://hackerpublicradio.org/eps.php?id=2798\">HPR 2798</a>, made the argument that podcasts are better if they are done by \"pirates\", i.e.not by corporations, but by individuals with something to say. While I see some merit in this view, I think the more significant feature of podcasts is that it gets us away from \"broadcasting\" (shows aimed at the lowest common denominator) and towards \"narrowcasting\", an environment where small niche interests can find an audience and thrive since podcasting does not require a lot of resources. But I do appreciate the chance to hear some radio programs that I would not otherwise be able to listen to when they are offered as podcasts.</p>\r\n<h2 id=\"links\">Links:</h2>\r\n<ul>\r\n<li><a href=\"https://www.npr.org/podcasts/583350334/science-friday\" class=\"uri\">https://www.npr.org/podcasts/583350334/science-friday</a></li>\r\n<li><a href=\"https://www.bbc.co.uk/programmes/b00snr0w\" class=\"uri\">https://www.bbc.co.uk/programmes/b00snr0w</a></li>\r\n<li><a href=\"https://www.palain.com\" class=\"uri\">https://www.palain.com</a></li>\r\n</ul>',198,75,0,'CC-BY-SA','podcasts, narrowcasting, broadcasting',0,0,1),
(2849,'2019-07-04','2018-2019 New Years Eve show part 5',7759,'The HPR community comes together to say happy new year and chat','<h2>Hacker Public Radio New Years Show episode 5</h2>\r\n<p>Welcome to the 7th Annual Hacker Public Radio New Years Show. 2018-2019</p>\r\n<ul>\r\n<li>Sans Holiday Hack Challenge<br />\r\n<a href=\"https://www.holidayhackchallenge.com/2018/\">https://www.holidayhackchallenge.com/2018/</a></li>\r\n<li>Hack The Box<br />\r\n<a href=\"https://www.hackthebox.eu/\">https://www.hackthebox.eu/</a></li>\r\n<li>Over the Wire<br />\r\n<a href=\"https://overthewire.org/wargames/\">https://overthewire.org/wargames/</a></li>\r\n<li>Under the Wire<br />\r\n<a href=\"https://underthewire.tech/\">https://underthewire.tech/</a></li>\r\n<li>Gnome Boxes<br />\r\n<a href=\"https://en.wikipedia.org/wiki/GNOME_Boxes\">https://en.wikipedia.org/wiki/GNOME_Boxes</a></li>\r\n<li>Talking about headsets</li>\r\n<li>Mobile operating systems</li>\r\n<li>Plasma Mobile<br />\r\n<a href=\"https://www.plasma-mobile.org/\">https://www.plasma-mobile.org/</a></li>\r\n<li>Kansas Linux Fest<br />\r\n<a href=\"https://kansaslinuxfest.org/\">https://kansaslinuxfest.org/</a></li>\r\n<li>FreeNas<br />\r\n<a href=\"https://freenas.org/?\">https://freenas.org/</a></li>\r\n<li>Talking Desktop Environments</li>\r\n<li>GPD mini laptops<br />\r\n<a href=\"https://www.gpd.hk/\">https://www.gpd.hk/</a></li>\r\n<li>Gemini PDA<br />\r\n<a href=\"https://www.indiegogo.com/projects/gemini-pda-android-linux-keyboard-mobile-device--2#/\">https://www.indiegogo.com/projects/gemini-pda-android-linux-keyboard-mobile-device--2#/</a></li>\r\n<li>usb-c<br />\r\n<a href=\"https://en.wikipedia.org/wiki/USB-C\">https://en.wikipedia.org/wiki/USB-C</a></li>\r\n<li>Talking uefi<br />\r\n<a href=\"https://en.wikipedia.org/wiki/Unified_Extensible_Firmware_Interface\">https://en.wikipedia.org/wiki/Unified_Extensible_Firmware_Interface</a></li>\r\n<li>Boxing day<br />\r\n<a href=\"https://en.wikipedia.org/wiki/Boxing_Day\">https://en.wikipedia.org/wiki/Boxing_Day</a></li>\r\n<li>UK vs US</li>\r\n<li>More Brexit talk<br />\r\n<a href=\"https://www.bbc.com/news/uk-politics-32810887\">https://www.bbc.com/news/uk-politics-32810887</a></li>\r\n<li>year 2038 problem<br />\r\n<a href=\"https://en.wikipedia.org/wiki/Year_2038_problem\">https://en.wikipedia.org/wiki/Year_2038_problem</a></li>\r\n<li>LXQT desktop<br />\r\n<a href=\"https://lxqt.org/\">https://lxqt.org/</a></li>\r\n<li>Enlightenment desktop<br />\r\n<a href=\"https://www.enlightenment.org/\">https://www.enlightenment.org/</a></li>\r\n<li>gnome boxes<br />\r\n<a href=\"https://wiki.gnome.org/Apps/Boxes\">https://wiki.gnome.org/Apps/Boxes</a></li>\r\n</ul>\r\n\r\n\r\n',159,121,1,'CC-BY-SA','HPR new years show, new years, community',0,0,1),
(2850,'2019-07-05','NIST Cybersecurity Framework',1702,'What NIST suggests as a framework to improve security at the Enterprise level','<p>The National Institute of Standards and Technology of the US Government issued the NIST Cybersecurity Framework, which has recommendations for private companies and mandates for U.S. Government agencies. For people who work in information security in an Enterprise environment, this framework may be of interest, so we will take a walk through it.</p>\r\n<h2 id=\"links\">Links:</h2>\r\n<ul>\r\n<li><a href=\"https://en.wikipedia.org/wiki/National_Institute_of_Standards_and_Technology\" class=\"uri\">https://en.wikipedia.org/wiki/National_Institute_of_Standards_and_Technology</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/NIST_Cybersecurity_Framework\" class=\"uri\">https://en.wikipedia.org/wiki/NIST_Cybersecurity_Framework</a></li>\r\n<li><a href=\"https://nvlpubs.nist.gov/nistpubs/CSWP/NIST.CSWP.04162018.pdf\" class=\"uri\">https://nvlpubs.nist.gov/nistpubs/CSWP/NIST.CSWP.04162018.pdf</a></li>\r\n<li><a href=\"https://www.zwilnik.com/?page_id=997\" class=\"uri\">https://www.zwilnik.com/?page_id=997</a></li>\r\n</ul>',198,74,0,'CC-BY-SA','Enterprise, Security',0,0,1),
(2860,'2019-07-19','Encryption and Quantum Computing',757,'How will quantum computing affect the security of encryption?','<p>The Quantum Computer is supposed to be a game changer that renders encryption useless. But is this true? We look at how quantum computing will affect encryption going forward, and show that we are already working on quantum-resistant encryption.</p>\r\n<h2 id=\"links\">Links:</h2>\r\n<ul>\r\n<li><a href=\"https://www.zwilnik.com/?page_id=530\" class=\"uri\">https://www.zwilnik.com/?page_id=530</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=1620\" class=\"uri\">https://hackerpublicradio.org/eps.php?id=1620</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Utah_Data_Center\" class=\"uri\">https://en.wikipedia.org/wiki/Utah_Data_Center</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Quantum_computing\" class=\"uri\">https://en.wikipedia.org/wiki/Quantum_computing</a></li>\r\n<li><a href=\"https://csrc.nist.gov/Projects/Post-Quantum-Cryptography\" class=\"uri\">https://csrc.nist.gov/Projects/Post-Quantum-Cryptography</a></li>\r\n<li><a href=\"https://www.nist.gov/programs-projects/information-security-and-privacy-advisory-board-ispab\" class=\"uri\">https://www.nist.gov/programs-projects/information-security-and-privacy-advisory-board-ispab</a></li>\r\n<li><a href=\"https://csrc.nist.gov/Projects/Post-Quantum-Cryptography/Round-2-Submissions\" class=\"uri\">https://csrc.nist.gov/Projects/Post-Quantum-Cryptography/Round-2-Submissions</a></li>\r\n<li><a href=\"https://www.zwilnik.com/?page_id=999\" class=\"uri\">https://www.zwilnik.com/?page_id=999</a></li>\r\n</ul>',198,74,0,'CC-BY-SA','Encryption, Quantum Computing',0,0,1),
(2870,'2019-08-02','Hierarchy of Evidence',865,'All studies are not the same. Some are better than others.','<p>The idea of a Hierarchy of Evidence is that there is a ranking of studies of different kinds in terms of how persuasive they are. It is not enough to simply say that “A study shows…” without also looking at what kind of study it is how powerful the results are. We look at the different kinds of studies and rank them from top to bottom.</p>\r\n<h2 id=\"links\">Links</h2>\r\n<ul>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Hierarchy_of_evidence\" class=\"uri\">https://en.wikipedia.org/wiki/Hierarchy_of_evidence</a></li>\r\n<li><a href=\"https://www.ncbi.nlm.nih.gov/pmc/articles/PMC2707010/\" class=\"uri\">https://www.ncbi.nlm.nih.gov/pmc/articles/PMC2707010/</a></li>\r\n<li><a href=\"https://www.phru.nhs.uk/casp/rcts.htm\" class=\"uri\">https://www.phru.nhs.uk/casp/rcts.htm</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Cohort_study\" class=\"uri\">https://en.wikipedia.org/wiki/Cohort_study</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Framingham_Heart_Study\" class=\"uri\">https://en.wikipedia.org/wiki/Framingham_Heart_Study</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Case-control_studies\" class=\"uri\">https://en.wikipedia.org/wiki/Case-control_studies</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Cross-sectional_study\" class=\"uri\">https://en.wikipedia.org/wiki/Cross-sectional_study</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Case_reports\" class=\"uri\">https://en.wikipedia.org/wiki/Case_reports</a></li>\r\n<li><a href=\"https://www.palain.com/?page_id=402\" class=\"uri\">https://www.palain.com/?page_id=402</a></li>\r\n</ul>',198,100,0,'CC-BY-SA','Health, Medicine, Evidence, Science, Studies',0,0,1),
(2880,'2019-08-16','Evaluating a Study',861,'We\'vedevelopedthestandardstojudge,sonowlet\'s do an example!','<p>We take the ideas we have developed over the previous episodes and use them to evaluate a a study I found online. These are things anyone can do with just a little work on Google, and the payoff is to have a good idea of whether or not you are looking at a quality study</p>\r\n<h2 id=\"links\">Links</h2>\r\n<ul>\r\n<li><a href=\"https://www.medicalnewstoday.com/\" class=\"uri\">https://www.medicalnewstoday.com/</a></li>\r\n<li><a href=\"https://www.medicalnewstoday.com/articles/324558.php\" class=\"uri\">https://www.medicalnewstoday.com/articles/324558.php</a></li>\r\n<li><a href=\"https://mediabiasfactcheck.com/medical-news-today/\" class=\"uri\">https://mediabiasfactcheck.com/medical-news-today/</a></li>\r\n<li><a href=\"https://www.quora.com/How-can-I-find-a-replication-of-a-study\" class=\"uri\">https://www.quora.com/How-can-I-find-a-replication-of-a-study</a></li>\r\n<li><a href=\"https://en.m.wikipedia.org/wiki/Web_of_Science\" class=\"uri\">https://en.m.wikipedia.org/wiki/Web_of_Science</a></li>\r\n<li><a href=\"https://www.nature.com/articles/s41551-019-0356-9#MOESM1\" class=\"uri\">https://www.nature.com/articles/s41551-019-0356-9#MOESM1</a></li>\r\n<li><a href=\"https://www.nature.com/natbiomedeng/\" class=\"uri\">https://www.nature.com/natbiomedeng/</a></li>\r\n<li><a href=\"https://www.nature.com/articles/s41551-019-0356-9\" class=\"uri\">https://www.nature.com/articles/s41551-019-0356-9</a></li>\r\n<li><a href=\"https://www.palain.com/?page_id=404\" class=\"uri\">https://www.palain.com/?page_id=404</a></li>\r\n</ul>',198,100,0,'CC-BY-SA','Health, Medicine, Evidence, Science, Studies',0,0,1),
(2855,'2019-07-12','2018-2019 New Years Eve show part 6',8486,'The HPR community comes together to say happy new year and chat','<h2>Hacker Public Radio New Years Show episode 6</h2>\r\n<p>Welcome to the 7th Annual Hacker Public Radio New Years Show. 2018-2019</p>\r\n<ul>\r\n<li>The Makerz Podcast<br />\r\n<a href=\"https://podnutz.com/category/themakerz/\">https://podnutz.com/category/themakerz/</a></li>\r\n<li>Tronxy X1<br />\r\n<a href=\"https://all3dp.com/1/tronxy-x1-3d-printer-review/\">https://all3dp.com/1/tronxy-x1-3d-printer-review/</a></li>\r\n<li>SBC talk</li>\r\n<li>Apple Talk</li>\r\n<li>Linux on mobile</li>\r\n<li>more 3d printing talk</li>\r\n<li><a href=\"https://www.newmodeus.com/shop/\">https://www.newmodeus.com/shop/</a></li>\r\n<li>new years food traditions</li>\r\n<li>Cats</li>\r\n<li>The Last Centurion<br />\r\n<a href=\"https://www.amazon.com/Last-Centurion-John-Ringo/dp/1439132917\">https://www.amazon.com/Last-Centurion-John-Ringo/dp/1439132917</a></li>\r\n<li><a href=\"https://www.chewy.com/\">https://www.chewy.com/</a></li>\r\n</ul>',159,121,1,'CC-BY-SA','HPR new years show, new years, community',1,0,1),
(2832,'2019-06-11','How I got started in Linux',168,'This is a very brief introduction on what got me into using Linux.','<p>This is just a brief intro into my introduction to Linux.</p>\r\n',378,29,0,'CC-BY-SA','linux, introduction',0,0,1),
(2836,'2019-06-17','Interview with Wendy Hill',1576,'In this episode, Yannick talks with Wendy Hill about her use of opensource software in her job','<p>Wendy Hill is a photographer. And by that, I don’t mean she takes pictures of her kids on Sundays at the baseball game. Although, if she was to do that, it would probably turn out to be great pictures. No, Wendy is a professional photographer, and to run her business, she uses free and opensource software.</p>\r\n<p>Wait… no Photoshop? No Illustrator? How is that possible? Wendy joined me on Mumble earlier this year – that’s 2019 for you, visitors from the future – and we discussed about that.</p>\r\n<h2 id=\"links\">Links</h2>\r\n<ul>\r\n<li><a href=\"https://www.wendyhillphoto.com/\" class=\"uri\">https://www.wendyhillphoto.com/</a></li>\r\n<li><a href=\"https://launchpad.net/lubuntu\" class=\"uri\">https://launchpad.net/lubuntu</a></li>\r\n</ul>\r\n',370,78,0,'CC-BY-SA','opensource,photography,lubuntu,darktable,Rapid Photo Downloader,displaycal,gimp',0,0,1),
(2831,'2019-06-10','Interview with Robbie Ferguson',2347,'In this episode, Yannick talks with Robbie Ferguson about the Nagios Enterprise Monitoring System','<p>When it comes to monitoring your network, and the machines on it, you have a lot of options. But, let’s face it : none of those are easy to implement, and configuring a monitoring tool, whether it’s an open-source or a proprietary one, is often complex and time consuming.</p>\r\n<p>Well, someone took that matter into their own hands, and made <a href=\"https://nemslinux.com/\">NEMS</a>. What is NEMS, how can it help us, and what infrastructure does it require? Those are a few of the questions I asked <a href=\"https://baldnerd.com/\">Robbie Ferguson</a>, the maintainer of NEMS, who joined me on Easter week-end for a little chat.</p>\r\n<h2 id=\"links\">Links</h2>\r\n<ul>\r\n<li><a href=\"https://nemslinux.com/\" class=\"uri\">https://nemslinux.com/</a></li>\r\n<li><a href=\"https://twitter.com/NEMSLinux\" class=\"uri\">https://twitter.com/NEMSLinux</a></li>\r\n<li><a href=\"https://baldnerd.com/\" class=\"uri\">https://baldnerd.com/</a></li>\r\n</ul>\r\n',370,78,0,'CC-BY-SA','nagios,network,monitoring,opensource,single board computer,sbc,raspberrypi,odroid',0,0,1),
(2837,'2019-06-18','parallax live desktops in android',1040,'Parallax_Wallpaper, mouse gigglers, system d Youtube background play and more ! ','<h2 id=\"parallax-live-desktops-in-android\">parallax live desktops in android</h2>\r\n<ul>\r\n<li><p><a href=\"https://www.linkedin.com/pulse/caffeine-pfft-espresso-robert-mccurdy/\" class=\"uri\">https://www.linkedin.com/pulse/caffeine-pfft-espresso-robert-mccurdy/</a><br />\r\nlinkedin Cafinee.exe MouseGiggler espresso autohotkey</p></li>\r\n<li><p>Systemd linkedin<br />\r\n<a href=\"https://www.linkedin.com/pulse/initd-dead-long-live-robert-mccurdy/\" class=\"uri\">https://www.linkedin.com/pulse/initd-dead-long-live-robert-mccurdy/</a></p></li>\r\n<li><p>linkedin youtube in background<br />\r\n<a href=\"https://www.linkedin.com/pulse/play-youtube-background-robert-mccurdy/\" class=\"uri\">https://www.linkedin.com/pulse/play-youtube-background-robert-mccurdy/</a><br />\r\nViewers can download</p></li>\r\n<li><p><a href=\"https://f-droid.org/repo/org.schabi.newpipe_71.apk\" class=\"uri\">https://f-droid.org/repo/org.schabi.newpipe_71.apk</a></p></li>\r\n</ul>\r\n',36,0,1,'CC-BY-SA','youtube downloader,systemd,linux,autohotkey',0,0,1),
(2829,'2019-06-06','Discussion around fair use clips on HPR',1391,'A request for comments on not publishing clips with known fair use samples','<h1>Request for comments</h1>\r\n<p>Hi All,</p>\r\n<p>Under safe harbor provisions, we as volunteers are usually insulated from any copyright issues that may arise in the shows. \"We do not vet, edit, moderate or in any way censor any of the shows on the network, we trust you to do that.\"</p>\r\n<p>This we got by accident <a href=\"https://hackerpublicradio.org/stuff_you_need_to_know.php#not_moderated\">because</a> \"This is a long standing tradition arising from the fact that HPR is a community of peers who believe that any host has as much right to submit shows as any other.\"</p>\r\n<p>In the show notes associated with hpr2829 on 2019-06-06, the host included the following text \"For all included materials: If anyone feels they have right to any material in this show please let me know and I will comply.\"</p>\r\n<p>This violates the HPR <a href=\"https://hackerpublicradio.org/stuff_you_need_to_know.php#permission\">upload policy</a>.</p>\r\n<p>\"Never include content, for example music, in your show that you do not have permission to redistribute. Try to avoid using any content in your show that can not be redistributed under a Creative Commons Attribution-ShareAlike 3.0 Unported license. If you are redistributing under another Creative Commons License or by arranged permission please make note of the restrictions when you upload your show. We can then signal that, so that others who redistribute HPR content can filter your show out.\"</p>\r\n<p>As it was clear that they were not in compliance, I contacted the host. The host has been very helpful and has already removed some of the content but commented \"There are still 2 audio clips included. I claim I can use them on the basis off fair use principles.\"</p>\r\n<p>While the host may be correct, if they are not, then it is me and not the host that will be held responsible for posting it. I do not want that responsibility.</p>\r\n<p>Under the current HPR rules I am allowed to reject this submission.</p>\r\n<p>Before I do, I would appreciate as much feedback as possible on this topic so that we can gauge the opinions of the HPR Community as a whole.</p>\r\n<p>Regards,</p>\r\n<p>Ken. </p>\r\n\r\n<p>The discussion <a href=\"https://hackerpublicradio.org/pipermail/hpr_hackerpublicradio.org/2019-May/014446.html\">thread</a> remains open and is open to all by joining the <a href=\"https://hackerpublicradio.org/mailman/listinfo/hpr_hackerpublicradio.org\">Maillist</a>.</p>',109,0,0,'CC-BY-SA','HPR, Policy Change, Legal, DMCA, TWAT, Fair Use, PacketSniffers, Copyright',0,0,1),
(2827,'2019-06-04','Unscripted ramblings from my garage about my first CTF event',832,'I briefly discss a CTF event I was invited to and what I plan to bring with me.','<h2 id=\"unscripted-ramblings-about-an-upcoming-ctf-event.\">Unscripted ramblings about an upcoming CTF event.</h2>\r\n<h3 id=\"hak5-items-mentioned-hak5.org\">Hak5 items mentioned (hak5.org):</h3>\r\n<ul>\r\n<li>WiFi Pineapple</li>\r\n<li>Bash Bunny (erroneously referred to as a ‘rabbit’)</li>\r\n<li>USB Rubber Ducky</li>\r\n<li>Packet Squirrel</li>\r\n<li>LAN Turtle (unmentioned but I’ll bring one)</li>\r\n</ul>\r\n<h3 id=\"software-mentioned\">Software mentioned:</h3>\r\n<ul>\r\n<li>MetaSploit: <a href=\"https://metasploit.com\">metasploit.com</a></li>\r\n<li>Ronin: <a href=\"https://ronin-ruby.github.io\">ronin-ruby.github.io</a></li>\r\n<li>Maltego: <a href=\"https://www.paterva.com/web7/\">www.paterva.com/web7/</a></li>\r\n<li>Burpsuite: <a href=\"https://portswigger.net/burp/\">portswigger.net/burp/</a></li>\r\n<li>SET: <a href=\"https://trustedsec.com/social-engineer-toolkit-set/\">trustedsec.com/social-engineer-toolkit-set/</a></li>\r\n<li>Parrot Linux: <a href=\"https://parrotsec.org\">parrotsec.org</a></li>\r\n</ul>\r\n<h3 id=\"my-info\">My info:</h3>\r\n<ul>\r\n<li>Chat with us on irc.freenode.net in #manor\r\n<ul>\r\n<li>More info at <a href=\"https://manor.space\" class=\"uri\">https://manor.space</a></li>\r\n</ul></li>\r\n<li>My little business: <a href=\"https://ascia.tech\" class=\"uri\">https://ascia.tech</a></li>\r\n<li>Email: <a href=\"mailto:cmhobbs@member.fsf.org\">cmhobbs@member.fsf.org</a>\r\n<ul>\r\n<li>1200 0808 F968 47AB F489 91A3 FE26 6FFB 1A77 0868</li>\r\n</ul></li>\r\n<li>Other shows by me (in case this one doesn’t get linked)\r\n<ul>\r\n<li><a href=\"https://hackerpublicradio.org/correspondents/0241.html\" class=\"uri\">https://hackerpublicradio.org/correspondents/0241.html</a></li>\r\n</ul></li>\r\n</ul>\r\n<h2 id=\"links\">Links</h2>\r\n<ul>\r\n<li>CTF: Capture the flag; <a href=\"https://en.wikipedia.org/wiki/Capture_the_flag_(disambiguation)\">Wikipedia disambiguation page</a>\r\n<ul>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Wargame_(hacking)\">Cyber-security challenge</a></li>\r\n</ul></li>\r\n</ul>\r\n',241,0,0,'CC-BY-SA','ctf, hacking, security, infosec, events, conventions, gear',0,0,1),
(2833,'2019-06-12','Jeroen chats with Joep Piscaer',1176,'Interviewing Joep Piscaer during Loadays in Antwerpen, Belgium','<p>In this show an Interview with Joep Piscaer, recorded during the recent Loadays conference in Antwerpen, Belgium.</p>\r\n<p>Schedule of recent Loadays event: <a href=\"https://cfp.loadays.org/2019/schedule/\">https://cfp.loadays.org/2019/schedule/</a></p>\r\n<p>I mention the \"Cut the crap podcast\", made by Ryan Caligiuri.</p>\r\n<p>And specifically episode 145 as an excellent example of his podcast quality:</p>\r\n<p><a href=\"https://player.fm/series/the-cut-the-crap-show/ep-145-stronger-develop-the-resilience-you-need-to-succeed-with-dr-george-everly\">https://player.fm/series/the-cut-the-crap-show/ep-145-stronger-develop-the-resilience-you-need-to-succeed-with-dr-george-everly</a></p>\r\n<p>At the end of the podcast I a refer to the \"Follow your Gift\" talk, by Steve Harvey.</p>\r\n<p>You can find a recording of this talk on YouTube at <a href=\"https://www.youtube.com/watch?v=3x3rEg2qvcQ\">https://www.youtube.com/watch?v=3x3rEg2qvcQ</a></p>\r\n\r\n',369,78,0,'CC-BY-SA','loadays, ryan caligiuri, steve harvey',0,0,1),
(2834,'2019-06-13','My favorite desktop and android applications',1757,'Moving right along with shows from the requests list, I combine two program lists.','<p>Desktop:</p>\r\n<ul>\r\n<li>xfce4-terminal</li>\r\n<li>globaltime (orage)</li>\r\n<li>xfce4 notes</li>\r\n<li>thunar</li>\r\n<li>firefox</li>\r\n<li>Emacs</li>\r\n<li>claws-mail</li>\r\n<li>weechat</li>\r\n<li>mupdf</li>\r\n<li>gtk-redshift</li>\r\n<li>asunder</li>\r\n<li>keepassx</li>\r\n<li>lucky backup</li>\r\n<li>virtualbox/kvm</li>\r\n<li>xlog</li>\r\n<li>gpredict</li>\r\n<li>arduino ide</li>\r\n<li>tor browser bundle</li>\r\n<li>ledger wallet</li>\r\n<li>xmame</li>\r\n<li>freedoom</li>\r\n<li>rRootage</li>\r\n<li>dia</li>\r\n<li>fbreader</li>\r\n<li>gnumeric/libreoffice</li>\r\n<li>mandelbulber2</li>\r\n<li>gqrx</li>\r\n<li>transmission</li>\r\n<li>xastir</li>\r\n<li>youtube-dl gui</li>\r\n<li>zenmap</li>\r\n<li>mpv</li>\r\n</ul>\r\n<p>Android</p>\r\n<ul>\r\n<li>LineageOS</li>\r\n<li>built in phone</li>\r\n<li>signal</li>\r\n<li>built in fm radio</li>\r\n<li>built in camera</li>\r\n<li>2048</li>\r\n<li>acrylic paint</li>\r\n<li>amsatdroid free</li>\r\n<li>antennapod</li>\r\n<li>aprsdroid</li>\r\n<li>audiofx</li>\r\n<li>barcode scanner</li>\r\n<li>binaural beats</li>\r\n<li>blockinger</li>\r\n<li>blowtorch</li>\r\n<li>built in calendar</li>\r\n<li>call recorder</li>\r\n<li>chroma doze</li>\r\n<li>built in clock</li>\r\n<li>cloudlibrary</li>\r\n<li>built in contacts</li>\r\n<li>danmaku death</li>\r\n<li>echolink</li>\r\n<li>equate</li>\r\n<li>f-droid</li>\r\n<li>fbreader</li>\r\n<li>fennec f-droid</li>\r\n<li>red cross first aid</li>\r\n<li>flashlight</li>\r\n<li>freegal music</li>\r\n<li>gadgetbridge</li>\r\n<li>built in gallery</li>\r\n<li>ghost commander</li>\r\n<li>gobandroid</li>\r\n<li>hoopla</li>\r\n<li>iz2uuf morse code trainer</li>\r\n<li>libby</li>\r\n<li>lightning</li>\r\n<li>mobilinkd tnc</li>\r\n<li>mupdf</li>\r\n<li>netguard</li>\r\n<li>o’reilly</li>\r\n<li>orbot, orfox</li>\r\n<li>osmand~</li>\r\n<li>red cross pet first aid</li>\r\n<li>plumble</li>\r\n<li>propel graviton</li>\r\n<li>radiodroid (radio-browser.info)</li>\r\n<li>recorder</li>\r\n<li>roblox</li>\r\n<li>rpn</li>\r\n<li>sealnote</li>\r\n<li>sim card</li>\r\n<li>simple world clock</li>\r\n<li>space trader</li>\r\n<li>spotify</li>\r\n<li>suntimes, suntimes alarms</li>\r\n<li>survival manual</li>\r\n<li>termux</li>\r\n<li>timber</li>\r\n<li>tsumego pro</li>\r\n<li>ttrss-reader</li>\r\n<li>unifi</li>\r\n<li>vlc</li>\r\n<li>webtube</li>\r\n<li>weechat-android</li>\r\n<li>wifianalyzer</li>\r\n<li>wikipedia</li>\r\n<li>yalp store</li>\r\n<li>yorecast</li>\r\n</ul>\r\n',241,0,0,'CC-BY-SA','programs, linux, android, apps, applications, lists, favorites',0,0,1),
(2841,'2019-06-24','How I got into Linux (and then some...)',1864,'A response to the request for \"how i got into linux\" and a little of my history with Linux/BSD','<p>Basically what it says on the tin. Most distros I mention can be easily searched for. I meander through a discussion of how I got into Linux and where I am with it now.</p>',241,29,0,'CC-BY-SA','linux, intro, story, discourse, bsd',0,0,1),
(2858,'2019-07-17','Vehicle designer for a space game',1404,'Tuula talks about modeling vehicle designer for their space game','<p>This episode is about modeling vehicle designer that can be used to design all kinds of vehicles available in the game. It relates to episode about <a href=\"https://hackerpublicradio.org/eps.php?id=2818\">performing research</a>.</p>\r\n<h2 id=\"major-parts\">Major parts</h2>\r\n<p>Two major parts about vehicle designer are components and chassis.</p>\r\n<p>Components are modular pieces of vehicle that are assembled on chassis. They can, among other things, be things lie star sails, astrolabe navigators or long range sensor. Each component is defined by two values <code>ComponentId</code> and <code>ComponentLevel</code>. If you know these two values, you’ll be able to find out details of the component. <code>ComponentId</code> tells what component it is and <code>ComponentLevel</code> the general knowledge of it. When component is first discovered as a result of research, it’s just a prototype and as a such doesn’t function particularly well. Further research refines it and factories are able to produce higher quality components.</p>\r\n<p>Full definition of component is show below:</p>\r\n<pre><code>data Component = Component\r\n { componentId :: ComponentId\r\n , componentLevel :: ComponentLevel\r\n , componentName :: ComponentName\r\n , componentDescription :: ComponentDescription\r\n , componentWeight :: Weight\r\n , componentSlot :: ComponentSlot\r\n , componentType :: [ ComponentPower ]\r\n , componentCost :: RawResources ResourceCost\r\n , componentChassisType :: ChassisType\r\n }\r\n deriving (Show, Read, Eq, Ord)</code></pre>\r\n<p>Two particularly interesting fields are <code>componentSlot</code> and <code>componentType</code>. <code>componentSlot</code> has type of <code>ComponentSlot</code> and defines what kind of slot the component occupies in chassis. As there are limited amount of slots in each chassis, designer needs to make compromises on what components to install. <code>componentType</code> has type of <code>ComponentPower</code>, which defines what component does in general. It could be sensor or provide supplies for the vehicle for example.</p>\r\n<p>Technology requirements are defined by function: <code>componentRequirements :: ComponentId -> Maybe Technology</code>. It defines which technology unlock a given component. Part of the definition is show below. Each and every <code>ComponentId</code> has to be handled.</p>\r\n<pre><code>componentRequirements ShipLongRangeSensors = Just HighSensitivitySensors\r\ncomponentRequirements ShipBridge = Nothing\r\ncomponentRequirements VehicleWheeledMotiveSystem = Nothing\r\ncomponentRequirements VehicleHoverMotiveSystem = Just HoverCrafts\r\n...</code></pre>\r\n<p>Second major part of the designer are chassis. They’re stored in database, as I wanted a bit more flexible system than hardcoding as I did with components. Following piece of configuration is used to define database table and generated data for Haskell code. Most of the fields are probably easy enough to guess. <code>type</code> with type of <code>ChassisType</code> defines if this particular chassis is for example a land vehicle or a space ship. Various slot fields on other hand define amount of particular slots that the chassis offers.</p>\r\n<pre><code>Chassis json\r\n name ChassisName\r\n tonnage Weight\r\n type ChassisType\r\n technology Technology Maybe\r\n armourSlots SlotAmount\r\n innerSlots SlotAmount\r\n outerSlots SlotAmount\r\n sensorSlots SlotAmount\r\n weaponSlots SlotAmount\r\n engineSlots SlotAmount\r\n motiveSlots SlotAmount\r\n sailSlots SlotAmount\r\n deriving Show Read Eq</code></pre>\r\n<p>Not all chassis are equal and some (probably pretty much every one of them) have some sort of requirements that has to be fulfilled when designing a vehicle. For example, space ships require a bridge for captain and star sails. Bawley, smallest of the working ships has room for tw
(2859,'2019-07-18','2018-2019 New Years Eve show part 7',10714,'The HPR community comes together to say happy new year and chat','<h2>Hacker Public Radio New Years Show episode 7</h2>\r\n<p>Welcome to the 7th Annual Hacker Public Radio New Years Show. 2018-2019</p>\r\n<ul>\r\n<li>Trucking</li>\r\n<li>Patrick Stewart and Bret Spiner<br />\r\n<a href=\"https://www.youtube.com/watch?v=l5zQIKeh9B4\">https://www.youtube.com/watch?v=l5zQIKeh9B4</a><br />\r\n<a href=\"https://www.youtube.com/watch?v=EvJ7xR4D1ZI\">https://www.youtube.com/watch?v=EvJ7xR4D1ZI</a></li>\r\n<li>Self Defense</li>\r\n<li>The origin of Irish coffee</li>\r\n<li>Calendars</li>\r\n<li>Sleep</li>\r\n<li>The Pine Book<br />\r\n<a href=\"https://www.pine64.org/pinebook/\">https://www.pine64.org/pinebook/</a></li>\r\n<li>Guns</li>\r\n<li>Tanks</li>\r\n<li>AmazFit Bip<br />\r\n<a href=\"https://us.amazfit.com/shop/bip?variant=336750\">https://us.amazfit.com/shop/bip?variant=336750</a></li>\r\n<li>Canes</li>\r\n</ul>\r\n',159,121,1,'CC-BY-SA','HPR new years show, new years, community',0,0,1),
(2847,'2019-07-02','earbuds',902,'My trials with earbuds and custom setups','<p>operat0r discusses his trials with earbuds and custom setups.</p>',36,0,0,'CC-BY-SA','earbuds,hacking,music,diy',0,0,1),
(2856,'2019-07-15','Mint Mobile Security Rant',1185,'Settle in for a Mint Mobile Security Rant ','<p>\r\nYou can also use call forwarding to forward calls to your google voice number. Mint does not seem to stay connected all the time.\r\n</p>',36,0,1,'CC-BY-SA','Mint Mobile,ANdroid,Phones,4G,VoIP,google voice',0,0,1),
(2861,'2019-07-22','Safety Razors',870,'I go over some of my thoughts on Safety Razors Etc','<h2 id=\"links\">Links</h2>\r\n<ul>\r\n<li><a href=\"https://smile.amazon.com/gp/product/B01859QHJU/ref=ppx_yo_dt_b_search_asin_title?ie=UTF8&psc=1\" class=\"uri\">https://smile.amazon.com/gp/product/B01859QHJU/ref=ppx_yo_dt_b_search_asin_title?ie=UTF8&psc=1</a></li>\r\n<li><a href=\"https://smile.amazon.com/gp/product/B01M2Y82H8/ref=ppx_yo_dt_b_search_asin_title?ie=UTF8&psc=1\" class=\"uri\">https://smile.amazon.com/gp/product/B01M2Y82H8/ref=ppx_yo_dt_b_search_asin_title?ie=UTF8&psc=1</a></li>\r\n<li><a href=\"https://smile.amazon.com/gp/product/B000684Z70/ref=ppx_yo_dt_b_search_asin_title?ie=UTF8&th=1\" class=\"uri\">https://smile.amazon.com/gp/product/B000684Z70/ref=ppx_yo_dt_b_search_asin_title?ie=UTF8&th=1</a></li>\r\n<li><a href=\"https://smile.amazon.com/gp/product/B0022RB080/ref=ppx_yo_dt_b_search_asin_title?ie=UTF8&psc=1\" class=\"uri\">https://smile.amazon.com/gp/product/B0022RB080/ref=ppx_yo_dt_b_search_asin_title?ie=UTF8&psc=1</a></li>\r\n</ul>\r\n',36,0,0,'CC-BY-SA','shaving,safety,razor,health,grooming',0,0,1),
(2886,'2019-08-26','INFOSECOND',1136,'Thoughts around IT and Information Security','<p>\r\nIn todays show, operat0r shares his personal thoughts around information security and getting into the field. He also talks about ways to get support from your local community.\r\n</p>',36,0,1,'CC-BY-SA','information security,careers',0,0,1),
(2853,'2019-07-10','Feeding the beast',424,'How the swedes are killing their hardcash and feeding the beast','<h2 id=\"links\">Links</h2>\r\n<ul>\r\n<li><a href=\"https://www.bankid.com/\" class=\"uri\">https://www.bankid.com/</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Swish_(payment)\" class=\"uri\">https://en.wikipedia.org/wiki/Swish_(payment)</a></li>\r\n</ul>',309,0,0,'CC-BY-SA','bankid, swish, cash, payment, digitalization, sweden',0,0,1),
(2839,'2019-06-20','Sample episode of the Distrohoppers Digest podcast',2231,'We bring you the first episode of the new Creative Commons show the Distrohoppers Digest','<p>\r\nThis is a sample episode of the new Creative Commons tech podcast. It\'sbroughttousbyMossandourown<ahref=\"https://hackerpublicradio.org/correspondents/0338.html\">TonyHughes</a>.Fromtheblurb:\r\n</p>\r\n\r\n<quote>\r\nWearetwoBlokeswholoveLinuxandtryingoutnewstuff,wethoughtitwouldbeinterestingtoshareourexperienceoftryingnewLinuxandBSDdistributionsandhowwefoundittryingtolivewiththemasourdailydriverforuptoaMonthatatime,byrecordingapodcastabouthowwegoton.\r\n</quote>\r\n\r\n<h3>Links</h3>\r\n<ul>\r\n<li><ahref=\"https://distrohoppersdigest.blogspot.com/\">https://distrohoppersdigest.blogspot.com/</a></li>\r\n<li><ahref=\"https://distrohoppersdigest.blogspot.com/feeds/posts/default\">https://distrohoppersdigest.blogspot.com/feeds/posts/default</a></li>\r\n<li><ahref=\"https://distrohoppersdigest.blogspot.com/feeds/posts/default?alt=rss\">https://distrohoppersdigest.blogspot.com/feeds/posts/default?alt=rss</a></li>\r\n<li><ahref=\"https://hackerpublicradio.org/correspondents/0338.html\">https://hackerpublicradio.org/correspondents/0338.html</a></li>\r\n<li><ahref=\"https://mintcast.org/\">https://mintcast.org/</a></li>\r\n</ul>',30,0,0,'CC-BY-NC-SA','DistrohoppersDigest,mintCast,linux,bsd',0,0,1),
(2844,'2019-06-27','The Sony TC-222-A Portable Reel-To-Reel Tape Recorder',1868,'I talk about my latest thrift-store gadget, a 1969 Sony portable reel-to-reel tape recorder','<p>In this episode I talk about my new 1969 <a href=\"https://flic.kr/s/aHsmEcunXZ\" target=\"_blank\">Sony TC-222-A</a> portable reel-to-reel tape recorder. I found it about 3 weeks ago at <a href=\"https://www.handupthrift.com/\" target=\"_blank\">Hand-Up Thrift store</a> in Lafayette Louisiana for $5. It was in partially working condition, without a power cord, and in need of some work. I cleaned the contact points, overhauled the fast-forward idler wheel, lubricated both of the tape shafts, replaced the belts, hacked an old electric razor cord to work as a power cord, and tightened up the record linkage. One thing I still can\'tgetworkingisrecordingusingthemicrophone.</p>\r\n\r\n<p>Ispendabouthalfofthisepisodetalkingabouttryingtomakeasuper-longrecordingfitona5-inchreelandplayingat4.8cm/second.IuseKimikoIshizaka\'s wonderful <a href=\"https://kimiko-piano.com/open-goldberg\" target=\"_blank\">Open Goldberg Variations</a> and <a href=\"https://music.kimiko-piano.com/album/bach-well-tempered-clavier-book-1\" target=\"_blank\">Open Well-Tempered Clavier</a> as the music. To do this, I speeded up all of the tracks to play at 4x speed, for which I use the following script to loop through all mp3s in the current directory and subject them to the appropriate <a href=\"https://linux.die.net/man/1/sox\" target=\"_blank\">sox</a> command:</p>\r\n\r\n<pre>\r\n#!/bin/bash\r\n\r\nfor i in *.mp3; do\r\n# speed em up 4x\r\n infile=$(basename $i)\r\n stem=$(basename \"$i\" .mp3)\r\n outfile=\"$stem\"_4x.mp3\r\n sox $infile $outfile speed 4.0\r\n sleep .1\r\ndone\r\n</pre>\r\n\r\n<p>It worked! Well. The script and <code>sox</code> command worked. Recording the 4x-speed audio at 19 cm/second and then playing back at 4.8 cm/second also mostly worked, I just had a very poor-quality tape so it sounded pretty bad. The speed was just about right, though. In fact when I compared pitch against my piano, it was EXACTLY right. I may try again with a better tape. (BTW I said my tape was \"old new stock,\" but obviously I meant \"new old stock.\")</p>\r\n\r\n<h3>Photo Album (click image)</h3>\r\n\r\n<p><a data-flickr-embed=\"true\" href=\"https://www.flickr.com/photos/137675441@N05/albums/72157709041025907\" title=\"Sony TC-222-A Portable Reel-to-Reel Tape Recorder\"><img src=\"https://live.staticflickr.com/65535/48046250816_552453ece7.jpg\" width=\"500\" height=\"375\" alt=\"Sony TC-222-A Portable Reel-to-Reel Tape Recorder\"></a></p>\r\n\r\n<h2>Links</h2>\r\n\r\n<ul>\r\n <li>Video: <a href=\"https://www.youtube.com/watch?v=52BbX_aP1sQ\" target=\"_blank\">The Sony TC-222-A in action</a></li>\r\n <li><a href=\"https://www.youtube.com/user/Techmoan\" target=\"_blank\">Techmoan</a>: one of my favorite YouTube channels</li>\r\n <li>Music bumpers are from Kimiko Ishizaka\'s<em>TheOpenGoldbergVariations</em>:<ahref=\"https://www.opengoldbergvariations.org/\"target=\"_blank\">https://www.opengoldbergvariations.org/</a>,usedbypermissionoftheir<ahref=\"https://creativecommons.org/publicdomain/zero/1.0/\"target=\"_blank\">CC01.0Universal(CC01.0)PublicDomainDedicationlicense</a>.</li>\r\n<li><ahref=\"https://www.vintage-electronics.net/\"target=\"_blank\">VintageElectronics</a>,mysourceforreplacementbelts,replacementlampsformyMarantzreceiver,etc.</li>\r\n</ul>',238,0,0,'CC-BY-SA','Music,Recording,Audio,Tape,Reel-To-Reel,Open-Reel,RecordingDevices,TapeSpeeds,BashScripting',0,0,1),
(2843,'2019-06-26','Afrikan Tähti (or Star of Africa)',678,'Tuula talks about one of the most important Finnish board game ever','<p>For more information about the game and history behind it, have a look at the following links:</p>\r\n<ul>\r\n<li>Wikipedia: <a href=\"https://en.wikipedia.org/wiki/Afrikan_t%C3%A4hti\">https://en.wikipedia.org/wiki/Afrikan_t%C3%A4hti</a></li>\r\n<li>Board Game Geek: <a href=\"https://www.boardgamegeek.com/boardgame/5130/afrikan-tahti\" class=\"uri\">https://www.boardgamegeek.com/boardgame/5130/afrikan-tahti</a></li>\r\n</ul>\r\n',364,95,0,'CC-BY-SA','finnish, childhood favourite',0,0,1),
(2851,'2019-07-08','An introduction to the work of fire fighters',1847,'A small introduction into the work of fire fighters ','<p>Some general basic knowledge of fire fighting. Also an invitation to ask questions in the comments.</p>',369,0,0,'CC-BY-SA','fire fighting, fire brigade',0,0,1),
(2868,'2019-07-31','Custom data with Persistent',1202,'Tuula explains how to serialize custom data with Persistent','<p>Podcast episode is about two things, serializing custom data with Persistent and <code>IsString</code> typeclass.</p>\r\n<p>I’m using Persistent in conjunction with Yesod (web framework). Process in short is that data is defined in <code>/config/models</code> file that is used in compile time to generate data type definitions for Haskell. Same information is used to create schema for the database when Yesod application starts. It can even do simple migrations if schema changes, but I wouldn’t recommend using that in production.</p>\r\n<p>Persistent maps information between database and program written in Haskell. There’s pre-existing mappings for things like text and various kinds of numbers. In case one wants to use custom data type, compiler can automatically generate needed mapping. This automatic generation works well with enumerations and very complex data.</p>\r\n<p>For example, following piece defines enumeration <code>BuildingType</code> that is mapped in <code>varchar</code> field in database. Enumeration is thus stored as text.</p>\r\n<pre><code>data BuildingType = SensorStation\r\n | ResearchComplex\r\n | Farm\r\n | ParticleAccelerator\r\n | NeutronDetector\r\n | BlackMatterScanner\r\n | GravityWaveSensor\r\n deriving (Show, Read, Eq)\r\n\r\nderivePersistField "BuildingType"</code></pre>\r\n<p>For newtypes, automatic deriving works too, but generates (in my opinion) extra information that isn’t needed. This extra information causes data saved as text. For those cases, manual mapping can be used.</p>\r\n<p>Our example is for <code>StarDate</code>, which is just glorified <code>Int</code>. I’m using newtype to make <code>StarDate</code> distinct from any other <code>Int</code>, even when it behaves just like <code>Int</code>.</p>\r\n<pre><code>newtype StarDate = StarDate { unStarDate :: Int }\r\n deriving (Show, Read, Eq, Num, Ord)\r\n\r\ninstance PersistField StarDate where\r\n toPersistValue (StarDate n) =\r\n PersistInt64 $ fromIntegral n\r\n\r\n fromPersistValue (PersistInt64 n) =\r\n Right $ StarDate $ fromIntegral n\r\n\r\n fromPersistValue _ =\r\n Left "Failed to deserialize"\r\n\r\n\r\ninstance PersistFieldSql StarDate where\r\n sqlType _ = SqlInt64</code></pre>\r\n<p>One more trick, that doesn’t directly relate to Persistent is <code>IsString</code> type class. Instead of having to specify all the time what type text literal is, one can let compiler to deduce it from usage.</p>\r\n<p>For example, if I had a newtype like:</p>\r\n<pre><code>newtype PlanetName = PlanetName { unPlanetName :: Text }</code></pre>\r\n<p>I can turn on OverloadedStrings pragma and create <code>IsString</code> instance:</p>\r\n<pre><code>instance IsString PlanetName where\r\n fromString = PlanetName . fromString</code></pre>\r\n<p>Now I can write: <code>placeName = "Earth"</code> instead of <code>placeName = PlanetName "Earth"</code> and compiler can deduce correct type based on how the <code>placeName</code> is used.</p>\r\n<p>Thanks for listening, if you have any questions or comments, you can reach me via email or in the fediverse, where I’m <code>Tuula@mastodon.social</code>.</p>\r\n',364,107,0,'CC-BY-SA','haskell, persistent, database',0,0,1),
(2890,'2019-08-30','Penguicon 2019 Report',843,'Penguicon 2019 took place on May 3-5, 2018 in Southfield, Michigan','<p>Penguicon 2019 is a combined technology and science fiction convention in Southfield, Michigan, a suburb of Detroit, and presents over 500 hours of programming over the entire weekend. Of this, around 100 hours are open source, tech-related. In this episode I tell you about my own personal experience at Penguicon this year.</p>\r\n<h2 id=\"links\">Links</h2>\r\n<ul>\r\n<li><a href=\"https://2019.penguicon.org/\" class=\"uri\">https://2019.penguicon.org/</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Saladin_Ahmed\" class=\"uri\">https://en.wikipedia.org/wiki/Saladin_Ahmed</a></li>\r\n<li><a href=\"https://www.mikeymason.com/\" class=\"uri\">https://www.mikeymason.com/</a></li>\r\n<li><a href=\"https://zedshaw.com/\" class=\"uri\">https://zedshaw.com/</a></li>\r\n<li><a href=\"https://www.facebook.com/CraftyCelts/posts/d41d8cd9/233607537127/\" class=\"uri\">https://www.facebook.com/CraftyCelts/posts/d41d8cd9/233607537127/</a></li>\r\n<li><a href=\"https://www.sophiabrueckner.com/\" class=\"uri\">https://www.sophiabrueckner.com/</a></li>\r\n<li><a href=\"https://www.facebook.com/public/Karen-Corbeill\" class=\"uri\">https://www.facebook.com/public/Karen-Corbeill</a></li>\r\n<li><a href=\"https://www.youtube.com/playlist?list=PLwO8CTSLTkii9S_vhEOsyJ17RI3jjBZ95\" class=\"uri\">https://www.youtube.com/playlist?list=PLwO8CTSLTkii9S_vhEOsyJ17RI3jjBZ95</a></li>\r\n<li><a href=\"https://www.allhandsactive.org/\" class=\"uri\">https://www.allhandsactive.org/</a></li>\r\n<li><a href=\"https://www.zwilnik.com\" class=\"uri\">https://www.zwilnik.com</a></li>\r\n</ul>\r\n',198,96,0,'CC-BY-SA','Penguicon, Open Source, Convention',0,0,1),
(2852,'2019-07-09','Gnu Awk - Part 16',2564,'Winding up the Gnu Awk series','<h2 id=\"introduction\">Introduction</h2>\r\n<p>This is the sixteenth and final episode of the <code>\'</code><ahref=\"https://hackerpublicradio.org/series/0094.html\"title=\"Learning Awk\">LearningAwk</a><code>\'</code> series which is being produced by <a href=\"https://hackerpublicradio.org/correspondents/0300.html\" title=\"b-yeezi\">b-yeezi</a> (BY) and <a href=\"https://hackerpublicradio.org/correspondents/0225.html\" title=\"Dave Morriss\">Dave Morriss</a> (DM).</p>\r\n<p>We are using this as an opportunity to have a round-table discussion about the series, about Awk, and where we recommend the listeners should go from here. Including this one we have produced 16 episodes covering the features most likely to be used in pipelines on the command line or in simple shell and awk scripts.</p>\r\n<p><small> Note that although the HPR site will list this episode as having a single host, in fact it has two! Plans are afoot to enhance the HPR database so we can eventually indicate this properly. </small></p>\r\n<h2 id=\"topics-discussed\">Topics Discussed</h2>\r\n<ul>\r\n<li>The series\r\n<ul>\r\n<li>Started in 2016 (first show released 2016-07-13)</li>\r\n<li>Finishing in 2019</li>\r\n<li>16 episodes in total</li>\r\n</ul></li>\r\n</ul>\r\n<ul>\r\n<li>Why are we finishing the series?\r\n<ul>\r\n<li>We have probably reached the limit of what is useful on the command line or in shell scripts or even in manageable-sized Awk scripts</li>\r\n<li>Awk shows its limitations as we go on and doesn’t compare well with more modern text processing languages</li>\r\n</ul></li>\r\n</ul>\r\n<ul>\r\n<li>Our personal experiences with Awk\r\n<ul>\r\n<li>BY:\r\n<ul>\r\n<li>Started with sed and awk when first moving to Linux in 2011</li>\r\n<li>(ongoing) Exploring and cleaning client data</li>\r\n<li>(ongoing) Personal scripts when adding python or other tool would be overkill</li>\r\n</ul></li>\r\n<li>DM:\r\n<ul>\r\n<li>Working with VAX/VMS in the 1980’s. No very good text processing features built-in, so Gnu Awk (and sed) was a great way to handle the data we were using to generate accounts for new students each year. Could easily spot bad records, do some data validation (for example impossible dates of birth).</li>\r\n<li>Later in the late 1980’s and early 1990’s more Unix systems came on the scene running HP-UX, Ultrix, SunOS, Solaris, OSF/1, True64 Unix, and awk was very much used there.</li>\r\n<li>Later still we moved to Linux; initially Fedora but later RHEL, and of course awk figured in the list of tools there as well.</li>\r\n</ul></li>\r\n</ul></li>\r\n</ul>\r\n<ul>\r\n<li>What have we left out? Why?\r\n<ul>\r\n<li>User-defined functions are pretty clunky and hard to use</li>\r\n<li>Multi-dimensional arrays: other languages do this better</li>\r\n<li>Internationalization: assumes you’re writing <em>big</em> awk programs</li>\r\n<li>The <code>gawk</code> debugger: quite clever but probably overkill for this series</li>\r\n<li>Extensions written in C and C++: some come with <code>gawk</code> and look quite good, but this subject is out of scope</li>\r\n</ul></li>\r\n</ul>\r\n<ul>\r\n<li>What to use as an alternative to Awk?\r\n<ul>\r\n<li>DM moved from <code>gawk</code> to Perl (version 4) in the 1980’s and later to Perl version 5. This might have engendered an <em>awk</em>y, <em>Bash</em>y mindset that’s hard to shake off. Not the recommended place to start these days.</li>\r\n<li>BY moved from <code>gawk</code> to Python and R for large projects. For interactive <em>Bash</em>y exploration, moved to <a href=\"https://github.com/BurntSushi/xsv\" title=\"XSV\">XSV</a>, <a href=\"https://harelba.github.io/q/\" title=\"q to run SQL on csv files\">q</a>, and <a href=\"https://csvkit.readthedocs.io/en/latest/\" title=\"CSV Kit\">csv-kit</a> for most use cases.</li>\r\n<li>These tools have built-in convenience features, like accounting for headers, data types, and file encodings</li>\r\n</ul></li>\r\n</ul>\r\n<ul>\r\n<li>What’s next?\r\n<ul>\r
(2854,'2019-07-11','Telling myself something In The Morning',374,'There was a need for some software, so I wrote some','<ul>\r\n<li>Source for In The Morning: <a href=\"https://gitlab.com/jezra/in-the-morning\" class=\"uri\">https://gitlab.com/jezra/in-the-morning</a></li>\r\n<li>Bottle Framework: <a href=\"https://bottlepy.org\" class=\"uri\">https://bottlepy.org</a></li>\r\n</ul>',243,25,0,'CC-BY-SA','python, programming',0,0,1),
(2857,'2019-07-16','Creating CounterParty Collectible Tokens for the Bitcorn Game',995,'How to create Bitcorn collectibles: tokens issued on Bitcoin blockchain, used in Bitcorn Farms game','<p>Bitcorn is an idle farming game created with and played using Bitcoin tokens using the CounterParty protocol. I’ll walk you through how it all works, how to get started and what all that means.</p>\r\n<p>In this episode we’ll walk through the basics of creating and submitting a Bitcorn collectible card to be included in the game, along with setting up a wallet so you can buy and sell them.</p>\r\n',379,110,0,'CC-BY-SA','bitcorn, bitcoin, collectibles',0,0,1),
(2862,'2019-07-23','Art vs. Commerce In Storytelling',830,'Lostnbronx examines stories as both art and products.','<p>In this final episode of \"Random Elements of Storytelling\", Lostnbronx looks at the question of art vs.commerce.</p>\r\n<p>When is a story a product? When is it a work of passion? Can it be both? In a era of interactive storytelling, what is the difference between a story teller and an audience? And where do art, commerce, creativity, and consumption intersect?</p>\r\n<p>Lostnbronx wanders over hill and dale, and likely fails to adequately explain anything at all.</p>\r\n',107,105,0,'CC-BY-SA','stories, storytelling, art, commerce, lostnbronx',0,0,1),
(2900,'2019-09-13','Better Social Media 01 - Introduction',711,'We don\'thavetouseTwitterandFacebook.Therearealternatives.','<p>Whilemanypeopleliketousesocialmedia,platformslikeTwitterandFacebookareveryunsatisfying,nottomentioninimicaltoyoursecurityandprivacy.Fortunatelytherearealternativeswecantry,andinthisseriesIwanttoexploreafewofthem.<ahref=\"https://www.zwilnik.com/?page_id=1025\"class=\"uri\">https://www.zwilnik.com/?page_id=1025</a></p>\r\n<h2id=\"links\">Links:</h2>\r\n<ul>\r\n<li><ahref=\"https://elplatt.com/\"class=\"uri\">https://elplatt.com/</a></li>\r\n<li><ahref=\"https://litmus.com/blog/email-client-market-share-trends-first-half-of-2018\"class=\"uri\">https://litmus.com/blog/email-client-market-share-trends-first-half-of-2018</a></li>\r\n<li><ahref=\"https://www.amazon.com/dp/B07H7G7CMN/ref=dp-kindle-redirect?_encoding=UTF8&btkr=1\"class=\"uri\">https://www.amazon.com/dp/B07H7G7CMN/ref=dp-kindle-redirect?_encoding=UTF8&btkr=1</a></li>\r\n<li><ahref=\"https://mewe.com/\"class=\"uri\">https://mewe.com/</a></li>\r\n<li><ahref=\"https://ello.co/\"class=\"uri\">https://ello.co/</a></li>\r\n<li><ahref=\"https://diasporafoundation.org/\"class=\"uri\">https://diasporafoundation.org/</a></li>\r\n<li><ahref=\"https://pluspora.com/\"class=\"uri\">https://pluspora.com/</a></li>\r\n<li><ahref=\"https://www.bitchute.com/\"class=\"uri\">https://www.bitchute.com/</a></li>\r\n<li><ahref=\"https://joinmastodon.org/\"class=\"uri\">https://joinmastodon.org/</a></li>\r\n<li><ahref=\"https://textile.photos/\"class=\"uri\">https://textile.photos/</a></li>\r\n<li><ahref=\"https://pixelfed.org/\"class=\"uri\">https://pixelfed.org/</a></li>\r\n<li><ahref=\"https://www.wire.com/\"class=\"uri\">https://www.wire.com/</a></li>\r\n<li><ahref=\"https://www.signal.org/\"class=\"uri\">https://www.signal.org/</a></li>\r\n<li><ahref=\"https://gnu.io/social/\"class=\"uri\">https://gnu.io/social/</a></li>\r\n<li><ahref=\"https://www.scuttlebutt.nz/\"class=\"uri\">https://www.scuttlebutt.nz/</a></li>\r\n<li><ahref=\"https://mediagoblin.org/\"class=\"uri\">https://mediagoblin.org/</a></li>\r\n<li><ahref=\"https://freenetproject.org/author/freenet-project-inc.html\"class=\"uri\">https://freenetproject.org/author/freenet-project-inc.html</a></li>\r\n<li><ahref=\"https://www.zwilnik.com/?page_id=1025\"class=\"uri\">https://www.zwilnik.com/?page_id=1025</a></li>\r\n</ul>\r\n',198,108,0,'CC-BY-SA','Fediverse,socialmedia,federated',0,0,1),
(2910,'2019-09-27','Better Social Media 02 - Pluspora',582,'Pluspora was advertised as the federated alternative to Google Plus.','<p>Pluspora is an instance of the Diaspora software that was specifically designed to appeal to users of Google Plus. So when Google Plus disappeared, many people moved over to this platform. <a href=\"https://www.zwilnik.com/?page_id=1027\" class=\"uri\">https://www.zwilnik.com/?page_id=1027</a></p>\r\n<h2 id=\"links\">Links:</h2>\r\n<ul>\r\n<li><a href=\"https://pluspora.com/\" class=\"uri\">https://pluspora.com/</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/GNU_General_Public_License\" class=\"uri\">https://en.wikipedia.org/wiki/GNU_General_Public_License</a></li>\r\n<li><a href=\"https://diasporafoundation.org/formatting\" class=\"uri\">https://diasporafoundation.org/formatting</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Markdown\" class=\"uri\">https://en.wikipedia.org/wiki/Markdown</a></li>\r\n<li><a href=\"https://www.zwilnik.com/?page_id=1027\" class=\"uri\">https://www.zwilnik.com/?page_id=1027</a></li>\r\n</ul>\r\n',198,108,0,'CC-BY-SA','Fediverse, social media, federated',0,0,1),
(2920,'2019-10-11','Better Social Media 03 - MeWe',729,'MeWe was advertised as another popular alternative to Google Plus.','<p>MeWe is another platform that was advertised to users left high-and-dry by the closure of Google Plus. It is not federated, but does make strong claims of privacy protection, and is the slickest alternative I have seen to Google Plus. So when Google Plus disappeared, many people moved over to this platform. <a href=\"https://www.zwilnik.com/?page_id=1030\" class=\"uri\">https://www.zwilnik.com/?page_id=1030</a></p>\r\n<h2 id=\"links\">Links:</h2>\r\n<ul>\r\n<li><a href=\"https://mewe.com/\" class=\"uri\">https://mewe.com/</a></li>\r\n<li><a href=\"https://mewepro.com/\" class=\"uri\">https://mewepro.com/</a></li>\r\n<li><a href=\"https://mewe.com/store\" class=\"uri\">https://mewe.com/store</a></li>\r\n<li><a href=\"https://mewe.com/#\" class=\"uri\">https://mewe.com/#</a></li>\r\n<li><a href=\"https://www.zwilnik.com/?page_id=1030\" class=\"uri\">https://www.zwilnik.com/?page_id=1030</a></li>\r\n</ul>\r\n',198,108,0,'CC-BY-SA','social media, alternative',0,0,1),
(2930,'2019-10-25','Better Social Media 04 - Diaspora',886,'Diaspora was the original alternative platform when it went up against Facebook.','<p>I don’t know if Diaspora was the first of the alternatives to come along, but it was certainly the first I was aware of. It got a lot of attention for the college students who first put it together (and remember that Facebook was originally created by a college student, Mark Zuckerberg). The four students, Ilya Zhitomirskiy, Dan Grippi, Max Salzberg, and Raphael Sofaer, were inspired by a speech Eben Moglen gave to the Internet society’s New York Chapter, where he described centralized social networks as “Spying for free”. The students chose the name Diaspora, which is a Greek word that means a “scattered or dispersed population” to reflect the idea that instead of a centralized platform, Diaspora would consist of independent nodes, called pods, each running a copy of the free software which is open source and licensed under the GNU-AGPL-3.0 license. <a href=\"https://www.zwilnik.com/?page_id=1032\" class=\"uri\">https://www.zwilnik.com/?page_id=1032</a></p>\r\n<h2 id=\"links\">Links:</h2>\r\n<ul>\r\n<li><a href=\"https://diasporafoundation.org/\" class=\"uri\">https://diasporafoundation.org/</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/GNU_General_Public_License\" class=\"uri\">https://en.wikipedia.org/wiki/GNU_General_Public_License</a></li>\r\n<li><a href=\"https://softwarefreedom.org/\" class=\"uri\">https://softwarefreedom.org/</a></li>\r\n<li><a href=\"https://web.archive.org/web/20111002003516/https://blog.diasporafoundation.org/2011/09/21/diaspora-means-a-brighter-future-for-all-of-us.html\" class=\"uri\">https://web.archive.org/web/20111002003516/https://blog.diasporafoundation.org/2011/09/21/diaspora-means-a-brighter-future-for-all-of-us.html</a></li>\r\n<li><a href=\"https://podupti.me/\" class=\"uri\">https://podupti.me/</a></li>\r\n<li><a href=\"mailto:ahuka@pod.haxxors.com\">ahuka@pod.haxxors.com</a></li>\r\n<li><a href=\"https://pod.haxxors.com/i/394c80269066\" class=\"uri\">https://pod.haxxors.com/i/394c80269066</a></li>\r\n<li><a href=\"https://www.zwilnik.com/?page_id=1032\" class=\"uri\">https://www.zwilnik.com/?page_id=1032</a></li>\r\n</ul>\r\n',198,108,0,'CC-BY-SA','social media, alternative, federated, Fediverse',0,0,1),
(2940,'2019-11-08','Better Social Media 05 - Mastodon',778,'Mastodon is the federated alternative to Twitter.','<p>As mentioned earlier, Diaspora was one of the earliest alternative, privacy-respecting social media platforms, but it was focused on being an alternative to Facebook (and it has done this fairly well). But that leaves the other big platform of the social world, Twitter. Mastodon is a nice federated alternative to Twitter and a nicer place to be. <a href=\"https://www.zwilnik.com/?page_id=1034\" class=\"uri\">https://www.zwilnik.com/?page_id=1034</a></p>\r\n<h2 id=\"links\">Links:</h2>\r\n<ul>\r\n<li><a href=\"https://joinmastodon.org/\" class=\"uri\">https://joinmastodon.org/</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Identi.ca\" class=\"uri\">https://en.wikipedia.org/wiki/Identi.ca</a></li>\r\n<li><a href=\"https://pump.io/\" class=\"uri\">https://pump.io/</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Gamergate_controversy\" class=\"uri\">https://en.wikipedia.org/wiki/Gamergate_controversy</a></li>\r\n<li><a href=\"https://blog.joinmastodon.org/2018/07/cage-the-mastodon/\" class=\"uri\">https://blog.joinmastodon.org/2018/07/cage-the-mastodon/</a></li>\r\n<li><a href=\"https://mastodon.social/about/more\" class=\"uri\">https://mastodon.social/about/more</a></li>\r\n<li><a href=\"https://instances.noct.zone/\" class=\"uri\">https://instances.noct.zone/</a></li>\r\n<li><a href=\"https://instances.social/list#lang=&allowed=&prohibited=&users=\" class=\"uri\">https://instances.social/list#lang=&allowed=&prohibited=&users=</a></li>\r\n<li><a href=\"https://mwl.io/\" class=\"uri\">https://mwl.io/</a></li>\r\n<li><a href=\"https://github.com/tootsuite/documentation/blob/master/Using-Mastodon/Apps.md\" class=\"uri\">https://github.com/tootsuite/documentation/blob/master/Using-Mastodon/Apps.md</a></li>\r\n<li><a href=\"https://www.zwilnik.com/?page_id=1034\" class=\"uri\">https://www.zwilnik.com/?page_id=1034</a></li>\r\n</ul>\r\n',198,108,0,'CC-BY-SA','Fediverse, social media, federated, alternative',0,0,1),
(2863,'2019-07-24','Simplified application architectures for improved security',955,'A thought experiment in whether reducing runtime dependencies can improve security and how to do it.','<p>Before the days of the PC, application architectures were often very simple - being little more than the executable itself and any input files. The constraints of the early PC’s very limited resources required new architectures to make the most of those resources.</p>\r\n<p>We now have a situation where most applications either install, or require the presence of, multiple runtime dependencies. Each dependency has an interface which allows communication between itself and the application, but every interface presents an attack surface with the potential to be exploited by a malicious 3rd party.</p>\r\n<p>Modern computers do not have those same resource constraints yet we are still developing applications using the principles that applied 3 decades ago.</p>\r\n<p>Re-usable functionality can be internalised through static linking at compile-time or by code inclusion (along the lines of a .h file in C/C++)</p>\r\n<p>To change from using tried and tested methods is never convenient, but with concern for cyber security high and rising, has the time come to exchange convenience for simpler application architectures that should reduce vulnerabilities?</p>\r\n<p>…And may a move to new (or is it old) architectures deliver a big win for open source software?</p>\r\n',246,0,0,'CC-BY-SA','Application development, Application architecture, Security',0,0,1),
(2864,'2019-07-25','One weird trick to add a --help option to your awk scripts',1213,'Klaatu demonstrates two ways to add a --help message to your awk scripts','<p>\r\nThe first method is in Awk itself.\r\n</p>\r\n\r\n<pre><code>\r\n#!/usr/bin/awk -f\r\n#\r\n# USAGE EXAMPLE:\r\n# echo the input of some var\r\n# $ foo -v var=8\r\n#\r\n\r\nBEGIN {\r\n if (length(var) == 0) {\r\n printf \"%s %s\\n\", ENVIRON[\"_\"], \"is a proof-of-concept help message\";\r\n printf \"%s\\n\", \"Usage:\";\r\n printf \"%s\\n\", \"------\";\r\n printf \"%s %s %s\\n\", \"$\", ENVIRON[\"_\"], \"-v var=NUM\";\r\n printf \"%s\\n\", \"substitute NUM with the number you want echoed\";\r\n exit\r\n }\r\n else {\r\n printf \"%s %s\\n\", \"You have entered \", var;\r\n }\r\n}\r\n</code></pre>\r\n\r\n<p>\r\nThe disadvantage to this is that it only provides a help message if no option is provided. If you actually type <code>--help</code>, then you get Awk\'shelpmessage,whichisnotusefulinthiscontext.\r\n</p>\r\n\r\n<p>\r\nTheshellscriptwrappermethodusestheshelltoparseoptions,whicharethenpassedtoanembeddedAwkscript:\r\n</p>\r\n\r\n<pre><code>\r\n#!/bin/sh\r\n\r\nif [ \"${1}\" = \"--help\" -o \"${1}\" = \"-h\" -o \"${1}\" = \"\" ]; then\r\n echo \"This is a help message.\"\r\n exit\r\nfi\r\n\r\n/usr/bin/awk -v var=\"${1}\" \'\r\n\r\nBEGIN {\r\nprintf \"%s %s\\n\", \"You provided\", var;\r\n}\'\r\n</code></pre>\r\n</p>\r\n\r\n<p>\r\nThe disadvantage here is only that you\'re not just writing an Awk script, you\'re writing a shell script with embedded Awk. I can\'t think of a reason not to do it this way (even though in the script that served as the inspiration for this episode, I don\'t use this method).\r\n</p>\r\n\r\n',78,94,0,'CC-BY-SA','awk,option,help,arg',0,0,1),
(2866,'2019-07-29','Intro to Bitcoin for techies',1915,'Survey of Bitcoin: blockchains, blocks, transactions, miners, PoW, hashing, addresses, wallets','<p>This is a broad introduction to Bitcoin from a technical perspective. We do not talk about finance or economics, and we don’t compare distributed ledger technologies. We’re not addressing exchanges, layer 2 technologies, mainstream adoption, etc.</p>\r\n<p>We’re also going to avoid going deep into forks, fungibility, mining or the math of Bitcoin.</p>\r\n<p>In this episode we introduce these fundamental Bitcoin topics:</p>\r\n<ul>\r\n<li>What is Bitcoin?</li>\r\n<li>Blockchains and blocks</li>\r\n<li>What are transactions?</li>\r\n<li>What are miners and what do they do?</li>\r\n<li>Proof of Work in Bitcoin - SHA256 hashing</li>\r\n<li>Bitcoin consensus mechanism</li>\r\n<li>How do wallets work?</li>\r\n<li>Brief discussion about various types of wallets and wallet security</li>\r\n</ul>\r\n<p>I hope this is accessible and informative and look forward to doing more in the future.</p>',379,110,0,'CC-BY-SA','bitcoin, blockchain, cryptocurrency',0,0,1),
(2873,'2019-08-07','Death Angel - Card game',1045,'Short description of Death Angel card game','<p>For more information, have a look at BoardGameGeek: <a href=\"https://boardgamegeek.com/boardgame/71721/space-hulk-death-angel-card-game\" class=\"uri\">https://boardgamegeek.com/boardgame/71721/space-hulk-death-angel-card-game</a></p>\r\n',364,95,0,'CC-BY-SA','cardgame',0,0,1),
(2878,'2019-08-14','Type classes in Haskell',1168,'Tuula explains what type classes are and how to use them','<h2 id=\"background\">Background</h2>\r\n<p>Type classes are Haskell’s way of doing ad hoc polymorphics or overloading. They are used to defined set of functions that can operate more than one specific type of data.</p>\r\n<h2 id=\"equality\">Equality</h2>\r\n<p>In Haskell there’s no default equality, it has to be defined.</p>\r\n<p>There’s two parts to the puzzle. First is type class <code>Eq</code> that comes with the standard library and defines function signatures for equality and non-equality comparisons. There’s type parameter <code>a</code> in the definition, which is filled by user when they define instance of <code>Eq</code> for their data. In that instance definition, <code>a</code> is filled with concrete type.</p>\r\n<pre><code>class Eq a where\r\n (==) :: a -> a -> Bool\r\n (/=) :: a -> a -> Bool\r\n\r\n x /= y = not (x == y)</code></pre>\r\n<p>Definition above can be read as “class Eq a that has two functions with following signatures and implementations”. In other words, given two <code>a</code>, this function determines are they equal or not (thus <code>Bool</code> as return type). <code>/=</code> is defined in terms of <code>==</code>, so it’s enough to define one and you get other one for free. But you can still define both if you’re so included (maybe some optimization case).</p>\r\n<p>If we define our own <code>Size</code> type, like below, we can compare sizes:</p>\r\n<pre><code>data Size = Small | Medium | Large\r\n deriving (Show, Read)\r\n\r\ninstance Eq Size where\r\n Small == Small = True\r\n Medium == Medium = True\r\n Large == Large = True\r\n _ == _ = False</code></pre>\r\n<p>And here’s couple example comparisons.</p>\r\n<pre><code>> Small == Small\r\nTrue\r\n> Large /= Large\r\nFalse</code></pre>\r\n<p>Writing these by hand is both tedious and error prone, so we usually use automatic derivation for them. Note how the second line now reads <code>deriving (Show, Read, Eq)</code>.</p>\r\n<pre><code>data Size = Small | Medium | Large\r\n deriving (Show, Read, Eq)</code></pre>\r\n<h2 id=\"hierarchy-between-type-classes\">Hierarchy between type classes</h2>\r\n<p>There can be hierarchy between type classes, meaning one requires presence of another. Common example is <code>Ord</code>, which is used to order data.</p>\r\n<pre><code>class Eq a => Ord a where\r\n compare :: a -> a -> Ordering\r\n (<) :: a -> a -> Bool\r\n (>=) :: a -> a -> Bool\r\n (>) :: a -> a -> Bool\r\n (<=) :: a -> a -> Bool\r\n max :: a -> a -> a\r\n min :: a -> a -> a</code></pre>\r\n<p>This definition can be read as “class Ord a, where a has instance of Eq, with pile of functions as follows”. <code>Ord</code> has default implementation for quite many of these, in terms of others, so it’s enough to implement either <code>compare</code> or <code><=</code>.</p>\r\n<p>For our <code>Size</code>, instance of <code>Ord</code> could be defined as:</p>\r\n<pre><code>instance Ord Size where\r\n Small <= _ = True\r\n Medium <= Small = False\r\n Medium <= _ = True\r\n Large <= Large = True\r\n Large <= _ = False</code></pre>\r\n<h2 id=\"writing-generic-code\">Writing generic code</h2>\r\n<p>There’s lots and lots of type classes in standard library:</p>\r\n<ul>\r\n<li><code>Num</code> for numeric operations</li>\r\n<li><code>Integral</code> for integer numbers</li>\r\n<li><code>Floating</code> for floating numbers</li>\r\n<li><code>Show</code> for turning data into strings</li>\r\n<li><code>Read</code> for turning strings to data</li>\r\n<li><code>Enum</code> for sequentially ordered types (these can be enumerated)</li>\r\n<li><code>Bounded</code> for things with upper and lower bound</li>\r\n<li>and so on…</li>\r\n</ul>\r\n<p>Type classes allow you to write really generic code. Following is contrived example using <code>Ord</code> and <code>Show</code>:<
(2883,'2019-08-21','Pass the pigs',318,'Tuula talks about their childhood game pass the pigs','<p>For more information, have a look at <a href=\"https://boardgamegeek.com/boardgame/2593/pass-pigs\" class=\"uri\">https://boardgamegeek.com/boardgame/2593/pass-pigs</a></p>\r\n',364,95,0,'CC-BY-SA','dice game',0,0,1),
(2950,'2019-11-22','NotPetya and Maersk: An Object Lesson',861,'Looking at an object lesson for proper IT management processes and the cost of failure','<p>We previously looked at the NIST Security Framework, which lays out how organizations should manage their network security. That may have seemed a bit dry, so let’s look at this case study to put some flesh on those dry bones. Failing to manage your security risks properly can have significant consequences.</p>\r\n<h2 id=\"links\">Links:</h2>\r\n<ul>\r\n<li><a href=\"https://www.zwilnik.com/?page_id=997\" class=\"uri\">https://www.zwilnik.com/?page_id=997</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2850\" class=\"uri\">https://hackerpublicradio.org/eps.php?id=2850</a></li>\r\n<li><a href=\"https://www.zwilnik.com/?page_id=1045\" class=\"uri\">https://www.zwilnik.com/?page_id=1045</a></li>\r\n</ul>\r\n',198,74,0,'CC-BY-SA','IT Management, Security',0,0,1),
(2898,'2019-09-11','Modeling people in space game',1315,'Tuula talks how they approach modeling people in space game','<p>People are what makes dynasty simulators interesting and this episode will be about them. There isn’t much code this time, mainly just how data is organized. Topic is long and split over several episodes.</p>\r\n<p>Some people in game are controlled by computer, while some are controlled by player. There’s no difference on what each can do in game, computer is basically just filling in for players when there aren’t enough players.</p>\r\n<p>There’s plenty of data about people, spread over several entities and database tables. Main one is <code>Person</code>, which stores name, gender, sex, date of birth and some stats (and then some more).</p>\r\n<p>There are lots of various ways of naming people and I chose to model three for the starters:</p>\r\n<pre><code>data PersonName =\r\n RegularName FirstName FamilyName (Maybe Cognomen)\r\n | SimpleName FirstName (Maybe Cognomen)\r\n | RegalName FirstName FamilyName RegnalNumber (Maybe Cognomen)\r\n deriving (Show, Read, Eq)</code></pre>\r\n<p>The higher the rank, more complicated names you tend to have (for some reason). Later on I’ll try and see if I can add more varied names, like matronyms and patronyms.</p>\r\n<p>Sex and gender I’m modeling with simple system of two enumerations, sex can be <code>Female</code>, <code>Male</code> or <code>Intersex</code>, while gender has values <code>Man</code>, <code>Woman</code>, <code>Agender</code> and <code>Nonbinary</code>. System is coarse, but should be enough to get started with the game. Later on, this can be expanded to more nuanced system.</p>\r\n<p>Traits are defining features of people. These include things like brave, coward, ambitious, content, honest and such. Values are binary, character either is brave or not. And character can’t be brave and coward at the same time.</p>\r\n<p>Relations are modeled as <code>PersonRelation</code> and thus stored in <code>person_relation</code> table:</p>\r\n<pre><code>Relation json\r\n originatorId PersonId\r\n targetId PersonId\r\n type RelationType\r\n visibility RelationVisibility\r\n deriving Show Read Eq</code></pre>\r\n<p>I find this corner of the puzzle particular interesting. This models who is parent or child, who is friend or rival. Interconnected web created by relations isn’t completely visible to players (or any other person in game). Relations have visibility, modeled as <code>RelationVisibility</code>, which tells how visible it is. Public ones are known by everyone, family relations are limited to small group of people and secret relations are only known by those who are in the fold. One aspect of the game is acquiring this information.</p>\r\n<p>Intel is modeled as <code>HumanIntelligence</code> and stored in <code>human_intelligence</code> table:</p>\r\n<pre><code>HumanIntelligence json\r\n personId PersonId\r\n ownerId PersonId\r\n level PersonIntel\r\n deriving Show Read Eq</code></pre>\r\n<p>Essentially it just lists which character has what information about certain other character. So when displaying information to players, this table has to be referenced in order to know how much to reveal to them.</p>\r\n<p>Different types of intels are listed as <code>PersonIntel</code>:</p>\r\n<pre><code>data PersonIntel =\r\n Stats\r\n | Demesne\r\n | FamilyRelations\r\n | SecretRelations\r\n | Opinions OpinionIntel\r\n | Traits\r\n deriving (Show, Read, Eq)</code></pre>\r\n<p>Person related data is sent back to client in <code>PersonReport</code> record (I’m not copying it here as it’s relatively large). We can have a look on how one field is processed.</p>\r\n<p>For example, in case of traits. <code>PersonReport</code> has field <code>personReportTraits :: !(Maybe [TraitReport])</code>. Exclamation mark in the beginning of type instructs Haskell that this value should be computed immediately when record is created and not left for later. I’m doing this as I know for sure that
(2867,'2019-07-30','The Kenwood TS940S Automatic Tuning Unit',784,'I cover the Automatic Tuning unit on my Kenwood TS940S, re comment from HPR2668','<p>In this episode I let you hear the operation of my Kenwood TS940S automatic tuning unit. It had been a while since I’d last transmitted and I was a bit nervous that it might not even work – apparently it still does.</p>\r\n<ul>\r\n<li><p>Link to my original show that had a comment from Michael<br />\r\nhpr2668 :: Explaining the controls on my Amateur HF Radio Part 3<br />\r\n<a href=\"https://hackerpublicradio.org/eps.php?id=2668\" class=\"uri\">https://hackerpublicradio.org/eps.php?id=2668</a></p></li>\r\n<li><p>Link to article about the Kenwood TS940-S<br />\r\n<a href=\"https://www.universal-radio.com/catalog/hamhf/ts940s.html\" class=\"uri\">https://www.universal-radio.com/catalog/hamhf/ts940s.html</a></p></li>\r\n<li><p>Information on the Automatic Tuning Unit located internally within the Kenwood TS940S apparently its an optional Unit with Part number AT-940<br />\r\n<a href=\"https://www.universal-radio.com/catalog/hamhf/at940.html\" class=\"uri\">https://www.universal-radio.com/catalog/hamhf/at940.html</a></p></li>\r\n<li><p>if you really want to dive into more detail about Tuning units feel free to follow this link in wikipedia.<br />\r\n<a href=\"https://en.wikipedia.org/wiki/Antenna_tuner\" class=\"uri\">https://en.wikipedia.org/wiki/Antenna_tuner</a></p></li>\r\n<li><p>Dipole information from wikipedia<br />\r\n<a href=\"https://en.wikipedia.org/wiki/Dipole_antenna\" class=\"uri\">https://en.wikipedia.org/wiki/Dipole_antenna</a></p></li>\r\n<li><p>40M band allocation information from Wikipedia<br />\r\n<a href=\"https://en.wikipedia.org/wiki/40-meter_band\" class=\"uri\">https://en.wikipedia.org/wiki/40-meter_band</a></p></li>\r\n<li><p>Noise Blanker information from wikipedia<br />\r\n<a href=\"https://en.wikipedia.org/wiki/Noise_blanker\" class=\"uri\">https://en.wikipedia.org/wiki/Noise_blanker</a></p></li>\r\n</ul>\r\n',201,43,1,'CC-BY-SA','Amateur, Radio, Ham',0,0,1),
(2865,'2019-07-26','The YouTube channels I really like',857,'Just some random thoughts on some random youtube channels','<ul>\r\n<li><p>The Late Show with Stephen Colbert<br />\r\n(<a href=\"https://www.youtube.com/channel/UCMtFAi84ehTSYSE9XoHefig\" class=\"uri\">https://www.youtube.com/channel/UCMtFAi84ehTSYSE9XoHefig</a>)</p></li>\r\n<li><p>CuriousMarc<br />\r\nApollo AGC Part 1: Restoring the computer that put man on the Moon<br />\r\n(<a href=\"https://www.youtube.com/watch?v=2KSahAoOLdU\" class=\"uri\">https://www.youtube.com/watch?v=2KSahAoOLdU</a>)</p></li>\r\n<li><p>Virtual AGC — AGS — LVDC — Gemini<br />\r\n(<a href=\"https://github.com/virtualagc/virtualagc\" class=\"uri\">https://github.com/virtualagc/virtualagc</a>)<br />\r\n(<a href=\"https://www.ibiblio.org/apollo/\" class=\"uri\">https://www.ibiblio.org/apollo/</a>)</p></li>\r\n<li><p>Moshix<br />\r\n(<a href=\"https://www.youtube.com/user/moshe5760\" class=\"uri\">https://www.youtube.com/user/moshe5760</a>)</p></li>\r\n<li><p>Death Wears Bunny Slippers<br />\r\n(<a href=\"https://www.youtube.com/channel/UCd50A5qLv8FemVufSvDgkCQ\" class=\"uri\">https://www.youtube.com/channel/UCd50A5qLv8FemVufSvDgkCQ</a>)</p></li>\r\n</ul>\r\n',369,0,0,'CC-BY-SA','apollo,agc,youtube',0,0,1),
(2888,'2019-08-28','Pattern matching in Haskell',1236,'Tuula talks about one of their favourite features in Haskell','<p>Pattern matching is one of those features of Haskell that immediately got me interested as it reduces amount of branching inside of functions I write. Basic idea is that if value constructors are for making data, pattern matching is for taking it apart.</p>\r\n<p>First example is a function that takes a <code>Bool</code> and returns a respective <code>String</code>:</p>\r\n<pre><code>boolToString :: Bool -> String\r\nboolToString n =\r\n if n\r\n then "True"\r\n else "False"</code></pre>\r\n<p>Nothing too fancy, just an <code>if</code> expression inside a function. We can move that <code>if</code> out of there though and define exactly same functionality, but with patterns:</p>\r\n<pre><code>boolToString :: Bool -> String\r\nboolToString True =\r\n "True"\r\n\r\nboolToString False =\r\n "False"</code></pre>\r\n<p>There’s one definition for <code>boolToString</code>, but two different patterns used.</p>\r\n<p>Second example is bit more complex, this time we have <code>Maybe Int</code> that is being turned into <code>String</code>. <code>Maybe</code> has two value constructors <code>Nothing</code> and <code>Just a</code>. We have two cases for <code>Just</code>, specific one for when it’s <code>Just 1</code> and more general one <code>Just n</code> that takes care of rest of the cases.</p>\r\n<pre><code>isBig :: Maybe Int -> String\r\nisBig Nothing =\r\n "Not at all"\r\n\r\nisBig (Just 1) =\r\n "Just perfect"\r\n\r\nisBig (Just n) =\r\n if n < 10\r\n then "Just slightly"\r\n else "Definitely is"</code></pre>\r\n<p>Some example usage:</p>\r\n<pre><code>> isBig Nothing\r\n"Not at all"\r\n> isBig $ Just 0\r\n"Just perfect"\r\n> isBig $ Just 50\r\n"Definitely is"</code></pre>\r\n<p>Pattern matching isn’t limited to algebraic datatypes that we have been working with so far. We can do same things with records. Below is an function used to calculate total fee when cost and customer are known. Each customer can have their own discount percentage, but in addition we’re giving 10% discount to VIP customers:</p>\r\n<pre><code>data Customer = Customer\r\n { customerName :: String\r\n , customerDiscountPct :: Double\r\n , vipCustomer :: Bool\r\n }\r\n\r\ntotalFee :: Double -> Customer -> Double\r\ntotalFee bill cust@(Customer { vipCustomer = True }) =\r\n bill * 0.9 * customerDiscountPct cust\r\n\r\ntotalFee bill cust =\r\n bill * customerDiscountPct cust</code></pre>\r\n<p>There’s two cases of <code>totalFee</code> function. First one is for when passed in <code>Customer</code> has <code>vipCustomer</code> field <code>True</code>. Second one takes care of general case. In the first case we’re using <code>@</code> to bind <code>Customer</code> as a whole to <code>cust</code> name.</p>\r\n<p>Lists can be matched too. The basic idea is exactly the same:</p>\r\n<ul>\r\n<li><code>(x:xs)</code> matches a list with at least one item, <code>x</code> is first item, <code>xs</code> is rest of the items (might be an empty list)</li>\r\n<li><code>(x:y:_)</code> matches two first items in a list of at least two items, <code>x</code> is first, <code>y</code> is second, <code>_</code> is rest</li>\r\n<li><code>[]</code> matches empty list</li>\r\n<li><code>(x:[])</code> matches list of exactly one item</li>\r\n</ul>\r\n<p>Underscore <code>_</code> matches to everything without binding value to a name. This is useful when you don’t care about exact value, so you don’t want to give it a name. One could give it a name, but compiler will issue a warning if there are unused values in the code.</p>\r\n<p>Next example is recursively counting amount if items in a list using pattern matching:</p>\r\n<pre><code>count :: [a] -> Int\r\ncount [] =\r\n 0\r\n\r\ncount (x:xs) =\r\n 1 + count xs</code></pre>\r\n<p>Fibonacci
(2869,'2019-08-01','building a bike, following in John Kulp\'sfootsteps',694,'turningacoupleofoldbikesintoalongwheelbaserecumbent','<ul>\r\n<li><p>recycledrecumbent<br/>\r\n<ahref=\"https://sites.google.com/site/recycledrecumbents/home\"class=\"uri\">https://sites.google.com/site/recycledrecumbents/home</a></p></li>\r\n<li><p>wisilrecumbent<br/>\r\n<ahref=\"https://www.wisil.recumbents.com/home/\"class=\"uri\">https://www.wisil.recumbents.com/home/</a></p></li>\r\n<li><p>hpr1282<br/>\r\n<ahref=\"https://www.hackerpublicradio.org/eps.php?id=1282\"class=\"uri\">https://www.hackerpublicradio.org/eps.php?id=1282</a></p></li>\r\n<li><p>cjhoyle<br/>\r\n<ahref=\"https://www.youtube.com/user/cjhoyle\"class=\"uri\">https://www.youtube.com/user/cjhoyle</a></p></li>\r\n<li><p>toledobike<br/>\r\n<ahref=\"https://www.toledobikes.org/\"class=\"uri\">https://www.toledobikes.org/</a></p></li>\r\n</ul>\r\n',326,115,0,'CC-BY-SA','bicycle,recumbent,recycle',0,0,1),
(2872,'2019-08-06','Shoe Lace Tips',472,'In this episode I give some shoe lace tips','<p>In this episode I give some shoe lace tips</p>\r\n<ul>\r\n<li><p>Shoe Laces Ted Talk with over 6.5 million views<br />\r\n<a href=\"https://www.ted.com/talks/terry_moore_how_to_tie_your_shoes?language=en\" class=\"uri\">https://www.ted.com/talks/terry_moore_how_to_tie_your_shoes?language=en</a></p></li>\r\n<li><p>Some further info on the shoe lace knot from the wonderful wikipedia site<br />\r\n<a href=\"https://en.wikipedia.org/wiki/Shoelace_knot\" class=\"uri\">https://en.wikipedia.org/wiki/Shoelace_knot</a></p></li>\r\n<li><p>Fast tie shoe laces recommended for anyone in a hurry<br />\r\n<a href=\"https://www.amazon.co.uk/Gritin-Elastic-Laces-Black-Reflective/dp/B07GYM9RC8/ref=cts_sp_3_vtp\" class=\"uri\">https://www.amazon.co.uk/Gritin-Elastic-Laces-Black-Reflective/dp/B07GYM9RC8/ref=cts_sp_3_vtp</a></p></li>\r\n</ul>\r\n',201,0,1,'CC-BY-SA','hacks, tips',0,0,1),
(2874,'2019-08-08','Repair of G.E. Variable Speed Cassette Recorder',1228,'I talk about repairing a 1997 handheld cassette recorder and demonstrate its use.','<p>I found a pretty cool little handheld cassette recorder at Salvation Army Thrift Store for 99 cents yesterday. It was non-functioning. I was able to get it working again by 1. cleaning corrosion from battery compartment; 2. replacing the nasty gooey belt; 3. repairing the battery compartment, which had a broken-off spring for one of the battery\'snegativeconnections.Themostinterestingfeatureofthedeviceisthatithasavariable-speedknobforplaybackathigherspeed.Idemonstratethisinthepodcast.</p>\r\n\r\n<p><adata-flickr-embed=\"true\"href=\"https://www.flickr.com/photos/137675441@N05/albums/72157709909168017\"title=\"G.E. Variable Speed Cassette Recorder Repair\"target=\"_blank\"><imgsrc=\"https://live.staticflickr.com/65535/48384093097_f35a19caaa.jpg\"width=\"500\"height=\"281\"alt=\"G.E. Variable Speed Cassette Recorder Repair\"></a></p>\r\n\r\n<h2>LinkstoStuffMentionedintheEpisode</h2>\r\n\r\n<ul>\r\n<li><ahref=\"https://www.flickr.com/photos/137675441@N05/albums/72157709909168017\"target=\"_blank\">FlickrPhotoAlbum</a></li>\r\n<li><ahref=\"https://www.ebay.com/sch/i.html?_from=R40&_trksid=m570.l1313&_nkw=assorted+cassette+belts&_sacat=0\"target=\"_blank\">AssortedcassettedeckbeltsoneBay</a></li>\r\n<li><ahref=\"https://kahoot.com/\"target=\"_blank\">Kahoot!</a>MakeLearningAwesome.</li>\r\n</ul>\r\n\r\n\r\n',238,0,0,'CC-BY-SA','Recording,Audio,Tape,Cassette,RecordingDevices,TapeSpeeds,Electronics,Repair',0,0,1),
(2875,'2019-08-09','cutting up the frames',456,'you\'vegottocracksomeeggstomakeanomelette','<h2id=\"drawings\">Drawings</h2>\r\n<p><ahref=\"https://sites.google.com/site/recycledrecumbents/ez-clone-drawings\"class=\"uri\">https://sites.google.com/site/recycledrecumbents/ez-clone-drawings</a></p>\r\n<h2id=\"pictures\">Pictures</h2>\r\n<p><imgsrc=\"https://hackerpublicradio.org/eps/hpr2875/picture01-one-of-the-donors.jpg\"alt=\"picture01-one-of-the-donors.jpg\"/><br/>\r\nOneofthedonors</p>\r\n<p><imgsrc=\"https://hackerpublicradio.org/eps/hpr2875/picture02-dross.jpg\"alt=\"picture02-dross.jpg\"/><br/>\r\nDross</p>\r\n<p><imgsrc=\"https://hackerpublicradio.org/eps/hpr2875/picture03-the-gold.jpg\"alt=\"picture03-the-gold.jpg\"/><br/>\r\nThegold</p>\r\n<p><imgsrc=\"https://hackerpublicradio.org/eps/hpr2875/picture04-first-cut.jpg\"alt=\"picture04-first-cut.jpg\"/><br/>\r\nFirstcut</p>\r\n<p><imgsrc=\"https://hackerpublicradio.org/eps/hpr2875/picture05-cutting-tubes.jpg\"alt=\"picture05-cutting-tubes.jpg\"/><br/>\r\nCuttingtubes</p>\r\n<p><imgsrc=\"https://hackerpublicradio.org/eps/hpr2875/picture06-workmate.jpg\"alt=\"picture06-workmate.jpg\"/><br/>\r\nWorkmate</p>\r\n<p><imgsrc=\"https://hackerpublicradio.org/eps/hpr2875/picture07-frame2-parts.jpg\"alt=\"picture07-frame2-parts.jpg\"/><br/>\r\nFrame2parts</p>\r\n<p><imgsrc=\"https://hackerpublicradio.org/eps/hpr2875/picture08-frame1-parts.jpg\"alt=\"picture08-frame1-parts.jpg\"/><br/>\r\nFrame1parts</p>\r\n',326,115,0,'CC-BY-SA','bicycle,recumbent,recycle',0,0,1),
(2876,'2019-08-12','Sausage Orzotto',2543,'A favorite recipe, dictated while it is cooked.','<p>This recipe has been heavily adapted from one I received from <a href=\"https://www.hellofresh.com\">Hello Fresh</a> - credit where credit\'sdue!</p>\r\n<p>Ingredients:</p>\r\n<ul>\r\n<li>1lb(500g)Sausage(chickenorporkworks)</li>\r\n<li>1½cups(192g)Orzo</li>\r\n<li>2tbsp(40g)Butter</li>\r\n<li>Oliveoil</li>\r\n<li>Zucchini</li>\r\n<li>Shallot</li>\r\n<li>1-2tbsp(20-40g)ItalianSeasoning</li>\r\n<li>Pepper</li>\r\n<li>2cups(475ml)water</li>\r\n<li>1tsp(4g)stockconcentrate</li>\r\n<li>16oz(450g??Onenormalcan,whateverthatis)Crushedordicedtomatoes</li>\r\n<li>1cup(226g)Mozzarellacheese(shredded)</li>\r\n<li>PankoBreadcrumbs</li>\r\n<li>Salt(Optional)</li>\r\n</ul>\r\n<ol>\r\n<li>Mincehalftheshallot(orallofit,I\'m not the boss of you). Trim and shred the zucchini. Prepare a mixing bowl lined with a paper towel.</li>\r\n<li>Preheat oven to 500 F</li>\r\n<li>Drizzle some oil into a large oven-proof pan (if you\'vegotone)andcookthesausage,withhalftheItalianseasoning,overmediumheat,breakingitintobite-sizedpiecesasyoucookit.Transfertothemixingbowlforlater.</li>\r\n<li>Addanotherdrizzleofoliveoil,andshredthezucchiniintothepan.Addshallot,andcookuntilthezucchinishrinksto⅔ofitssize(about5minutes).Transfertothemixingbowlwiththesausage.</li>\r\n<li>Wipeoutthepanwithapapertowel.Melt1tbspofbutterovermediumheat,andaddorzo,stirringprettyfrequentlyfor2-3minutes.</li>\r\n<li>StirintherestoftheItalianseasoning,alongwiththewater,tomatoes,andstockconcentrate.Bringtoaboilandstiruntilorzoisdone-around12-14minutes.</li>\r\n<li>Drainexcessliquidfromthezucchiniandsausage.</li>\r\n<li>Mixsausage&zucchiniintoorzomixture,with1tbspofbutter.Seasonwithsalt&pepper,ifyouwant.</li>\r\n<li>Ifyoudon\'t have an oven-proof pan, you\'regoingtowanttotransfereverythingovertoalargebakingdishofsomekind.13x9"worksforme.</li>\r\n<li>Coverthemixtureinmozzarellacheeseandpankobreadcrumbs-inthatorder!</li>\r\n<li>Placedishintheovenfor2-3minutes,untilthebreadcrumbsaretoasted.</li>\r\n</ol>\r\n<p>Note:Ifthesemetricmeasurementsseemcrazy,theyprobablyare.</p>\r\n',196,0,1,'CC-BY-SA','food,cooking',0,0,1),
(2877,'2019-08-13','Using Zenity with Pdmenu',1358,'Zenity is a rather cool program that will display GTK+ dialogs from a script','<h2 id=\"overview\">Overview</h2>\r\n<p>I use <code>pdmenu</code> a lot to help me do work on my main desktop PC. I did an HPR show on <a href=\"https://hackerpublicradio.org/eps.php?id=2443\" title=\"hpr2443 :: pdmenu\"><code>pdmenu</code></a> on 13 December 2017 and the author <a href=\"https://joeyh.name/\" title=\"Joey Hess\">Joey Hess</a> responded in show <a href=\"https://hackerpublicradio.org/eps.php?id=2459\" title=\"hpr2459 :: free software's long tail\">2459</a>.</p>\r\n<p>In the intervening time I have also integrated <a href=\"https://help.gnome.org/users/zenity/\" title=\"Zenity Manual\"><code>Zenity</code></a> into my menus. This is a GUI tool which generates a number of different pop-up windows known as <em>dialogs</em>, which can display information, or into which information can be typed. The capabilities provided by <code>pdmenu</code> are a little too basic to enable me to do what I need to do.</p>\r\n<p>I thought it might be of interest to show some examples of how I use this tool with <code>pdmenu</code>.</p>\r\n<h2 id=\"long-notes\">Long notes</h2>\r\n<p>I have provided detailed notes as usual for this episode, and these can be <a href=\"https://hackerpublicradio.org/eps/hpr2877/full_shownotes.html\">viewed here</a>.</p>\r\n<h2 id=\"links\">Links</h2>\r\n<ul>\r\n<li>Pdmenu:\r\n<ul>\r\n<li><a href=\"https://joeyh.name/code/pdmenu/\">Pdmenu website</a></li>\r\n<li><a href=\"https://joeyh.name/\">Joey Hess</a></li>\r\n</ul></li>\r\n<li>Zenity\r\n<ul>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Zenity\">Wikipedia page</a></li>\r\n<li><a href=\"https://help.gnome.org/users/zenity/\">Zenity Manual</a></li>\r\n</ul></li>\r\n</ul>\r\n',225,42,1,'CC-BY-SA','zenity,Bash scripting,pdmenu,GTK+',0,0,1),
(2879,'2019-08-15','Describing how I listen to podcasts PART 1',1877,'This episode badly covers the console audio player moc.','<p>In this series I cover how I listen to podcasts and how the process has change over the years. This episode badly covers the console audio player <code>moc</code>.</p>\r\n<ul>\r\n<li><p>Link to HPR 2112 (Home Server) episode mentioned in this podcast<br />\r\n<a href=\"https://hackerpublicradio.org/eps.php?id=2112\" class=\"uri\">https://hackerpublicradio.org/eps.php?id=2112</a></p></li>\r\n<li><p>My first MP3 player was a Jelly Bean shaped MP3 player apparently known as an S1 MP3 player<br />\r\n<a href=\"https://en.wikipedia.org/wiki/S1_MP3_player\" class=\"uri\">https://en.wikipedia.org/wiki/S1_MP3_player</a></p></li>\r\n<li><p>Sansa Clip info on wikipedia<br />\r\n<a href=\"https://en.wikipedia.org/wiki/Sansa_Clip#Sansa_Clip\" class=\"uri\">https://en.wikipedia.org/wiki/Sansa_Clip#Sansa_Clip</a></p></li>\r\n<li><p>Raspberry Pi<br />\r\n<a href=\"https://en.wikipedia.org/wiki/Raspberry_Pi\" class=\"uri\">https://en.wikipedia.org/wiki/Raspberry_Pi</a></p></li>\r\n<li><p>Music On Console (MOC) is an ncurses-based console audio player for Linux/UNIX<br />\r\n</p>\r\n<ul>\r\n<li><p>Here is a link to information about moc on wikipedia<br />\r\n<a href=\"https://en.wikipedia.org/wiki/Music_on_Console\" class=\"uri\">https://en.wikipedia.org/wiki/Music_on_Console</a></p></li>\r\n<li>On a Debian based system Moc can be installed by issuing the following command<br />\r\n</li>\r\n</ul>\r\n<pre><code> sudo apt-get install moc</code></pre>\r\n<ul>\r\n<li>Link to Moc, Music On Console homepage<br />\r\n<a href=\"https://moc.daper.net/\" class=\"uri\">https://moc.daper.net/</a></li>\r\n</ul></li>\r\n</ul>\r\n',201,0,1,'CC-BY-SA','Audio, Podcasts, Linux, Ncurses',0,0,1),
(2884,'2019-08-22','TASCAM Porta 02 MiniStudio 4-Track Cassette Recorder Demonstration',4636,'I demonstrate the use of a vintage home studio device','<p>I discuss and demonstrate the latest retro gadget I found at the flea market last weekend, a TASCAM Porta 02 MiniStudio 4-Track Cassette Recorder. It was in a bin full of junk—filthy, lacking its power supply, and I got it for only $5. I hacked a power supply, disassembled it completely, washed everything thoroughly, and put it back together. It worked perfectly with the exception of the pause button. This has been one of the most fun projects I can remember, especially because my daughter is into it too, and she\'slearninghowtomakemulti-trackrecordings.Ialwayswanteda4-trackwhenIwasinhighschoolbutneverhadone.NowIdo!</p>\r\n\r\n<p><adata-flickr-embed=\"true\"href=\"https://www.flickr.com/photos/137675441@N05/albums/72157710065663101\"title=\"TSACAM Porta 02 4-Track Recording Demonstration\"><imgsrc=\"https://live.staticflickr.com/65535/48445093092_64359d6b68.jpg\"width=\"500\"height=\"375\"alt=\"TSACAM Porta 02 4-Track Recording Demonstration\"></a></p>\r\n\r\n<h2>LinkstoinfoaboutstuffImentioned</h2>\r\n\r\n<ul>\r\n<li><ahref=\"https://flic.kr/s/aHsmFL2UUv\"target=\"_blank\">Flickralbumwithphotosfromthisrecordingsession</a></li>\r\n<li><ahref=\"https://flic.kr/s/aHsmFyCT82\"target=\"_blank\">FlickralbumwithphotosfromtheTASCAMmachinerestoration</a></li>\r\n<li>MyearlierepisodeabouttheMarantzrecorder:<ahref=\"https://hackerpublicradio.org/eps.php?id=1844\">hpr1844::TheMarantzPMD660ProfessionalSolidStateRecorder</a></li>\r\n<li>MyvideooftheTASCAMtesting,powersupplyhack,disassembly,andcleaning:<ahref=\"https://youtu.be/HhM6UwBhykM\"target=\"_blank\">WatchonYouTube</a></li>\r\n<li><ahref=\"https://en.wikipedia.org/wiki/Multitrack_recording\"target=\"_blank\">Multitrackrecording</a></li>\r\n<li><ahref=\"https://en.wikipedia.org/wiki/G%C3%BCiro\"target=\"_blank\">Güiro</a>(mineismetal)</li>\r\n<li><ahref=\"https://en.wikipedia.org/wiki/Claves\"target=\"_blank\">Clave</a>(instrument)and<ahref=\"https://en.wikipedia.org/wiki/Clave_(rhythm)\"target=\"_blank\">claverhythm</a>(youheardthe2-3claverhythmonthispodcast)</li>\r\n<li><ahref=\"https://en.wikipedia.org/wiki/Harmonica#Diatonic_harmonicas\"target=\"_blank\">Diatonicharmonica</a></li>\r\n<li><ahref=\"https://en.wikipedia.org/wiki/Chromatic_harmonica\"target=\"_blank\">Chromaticharmonica</a></li>\r\n<li><ahref=\"https://en.wikipedia.org/wiki/Microphone\"target=\"_blank\">Microphonetypes</a></li>\r\n<li><ahref=\"https://en.wikipedia.org/wiki/Phantom_power\"target=\"_blank\">Phantompower</a></li>\r\n<li><ahref=\"https://en.wikipedia.org/wiki/Clipping_(audio)\"target=\"_blank\">Clipping</a></li>\r\n<li>EQ:<ahref=\"https://en.wikipedia.org/wiki/Equalization_(audio)\"target=\"_blank\">Equalization</a></li>\r\n<li><ahref=\"https://en.wikipedia.org/wiki/Audio_mixing_(recorded_music)\">Mixing</a></li>\r\n<li><ahref=\"https://en.wikipedia.org/wiki/Mastering_(audio)\">Mastering</a></li>\r\n<li><ahref=\"https://en.wikipedia.org/wiki/Demo_(music)\">DemoRecordings</a></li>\r\n<li><ahref=\"https://en.wikipedia.org/wiki/Portastudio\">TheTASCAMPortaStudio</a></li>\r\n<li><ahref=\"https://en.wikipedia.org/wiki/David_Mead_(musician)\"target=\"_blank\">DavidMead</a>(hisfirsttwoalbumswerewithRCA,notPolygram</li>\r\n<li>MyfirsttestrecordingontherestoredTASCAMPorta02:<ahref=\"https://soundcloud.com/jonkulp/tascam-4-track-cassette-recorder-test-1-vamos-a-bailar\"target=\"_blank\">ListenonSoundcloud</a></li>\r\n</ul>\r\n',238,0,0,'CC-BY-SA','Multi-TrackRecording,RecordingDevices,HomeRecordingStudios,CassetteTapes,VintageRecording',0,0,1),
(2881,'2019-08-19','Automatically split album into tracks in Audacity',250,'Inspired by a Jon Kulp show, Ken splits a large recording based on silence between tracks','<p>\r\nIn this show Ken, recalls <a href=\"https://hackerpublicradio.org/eps.php?id=1771\">hpr1771 :: Audacity: Label Tracks</a> by <a href=\"https://hackerpublicradio.org/correspondents/0238.html\">Jon Kulp</a> to add Labels to an large audio file.\r\n</p>\r\n\r\n<ul>\r\n<li>Tidy up the audio to the point where you are happy with it, but do not truncate silence.</li>\r\n<li>Find the first break in the audio and check how long it is. In my case it was 4 seconds.</li>\r\n<li>Select the entire track and select <em>Analyze>Silence Finder</em></li>\r\n<li>Change <em>Maximum duration of silence</em> to just under the length of the break. In my case I set it to 3 seconds</li>\r\n<li>This will then create a series of labels on a new Label track</li>\r\n<li>Edit the names of each as desired.</li>\r\n<li>Select File > Export > Export Multiple</li>\r\n<li>Select Split Files based on Labels</li>\r\n<li>Name files using Label/Track Name</li>\r\n</ul>',30,0,1,'CC-BY-SA','Audacity, hpr1771, Detect Silence, Split Track, Label',0,0,1),
(3156,'2020-09-07','HPR Community News for August 2020',4202,'HPR Volunteers talk about shows released and comments posted in August 2020','<style>\ntable td.shrink {\n white-space:nowrap\n}\n</style>\n\n<h2>New hosts</h2>\n<p>\nWelcome to our new host: <br />\n\n <a href=\"https://hackerpublicradio.org/correspondents/0387.html\" target=\"_blank\">Cedric De Vroey</a>.\n</p>\n\n<h2>Last Month\'sShows</h2>\n<tableid=\"t01\">\n<tr>\n<th>Id</th>\n<th>Day</th>\n<th>Date</th>\n<th>Title</th>\n<th>Host</th>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3131\"target=\"_blank\">3131</a></strong></td>\n<td>Mon</td>\n<tdclass=\"shrink\">2020-08-03</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3131\"target=\"_blank\">HPRCommunityNewsforJuly2020</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0159.html\"target=\"_blank\">HPRVolunteers</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3132\"target=\"_blank\">3132</a></strong></td>\n<td>Tue</td>\n<tdclass=\"shrink\">2020-08-04</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3132\"target=\"_blank\">KeepingtrackofwhereIam</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0201.html\"target=\"_blank\">MrX</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3133\"target=\"_blank\">3133</a></strong></td>\n<td>Wed</td>\n<tdclass=\"shrink\">2020-08-05</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3133\"target=\"_blank\">Quicktip-UsingMPVwithYoutubelinks</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0318.html\"target=\"_blank\">Archer72</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3134\"target=\"_blank\">3134</a></strong></td>\n<td>Thu</td>\n<tdclass=\"shrink\">2020-08-06</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3134\"target=\"_blank\">Tomorrowland2020</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0382.html\"target=\"_blank\">DanielPersson</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3135\"target=\"_blank\">3135</a></strong></td>\n<td>Fri</td>\n<tdclass=\"shrink\">2020-08-07</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3135\"target=\"_blank\">QuickTipsforMay2020</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0036.html\"target=\"_blank\">operat0r</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3136\"target=\"_blank\">3136</a></strong></td>\n<td>Mon</td>\n<tdclass=\"shrink\">2020-08-10</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3136\"target=\"_blank\">MatchboxRestorationPart6</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0338.html\"target=\"_blank\">TonyHughesAKATonyH1212</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3137\"target=\"_blank\">3137</a></strong></td>\n<td>Tue</td>\n<tdclass=\"shrink\">2020-08-11</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3137\"target=\"_blank\">CoronavirusUpdate2020-07-30</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0198.html\"target=\"_blank\">Ahuka</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3138\"target=\"_blank\">3138</a></strong></td>\n<td>Wed</td>\n<tdclass=\"shrink\">2020-08-12</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3138\"target=\"_blank\">LinuxInlawsS01E12:ReminiscinginFLOSSWeekly</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0384.html\"target=\"_blank\">monochromec</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3139\"target=\"_blank\">3139</a></strong></td>\n<td>Thu</td>\n<tdclass=\"shrink\">2020-08-13</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3139\"target=\"_blank\">MIDISysex</a></td>\n<td><ahref=\"https://hack
(3176,'2020-10-05','HPR Community News for September 2020',4187,'HPR Volunteers talk about shows released and comments posted in September 2020','<style>\ntable td.shrink {\n white-space:nowrap\n}\n</style>\n\n<h2>New hosts</h2>\n<p>\nThere were no new hosts this month.\n</p>\n\n<h2>Last Month\'sShows</h2>\n<tableid=\"t01\">\n<tr>\n<th>Id</th>\n<th>Day</th>\n<th>Date</th>\n<th>Title</th>\n<th>Host</th>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3152\"target=\"_blank\">3152</a></strong></td>\n<td>Tue</td>\n<tdclass=\"shrink\">2020-09-01</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3152\"target=\"_blank\">MyPocketKnives</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0225.html\"target=\"_blank\">DaveMorriss</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3153\"target=\"_blank\">3153</a></strong></td>\n<td>Wed</td>\n<tdclass=\"shrink\">2020-09-02</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3153\"target=\"_blank\">FixingeBookswithCalibreandpdfcrop</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0030.html\"target=\"_blank\">KenFallon</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3154\"target=\"_blank\">3154</a></strong></td>\n<td>Thu</td>\n<tdclass=\"shrink\">2020-09-03</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3154\"target=\"_blank\">MakeNextCloudyournextcloud</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0383.html\"target=\"_blank\">PaulQuirk</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3155\"target=\"_blank\">3155</a></strong></td>\n<td>Fri</td>\n<tdclass=\"shrink\">2020-09-04</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3155\"target=\"_blank\">LastPassSecurityDashboard</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0198.html\"target=\"_blank\">Ahuka</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3156\"target=\"_blank\">3156</a></strong></td>\n<td>Mon</td>\n<tdclass=\"shrink\">2020-09-07</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3156\"target=\"_blank\">HPRCommunityNewsforAugust2020</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0159.html\"target=\"_blank\">HPRVolunteers</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3157\"target=\"_blank\">3157</a></strong></td>\n<td>Tue</td>\n<tdclass=\"shrink\">2020-09-08</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3157\"target=\"_blank\">Compost</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0078.html\"target=\"_blank\">klaatu</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3158\"target=\"_blank\">3158</a></strong></td>\n<td>Wed</td>\n<tdclass=\"shrink\">2020-09-09</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3158\"target=\"_blank\">Fingerprintaccesscontrol?LOL...</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0387.html\"target=\"_blank\">CedricDeVroey</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3159\"target=\"_blank\">3159</a></strong></td>\n<td>Thu</td>\n<tdclass=\"shrink\">2020-09-10</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3159\"target=\"_blank\">Vivaldi-TheFourSeasons</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0383.html\"target=\"_blank\">PaulQuirk</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3160\"target=\"_blank\">3160</a></strong></td>\n<td>Fri</td>\n<tdclass=\"shrink\">2020-09-11</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3160\"target=\"_blank\">GIMP:TransformTools</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0198.html\"target=\"_blank\">Ahuka</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerp
(2889,'2019-08-29','Describing how I listen to podcasts PART 2',1052,'In this episode I cover the hardware I\'veusedovertheyearstolistentopodcasts.','<h3id=\"short-summary\">ShortSummary</h3>\r\n<p>InthisseriesIcoverhowIlistentopodcastsandhowtheprocesshaschangeovertheyears.InthisepisodeIcoverthehardwareI’veusedovertheyearstolistentopodcasts.</p>\r\n<ul>\r\n<li><p>LinktoHPR2112(HomeServer)episodementionedinthispodcast<br/>\r\n<ahref=\"https://hackerpublicradio.org/eps.php?id=2112\"class=\"uri\">https://hackerpublicradio.org/eps.php?id=2112</a></p></li>\r\n<li><p>LinktoHPR2106(Hpodder)Episodementionedinthispodcast<br/>\r\n<ahref=\"https://hackerpublicradio.org/eps.php?id=2106\"class=\"uri\">https://hackerpublicradio.org/eps.php?id=2106</a></p></li>\r\n<li><p>ThecordlessheadphonesIuseareanaloguecordlessheadphonestheyoperateintheUHF860MHzRFspectrumanduseFrequencymodulation</p></li>\r\n<li><p>(Picture01)showsapairofJVCcordlessheadphones,theseweremyfirstpairofcordlessheadphones,frommemorytheywerereasonablycomfortableandlastedareasonablylongtime,theyeventuallygavewaywhenthestrapalongthetopcompletelysplitifyoulookcarefullyyoucanseeevidenceofthisinthepicture.<imgsrc=\"https://hackerpublicradio.org/eps/hpr2889/Picture-01.JPG\"alt=\"Picture-01.JPG\"/></p></li>\r\n<li><p>Ithinkmy2ndsetpairofcordlessheadphonesweremadebyPhillips,unfortunatelyIdon’thaveapictureofthese.Theheadphonesweretoobigandkeptfallingfrommyhead.</p></li>\r\n<li><p>(Picture02)showsapairofSonyheadphonesthatIcan’tevenrememberowning!I’velostcountofhowmanycordlessheadphonesI’veownedovertheyears,thesewerealsotoobigandregularlyfelloffmyhead,thereareprobablyotherpairswhichIhaveforgottenabout.Ittookalotoftrialanerrortofindapairthatwouldfitproperly.<imgsrc=\"https://hackerpublicradio.org/eps/hpr2889/Picture-02.JPG\"alt=\"Picture-02.JPG\"/></p></li>\r\n<li><p>Ithinkmy3rdsetofcordlessheadphoneswereacheappairfromLiddles,unfortunatelyIdon’thaveapictureoftheseagainthesewerealsotoobig.</p></li>\r\n<li><p>(Picture03)Showsmycurrentsetofcordlessheadphones,unfortunatelymycamerarefusedtoworkwhiletakingthispicturesoyou’llnotbeabletoidentifythemanufacturerwhichisagreatpityastheyareabsolutelygreatalsothelightinginhereisverybadsoyouwon’tbeabletomakeoutthewritingprintedonthem:)<imgsrc=\"https://hackerpublicradio.org/eps/hpr2889/Picture-03.JPG\"alt=\"Picture-03.JPG\"/></p></li>\r\n<li><p>CompaqN610Claptop<br/>\r\n<imgsrc=\"https://1.bp.blogspot.com/_73lLV6srqwY/SxB7dASme9I/AAAAAAAAAVU/QsNP-O2chaU/s1600/missionaccomplished.jpg\"alt=\"https://1.bp.blogspot.com/_73lLV6srqwY/SxB7dASme9I/AAAAAAAAAVU/QsNP-O2chaU/s1600/missionaccomplished.jpg\"/></p></li>\r\n<li><p>Screen<br/>\r\n<ahref=\"https://en.wikipedia.org/wiki/GNU_Screen\"class=\"uri\">https://en.wikipedia.org/wiki/GNU_Screen</a></p></li>\r\n<li><p>EEEPCLaptop<br/>\r\n<ahref=\"https://en.wikipedia.org/wiki/Asus_Eee_PC\"class=\"uri\">https://en.wikipedia.org/wiki/Asus_Eee_PC</a></p></li>\r\n<li><p>Pictures(04and05)areofmyNokiaN810<imgsrc=\"https://hackerpublicradio.org/eps/hpr2889/Picture-04.JPG\"alt=\"Picture-04.JPG\"/><br/>\r\n<imgsrc=\"https://hackerpublicradio.org/eps/hpr2889/Picture-05.JPG\"alt=\"Picture-05.JPG\"/></p></li>\r\n<li><p>BelowisalinkfromwikipediacoveringtheNokiaN810.<br/>\r\n<ahref=\"https://en.wikipedia.org/wiki/Nokia_N810\"class=\"uri\">https://en.wikipedia.org/wiki/Nokia_N810</a></p></li>\r\n<li><p>LinkstoshowswhereklaatureferencestheNokiaN770whichcameoutbeforetheNokiaN810butisverysimilar<br/>\r\n<ahref=\"https://hackerpublicradio.org/eps.php?id=0228\"class=\"uri\">https://hackerpublicradio.org/eps.php?id=0228</a><br/>\r\n<ahref=\"https://hackerpublicradio.org/eps.php?id=0416\"class=\"uri\">https://hackerpubli
(2908,'2019-09-25','Modeling opinions in space game',2104,'Tuula talks about modeling opinions','<p>We continue with people, this time focusing on opinions. This episode has somewhat more code than previous one, so following along with the shownotes might be a good idea. I’m trying to minimize amount of code I read out aloud.</p>\r\n<h2 id=\"intro\">Intro</h2>\r\n<p>One person’s opinion of another is expressed as <code>OpinionScore</code> that ranges from -100 to 100.</p>\r\n<p>Computing the score is based on intelligence player has available to them. Internally we have <code>ReportResult</code> that tracks score, reasons for the score and confidence level about the results. It’s defined as:</p>\r\n<pre><code>data ReportResult =\r\n FeelingLevel OpinionScore\r\n | ReasonsLevel OpinionScore [OpinionReason]\r\n | DetailedLevel OpinionScore [OpinionReason]\r\n deriving (Show, Read, Eq)</code></pre>\r\n<p>We’re going to be adding up these results quite a bit, so we define <code>SemiGroup</code> and <code>Monoid</code> instances for it. When two results are combined, scores are added together, lists of reasons are concatenated and the lowest confidence level is used. This is written as:</p>\r\n<pre><code>instance Semigroup ReportResult where\r\n (FeelingLevel s1) <> (FeelingLevel s2) = FeelingLevel (s1 <> s2)\r\n (FeelingLevel s1) <> (ReasonsLevel s2 _) = FeelingLevel (s1 <> s2)\r\n (FeelingLevel s1) <> (DetailedLevel s2 _) = FeelingLevel (s1 <> s2)\r\n (ReasonsLevel s1 _) <> (FeelingLevel s2) = FeelingLevel (s1 <> s2)\r\n (ReasonsLevel s1 r1) <> (ReasonsLevel s2 r2) = ReasonsLevel (s1 <> s2) (r1 <> r2)\r\n (ReasonsLevel s1 r1) <> (DetailedLevel s2 r2) = ReasonsLevel (s1 <> s2) (r1 <> r2)\r\n (DetailedLevel s1 _) <> (FeelingLevel s2) = FeelingLevel (s1 <> s2)\r\n (DetailedLevel s1 r1) <> (ReasonsLevel s2 r2) = ReasonsLevel (s1 <> s2) (r1 <> r2)\r\n (DetailedLevel s1 r1) <> (DetailedLevel s2 r2) = DetailedLevel (s1 <> s2) (r1 <> r2)\r\n\r\n\r\ninstance Monoid ReportResult where\r\n mempty = DetailedLevel mempty mempty</code></pre>\r\n<h2 id=\"opinion-based-on-traits\">Opinion based on traits</h2>\r\n<p>Current system compares two lists of traits. For example, two brave characters like each other slightly better than if one of them would be coward. Comparison is done by <code>traitPairOpinion</code> function, which definition I’m omitting as it’s rather long and not too interesting. It’s signature is: <code>traitPairOpinion :: TraitType -> TraitType -> Maybe (OpinionScore, OpinionReason)</code>. So, given two traits, tells how that pair affects to opinion and reasoning for it.</p>\r\n<p>In order to have nicer format for out data, we introduce a helper function:</p>\r\n<pre><code>traitPairScore :: TraitType -> TraitType -> (OpinionScore, [OpinionReason])\r\ntraitPairScore a b =\r\n case traitPairOpinion a b of\r\n Nothing ->\r\n mempty\r\n\r\n Just (s, r) ->\r\n (s, [r])</code></pre>\r\n<p>This is because <code>(OpinionScore, OpinionReason)</code> isn’t monoid, but <code>(OpinionScore, [OpinionReason])</code> is, which means we can combine them with <code><></code>.</p>\r\n<p>Actual score calculation based on traits, we do it like this:</p>\r\n<pre><code>traitScore :: [TraitType] -> [PersonIntel] -> [TraitType] -> [PersonIntel] -> ReportResult\r\ntraitScore originatorTraits originatorIntel targetTraits targetIntel =\r\n if (Traits `elem` originatorIntel) && (Traits `elem` targetIntel)\r\n then DetailedLevel score reasons\r\n else FeelingLevel score\r\n where\r\n (score, reasons) = mconcat $ traitPairScore <$> originatorTraits <*> targetTraits</code></pre>\r\n<p>The interesting part is <code>mconcat $ traitPairScore <$> originatorTraits <*> targetTraits</code>. Function <code>traitPairScore</cod
(2903,'2019-09-18','What is PMEM',453,'Persistent memory (PMEM), also known as storage-class memory','<h3 id=\"what-is-persistent-memory\">What is persistent memory?</h3>\r\n<p>In brief, PMEM is next generation memory technology whose data transfer speed is as good as DRAM (50-300 ns, 100 times faster than SSDs) and unlike DRAM, it can even retain the data after reboots.</p>\r\n<p>In detail persistent memory (PMEM) is a solid-state high-performance byte-addressable memory device that resides on the memory bus. Being on the memory bus allows PMEM to have DRAM-like access to data, which means that it has nearly the same speed and latency of DRAM and the nonvolatility of NAND flash. NVDIMM (nonvolatile dual in-line memory module) and Intel 3D XPoint DIMMs (also known as Optane DC persistent memory modules) are two examples of persistent memory technologies.</p>\r\n<p>Persistent memory, such as Intel® Optane™ DC Persistent Memory, provides a future-proofed solution. Installed alongside traditional RAM, PMEM has many of the advantages of DRAM, including low latency access. But it comes in greater capacities. Intel® Optane™ DC, for example, will be available in 128GB, 256GB and 512GB sizes.</p>\r\n<h3 id=\"persistent-memory-benefits\">Persistent Memory Benefits</h3>\r\n<p>Persistent memory in the data center allows applications to run without incurring the latency penalty of going out to storage.</p>\r\n<p>The main advantages of persistent memory include:</p>\r\n<ul>\r\n<li>Provides access latencies less than those of flash SSDs.</li>\r\n<li>Increases throughput more than flash storage.</li>\r\n<li>Cheaper than DRAM.</li>\r\n<li>PMEM is cacheable. This is a huge advantage over PCIe interconnect, which cannot be cached in the CPU.</li>\r\n<li>Real-time access to data; allows ultrafast access to large datasets.</li>\r\n<li><p>Data persists in memory after power interruption, like flash.</p></li>\r\n<li>Persistent Memory Use Cases\r\n<ul>\r\n<li>Fraud detection</li>\r\n<li>Cyberthreat analysis</li>\r\n<li>Web-scale personalization</li>\r\n<li>Financial trading</li>\r\n<li>Internet of Things (IoT)</li>\r\n</ul></li>\r\n</ul>\r\n<pre><code> Non \\\r\n Volatile /- Non-volatile: you plug it off and on again, and the Information is still there\r\n\r\n Double \\\r\n In-line | DIMM: This the HW format\r\n Memory |\r\n Module /</code></pre>\r\n<h3 id=\"persistent-memory-vs.-nvram\">Persistent Memory Vs. NVRAM</h3>\r\n<p>Nonvolatile random-access memory (NVRAM) is random-access memory that retains its information even if there is no power. If power is lost before the data is written to disk, you don’t lose the data because it can be recovered from NVRAM. NVRAM uses battery backup to keep data persistent. During this time it can flash the data out to a flash device that is attached directly. In most cases, NVRAM resides on the PCIe bus.</p>\r\n<p>PMEM or NVDIMM-N can also be backed up by battery. It resides only on the memory bus.</p>\r\n<h3 id=\"where-pmem-is-going\">Where PMEM is going</h3>\r\n<p>It’s no wonder that this sort of ‘in-memory’ computing has exploded in recent years. According to Gartner, 75 percent of cloud-native application development will use in-memory/PMEM computing by 2019, and by 2021, at least 25 percent of large and global organisations will adopt platforms using in-memory technologies.</p>\r\n<h3 id=\"drawbacks-of-pmem\">Drawbacks of PMEM</h3>\r\n<ul>\r\n<li>PMEM is a local store.</li>\r\n<li>Host failures can result in loss of availability.</li>\r\n<li>In the case of catastrophic errors you may lose all data and must take manual steps to reformat the PMEM.</li>\r\n</ul>\r\n<h2 id=\"reference-notes\">Reference Notes</h2>\r\n<ul>\r\n<li><a href=\"https://www.netapp.com/us/info/what-is-persistent-memory.aspx\" class=\"uri\">https://www.netapp.com/us/info/what-is-persistent-memory.aspx</a></li>\r\n<li><a href=\"https://www.intel.co.uk/content/www/uk/en/it-management/cloud-analytic-hub/pmem-next-generation-storage.html\" class=\"uri\">https://www.intel.co.uk/content/w
(2882,'2019-08-20','ONICS Part 1: Basic Commands',1364,'In this episode I review some basic commands for manipulating packet captures','<p>Background</p>\r\n<ul>\r\n<li>It\'sbeenabout6yearssinceItalkedaboutmyprojectONICSinHPR1350</li>\r\n<li>ONICSstandsforOpenNetworkInpectionCommandSuite</li>\r\n<li>IcreatedONICSasbecauseIthoughtitwouldbeneattohaveasuiteoftoolsthatcouldmanipulatepacketsonthecommandlineinawaysimilartohowtoolsliksed,awk,grep,cut,andsoforthmanipulatetext.</li>\r\n</ul>\r\n<p>Installing</p>\r\n<ul>\r\n<li>Notcurrentlymaintainedinanypackagedistributions</li>\r\n<li>Maintainerswhoareinterestedindoingsoarewelcome</li>\r\n<li>Installbysource</li>\r\n</ul>\r\n<pre><code>$gitclonehttps://gitlab.com/catlib/catlib\r\n$cdcatlib\r\n$make\r\n$cd..\r\n$gitclonehttps://gitlab.com/onics/onics\r\n$cdonics\r\n$./configure\r\n$make\r\n$maketest\r\n$sudomakeinstall\r\n$makeveryclean\r\n</code></pre>\r\n<ul>\r\n<li>Canalwaysuninstallcleanlyfromthesourcedirectory</li>\r\n</ul>\r\n<pre><code>$makeuninstall\r\n</code></pre>\r\n<ul>\r\n<li>Alternatetoinstallationistostopat\'make test\'andthenaddto\'onics/bin\'and\'onics/scripts\'toyourpath.</li>\r\n</ul>\r\n<p>Documentation</p>\r\n<ul>\r\n<li><p>Manpagesareavailableinonics/docdirectoryifyouaren\'t installing locally. They are quite extensive.</p></li>\r\n<li><p>If installed locally, starting with:</p></li>\r\n</ul>\r\n<pre><code> $ man onics\r\n</code></pre>\r\n<p>XPKT Format</p>\r\n<ul>\r\n<li><p>PCAP format is outdated and not very extensible</p>\r\n<ul>\r\n<li>I want to be able to annotate with interface IDs, flow IDs, packet numbers, classification info, header offsets, etc...</li>\r\n</ul></li>\r\n<li><p>First and foremost, the file header prevents just <code>cat</code>ing files together.</p>\r\n<ul>\r\n<li>it makes merging live streams more difficult</li>\r\n<li>pcapng improves things but still has global file header</li>\r\n</ul></li>\r\n</ul>\r\n<p>First Programs</p>\r\n<ul>\r\n<li>Let\'sfirstcaptureinthetraditionalway</li>\r\n</ul>\r\n<pre><code>$sudotcpdump-ieth0-c5-wfile1.pcap\r\n</code></pre>\r\n<ul>\r\n<li>Firstprogramistocapturepacketsfromthewire:</li>\r\n</ul>\r\n<pre><code>$sudopktineth0>file2.xpkt\r\n</code></pre>\r\n<ul>\r\n<li>Ifnotrunningasroot</li>\r\n</ul>\r\n<pre><code>$sudochownmynamefile1.pcapfile2.xpkt\r\n</code></pre>\r\n<ul>\r\n<li>Let\'s dump them:</li>\r\n</ul>\r\n<pre><code> $ tcpdump -r file1.pcap\r\n $ xpktdump file2.xpkt\r\n</code></pre>\r\n<ul>\r\n<li>Now lets convert the PCAP to XPKT</li>\r\n</ul>\r\n<pre><code> $ pc2xpkt file1.pcap file1.xpkt\r\n or\r\n $ pc2xpkt file1.pcap > file1.xpkt\r\n or\r\n $ pc2xpkt < file1.pcap > file1.xpkt\r\n or\r\n $ cat file1.pcap | pc2xpkt > file1.xpkt\r\n</code></pre>\r\n<ul>\r\n<li>Now we can dump file1 using xpktdump:</li>\r\n</ul>\r\n<pre><code> $ xpktdump file1.xpkt\r\n</code></pre>\r\n<p>Something we can\'tdow/tcpdump</p>\r\n<ul>\r\n<li>Letsnowmergethemoneafteranother</li>\r\n</ul>\r\n<pre><code>$catfile1.xpktfile2.xpkt>merged.xpkt\r\n$xpktdumpmerged.xpkt\r\n</code></pre>\r\n<ul>\r\n<li>Ofcoursethere\'s a simpler way</li>\r\n</ul>\r\n<pre><code> $ cat file1.xpkt file2.xpkt | xpktdump\r\n</code></pre>\r\n<p>Convert back to pcap:</p>\r\n<ul>\r\n<li>Let\'sconvertfile2toPCAP</li>\r\n</ul>\r\n<pre><code>$xpkt2pcfile2.xpktfile2.pcap\r\nor\r\n$xpkt2pc<file2.xpkt>file2.pcap\r\nor\r\n$xpkt2pcfile2.xpkt>file2.pcap\r\nor\r\n$catfile2.xpkt|xpkt2pc>file2.pcap\r\n</code></pre>\r\n<ul>\r\n<li>Let\'s look at the stream using tcpdump:</li>\r\n</ul>\r\n<pre><code> $ tcpdump -r file2.pcap\r\n</code></pre>\r\n<ul>\r\n<li>If we didn\'twanttoactuallystoreasaPCAP</li>\r\n</ul>\r\n<pre><code>$xpkt2pcfile2.xpkt|tcpdump-r-\r\n</code></
(2887,'2019-08-27','Stardrifter RPG Playtest Part 01',2202,'Lostnbronx and friends playtest a new, original RPG system.','<p>\r\nThis episode begins a limited series covering the first playtest of a new role-playing game, based upon my Stardrifter series of books and short stories. The series is composed of two playtest sessions, held earlier this year. They were recorded and chopped into manageable bites, then edited down into separate episodes.\r\n</p>\r\n<p>\r\nThis series is meant to give listeners some insight into the RPG construction process. Playtesting is not the final step, but rather, just another stage. The construction of an RPG can be convoluted, and feedback from players is absolutely vital.\r\n</p>\r\n<p>\r\nIn this first episode, as well as the next, we we go over the rules of the game, and discuss them in some detail.\r\n</p>\r\n<p>\r\nSpecial thanks to my playtesters: Klaatu, Thaj, Mark (who was playing Brinn), and Brian!\r\n</p>\r\n',107,95,1,'CC-0','rpg, gaming, stardrifter, game construction, playtest',0,0,1),
(2892,'2019-09-03','Stardrifter RPG Playtest Part 02',2247,'Lostnbronx and friends playtest a new, original RPG system.','<p>\r\nThis episode is Part 2 of the Stardrifter role-playing game playtest. The series is composed of two playtest sessions, held earlier this year. They were recorded and chopped into manageable bites, then edited down into separate episodes.\r\n</p>\r\n<p>\r\nThis series is meant to give listeners some insight into the RPG construction process. Playtesting is not the final step, but rather, just another stage. The construction of an RPG can be convoluted, and feedback from players is absolutely vital.\r\n</p>\r\n<p>\r\nIn this part, we continue to go over the rules of the game, and discuss them in some detail.\r\n</p>\r\n<p>\r\nSpecial thanks to my playtesters: Klaatu, Thaj, Mark (who was playing Brinn), and Brian!\r\n</p>',107,95,1,'CC-0','rpg, gaming, stardrifter, game construction, playtest',0,0,1),
(2897,'2019-09-10','Stardrifter RPG Playtest Part 03',2446,'Lostnbronx and friends playtest a new, original RPG system.','<p>\r\nThis episode is Part 3 of the Stardrifter role-playing game playtest. The series is composed of two playtest sessions, held earlier this year. They were recorded and chopped into manageable bites, then edited down into separate episodes.\r\n</p>\r\n<p>\r\nThis series is meant to give listeners some insight into the RPG construction process. Playtesting is not the final step, but rather, just another stage. The construction of an RPG can be convoluted, and feedback from players is absolutely vital.\r\n</p>\r\n<p>\r\nIn this part, we continue to go over the rules of the game, and then start into the adventure!\r\n</p>\r\n<p>\r\nSpecial thanks to my playtesters: Klaatu, Thaj, Mark (who was playing Brinn), and Brian!\r\n</p>',107,95,1,'CC-0','rpg, gaming, stardrifter, game construction, playtest',0,0,1),
(2902,'2019-09-17','Stardrifter RPG Playtest Part 04',3286,'Lostnbronx and friends playtest a new, original RPG system.','<p>\r\nThis episode is Part 4 of the Stardrifter role-playing game playtest. The series is composed of two playtest sessions, held earlier this year. They were recorded and chopped into manageable bites, then edited down into separate episodes.\r\n</p>\r\n<p>\r\nThis series is meant to give listeners some insight into the RPG construction process. Playtesting is not the final step, but rather, just another stage. The construction of an RPG can be convoluted, and feedback from players is absolutely vital.\r\n</p>\r\n<p>\r\nIn this part, the characters have a job prospect...but is it legitimate, or are they being conned?\r\n</p>\r\n<p>\r\nSpecial thanks to my playtesters: Klaatu, Thaj, Mark (who was playing Brinn), and Brian!\r\n</p>',107,95,1,'CC-0','rpg, gaming, stardrifter, game construction, playtest',0,0,1),
(2907,'2019-09-24','Stardrifter RPG Playtest Part 05',3120,'Lostnbronx and friends playtest a new, original RPG system.','<p>\r\nThis episode is Part 5 of the Stardrifter role-playing game playtest. The series is composed of two playtest sessions, held earlier this year. They were recorded and chopped into manageable bites, then edited down into separate episodes.\r\n</p>\r\n<p>\r\nThis series is meant to give listeners some insight into the RPG construction process. Playtesting is not the final step, but rather, just another stage. The construction of an RPG can be convoluted, and feedback from players is absolutely vital.\r\n</p>\r\n<p>\r\nIn this part, the characters take on a contract to deal with some...hippies?\r\n</p>\r\n<p>\r\nSpecial thanks to my playtesters: Klaatu, Thaj, and Mark (who was playing Brinn)\r\n</p>',107,95,1,'CC-0','rpg, gaming, stardrifter, game construction, playtest',0,0,1),
(2885,'2019-08-23','ONICS Part 2: Filtering and Extraction',994,'In this episode I discuss commands to filter and/or extract packets from a packet trace file.','<p>In this episode we\'lltalkaboutfilteringanddissectingpackettracesandstreamsandintroducediffing.Rememberthatmosttoolshaveveryflexibleoptionsforavarietyofusecases.Sochecktheirmanpages.Eachmanpagealsohasmultipleexamplesofhowtouseeachtool.</p>\r\n<h3id=\"counting-packets\">CountingPackets</h3>\r\n<ul>\r\n<li>Letsstartwithgrabbingatracefromtheunittests:</li>\r\n</ul>\r\n<pre><code>$mkdir/tmp/packets\r\n$cd/tmp/packets\r\n$cp/path/to/onics/tests/data/packets/sample.xpkt.\r\n</code></pre>\r\n<ul>\r\n<li>Letsseewhatwehaveinside.First,letsseehowmanypacketsthereare.We\'ll use a new tool \'pcount\'.</li>\r\n</ul>\r\n<pre><code> $ pcount sample.xpkt\r\n\r\n 90 total packets and 19082 total bytes.\r\n</code></pre>\r\n<ul>\r\n<li>Good thing we looked first. Don\'twanttowalkthroughallthepackets.</li>\r\n</ul>\r\n<h3id=\"scanning-packet-flows\">ScanningPacketFlows</h3>\r\n<ul>\r\n<li><p>Well,letslookattheconnectionsor"flows"inthetrace.We\'ll do this by using the \'nftrk\' command for "network flow tracker".</p></li>\r\n<li><p>Like \'pcount\' this utility (and many or most ONICS utilities), this program can run on a live stream or a trace file. We\'llrun:</p></li>\r\n</ul>\r\n<pre><code>$nftrk-dtsample.xpkt|grepEND\r\n</code></pre>\r\n<p>andget:</p>\r\n<pre><code>|FLOWEND|IP:ca=192.168.0.43,sa=224.0.0.251,proto=2|Start=1565446184.543,\r\nEnd=1565446184.544,Dur=0.001|SENT:1,60|\r\n...\r\n|FLOWEND|IP:ca=192.168.0.7,sa=192.168.0.255,proto=17,cpt=631,spt=631|\r\nStart=1565446184.543,End=1565446184.544,Dur=0.001|SENT:3,660|\r\n</code></pre>\r\n<ul>\r\n<li><p>\'nftrk\'tracksflowsgivingeventslikethestartandendofeachfloworconnection.Wejustwantasummaryofalltheconnectionssowejustgrepfor\'END\'(allcaps).</p></li>\r\n<li><p>WecouldjustaseasilyhavegreppedforSTART,butthiswaywegetthefinalnumberofpacketssentandreceivedoneachconnection.Ifwejustwantacountoftheconnectionswecando:</p></li>\r\n</ul>\r\n<pre><code>$nftrk-dtsample.xpkt|grepSTART|wc-l\r\n</code></pre>\r\n<p>andthattellsusthatthereare10flowsinthetrace.</p>\r\n<h3id=\"basic-filtering\">BasicFiltering</h3>\r\n<ul>\r\n<li>Ok,so90packets,in10flowstotalling~19000bytes.LetsnowseeaboutfilteringtheconnectionsowejustgettheTCPpackets.</li>\r\n</ul>\r\n<pre><code>$pflttcpsample.xpkttcponly.xpkt\r\n\r\n$pcounttcponly.xpkt\r\n73totalpacketsand17184totalbytes.\r\n\r\n$nftrk-dttcponly.xpkt|grepEND|wc-l\r\n2\r\n</code></pre>\r\n<ul>\r\n<li>Wecouldhavebeensuperfancyanddone:</li>\r\n</ul>\r\n<pre><code>$pflttcpsample.xpkt|\r\npcount-p|\r\nnftrk-t2>/tmp/flows>tcponly.xpkt&&\r\necho-n"Numberofflows"&&\r\ngrepEND/tmp/flows|wc-l&&\r\nrm-f/tmp/flows\r\n</code></pre>\r\n<ul>\r\n<li>Ok,enoughofthat.Anyway,nowwehaveatracefilewithonlytheTCPconnections.Running</li>\r\n</ul>\r\n<pre><code>$nftrk-dt/tmp/tcponly.xpkt|grepEND\r\n|FLOWEND|IP:ca=192.168.0.4,sa=192.168.0.7,proto=6,cpt=38859,spt=22|\r\nStart=1566073862.612,End=1566073862.613,Dur=0.000|C2S:25,4561|S2C:30,5124|\r\n|FLOWEND|IP:ca=192.168.0.4,sa=64.233.169.147,proto=6,cpt=35071,spt=80|\r\nStart=1566073862.613,End=1566073862.613,Dur=0.000|C2S:9,704|S2C:9,6795|\r\n</code></pre>\r\n<p>Showsthattheserverportsare22and80forthetwoconnections.That\'s SSH and HTTP.</p>\r\n<ul>\r\n<li><p>The patterns we can use to filter packets are pretty standard across most of the ONICS tools.</p></li>\r\n<li><p>We\'lldiscussthisismoredetailinafuturepodcast.Butifyouwanttoseethekindsoffieldsyoucanmatchongoto</p></li>\r\n</ul>\r\n<pre><code>$manonics_
(2894,'2019-09-05','Repairing a Musical Instrument Case',1318,'I talked about repairing the case for a Vietnamese Dan Tranh','<p>In this episode I talk about repairing the case for a Vietnamese Đàn tranh, a zither-like instrument which was donated to the School of Music by a member of the community. I also demonstrate the instrument as best I can so that you can hear what it sounds like.</p>\r\n\r\n<p>See the Flickr photo album that accompanies this show by clicking the image below.</p>\r\n\r\n<p><a data-flickr-embed=\"true\" href=\"https://www.flickr.com/photos/137675441@N05/albums/72157710403088542\" title=\"Dan Tranh Case Repair\"><img src=\"https://live.staticflickr.com/65535/48570414971_d678f8ff0c.jpg\" width=\"500\" height=\"375\" alt=\"Dan Tranh Case Repair\"></a></p>\r\n\r\n<h2>Links</h2>\r\n\r\n<ul>\r\n <li><a href=\"https://en.wikipedia.org/wiki/%C4%90%C3%A0n_tranh\">Đàn tranh</a></li>\r\n <li><a href=\"https://en.wikipedia.org/wiki/Adhesive#Contact\">Contact cement</a></li>\r\n <li><a href=\"https://en.wikipedia.org/wiki/Pentatonic_scale\">Pentatonic scale</a></li>\r\n</ul>\r\n\r\n<h2>Credits</h2>\r\n\r\n<ul>\r\n <li>Music bumpers are from Kimiko Ishizaka\'s<em>TheOpenGoldbergVariations</em>:<ahref=\"https://www.opengoldbergvariations.org/\">https://www.opengoldbergvariations.org/</a>,usedbypermissionoftheir<ahref=\"https://creativecommons.org/publicdomain/zero/1.0/\">CC01.0Universal(CC01.0)PublicDomainDedicationlicense</a>.</li>\r\n</ul>',238,0,0,'CC-BY-SA','Music,MusicalInstruments,Repairs,DIY,VietnameseStringedInstruments',0,0,1),
(2895,'2019-09-06','The work of fire fighters, part 2',2370,'The continued introduction into the work of fire fighters','<p>Continued general basic knowledge of fire fighting.<br />\r\nAlso an extended invitation to ask questions in the comments.<br />\r\nps: I started making podcasts one year ago! o/</p>',369,0,0,'CC-BY-SA','fire fighting, fire brigade',0,0,1),
(2899,'2019-09-12','Endeavour OS',99,'A quick show introducing Endeavour OS','<p>Hi to all you out there in HPR land, this is a quick show to help out with the current summer shortage of shows.</p>\r\n<p>So over the last few months I’ve been busy with my new Podcasting career, well it fills in the time now I’m retired. Anyway the Distro-hoppers show has been getting a regular audience and recently we decided to branch out a little and open up the review format to the audience, you can find details of how to do that on the Blog.</p>\r\n<p>The most recent show was a review of the new Endeavour OS which has risen from the ashes of Antergos Linux an Arch based OS. Well I decided to use this opportunity to delve into the world of Arch for the first time with Endeavour OS and I can report I was pleasantly surprised with this slick iteration of Arch. OK when you first install Endeavour all you will have is a new XFCE 4.14 DE and some basic software to get you started, you are then expected to do a little research to find out how to install other software you need to get your PC setup the way you like but all the basic information on package management is on the Endeavour OS Wiki and also on the Arch Linux Wiki.</p>\r\n<p>If you have thought of trying Arch Linux but would prefer to start with a running Desktop from install then Endeavour OS is definitely the place to start. I have been running it as my daily Driver for over a month and have fallen in love with it.<br />\r\nMy full review is on the Distrohoppers Blog as is a link to the Audio of the show.</p>\r\n<p>That’s it for this time, this is Tony Hughes saying goodbye until next time.</p>\r\n<p><a href=\"https://distrohoppersdigest.blogspot.com/\" class=\"uri\">https://distrohoppersdigest.blogspot.com/</a></p>\r\n<p><a href=\"https://endeavouros.com/\" class=\"uri\">https://endeavouros.com/</a></p>\r\n<p><a href=\"https://www.archlinux.org/\" class=\"uri\">https://www.archlinux.org/</a></p>\r\n',338,0,0,'CC-BY-SA','EndeavourOS, Linux, Arch Linux, Distrohopping',0,0,1),
(2912,'2019-10-01','Stardrifter RPG Playtest Part 06',2013,'Lostnbronx and friends playtest a new, original RPG system.','<p>This episode is Part 6 of the Stardrifter role-playing game playtest. The series is composed of two playtest sessions, held earlier this year. They were recorded and chopped into manageable bites, then edited down into separate episodes. The remaining episodes in this mini-series, including this one, were all from the second session.</p>\r\n<p>This series is meant to give listeners some insight into the RPG construction process. Playtesting is not the final step, but rather, just another stage. The construction of an RPG can be convoluted, and feedback from players is absolutely vital.</p>\r\n<p>In this part, the characters fly out to the derelict (though hardly empty) spaceship, and find a way to sneak aboard.</p>\r\n<p>Special thanks to my playtesters: Thaj, Mark (who was playing Brinn), and X1101!</p>\r\n',107,95,1,'CC-0','rpg, gaming, stardrifter, game construction, playtest',0,0,1),
(2917,'2019-10-08','Stardrifter RPG Playtest Part 07',1685,'Lostnbronx and friends playtest a new, original RPG system.','<p>This episode is Part 7 of the Stardrifter role-playing game playtest. The series is composed of two playtest sessions, held earlier this year. They were recorded and chopped into manageable bites, then edited down into separate episodes.</p>\r\n<p>This series is meant to give listeners some insight into the RPG construction process. Playtesting is not the final step, but rather, just another stage. The construction of an RPG can be convoluted, and feedback from players is absolutely vital.</p>\r\n<p>In this part, the characters make some new friends who show them their guns! Bonus Fun: I make tons of mistakes reading my own rules!</p>\r\n<p>Special thanks to my playtesters: Thaj, Mark (who was playing Brinn), and X1101!</p>\r\n',107,95,1,'CC-0','rpg, gaming, stardrifter, game construction, playtest',0,0,1),
(2922,'2019-10-15','Stardrifter RPG Playtest Part 08',1967,'Lostnbronx and friends playtest a new, original RPG system.','<p>This episode is Part 8 of the Stardrifter role-playing game playtest. The series is composed of two playtest sessions, held earlier this year. They were recorded and chopped into manageable bites, then edited down into separate episodes.</p>\r\n<p>This series is meant to give listeners some insight into the RPG construction process. Playtesting is not the final step, but rather, just another stage. The construction of an RPG can be convoluted, and feedback from players is absolutely vital.</p>\r\n<p>In this part, the characters reevaluate their life choices, and decide that negotiation is the better part of valor!</p>\r\n<p>Special thanks to my playtesters: Thaj, Mark (who was playing Brinn), and X1101!</p>\r\n',107,95,1,'CC-0','rpg, gaming, stardrifter, game construction, playtest',0,0,1),
(2927,'2019-10-22','Stardrifter RPG Playtest Part 09',1584,'Lostnbronx and friends playtest a new, original RPG system.','<p>This episode is Part 9 of the Stardrifter role-playing game playtest. The series is composed of two playtest sessions, held earlier this year. They were recorded and chopped into manageable bites, then edited down into separate episodes.</p>\r\n<p>This series is meant to give listeners some insight into the RPG construction process. Playtesting is not the final step, but rather, just another stage. The construction of an RPG can be convoluted, and feedback from players is absolutely vital.</p>\r\n<p>In this part, the characters agree to join someone else’s treasure hunt, with the success (or failure) of their own mission in the balance!</p>\r\n<p>Special thanks to my playtesters: Thaj, Mark (who was playing Brinn), and X1101!</p>\r\n',107,95,1,'CC-0','rpg, gaming, stardrifter, game construction, playtest',0,0,1),
(2893,'2019-09-04','Whats in the box! Part 2',727,'NYbill finishes a guitar pedal kit Timttmy sent him. ','<p>In this short follow up episode NYbill troubleshoots the Tremlo guitar kit Timttmy sent him.</p>\r\n<p>Here is a hint, there were two problems, not just one.</p>\r\n<p>Pics for the episode:</p>\r\n<p><a href=\"https://media.gunmonkeynet.net/u/nybill/collection/whats-in-the-box-part-2/\" class=\"uri\">https://media.gunmonkeynet.net/u/nybill/collection/whats-in-the-box-part-2/</a></p>\r\n',235,103,0,'CC-BY-SA','guitar, pedal, tremlo, kit, DIY, soldering',0,0,1),
(2932,'2019-10-29','Stardrifter RPG Playtest Part 10',3255,'Lostnbronx and friends playtest a new, original RPG system.','<p>This episode is Part 10 of the Stardrifter role-playing game playtest. The series is composed of two playtest sessions, held earlier this year. They were recorded and chopped into manageable bites, then edited down into separate episodes.</p>\r\n<p>This series is meant to give listeners some insight into the RPG construction process. Playtesting is not the final step, but rather, just another stage. The construction of an RPG can be convoluted, and feedback from players is absolutely vital.</p>\r\n<p>It’s not unusual for a game master to have two sets of maps for an adventure: one is for the players, which only has the sort of information on it that their characters might reasonably have access to; the other is NOT for the players, as it shows all the special information they shouldn’t know about (at least, not all at once). This is where you’d make note of secret doors, hidden objects or enemies, and/or, as in the case of this playtest, the physical condition of the ship as it stands at the moment.</p>\r\n<p><a href=\"https://hackerpublicradio.org/eps/hpr2932/Player-Cargo-Ship-2000x2624.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr2932/Player-Cargo-Ship-666x874.jpg\" alt=\"Player Map\" width=\"666\" height=\"874\" /></a><br />\r\nPlayer Map</p>\r\n<p><a href=\"https://hackerpublicradio.org/eps/hpr2932/GM-Cargo-Ship-2000x2786.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr2932/GM-Cargo-Ship-627x874.jpg\" alt=\"Game Master Map\" width=\"627\" height=\"874\" /></a><br />\r\nGame Master Map</p>\r\n<p>Additionally, here’s a zip file containing the adventure, the maps, the floor plan descriptions, some miscellaneous non-player characters, and the Stardrifter RPG rules in EPUB format. Again, these are no longer the LATEST version of the rules, but they are what we used for these episodes.</p>\r\n<p><a href=\"https://hackerpublicradio.org/eps/hpr2932/Stardrifter-RPG-Playtest_Squatters-Rights.zip\">Stardrifter-RPG-Playtest_Squatters-Rights.zip</a></p>\r\n<p>In this final part of the mini-series, the players provide their hard-working game designer with some valuable feedback, observations, and general opinions!</p>\r\n<p>Special thanks to my playtesters in this episode: Thaj, Mark (who was playing Brinn), and X1101!</p>\r\n',107,95,1,'CC-0','rpg, gaming, stardrifter, game construction, playtest',0,0,1),
(2896,'2019-09-09','Orange PI Zero LTS version',737,'A general overview of the Orange PI Zero LTS','<ul>\r\n<li><p>A general overview of the Orange PI Zero LTS version<br />\r\n<a href=\"https://www.orangepi.org/orangepizerolts/\" class=\"uri\">https://www.orangepi.org/orangepizerolts/</a><br />\r\n<a href=\"https://www.geeky-gadgets.com/raspberry-pi-alternative-12-08-2019/\" class=\"uri\">https://www.geeky-gadgets.com/raspberry-pi-alternative-12-08-2019/</a></p></li>\r\n<li><p>This is the one I really liked<br />\r\n<a href=\"https://www.cnx-software.com/2019/07/31/buy-orange-pi-zero-lts-sbc/\" class=\"uri\">https://www.cnx-software.com/2019/07/31/buy-orange-pi-zero-lts-sbc/</a></p></li>\r\n<li><p>This is were the software is<br />\r\n<a href=\"https://www.armbian.org\" class=\"uri\">https://www.armbian.org</a></p></li>\r\n</ul>\r\n',129,0,0,'CC-BY-SA','Raspberry PI, OrangePI, Armbian, Hobby Computing, VNC',0,0,1),
(2901,'2019-09-16','Describing how I listen to podcasts PART 3',835,'In this episode I cover the 1st add-on board I purchased for one of my raspberry pi\'s','<p>InthisseriesIcoverhowIlistentopodcastsandhowtheprocesshaschangedovertheyears.InthisepisodeIcoverthe1stadd-onboardIpurchasedforoneofmyraspberrypi’sIthengoontoexplainwhatIdowithit.</p>\r\n<ul>\r\n<li><p>Raspberrypi<br/>\r\n<ahref=\"https://en.wikipedia.org/wiki/Raspberry_Pi\"class=\"uri\">https://en.wikipedia.org/wiki/Raspberry_Pi</a></p></li>\r\n<li><p>PifaceDigitalIO,picturesandlinks<br/>\r\n<ahref=\"https://www.piface.org.uk/products/piface_digital/\"class=\"uri\">https://www.piface.org.uk/products/piface_digital/</a><br/>\r\n<ahref=\"https://www.piface.org.uk/products/piface_digital_2/\"class=\"uri\">https://www.piface.org.uk/products/piface_digital_2/</a><br/>\r\nSoftwareDocumentation<ahref=\"https://piface.github.io/pifacedigitalio/\"class=\"uri\">https://piface.github.io/pifacedigitalio/</a></p></li>\r\n<li>Commandusedtoinstallthesoftware&librariestousethePifaceDigitalIOboard,commandfromcompanieswebsite:</li>\r\n</ul>\r\n<pre><code>sudoapt-getinstallpython{,3}-pifacedigitalio</code></pre>\r\n<p><imgsrc=\"https://hackerpublicradio.org/eps/hpr2901/Picture-01.JPG\"alt=\"Picture 1\"/><br/>\r\nPicture1,showsthePifaceDigitalIOboardinstalledontopofmyraspberrypi</p>\r\n<p><imgsrc=\"https://hackerpublicradio.org/eps/hpr2901/Picture-02.JPG\"alt=\"Picture 2\"/><br/>\r\nPicture2,showstheextensionboardIbuilt.TheextensionboardincreasesthenumberofavailableLED’sandswitches.TheboardisattachedviaaribboncablewiththeendsofthewireinsertedintothegreenandorangescrewdownchocolateblocksattachedtothePifaceDigitalIOboard.</p>\r\n<ul>\r\n<li><p>Commandtotogglebetweenplayandpauseinmocis<br/>\r\n<code>mocp-G</code>or<code>mocp–toggle-pause</code><br/>\r\nmocmanpage<ahref=\"https://www.mankier.com/1/mocp\"class=\"uri\">https://www.mankier.com/1/mocp</a><br/>\r\nmochomepage<ahref=\"https://moc.daper.net/\"class=\"uri\">https://moc.daper.net/</a></p></li>\r\n<li><p>Uptimemanpage<ahref=\"https://linux.die.net/man/1/uptime\"class=\"uri\">https://linux.die.net/man/1/uptime</a></p></li>\r\n</ul>\r\n<h3id=\"explanation-of-how-to-read-a-binary-display\">Explanationofhowtoreadabinarydisplay</h3>\r\n<p>TheboardIbuiltwhichattachestothePifaceDigitalboardhasatotalof8LED’s.Iusethe8LED’stodisplayanumberinbinaryformat.InbinaryeachLEDhasonlytwovalueseitheronoroff,with1LEDyoucancountto1withtwoLED’syoucancountto3.Thismayseemconfusingifyou’veneverdealtwithbinarybefore.StartingfromtherighteachsubsequentLEDrepresentsdoublethevalueofthepreviousonesothe1stLEDhasavalueof1the2ndLEDhasavalueof2,thethirdLEDhasavalueof4andsoon.Seebelow</p>\r\n<pre><code>LEDNumber87654321\r\nLEDVALUES128,64,32,16,8,4,2,1</code></pre>\r\n<p>LEDonrepresents1,LEDoffrepresents0</p>\r\n<p><code>[Example1]00000001[Representedvalue1]</code><br/>\r\n1stLEDonvalue=1</p>\r\n<p><code>[Example2]00000011[Representedvalue3]</code><br/>\r\n1stand2ndLEDon,LEDVALUE1+2=3</p>\r\n<p><code>[Examples3]00001010[Representedvalue10]</code><br/>\r\n2ndand4thLEDon,LEDVALUE2+8=10</p>\r\n<p>Withpracticeitgetseasytoconvertfrombinarytodecimal,atmyworkwestillhaveaveryoldcomputerwhichcontainsafrontpanelwithLED’sandbinaryswitches.ToloadthecomputerinstructionsmustbeloadedinbinaryusingflipswitchesandLED’swithpracticeitbecomessecondnature.</p>\r\n<h3id=\"links\">Links</h3>\r\n<ul>\r\n<li><p>Furtherinformationonbinarynumbers<ahref=\"https://en.wikipedia.org/wiki/Binary_number\"class=\"uri\">https://en.wikipedia.org/wiki/Binary_number</a></p></l
(2918,'2019-10-09','Selecting random item from weighted list',1604,'How to selected random item from weighted list using Haskell','<h2 id=\"intro\">Intro</h2>\r\n<p>We’re going to have a look how to select random item from weighted list. There isn’t that much code this time, but it certainly took many tries to get it working and looking nice.</p>\r\n<h2 id=\"analogy\">Analogy</h2>\r\n<p>Imagine stack of building blocks of different heights stacked on top of each other. Height of the each block is chance of how often it will be selected. Selection is done by chopping a stick so that its length at maximum is height of the stack. Place stick next to the stack and select the block that stick reaches at.</p>\r\n<h2 id=\"explanation-of-algorithm\">Explanation of algorithm</h2>\r\n<p>We have list of items and associated weight, defined as <code>Frequency a = Frequency Int a</code>.</p>\r\n<p>Total is sum of all the weights and we select a random number <code>n</code> between 1 and total.</p>\r\n<p><code>pick</code> function has signature of <code>[Frequency a] -> n -> Maybe a</code>. Empty list will result <code>Nothing</code>. When picking item, if <code>n</code> is equal or less than weight of the first item, return that item. Otherwise, drop the first item, subtract weight of that first item from <code>n</code> and try again. Eventually we either arrive to item which weight is greater than <code>n</code> or to empty list.</p>\r\n<h2 id=\"quick-detour-on-random-number-generators\">Quick detour on random number generators</h2>\r\n<p>Haskell functions are pure, meaning that with same input, you are guaranteed to get the same output (safe for some specific cases). Which makes concept of random numbers at first glance to be impossible. This is solved by passing in a random number generator, which can supply you a random value a new random number generator. Using this new random number generator to generate a value yields you a yet another value and yet another random number generator.</p>\r\n<p>Passing these random number generators around in code gets tedious, but there’s different solution: <code>MonadRandom</code>. Using it will thread along generators automatically behind the scenes, ensuring that you always have access to a fresh generator. There’s several functions that can be used to generate random values, but we’re using this one: <code>getRandomR :: Random a => (a, a) -> m a</code>. Given a lower and upper bound, it will return you a random value wrapped in context that carries that new random number generator.</p>\r\n<p>In the end, we need to take our computation (that can be complex and use multiple calls to random number generator) and turn that <code>m a</code> into <code>a</code>. This is done with <code>runRand :: RandomGen g => Rand g a -> g -> (a, g)</code>. We give it our computation and a <code>RandomGen g</code> that can generate random values and receive <code>(a, g)</code> where <code>a</code> is our result and <code>g</code> new random number generator. In cases where we aren’t going to use the new generator, we can use <code>evalRand :: RandomGen g => Rand g a -> g -> a</code>, which discards it and returns just <code>a</code>.</p>\r\n<h2 id=\"actual-implementation-with-explanation\">Actual implementation with explanation</h2>\r\n<p>First, <code>Frequency</code> for expressing weight of individual item. It’s parametrized, so can be used with any data.</p>\r\n<pre><code>data Frequency a = Frequency Int a\r\n deriving (Show, Read, Eq)</code></pre>\r\n<p>Next, determining which item to choose, based on stack and measuring stick. In case a value outside of valid range has been selected, we end up with <code>Nothing</code>, otherwise with <code>Just a</code>. First case is for empty list (either we called this originally with empty list or picked number that is greater than total sum of weights), second one either picks the first item of list or recursive calls itself removing first item.</p>\r\n<pre><code>pick :: [Frequency a] -> Int -> Maybe a\r\npick []
(2904,'2019-09-19','DIY URL shortening',738,'Quick tip on how to shorten an URL without a silly SaaS','<p>\r\nMake a directory to house your shortened URLs.\r\n</p>\r\n\r\n<pre><code>\r\n$ ssh example.com mkdir public_html/u\r\n</code></pre>\r\n\r\n<p>\r\nOn demand, create a subdirectory for the shortened URL you want to create.\r\n</p>\r\n\r\n<pre><code>\r\n$ ssh example.com mkdir public_html/u/hpr\r\n</code></pre>\r\n\r\n<p>\r\nCreate an HTTP redirect in an index.html file.\r\n</p>\r\n\r\n<pre><code>\r\n$ ssh example.com echo \"\"<html><title>Shortened URL</title><head><meta http-equiv=\'refresh\' content=\'0;URL=http://hackerpublicradio.org/correspondents/0078.html\' /></head></html>\"\" > www/u/hpr/index.html\r\n</code></pre>\r\n\r\n<p>\r\nYour shortened URL is example.com/u/hpr\r\n</p>\r\n',78,0,0,'CC-BY-SA','html, url shortner',0,0,1),
(2928,'2019-10-23','Building markov chains with Haskell',1798,'How to build markov chains with Haskell','<h2 id=\"intro\">Intro</h2>\r\n<p>Last time we built a weighted list, this time we’re using that to build markov chains. Wikipedia states that “A Markov chain is a stochastic model describing a sequence of possible events in which the probability of each event depends only on the state attained in the previous event.” and that they’re named after the Russian mathematician Andrey Markov.</p>\r\n<h2 id=\"configuration\">Configuration</h2>\r\n<p>We’re after generic system, hence parametrized data types.</p>\r\n<p>First part is <code>Configuration a</code> that lists possible starting elements of chain and elements that can follow a particular element.</p>\r\n<pre><code>data Config a = Config\r\n { configStarts :: ![Item a]\r\n , configContinuations :: !(Map a [Item a])\r\n } deriving (Show, Read, Eq)</code></pre>\r\n<p>Second part is <code>Item a</code>, that just holds single item that could appear in chain and relatively frequency for its appearance.</p>\r\n<pre><code>data Item a =\r\n Item (Frequency (Maybe a))\r\n deriving (Show, Read, Eq)</code></pre>\r\n<p>We’re using <code>Maybe a</code> as in some cases there’s chance of element being last element in chain. Thus, <code>Nothing</code> will represent end of chain.</p>\r\n<p>In previous episode, we implemented <code>choose</code>, but later on I decided to rename it to <code>chooseM</code>. So when you see <code>chooseM</code>, it’s just different name for what we implemented previously.</p>\r\n<h2 id=\"building-a-chain\">Building a chain</h2>\r\n<p>Since building a configuration depends on the case quite a bit, we’re just going to assume that we have one at hand.</p>\r\n<p>Our chains are built by <code>chainM :: (Ord a, RandomGen g) => Config a -> Rand g [a]</code>. Given a config, it creates computation that when run will return list of <code>a</code>, which is our chain.</p>\r\n<p>Implementation is fairly straightforward:</p>\r\n<pre><code>chainM config = do\r\n starter <- chooseM (itemToFreq <$> configStarts config)\r\n case join starter of\r\n Nothing ->\r\n return []\r\n\r\n Just h -> do\r\n t <- tailOfChain config h\r\n return $ h : t</code></pre>\r\n<p>First we select item from starting elements. In case there isn’t one, result will be a empty list. Otherwise we use <code>tailOfChain</code> to compute rest of the list and return a list of starter element followed by that tail.</p>\r\n<p>For tail we need to figure out first what possible elements there are that can follow a given element. This is done by <code>candidates</code> function. <code>lookup</code> finds a possible list of elements in <code>configContinuations</code>. We use <code>itemToFreq</code> to turn this list into frequencies. Since <code>items</code> might be <code>Nothing</code> (in case where there aren’t any suitable continuations present) and any continuation in the list might be <code>Nothing</code> (in case where this is possibly terminating element), we have to use <code>(fmap . fmap)</code> to apply <code>itemToFreq</code> to each possible element. Moreover, <code>concat</code> turns our <code>Maybe [Frequency (Maybe a)]</code> into <code>[Frequency (Maybe a)]</code>, if we have <code>Nothing</code> at this stage, result will be an empty list <code>[]</code>.</p>\r\n<pre><code>candidates :: (Ord a) => Config a -> a -> [Frequency (Maybe a)]\r\ncandidates config x =\r\n concat $ (fmap . fmap) itemToFreq items\r\n where\r\n items = lookup x (configContinuations config)</code></pre>\r\n<p>That <code>concat</code> part could have been written as:</p>\r\n<pre><code> case (fmap . fmap) itemToFreq items of\r\n Nothing ->\r\n []\r\n\r\n Just x ->\r\n x</code></pre>\r\n<p>and the end result would be identical.</p>\r\n<p>Now that we know how to figure our possible continuation elements, we can implement computing tai
(2905,'2019-09-20','Two HPR hosts living in the same region finally meet up!',1145,'Dave Morriss and MrX meet up and record a conversation','<h2 id=\"introduction\">Introduction</h2>\r\n<p>Two HPR hosts who live in the Edinburgh locality in Scotland met on Saturday 24<sup>th</sup> August for a chat.</p>\r\n<p>The hosts are:</p>\r\n<ul>\r\n<li><a href=\"https://hackerpublicradio.org/correspondents/0201.html\" title=\"MrX\">MrX</a> - first HPR show <a href=\"https://hackerpublicradio.org/eps.php?id=911\">“Hobbies”</a> on 2012-01-27</li>\r\n<li><a href=\"https://hackerpublicradio.org/correspondents/0225.html\" title=\"Dave Morriss\">Dave Morriss</a> - first HPR show <a href=\"https://hackerpublicradio.org/eps.php?id=1091\">“Useful Vim Plugins”</a> on 2012-10-05</li>\r\n</ul>\r\n<p>Some of the meeting was recorded and is presented here.</p>\r\n<h3 id=\"recording-information\">Recording information</h3>\r\n<p>We were both recording this chat. Dave was using his Zoom H2n (with the microphones in <em>XY</em> mode) and MrX had left his small <em>Dictaphone</em>-like recorder on the table.</p>\r\n<p>Most of the audio here was from the Zoom, but at one point it switches to MrX’s recorder for comparison. The sample is at about 18 minutes into the recording (hard to judge since an intro sequence will have been added on the HPR site). A “chirp” effect has been added at the start and end of this sample to help with identification.</p>\r\n<p>The Zoom track had noise reduction applied to it, using a noise sample from the start as a reference. The sample from MrX’s recorder also had noise reduction applied, and both tracks were amplified.</p>\r\n<h2 id=\"links\">Links</h2>\r\n<ul>\r\n<li>MrX’s shows that we were talking about:\r\n<ul>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2879\">Describing how I listen to podcasts PART 1</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2889\">Describing how I listen to podcasts PART 2</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2901\">Describing how I listen to podcasts PART 3</a></li>\r\n</ul></li>\r\n<li>The radio device for the Pi mentioned by Dave:\r\n<ul>\r\n<li>ESP8266 IoT pHAT from Pimoroni (now discontinued)</li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/ESP8266\">Wikipedia page on the ESP8266</a></li>\r\n<li><a href=\"https://learn.pimoroni.com/tutorial/hal13/getting-started-with-iot-phat\">Pimoroni Tutorial on using the pHAT</a></li>\r\n</ul></li>\r\n</ul>\r\n',225,0,1,'CC-BY-SA','HPR,hosts,meeting,Dave Morriss,MrX',0,0,1),
(2906,'2019-09-23','Feature Engineering for Data-Driven Decision Making',1006,'In this episode, I explain feature engineering, and how it can be used to make decisions','<h2 id=\"example-of-the-input-data\">Example of the input data</h2>\r\n<table>\r\n<thead>\r\n<tr class=\"header\">\r\n<th>Client name</th>\r\n<th>Date ordered</th>\r\n</tr>\r\n</thead>\r\n<tbody>\r\n<tr class=\"odd\">\r\n<td>Client 1</td>\r\n<td>2019-01-01</td>\r\n</tr>\r\n<tr class=\"even\">\r\n<td>Client 1</td>\r\n<td>2019-01-01</td>\r\n</tr>\r\n<tr class=\"odd\">\r\n<td>Client 3</td>\r\n<td>2019-01-01</td>\r\n</tr>\r\n<tr class=\"even\">\r\n<td>Client 3</td>\r\n<td>2019-01-01</td>\r\n</tr>\r\n</tbody>\r\n</table>\r\n<h2 id=\"example-of-the-engineered-features\">Example of the engineered features</h2>\r\n<table>\r\n<thead>\r\n<tr class=\"header\">\r\n<th>Client name</th>\r\n<th>volume</th>\r\n<th>last order date</th>\r\n<th>first order date</th>\r\n<th>days since last order</th>\r\n</tr>\r\n</thead>\r\n<tbody>\r\n<tr class=\"odd\">\r\n<td>Client 1</td>\r\n<td>292</td>\r\n<td>2019-09-03</td>\r\n<td>2015-03-04</td>\r\n<td>10</td>\r\n</tr>\r\n<tr class=\"even\">\r\n<td>Client 2</td>\r\n<td>18</td>\r\n<td>2019-09-09</td>\r\n<td>2019-09-04</td>\r\n<td>4</td>\r\n</tr>\r\n<tr class=\"odd\">\r\n<td>Client 3</td>\r\n<td>300</td>\r\n<td>2019-08-16</td>\r\n<td>2016-11-15</td>\r\n<td><strong>28</strong></td>\r\n</tr>\r\n</tbody>\r\n</table>\r\n<h2 id=\"links\">Links</h2>\r\n<ol type=\"1\">\r\n<li><a href=\"https://en.wikipedia.org/wiki/Feature_engineering\">Feature Engineering</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Feature_(machine_learning)\">Feature</a></li>\r\n</ol>\r\n',300,0,0,'CC-BY-SA','data',0,0,1),
(2909,'2019-09-26','ONICS Basics Part 3: Networking Fundamentals',3031,'This show discusses basic principles of networks and how to send data using ONICS','<h1 id=\"theory\">Theory</h1>\r\n<p>In this episode I decided to take a slight diversion into networking fundamentals. As before, if you want to learn more about installing the ONICS tool suite, go back and listen to HPR 2882.</p>\r\n<p>There are three key concepts to understand about modern networks. They are:</p>\r\n<ul>\r\n<li><p>digital - the networks carry bits and bytes (binary digits)</p></li>\r\n<li><p>packet switched - devices break data into blobs of data called "packets" and take turns sending and receiving those packets to/from other devices attached to the network</p></li>\r\n<li><p>internetworked -- machines communicate using a protocol that allows traffic to traverse across multiple, independently-managed networks in a uniform way</p></li>\r\n</ul>\r\n<h1 id=\"my-setup\">My Setup</h1>\r\n<ul>\r\n<li><p>2 laptops connected to a home wifi network that has Internet connectivity.</p></li>\r\n<li><p>Practicing sending data from a source machine to a destination machine. Both are running Linux.</p></li>\r\n<li><p>Source machine:</p>\r\n<ul>\r\n<li>Wifi interface: wlan0</li>\r\n<li>Ethernet address: 00:22:fa:a7:69:90</li>\r\n<li>IP address: 192.168.0.4</li>\r\n</ul></li>\r\n<li><p>Destination machine</p>\r\n<ul>\r\n<li>Wifi interface: wlo1</li>\r\n<li>Ethernet address: 6c:88:14:7c:2e:14</li>\r\n<li>IP address: 192.168.0.248</li>\r\n</ul></li>\r\n<li><p>Internet Router:</p>\r\n<ul>\r\n<li>Ethernet address: 00:0d:b9:23:f2:51</li>\r\n<li>IP address: 192.168.0.1</li>\r\n</ul></li>\r\n</ul>\r\n<h1 id=\"more-terminology\">More Terminology</h1>\r\n<ul>\r\n<li><p>Address - a number that identifies a machine\'sinterfaceinanetwork</p></li>\r\n<li><p>Packet-ablobofbinarydatasentasaunitoveranetwork</p></li>\r\n<li><p>Route-arulethatspecifieshowtoforwardtraffictoagivenaddress</p></li>\r\n<li><p>Router/Gateway-amachinethatusestheIPprotocolandforwardstrafficbetweenmultiplenetworksthatitconnectsto</p></li>\r\n<li><p>NetworkProtocol-asetofrulesanddataformatsforexchanginginformationoveranetwork</p></li>\r\n</ul>\r\n<h1id=\"standard-unix-commands\">StandardUNIXCommands</h1>\r\n<ul>\r\n<li>ifconfig(noargumentsor\'-a\')\r\n<ul>\r\n<li>listinterfacesonamachine</li>\r\n</ul></li>\r\n<li>ifconfigIFNAME\r\n<ul>\r\n<li>listproperitesaboutagiveninterface</li>\r\n</ul></li>\r\n<li>ping-c1IPADDRESS\r\n<ul>\r\n<li>sendanechorequesttomachineIPADDRESS</li>\r\n</ul></li>\r\n<li>arp-na\r\n<ul>\r\n<li>DumptheEthernetaddressesofknownnearbymachines</li>\r\n</ul></li>\r\n<li>netstat-nr\r\n<ul>\r\n<li>Dumptheroutesinasystem</li>\r\n</ul></li>\r\n<li>netstat-nr|grep"^0.0.0.0"\r\n<ul>\r\n<li>Findtheroute(andthusIPaddress)ofthedefaultgateway</li>\r\n</ul></li>\r\n</ul>\r\n<h1id=\"onics-commands-in-this-episode\">ONICSCommandsinthisEpisode</h1>\r\n<ul>\r\n<li><p>rawpkt-takeablobofdataandwrapitinanXPKTformat(sootherONICStoolscanunderstandwhatitis)</p></li>\r\n<li><p>ethwrap-takeanXPKTandprependanEthernetheadertoit</p></li>\r\n<li><p>ipwrap-takeanXPKTandprependanIPheadertoit</p></li>\r\n<li><p>pktin-readastreamofpacketsfromanetworkinterface</p></li>\r\n<li><p>pflt-filterastreamofpacketssothatonlythosematchingapatterngetthrough</p></li>\r\n<li><p>pktout-sendastreamofpacketstoanetworkinterface</p></li>\r\n<li><p>x2hpkt-convertXPKTsintoahexdump</p></li>\r\n<li><p>xpktdump-likex2hpkt,butsendtheoutputtoapagerlike\'less\'foreasyreading</p></li>\r\n</ul>\r\n<h1id=\"sending-an-ethernet-packet-to-the-destination\">SendinganEthernetPackettotheDestination</h1>\r\n<ul>\r\n<li>Onthereceiver:</li>\r\n</ul>\r\n<pre><code>$sudopktinwlo1|\r\npflt"notipandeth.dst==6c:88:14:7c:2e:14"|\r\nx2hpkt\r\n</code></pre>\r\n<ul>\r\n<li>Onthese
(2911,'2019-09-30','my internet connection',655,'a bloviated harang with a smattering of spewed expetives, while describing available ISPs','<p>Any notes for this episode should probably contain links to the ISPs mentioned in the show. Since I do not wish to harm any listeners, I have opted to not include links to evil ISPs.</p>',243,0,1,'CC-BY-SA','internet service, satellite',0,0,1),
(2938,'2019-11-06','Naming pets in space game',1236,'How to use markov chains to generate names','<h2 id=\"intro\">Intro</h2>\r\n<p>In the two previous episodes we built a weighted list and used that to build markov chains. This time we’re going to use them to generate some names based on examples. I’m skipping over a lot of uninteresting code in this episode, concentrating only the parts that deal with names.</p>\r\n<h2 id=\"idea\">Idea</h2>\r\n<p>Person in game might hear scurrying sounds inside walls of their quarters. Then they have option of getting a cat, taming a rat or letting someone else deal with the problem. Depending on their choice, they might end up with a cat or a rat, that of course needs a name. Game offers 3 different options of names that haven’t been used before and person can always opt for completely random one.</p>\r\n<h2 id=\"config\">Config</h2>\r\n<p>While we’re not going to dig very deep into making configurations for markov chains, we can have look at the overall process.</p>\r\n<p>We have list of names to serve as examples and three functions, which implementation I won’t delve into:</p>\r\n<ul>\r\n<li><code>start</code> for adding starting element</li>\r\n<li><code>links</code> for recording link between two elements</li>\r\n<li><code>end</code> adds ending element</li>\r\n</ul>\r\n<p><code>addName</code> function is used to add single name into config:</p>\r\n<pre><code>addName :: Int -> Text -> Config Text -> Config Text\r\naddName n s config =\r\n links pairs $\r\n end elements $\r\n start elements config\r\n where\r\n elements = chunksOf n s\r\n pairs = zip elements (safeTail elements)</code></pre>\r\n<p>First <code>s</code> (name) is split into strings of length <code>n</code>. These <code>elements</code> are then combined into pairs, where consecutive elements form a pair. Final step is to add start and ending elements into config, followed by links between elements of pairs.</p>\r\n<p>We can then fold a list of examples into config:</p>\r\n<pre><code>nameConfig :: [Text] -> Int -> Config Text\r\nnameConfig xs n =\r\n foldr (addName n) emptyConfig xs</code></pre>\r\n<p>This starts with <code>emptyConfig</code> and calls <code>addName</code> repeatedly until all elements of list containing examples have been processed.</p>\r\n<h2 id=\"implementation\">Implementation</h2>\r\n<p>Now that we have configuration, we can start generating names. As usual, I like to keep things specific and generate <code>PetName</code> instead of just <code>Text</code>. I happened to have list of ancient greek names at hand, so I used that. Later on we’ll have to add more cultures, like Romans, Parthians, Persians, Germans, Phoenicians and so on.</p>\r\n<p>General implementation of generating infinite list of strings of specific kind is shown below:</p>\r\n<pre><code>names :: (RandomGen g, Eq b) => (Text -> b) -> Config Text -> g -> [b]\r\nnames t config g =\r\n nub $ (t . toTitle . concat) <$> chains config g</code></pre>\r\n<p>It’s easier to read if you start from right. <code>chains config g</code> generates infinite list of markov chains with given configuration. Next we create a new function <code>(t . toTitle . concat)</code>, which uses <code>concat</code> to combine list of <code>Text</code> into single <code>Text</code>, <code>toTitle</code> to capitalize is correctly and <code>t</code> to transform it to something (<code>PetName</code> in our case). <code><$></code> is then used to apply this function to each element of our infinite list. Finally <code>nub</code> is used to remove duplicate entries.</p>\r\n<p>With <code>names</code> we can then define <code>petNames</code>:</p>\r\n<pre><code>petNames :: (RandomGen g) => g -> [PetName]\r\npetNames =\r\n names MkPetName greekNameConfig</code></pre>\r\n<p><code>MkPetName</code> is value constructor that turns <code>Text</code> into <code>PetName</code> (this is <code>t</code> used by <code>names</code> function).</p>\r\n<h2 id=\"pets\">Pets
(2913,'2019-10-02','Windows, SDN, and Firewalls',2483,'Being a Windows User for the past 3 years, Information on SDN, and a DIY approach to a home Firewall','<pre>\r\nIntro\r\n\r\nLast Upload was hpr1468 March 19, 2014 \r\n\r\npython\r\n\r\n>>> print (D.today() - D(2014, 3, 19)).days\r\n\r\n1999\r\n\r\n>>> 2000/365\r\n\r\n5\r\n</pre>\r\n\r\n<p><a href=\"https://unix.stackexchange.com/questions/24626/quickly-calculate-date-differences\" class=\"uri\">https://unix.stackexchange.com/questions/24626/quickly-calculate-date-differences</a></p>\r\n<p>In the last 5 years:</p>\r\n<ul>\r\n<li>Traveled the world.</li>\r\n<li>Deployed a lot of things for work.</li>\r\n<li>Taken on a new role which moves me from Datacenters to Networks.</li>\r\n<li>Learned a lot about Operations, Datacenter Infrastructure, People around the world, and why it is important to have your house in order.</li>\r\n<li>Read over 3 dozen books.</li>\r\n<li>Paid off debt and focused on long term financial goals.</li>\r\n<li>Humility, Humanity, and Harmony: Three things I have continued to strive for in my personal life, work, and hobbies.</li>\r\n</ul>\r\n<p>Let\'sStartTheShowoffinthewrongdirection</p>\r\n<h2id=\"windows\">Windows</h2>\r\n<ul>\r\n<li>Chocolatey\r\n<ul>\r\n<li>GreatToolforDownloadingfreesoftwarefromthewindowspowershellcommandline</li>\r\n<li><ahref=\"https://chocolatey.org/docs/installation\"class=\"uri\">https://chocolatey.org/docs/installation</a></li>\r\n</ul></li>\r\n</ul>\r\n<h3id=\"sublime-text-3\">SublimeText3</h3>\r\n<ul>\r\n<li>FantasticTexteditorandverypowerful.Iusethistoquicklyparsedatausingregexsearchesandpushthistospreadsheetsorothertoolsthatallowmetoorganizedataquickly.OverallGreattoolforanyone</li>\r\n</ul>\r\n<h3id=\"summary\">Summary:</h3>\r\n<ul>\r\n<li>Overall:TheimportanceofbeinganeverydayWindowsUserhasallowedmetofocusonsolvingproblemsindifferentanduniqueways.I\'ve found that the way I use Windows is not the same as most normal Windows Users. I live most of the time inside of Chrome so Windows is just another OS to get my Chrome Browser running.</li>\r\n<li>Observation: Windows has definitely matured over the past 10 years. I find myself enjoying the time I save using Windows 10.</li>\r\n<li>Contradictions: I still use Linux, but as a VM to work on things that I just can\'tdoinsideofWindows.</li>\r\n</ul>\r\n<h2id=\"web-stuff\">WebStuff</h2>\r\n<ul>\r\n<li>Regex\r\n<ul>\r\n<li>Testanddebugyourregex.Itisagreattoolthatcombinespastebinandregexdebugging.Thisallowsyoutoshareyourregexwithotherbysimplyusingalink.Thereisalotofusefulinformationonthesiteaboutwhateachportionofyourregexisdoing.</li>\r\n<li><ahref=\"https://regex101.com\"class=\"uri\">https://regex101.com</a></li>\r\n</ul></li>\r\n<li>Maps\r\n<ul>\r\n<li>USGSMaps\r\n<ul>\r\n<li>VerynicesitethatallowsyoutodownloadPDFsof1:24000or7.5minuteMaps.YoucanprinttheseoffanduseaMapgridtooltonavigateyourjourney.Thisiskindofananalogtoolbutyouaredownloadingthemapstoyourcomputerorphone.Goodtohavemapssavedofflinewhileyouhike,thatwayyoudon\'t get lost.</li>\r\n<li><a href=\"https://store.usgs.gov/map-locator\" class=\"uri\">https://store.usgs.gov/map-locator</a></li>\r\n</ul></li>\r\n</ul></li>\r\n<li>SDN Information\r\n<ul>\r\n<li>If you\'rejuststartingwithSoftwareDefinedNetworkingorarealreadyworkingwithitinaproductionenvironment,thereismuchtolearnbutveryfewplacestofindaggregatedinformation.TheGitHubPagecalledawesome-sdnhastonsoflinksonNOS,Controllers,Libraries,andmore.IhaveAcoupleofNorthboundnetworkandArubaswitchesathometousewithmySDNprojects.Ihighlyrecommendyoustartgettingfamiliarwithnetworkautomationusingansibleorotherautomationbestpracticesattheleast.ForthemoretechnicalstuffdefinitelystartlookingatSDN.</li>\r\n<li>Awesome-SDN\r\n<ul>\r\n<li><ahref=\"https://github.com/sdnds-tw/awesome-sdn/blob/ma
(2914,'2019-10-03','Describing how I listen to podcasts PART 4',526,'In this episode I cover my 2nd add on board for the raspberry pi','<ul>\r\n<li><p>PiFace Control and Display<br />\r\n<a href=\"https://www.piface.org.uk/products/piface_control_and_display/\" class=\"uri\">https://www.piface.org.uk/products/piface_control_and_display/</a></p></li>\r\n<li><p>How to fit, setup and install the required software for your Raspberry Pi running the Raspbian Operating system<br />\r\n<a href=\"https://www.piface.org.uk/guides/setting_up_pifacecad/fitting_PiFace_Control_and_Display/\" class=\"uri\">https://www.piface.org.uk/guides/setting_up_pifacecad/fitting_PiFace_Control_and_Display/</a></p></li>\r\n</ul>\r\n<p>Pictures 01, 02 and 03 show how the PiFace Control and Display board and raspberry pi fit into the case<br />\r\n<img src=\"https://hackerpublicradio.org/eps/hpr2914/Picture-01.JPG\" alt=\"Picture-01.JPG\" /><br />\r\n<img src=\"https://hackerpublicradio.org/eps/hpr2914/Picture-02.JPG\" alt=\"Picture-02.JPG\" /><br />\r\n<img src=\"https://hackerpublicradio.org/eps/hpr2914/Picture-03.JPG\" alt=\"Picture-03.JPG\" /></p>\r\n<p>Pictures 04 and 05 shows the piece of plastic used to transfer the light from the LED’s on the Pi board to the holes in the casing. This is supposed to allow you to monitor the PI LED’s. I held it in place using a piece of Blu Tack.<br />\r\n<img src=\"https://hackerpublicradio.org/eps/hpr2914/Picture-04.JPG\" alt=\"Picture-04.JPG\" /><br />\r\n<img src=\"https://hackerpublicradio.org/eps/hpr2914/Picture-05.JPG\" alt=\"Picture-05.JPG\" /></p>\r\n<ul>\r\n<li>Wikipedia article about Blu Tack<br />\r\n<a href=\"https://en.wikipedia.org/wiki/Blu_Tack\" class=\"uri\">https://en.wikipedia.org/wiki/Blu_Tack</a></li>\r\n</ul>\r\n<p>Picture 6 shows the completed box<br />\r\n<img src=\"https://hackerpublicradio.org/eps/hpr2914/Picture-06.JPG\" alt=\"Picture-06.JPG\" /></p>\r\n<p>Pictures 7 and 8 show the project in operation and mounted on a spare Anker tablet stand that I had lying about.<br />\r\n<img src=\"https://hackerpublicradio.org/eps/hpr2914/Picture-07.JPG\" alt=\"Picture-07.JPG\" /><br />\r\n<img src=\"https://hackerpublicradio.org/eps/hpr2914/Picture-08.JPG\" alt=\"Picture-08.JPG\" /></p>\r\n<p>This is an example of the Anker stand I used. I use it to hold my project at a 45 degree angle so I can see it from around the room, it is intended to be used as a tablet stand.<br />\r\n<a href=\"https://www.ebay.co.uk/itm/Anker-Multi-Angle-Portable-Stand-for-Tablets-7-10-inch-E-readers-and-0-4lb-for-/282696421630?_trksid=p2385738.m4383.l4275.c10\">Anker stand for my Nexus 7, pictures, links</a></p>\r\n',201,0,1,'CC-BY-SA','Audio, Podcasts, Linux, Raspberry Pi, hardware, electronics, projects',0,0,1),
(2915,'2019-10-04','Intro - My Recording Setup',1248,'My first HPR episode. A bit of an intro and then a description of my recording setup.','<p>I discuss loading Fedora on various bits of older hardware and devise a plan to turn one of those bits of older hardware into a dedicated headless audio processor using its firewire port to keep yet another older piece of hardware alive: a Yamaha GO46 audio interface.</p>\r\n<p>Having done that and finding that it all performs admirably, I illogically decide to replace it with newer (but not new) hardware and buy yet another different model firewire audio interface: a Focusrite Saffire Pro 24.</p>\r\n<p>I record the end of the show on audio interface #3: a USB based Steinberg UR22mkII, which one could argue that I should have been using all along, leaving the firewire gear in the last decade where it belongs (?).</p>',380,0,0,'CC-BY-SA','Fedora, Firewire, Audio Interface',0,0,1),
(2919,'2019-10-10','hosting software in HPR show notes',626,'boats are awesome, but might lead to hosting software in the HPR show notes ','<pre><code>#!/usr/bin/env python\r\nimport urllib.request\r\nimport json\r\nimport re\r\nimport subprocess\r\n\r\n# see https://www.weather.gov/documentation/services-web-api\r\n\r\n#where are we? GPS coordinates\r\nlat = 39.275235\r\nlon = -120.9199507\r\n#what is the user agent string?\r\nagent = "Jezra's fun lil script"\r\n#minimum wind speed in mph?\r\nmin_speed = 9\r\n\r\ndef get_api_data(endpoint):\r\n print(endpoint)\r\n #prepare the connection with custom headers\r\n request = urllib.request.Request(endpoint, headers={"User-Agent":agent})\r\n #create a handler for the request\r\n handler = urllib.request.urlopen(request)\r\n #get the text\r\n text = handler.read()\r\n #parse the json text to a python object\r\n obj = json.loads(text)\r\n return obj\r\n\r\ndef wind_is_good(s):\r\n #use regex to find the matches\r\n matches = re.findall("[0-9]+",s)\r\n for match in matches:\r\n #convert string to int\r\n m = int(match)\r\n #is the speed good?\r\n if(m>=min_speed):\r\n return True\r\n #if we get here, there is no match :(\r\n return False\r\n\r\nstart_url = "https://api.weather.gov/points/{0},{1}".format(lat,lon)\r\n#get the json response from the start_url as a python object\r\nobj = get_api_data(start_url)\r\n\r\n#get the forecast url from the returned data\r\nforecast_url = obj['properties']['forecast']\r\n\r\n# process the forecast url\r\nforecast = get_api_data(forecast_url)\r\n\r\n#loop through the forcast periods\r\nfor period in forecast['properties']['periods']:\r\n #put name and windspeed into easier to handle variable names\r\n name= period['name']\r\n wind = period['windSpeed']\r\n print (name, wind)\r\n #check the wind speed\r\n if wind_is_good(wind):\r\n subprocess.call(["textjezra","{0}: {1}".format(name,wind)])\r\n</code></pre>\r\n',243,25,0,'CC-BY-SA','canoe, ptython, api, weather',0,0,1),
(2921,'2019-10-14','Geocaching with the family',2916,'Dave and his family take a wander around a wood looking for Geocaches','<p>In this episode, Dave and his family wander the paths of <a href=\"https://www.doncaster.gov.uk/services/culture-leisure-tourism/sandall-beat-wood\">Sandall Beat Wood</a> in <a href=\"https://en.wikipedia.org/wiki/Doncaster\">Doncaster</a> to participate in the game of <a href=\"https://en.wikipedia.org/wiki/Geocaching\">Geocaching</a>. During this time, which demonstrates an unusual level of failure in us playing the game, we try and explain what the game is all about.</p>\r\n<p>No, not <a href=\"https://en.wikipedia.org/wiki/The_Game_(mind_game)\">The Game</a>...</p>\r\n<p>As I explain at the beginning of the episode, this is a fairly long episode which hasn\'tbeenediteddownmuch,sotherearealotofambientpausesandheavybreathingtobeenjoyed.</p>\r\n<p><em>Recordedinthefieldonmy<ahref=\"https://www.amazon.co.uk/Olympus-DM-3-Digital-Voice-Recorder/dp/B003UP6ALA\">OlympusDM-3</a>voicerecorder.</em></p>\r\n<h2id=\"caches-explored\">Cachesexplored</h2>\r\n<ul>\r\n<li>Cache1-<ahref=\"https://coord.info/GC7F8ND\">GC7F8ND</a>-notfound</li>\r\n<li>Cache2-<ahref=\"https://coord.info/GC50TVW\">GC50TVW</a>-notfound</li>\r\n<li>Cache3-<ahref=\"https://coord.info/GC7KRHH\">GC7KRHH</a>-found!</li>\r\n</ul>\r\n<h2id=\"links\">Links</h2>\r\n<ul>\r\n<li><ahref=\"https://next.moobug.net/index.php/apps/gallery/s/iGwmZMtyaD52ecg\">Linktophotosandscreenshot</a></li>\r\n<li><ahref=\"https://geocaching.com\">geocaching.com</a></li>\r\n<li>OfficialGeocachingApp:<ahref=\"https://play.google.com/store/apps/details?id=com.groundspeak.geocaching.intro\">GooglePlay</a>|<ahref=\"https://itunes.apple.com/app/apple-store/id329541503\">AppStore</a></li>\r\n<li>c:geoGeocachingapp:<ahref=\"https://play.google.com/store/apps/details?id=cgeo.geocaching\">GooglePlay</a></li>\r\n</ul>\r\n',314,0,0,'CC-BY-SA','geocaching,outdoors,family',0,0,1),
(2948,'2019-11-20','Testing with Haskell',2560,'Introduction on HSpec and QuickCheck','<h2 id=\"intro\">Intro</h2>\r\n<p>I have liked writing automated tests for a long time, so it’s not a surprise that I end up writing them in Haskell too. This is very broad topic, so this episode only scratches the surface.</p>\r\n<h2 id=\"hspec\">HSpec</h2>\r\n<p>HSpec is testing framework that automatically detects tests, like most of the modern systems. It supports hierarchies, so one can organize tests by feature for example.</p>\r\n<pre><code>spec :: Spec\r\nspec = do\r\n describe "Very important feature" $ do\r\n it "Execution should be error free" $ do\r\n ...\r\n\r\n it "Flux capacitors can be charged" $ do\r\n ...\r\n\r\n describe "Somewhat less important feature" $ do\r\n ...</code></pre>\r\n<h2 id=\"unit-test\">Unit test</h2>\r\n<p>Unit test tests a single case with fixed set of inputs. With pure functions these are a pleasure to write as they’re really just data in, data out, verify results. Below is two examples:</p>\r\n<pre><code>spec :: Spec\r\nspec = do\r\n describe "Markov chain configuration" $ do\r\n it "Adding new starting element to empty configuration creates item with frequency of 1" $ do\r\n let config = addStart ("AA" :: DT.Text) emptyConfig\r\n config ^? (configStartsL . _head . itemFreqL) `shouldBe` Just 1\r\n config ^? (configStartsL . _head . itemItemL . _Just) `shouldBe` Just "AA"\r\n\r\n it "Adding same element twice to empty configuration creates item with frequency of 2" $ do\r\n let config = addStart "AA" $\r\n addStart ("AA" :: DT.Text) emptyConfig\r\n config ^? (configStartsL . _head . itemFreqL) `shouldBe` Just 2\r\n config ^? (configStartsL . _head . itemItemL . _Just) `shouldBe` Just "AA"</code></pre>\r\n<p>Both are for testing configuring markov chains. First one checks that adding a starting element in empty configuration results correct item with correct weight being added. Second checks that adding same starting element twice results weight of 2.</p>\r\n<p>Both tests use lenses for reading nested data structure. Episode doesn’t cover them much at all, as it’s enough to know that <code>(configStartsL . _head . itemFreqL)</code> focuses on starting elements of configuration, selects first item of the list and then selects frequency of that item. Lenses can also be used for modifying data and they don’t have to focus on only one element.</p>\r\n<p>Unit tests are easy enough to write, they verify single thing about the unit being tested and are usually super fast to run and not error prone.</p>\r\n<h2 id=\"property-based-test\">Property based test</h2>\r\n<p>Property based tests are used to check that a certain property holds with randomly generated input parameters. I’m using HSpec as testing framework and QuickCheck as tool for generating test data:</p>\r\n<pre><code>spec :: Spec\r\nspec = do\r\n describe "planets" $ do\r\n describe "food" $ do\r\n it "food requirement for positive amount of population is more than zero" $ do\r\n forAll positivePopulation $ \\x -> foodRequirement x > RawResource 0\r\n\r\n it "food base production for farms is equal or greater than their amount" $ do\r\n forAll someFarms $ \\x -> (sum (fmap foodBaseProduction x)) > (RawResource $ length x)</code></pre>\r\n<p>Above we have two tests. First one checks that with any non-zero population, <code>foodRequirement</code> is greater than 0. Second one check that with any positive amount of farm, <code>foodBaseProduction</code> is greater than amount of the farms.</p>\r\n<p><code>positivePopulation</code> is Generator, that is used by QuickCheck to generate random data for testing. Its definition is shown below:</p>\r\n<pre><co
(2924,'2019-10-17','Hacking an Alarm Clock to Make it Quieter',365,'I talk about installing a resistor in the speaker wire of an alarm clock so it won\'tbesoloud','<p>Thealarmclockonmybedsidetablehadaveryloudalarm—soloudthatitscaredmeandmademyheartracewhenitwentoff.Iknowyou\'re thinking I should just use an alarm on my phone, but for whatever reason I wanted to use the alarm clock. In this episode I talk about installing a resistor in the speaker wires of the alarm clock so that it won\'tbesoloudwhenitgoesoff.It\'s all good now. Loud enough to wake me up, but not so loud that it scares everyone.</p>\r\n\r\n<p><a data-flickr-embed=\"true\" href=\"https://www.flickr.com/photos/137675441@N05/albums/72157710800691661\" title=\"Alarm Clock Hack\" target=\"_blank\"><img src=\"https://live.staticflickr.com/65535/48718052852_81d452d4c8.jpg\" width=\"500\" height=\"394\" alt=\"Alarm Clock Hack\"></a></p>\r\n',238,0,0,'CC-BY-SA','clocks, electronics, decibels, noise levels, alarm clocks, alarms',0,0,1),
(2933,'2019-10-30','A walk through my PifaceCAD Python code – Part 1',871,'In this series a do whirl wind tour of the Python code I developed for my PifaceCAD board','<p>In this series a do whirl wind tour of the Python code I developed to control my PifaceCAD raspberry pi add on board. I this use to control a music player running on a remote raspberry pi upstairs.</p>\r\n<p>In this episode I cover my use of global variables.</p>\r\n<p>List of global variables along with associated comments explaining what they are used for</p>\r\n<pre><code># GLOBAL VARIABLES\r\n\r\nRemoteDevice = "pi@192.168.1.13"\r\n# Username and ip address of the remote device to control\r\n\r\nSeekMin = -6\r\n# Sets the minimum value of the variable SeekPosition\r\n\r\nSeekMax = 6\r\n# Sets the maximum value of the variable SeekPosition\r\n\r\nSeekPosition = 0\r\n# stores seek menu position,\r\n\r\nSeekMenu = False\r\n# used to track seek menu state, ie are we in seek menu or not\r\n\r\nFirstPass = True\r\n# Used to track 1st time button 5 (backlight toggle) is pushed, turns off blinkstick\r\n\r\nLcdLightOn = False\r\n# used to track toggle sate of backlight button 5\r\n\r\nMenuMin = 0\r\n# Sets the minimum value of variable "Menu"\r\n\r\nMenuMax = 2\r\n# Sets the maximum value of variable "Menu"\r\n\r\nMenu = 0\r\n# global variable used to keep trak of selected menu\r\n\r\nIrActive = False\r\n# used to track toggle state of active infrared buttons, when false disables\r\n# all buttons on the remote control except the blue button.\r\n\r\nStoredTime = 0\r\n# Stores curent time in seconds when a button is pushed, used by double button tap feature\r\n\r\n#GET_IP_CMD = "hostname –all-ip-addresses"\r\n# Debian 7 wheezy, Command to get IP adress\r\n\r\nGET_IP_CMD = "hostname --all-ip-addresses | cut -d' ' -f1"\r\n# Debian 8 jessie, Command to get IP adress\r\n\r\n#GET_ESSID_CMD = "iwconfig wlan0 | grep 'ESSID:' | cut -d':' -f2"\r\n# Debian 7 wheezy, Command to get wifi ESSID\r\n\r\nGET_ESSID_CMD = "/sbin/iwconfig wlan0 | grep 'ESSID:' | cut -d':' -f2"\r\n# Debian 8 wheezy, Command to get wifi ESSID\r\n\r\nGET_WIFI_STRENGTH_CMD = "/sbin/iwconfig wlan0 | grep 'Link Quality=' | awk '{ print $2 }'"\r\n# Command to get wifi signal strength</code></pre>\r\n',201,38,1,'CC-BY-SA','Podcasts, Linux, Command Line, Python, Raspberry Pi',0,0,1),
(2923,'2019-10-16','Describing how I listen to podcasts PART 5',1750,'In this episode I cover how I use my 2nd add on board the PiFace Control and Display','<p>Below are examples of messages shown on the screen during operation</p>\r\n<p><em>System Up</em> (Unfortunately I didn’t get a picture of this message)</p>\r\n<p><img src=\"https://hackerpublicradio.org/eps/hpr2923/Picture-01.JPG\" alt=\"Picture 01\" /><br />\r\nShows the unit waiting to get a wi-fi connection and get given an IP address.</p>\r\n<p><img src=\"https://hackerpublicradio.org/eps/hpr2923/Picture-02.JPG\" alt=\"Picture 02\" /><br />\r\nUnit goes to the HPR site and gets the number of days to free slot in the show queue. At the time when I took the picture the queue had a healthy 22 shows!</p>\r\n<p>Links to three previous shows I did that mention the Blinkstick</p>\r\n<ol type=\"1\">\r\n<li><p>Solving a problem I had with my Blinkstick<br />\r\n<a href=\"https://hackerpublicradio.org/eps.php?id=2089\" class=\"uri\">https://hackerpublicradio.org/eps.php?id=2089</a></p></li>\r\n<li><p>Tracking the HPR queue using python and a Blinkstick<br />\r\n<a href=\"https://hackerpublicradio.org/eps.php?id=2340\" class=\"uri\">https://hackerpublicradio.org/eps.php?id=2340</a></p></li>\r\n<li><p>Follow on to HPR2340 (Tracking the HPR queue in Python)<br />\r\n<a href=\"https://hackerpublicradio.org/eps.php?id=2344\" class=\"uri\">https://hackerpublicradio.org/eps.php?id=2344</a></p></li>\r\n</ol>\r\n<ul>\r\n<li>Link to Moc, Music On Console<br />\r\n<a href=\"https://moc.daper.net/\" class=\"uri\">https://moc.daper.net/</a></li>\r\n</ul>\r\n<p><img src=\"https://hackerpublicradio.org/eps/hpr2923/Picture-03.JPG\" alt=\"Picture 03\" /> <img src=\"https://hackerpublicradio.org/eps/hpr2923/Picture-04.JPG\" alt=\"Picture 04\" /><br />\r\nMenu 0 Podcasts screens</p>\r\n<pre><code>0 [PODCASTS]\r\n0 1 <|| PLAY/PAUSE (Toggles moc between play and Pause)\r\n0 2 << INFORMATION(Displays information about the current track)\r\n0 3 << (Move to previous track in playlist)\r\n0 4 << (Move to next track in playlist)\r\n0 5 LIGHT (Toggle back-light on LCD screen)\r\nPUSH IN TOP TOGGLE BUTTON (Seek forward or back in current track)</code></pre>\r\n<p><img src=\"https://hackerpublicradio.org/eps/hpr2923/Picture-05.JPG\" alt=\"Picture 05\" /> <img src=\"https://hackerpublicradio.org/eps/hpr2923/Picture-06.JPG\" alt=\"Picture 06\" /><br />\r\nMenu 1 Audiobooks screens</p>\r\n<pre><code>1 [AUDIOBOOKS]\r\n1 1 <|| PLAY/PAUSE (Toggles moc between play and Pause)\r\n1 2 << INFORMATION(Displays information about the current track)\r\n1 3 << (Move to previous track in playlist)\r\n1 4 << (Move to next track in playlist)\r\n1 5 LIGHT (Toggle back-light on LCD screen)\r\nPUSH IN TOP TOGGLE BUTTON (Seek forward or back in current track)</code></pre>\r\n<p><img src=\"https://hackerpublicradio.org/eps/hpr2923/Picture-07.JPG\" alt=\"Picture 07\" /> <img src=\"https://hackerpublicradio.org/eps/hpr2923/Picture-08.JPG\" alt=\"Picture 08\" /><br />\r\nMenu 2 System screens</p>\r\n<pre><code>2 [SYSTEM]\r\n2 1 Sys Information (System information)\r\n2 2 WiFi (Displays WiFi inofrmation such SSID & signal strength)\r\n2 3 HPR (Displays the number days to the next free slots on FPR que)\r\n2 4 Not shown, (Not in use)\r\n2 5 LIGHT (Toggle back-light on LCD screen)\r\nPUSH IN TOP TOGGLE BUTTON (Shut-down the Raspberry Pi)</code></pre>\r\n<p>Infra-red Sensor</p>\r\n<ul>\r\n<li><p>Example of my <a href=\"https://www.google.com/url?sa=i&rct=j&q=&esrc=s&source=images&cd=&cad=rja&uact=8&ved=2ahUKEwin95XTnLbeAhURzaQKHcNIADEQjRx6BAgBEAU&url=http%3A%2F%2Fwww.remotes4you.eu%2Fen%2Fsamsung-original-samsung-remote-control-aa59-00465.html&psig=AOvVaw04vHTRnb1mBQYLrBKpOAKf&ust=1541265724536724\">Samsung TV remote control</a></p></li>\r\n<li><p>Lirc Article from Wikipedia<br />\r\n<a href=\"https://en.wikipedia.org/wiki/LIRC\" class=\"uri\">https://en.wikipedia.org/wiki/LIRC</a></p></li>\r\n</ul>\r\n<p><img src=\"https://hacker
(2929,'2019-10-24','Recovering Files from a Dead MacBook Air',482,'I talk about recovering the files from my wife\'sdeadMacBookAirusinganUbuntuLiveCD.','<p>Italkaboutbecomingahouseholdherobyrecoveringmywife\'s files from her dead MacBook Air. Her laptop would not boot, shutting down seconds into the process each time she tried to start it up. I used an Ubuntu Live CD (DVD), with the commands <code>fdisk</code> and <code>fsck</code> to repair the damaged filesystem on the Mac. It still wouldn\'tbootevenwiththerepairedfilesystem,butIwasabletomountthedriveandcopyherfilestoaUSBdrive.</p>\r\n\r\n<h2>Links</h2>\r\n\r\n<ul>\r\n<li>BlogpostHowto:<ahref=\"https://miteshshah.github.io/mac/repair-fix-mac-hfs-partition-using-ubuntu/\">Repair/FixMACHFS+PartitionUsingUbuntu</a></li>\r\n</ul>\r\n',238,0,0,'CC-BY-SA','Ubuntu,MacOSX,FileRecovery,FilesystemRepair',0,0,1),
(2931,'2019-10-28','Wallabag for on premises article aggregation',690,'In this episode, I describes my trials and eventual triumph in installing Wallabag','<h2 id=\"addendum\">Addendum</h2>\r\n<p>I forgot to mention that Wallabag is also offered as a service for a small fee. Check out the website for more information.</p>\r\n<h2 id=\"links\">Links</h2>\r\n<ul>\r\n<li><a href=\"https://wallabag.org/en\">Wallabag website</a></li>\r\n<li><a href=\"https://doc.wallabag.org/en/admin/installation/installation.html\">Wallabag documentation</a></li>\r\n<li><a href=\"https://hub.docker.com/r/wallabag/wallabag\">Wallabag on Docker Hub</a></li>\r\n<li><a href=\"https://cockpit-project.org/\">Cockpit website</a></li>\r\n</ul>\r\n',300,0,0,'CC-BY-SA','self-hosted, docker',0,0,1),
(2939,'2019-11-07','Submit a show to Hacker Public Radio in 10 easy steps',601,'This is a 10 step walkthrough of submitting a show to HPR','<h2 id=\"steps\">Steps</h2>\r\n<ol>\r\n<li>Record your episode</li>\r\n<li>Go to <a href=\"https://hackerpublicradio.org\" class=\"uri\">https://hackerpublicradio.org</a></li>\r\n<li>Click on "Give Shows"</li>\r\n<li>Click on "Calendar" (the link is not obvious, so use your browser\'sfindfunctionalitytosearchfortheword"Calendar").<br/>\r\n<small><em>Edit:Pleaseusethe⇧Upload⇧linkinthemenubar</em></small>\r\n</li>\r\n<li>Chooseaslot</li>\r\n<li>Submityouremailaddress</li>\r\n<li>Clickthelinkintheconfirmationemail</li>\r\n<li>Createyourprofile(ifnew),thenfillintheformwithtitle,summaryandshownotes</li>\r\n<li>Attachyourepisodeandsubmit(waitforlonguploadprocess)</li>\r\n<li>Receiveyourconfirmationemail,andenjoyyourepisode!</li>\r\n</ol>\r\n',300,45,0,'CC-BY-SA','podcast,hpr,how-to',0,0,1),
(2926,'2019-10-21','Full Circle Magazine',181,'Just a short show to request support for one of the Linux communities longest standing Magazines','<p>Hi Everyone in HPR land this is Tony Hughes coming to you from Studio B at Woodbrooke Quaker Study Centre in Birmingham in the UK, where I am currently staying for a week of voluntary work.</p>\r\n<p>The reason for this short episode is to talk about a community magazine that I have been reading since I started to use Ubuntu Linux back in 2007. Full Circle magazine actually produced a pilot issue in April of 2007 and issue one was issued in June 2007. All issues are published as a free pdf download and all the content is under a Creative Commons licence.</p>\r\n<p>Free Circle Magazine initially started as an Ubuntu (and official spins of Ubuntu) magazine but over the years while still being officially about Ubuntu or Linux Distributions based on Ubuntu, many of the articles are applicable to those across the Linux community.</p>\r\n<p>Over the years, as well as printing one off articles about individuals’ journey to using Linux, reviews and letters from readers, there have been regular series on topics such as Inkscape, Python programming, Open/LibreOffice, Virtualisation and much more.</p>\r\n<p>Sadly after over 12 years of producing a regular monthly magazine for the Linux community some of the regular article series are coming to an end and due to ill health at least one regular writer is not able to contribute at the moment, and this is leaving the magazine short of content and in danger of possibly coming to an end.</p>\r\n<p>As a podcast community that is used to the idea of crowd sourced content, many of whom are also Linux users, could I ask that some of you that have read Full Circle, but never contributed, consider sending in some content. It could be an article on how you started using Linux, about some Linux software that you think the readers may be interested in learning more about, or just a letter to Ronnie to say thanks for all his efforts putting out a magazine every month for the last 12+ years.</p>\r\n<p>Like many things we often don’t miss them until they are gone, and I would hate to think that Full Circle Magazine is one of those things that I will miss in the future. I have put my money where my mouth is and in coming issues you may see me in print, talking about podcasting. You could even use any writing you do as the base for a HPR show, and achieve two goals in one go.</p>\r\n<p>All the best for now.</p>\r\n<h2 id=\"links\">Links</h2>\r\n<ul>\r\n<li><a href=\"https://www.woodbrooke.org.uk/\" class=\"uri\">https://www.woodbrooke.org.uk/</a></li>\r\n<li><a href=\"https://fullcirclemagazine.org/\" class=\"uri\">https://fullcirclemagazine.org/</a></li>\r\n<li><a href=\"https://fullcirclemagazine.org/issue-149/\" class=\"uri\">https://fullcirclemagazine.org/issue-149/</a></li>\r\n</ul>\r\n',338,0,0,'CC-BY-SA','Full Circle Magazine, Ubuntu, Linux, Free Magazine, Creative Commons',0,0,1),
(2934,'2019-10-31','Server Basics 106: Namespaces and containers',2033,'Klaatu talks about the unshare and lxc commands','<p>\r\nNamespaces provide context and constraints for processes on a Linux system.\r\nThey are utilised by the infrastructure of \"the cloud\" to create distinct \"containers\", in which processes may run without awareness of the system they are actually running upon.\r\n</p>\r\n\r\n<pre><code>\r\n// prove you are not running some process\r\n\r\n$ pidof tcsh\r\n// nothing\r\n\r\n$ sudo pidof tcsh\r\n// nothing\r\n\r\n// launch tcsh in a new namespace with unshare:\r\n\r\n$ sudo unshare --fork --pid --mount-proc tcsh\r\n\r\n// from within that session:\r\n\r\n# pidof tcsh\r\n1\r\n\r\n// wait what??\r\n// yes tcsh is the first pid of its own namespace\r\n\r\n// from another term\r\n$ ps 1\r\ninit\r\n\r\n$ pidof tcsh\r\n26814\r\n\r\n// from inside the namespace, pid is seen as 1\r\n// from outside, pid is normal\r\n\r\n$ ps tree | less\r\n// search for tcsh\r\n\r\n// See evidence of namespaces:\r\n\r\n$ ls /proc/*/ns\r\n\r\n$ ls /proc/26814/ns\r\nipc net pid user uts [...]\r\n</code></pre>\r\n\r\n<p>\r\nTo see this in action for a slightly more pragmatic purpose, you can use the <code>lxc</code> command.\r\nThe <a href=\"https://linuxcontainers.org/lxc/getting-started/\" target=\"_blank\">LXC</a> system uses namespaces and cgroups to create functional containers that act, more or less, like a Virtual Machine, except that they are built in containers so that they do not have to emulate hardware.\r\n</p>\r\n<p>If your system doesn\'thaveLXCinstalled,firstinstallit:\r\n</p>\r\n\r\n<pre><code>\r\n$sudodnfinstalllxclxc-templateslxc-doc\r\n\r\n//onUbuntuorDebian:\r\n\r\n$aptinstalllxc\r\n</code>\r\n</pre>\r\n\r\n<p>\r\nYoualsoneedtocreateanetworkbridgesothatyourcontainerandyourhostsystem(that\'s the computer you\'resittinginfrontofrightnow)cancommunicate.\r\n</p>\r\n\r\n<pre><code>\r\n$sudoiplinkaddbr0typebridge\r\n$sudoipaddrshowbr0\r\n7:br0:<BROADCAST,MULTICAST>mtu1500qdisc\r\nnoopstateDOWNgroupdefaultqlen1000\r\nlink/ether26:fa:21:5f:cf:99brdff:ff:ff:ff:ff:ff\r\n</code></pre>\r\n<p>\r\nNowgiveyourbridgedeviceanIPaddressthatdoesn\'t conflict with any existing IP address on your network:\r\n</p>\r\n<pre><code>\r\n$ sudo ip addr add 192.168.168.168 dev br0\r\n$ sudo ip link set br0 up\r\n</code></pre>\r\n\r\n<p>\r\nCreate a configuration for your container.\r\nYou can base this on the samples provided by lxc (located in /usr/share/docs/lxc or similar).\r\nEverything but <strong>veth</strong>, <strong>br0</strong>, and <strong>up</strong> is arbitrary. You can make up all the values.\r\n</p>\r\n\r\n<pre><code>\r\nlxc.utsname = hackerpublicradio\r\nlxc.network.type = veth\r\nlxc.network.flags = up\r\nlxc.network.link = br0\r\nlxc.network.hwaddr = 4a:49:43:49:79:bd\r\nlxc.network.ipv4 = 192.168.168.1/24\r\nlxc.network.ipv6 = 2003:db8:1:0:214:c0ff:ee0b:3596\r\n</code></pre>\r\n\r\n<p>\r\nNow install an OS into your container.\r\nOS templates are provided by LXC in /usr/share/doc/lxc/templates or a similar location.\r\n</p>\r\n\r\n<pre><code>\r\n$ ls -m /usr/share/lxc/templates/\r\nlxc-alpine, lxc-altlinux, lxc-archlinux, lxc-busybox, lxc-centos [...]\r\n</code></pre>\r\n\r\n<p>\r\nChoose a template and install.\r\nI use Alpine in the recorded show, because it\'ssupposedtobereallysmall.\r\nIdon\'t necessarily recommend Alpine. I recommend Slackware, of course.\r\n</p>\r\n\r\n<pre><code>\r\n$ sudo lxc-create --name slackware --template slackware\r\n</code></pre>\r\n\r\n<p>\r\nOnce the install is done, start your container:\r\n</p>\r\n\r\n<pre><code>\r\n$ sudo lxc-start --name slackware\r\n--rcfile ~/mycontainer.conf\r\n</code></pre>\r\n\r\n<p>\r\nNow attach to the container:\r\n</p>\r\n\r\n<pre><code>\r\n$ sudo lxc-attach --name slackware\r\n#\r\n</code></pre>\r\n\r\n<p>\r\nRun a command.\r\n</p>\r\n\r\n<pre><code>\r\n# uname -av\r\nLinux hackerpublicradio 5.3.0.x86_64 #1 SMP Wed Oct 10 18:34:01 UTC 2019 x86_64 x86_64 x8
(2935,'2019-11-01','The work of fire fighters, part 3',1807,'The continued introduction into the work of fire fighters','<h2 id=\"continued-general-basic-knowledge-of-fire-fighting.\">Continued general basic knowledge of fire fighting.</h2>\r\n<p>Talking about large water system, breathing gear, “the walk”, flash-over and back-draft.</p>\r\n',369,0,0,'CC-BY-SA','fire fighting, fire brigade',0,0,1),
(2941,'2019-11-11','Server Basics 107: Minishift and container management',2331,'Klaatu introduces Minishift, a local test environment for a single-node cloud','<p>Learn \"the OS of the cloud\" with <a href=\"https://www.okd.io/minishift/\" target=\"_blank\">minishift</a> or <a href=\"https://github.com/kubernetes/minikube\" target=\"_blank\">minikube</a>\r\n</p>',78,0,0,'CC-BY-SA','server,container,docker,serverless,cloud,sys admin,kubernetes',0,0,1),
(2943,'2019-11-13','Music as Life',582,'quantum harmony','<ul>\r\n<li>Thomas Orr Anderson<br />\r\n<a href=\"https://www.phisonics.com/about-2/\" class=\"uri\">https://www.phisonics.com/about-2/</a></li>\r\n<li>Find the audio that I listened to here<br />\r\n<a href=\"https://www.phisonics.com/podcast-blog-research/\" class=\"uri\">https://www.phisonics.com/podcast-blog-research/</a></li>\r\n</ul>\r\n<p>Background sounds provided by some road noise, and a train.</p>\r\n',329,0,1,'CC-BY-SA','science',0,0,1),
(3196,'2020-11-02','HPR Community News for October 2020',5375,'Dave and Ken review the months happenings, and try various pronunciations of Cedric De Vroeys name.','<style>\ntable td.shrink {\n white-space:nowrap\n}\n</style>\n\n<h2>New hosts</h2>\n<p>\nThere were no new hosts this month.\n</p>\n\n<h2>Last Month\'sShows</h2>\n<tableid=\"t01\">\n<tr>\n<th>Id</th>\n<th>Day</th>\n<th>Date</th>\n<th>Title</th>\n<th>Host</th>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3174\"target=\"_blank\">3174</a></strong></td>\n<td>Thu</td>\n<tdclass=\"shrink\">2020-10-01</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3174\"target=\"_blank\">LinuxInlawsS01E14:Thebigprogramminglanguagepanel</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0384.html\"target=\"_blank\">monochromec</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3175\"target=\"_blank\">3175</a></strong></td>\n<td>Fri</td>\n<tdclass=\"shrink\">2020-10-02</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3175\"target=\"_blank\">InternationalKeyboard</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0198.html\"target=\"_blank\">Ahuka</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3176\"target=\"_blank\">3176</a></strong></td>\n<td>Mon</td>\n<tdclass=\"shrink\">2020-10-05</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3176\"target=\"_blank\">HPRCommunityNewsforSeptember2020</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0159.html\"target=\"_blank\">HPRVolunteers</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3177\"target=\"_blank\">3177</a></strong></td>\n<td>Tue</td>\n<tdclass=\"shrink\">2020-10-06</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3177\"target=\"_blank\">ZerocostVPN</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0342.html\"target=\"_blank\">norrist</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3178\"target=\"_blank\">3178</a></strong></td>\n<td>Wed</td>\n<tdclass=\"shrink\">2020-10-07</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3178\"target=\"_blank\">FinishingtheRecumbentBicycle</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0326.html\"target=\"_blank\">BrianinOhio</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3179\"target=\"_blank\">3179</a></strong></td>\n<td>Thu</td>\n<tdclass=\"shrink\">2020-10-08</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3179\"target=\"_blank\">MakeMKVtobackupmedia,andaQuestion</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0318.html\"target=\"_blank\">Archer72</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3180\"target=\"_blank\">3180</a></strong></td>\n<td>Fri</td>\n<tdclass=\"shrink\">2020-10-09</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3180\"target=\"_blank\">GIMP:MiscellaneousTools</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0198.html\"target=\"_blank\">Ahuka</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3181\"target=\"_blank\">3181</a></strong></td>\n<td>Mon</td>\n<tdclass=\"shrink\">2020-10-12</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3181\"target=\"_blank\">RealVNCcloudoffering</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0129.html\"target=\"_blank\">JWP</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3182\"target=\"_blank\">3182</a></strong></td>\n<td>Tue</td>\n<tdclass=\"shrink\">2020-10-13</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3182\"target=\"_blank\">Yo-ho-ho,andabottleofCholecalciferol</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0225.html\"target=\"_blank\">DaveMorris
(3221,'2020-12-07','HPR Community News for November 2020',2948,'HPR Volunteers talk about shows released and comments posted in November 2020','<style>\ntable td.shrink {\n white-space:nowrap\n}\n</style>\n\n<h2>New hosts</h2>\n<p>\nWelcome to our new host: <br />\n\n <a href=\"https://hackerpublicradio.org/correspondents/0388.html\" target=\"_blank\">Padraig Jeroen Fallon</a>.\n</p>\n\n<h2>Last Month\'sShows</h2>\n<tableid=\"t01\">\n<tr>\n<th>Id</th>\n<th>Day</th>\n<th>Date</th>\n<th>Title</th>\n<th>Host</th>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3196\"target=\"_blank\">3196</a></strong></td>\n<td>Mon</td>\n<tdclass=\"shrink\">2020-11-02</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3196\"target=\"_blank\">HPRCommunityNewsforOctober2020</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0159.html\"target=\"_blank\">HPRVolunteers</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3197\"target=\"_blank\">3197</a></strong></td>\n<td>Tue</td>\n<tdclass=\"shrink\">2020-11-03</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3197\"target=\"_blank\">Pens,pencils,paperandink-3</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0225.html\"target=\"_blank\">DaveMorriss</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3198\"target=\"_blank\">3198</a></strong></td>\n<td>Wed</td>\n<tdclass=\"shrink\">2020-11-04</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3198\"target=\"_blank\">IncomeLifeinsuranceandthenChopin</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0383.html\"target=\"_blank\">PaulQuirk</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3199\"target=\"_blank\">3199</a></strong></td>\n<td>Thu</td>\n<tdclass=\"shrink\">2020-11-05</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3199\"target=\"_blank\">BadAudioWeedEaterBugsSprinklerandBubbles!</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0036.html\"target=\"_blank\">operat0r</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3200\"target=\"_blank\">3200</a></strong></td>\n<td>Fri</td>\n<tdclass=\"shrink\">2020-11-06</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3200\"target=\"_blank\">BetterSocialMedia17-OcapPub</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0198.html\"target=\"_blank\">Ahuka</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3201\"target=\"_blank\">3201</a></strong></td>\n<td>Mon</td>\n<tdclass=\"shrink\">2020-11-09</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3201\"target=\"_blank\">Asmallintroto3Dprinting</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0369.html\"target=\"_blank\">JeroenBaten</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3202\"target=\"_blank\">3202</a></strong></td>\n<td>Tue</td>\n<tdclass=\"shrink\">2020-11-10</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3202\"target=\"_blank\">AbigQuestion</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0388.html\"target=\"_blank\">PadraigJeroenFallon</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3203\"target=\"_blank\">3203</a></strong></td>\n<td>Wed</td>\n<tdclass=\"shrink\">2020-11-11</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3203\"target=\"_blank\">ThePaulQuirkshow:RetroComputing</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0383.html\"target=\"_blank\">PaulQuirk</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3204\"target=\"_blank\">3204</a></strong></td>\n<td>Thu</td>\n<tdclass=\"shrink\">2020-11-12</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3204\"target=\"_blank\">GettingStarte
(2942,'2019-11-12','Why I love lisps',509,'A very wooden and scripted episode about why I love the lisp programming language family','<h2 id=\"syntax-example\">Syntax example</h2>\r\n<pre><code>(define (fib-rec n)\r\n (if (< n 2)\r\n n\r\n (+ (fib-rec (- n 1))\r\n (fib-rec (- n 2)))))\r\n</code></pre>\r\n<h2 id=\"structured-editing\">Structured Editing</h2>\r\n<p>Parinfer: <a href=\"https://shaunlebron.github.io/parinfer/\" class=\"uri\">https://shaunlebron.github.io/parinfer/</a></p>\r\n<p>Paredit: <a href=\"https://www.emacswiki.org/emacs/ParEdit\" class=\"uri\">https://www.emacswiki.org/emacs/ParEdit</a></p>\r\n<h2 id=\"clojure-libraries\">Clojure libraries</h2>\r\n<p>core.match (adds pattern matching): <a href=\"https://github.com/clojure/core.match\" class=\"uri\">https://github.com/clojure/core.match</a></p>\r\n<p>core.logic (prolog-like stuff): <a href=\"https://github.com/clojure/core.logic\" class=\"uri\">https://github.com/clojure/core.logic</a></p>\r\n<p>overtone: <a href=\"https://github.com/overtone/overtone\" class=\"uri\">https://github.com/overtone/overtone</a></p>\r\n<h2 id=\"other-stuff\">Other stuff</h2>\r\n<p>Clojure macro explanation: <a href=\"https://learnxinyminutes.com/docs/clojure-macros/\" class=\"uri\">https://learnxinyminutes.com/docs/clojure-macros/</a></p>\r\n<h2 id=\"books\">Books</h2>\r\n<p>The little schemer: <a href=\"https://mitpress.mit.edu/books/little-schemer-fourth-edition\" class=\"uri\">https://mitpress.mit.edu/books/little-schemer-fourth-edition</a></p>\r\n<p>Clojure for the brave and true: <a href=\"https://www.braveclojure.com/\" class=\"uri\">https://www.braveclojure.com/</a></p>\r\n',381,0,0,'CC-BY-SA','lisp, programming',0,0,1),
(2955,'2019-11-29','Machine Learning / Data Analysis Basics',1293,'We talk about different machine learning techniques','<p>In this episode, I talk about different techniques that we can use to predict the outcome of some question depending on input features.</p>\r\n<p>The different techniques I will go through are the ZeroR and OneR that will create a baseline for the rest of the methods.</p>\r\n<p>Next up, we have the Naive Bayes classifier that is simple but powerful for some applications.</p>\r\n<p>Nearest neighbor and Decision trees are next up that requires more training but is very efficient when you infer results.</p>\r\n<p>Multi-layer perceptron (MLP) is the first technique that is close to the ones we usually see in Machine Learning frameworks used today. But it is just a precursor to Convolutional Neural Network (CNN) because of the size requirements. MLPs have the same size for all the hidden layers, which makes it unfeasible for larger networks.</p>\r\n<p>CNNs, on the other hand, uses subsampling that will shrink the layer maps to reduce the size of the network without reducing the accuracy of the predictions.</p>\r\n<h2 id=\"links\">Links</h2>\r\n<ul>\r\n<li>Some references for further reading on Wikipedia.\r\n<ul>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Naive_Bayes_classifier\" class=\"uri\">https://en.wikipedia.org/wiki/Naive_Bayes_classifier</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Nearest_neighbor_search\" class=\"uri\">https://en.wikipedia.org/wiki/Nearest_neighbor_search</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Decision_tree\" class=\"uri\">https://en.wikipedia.org/wiki/Decision_tree</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Support-vector_machine\" class=\"uri\">https://en.wikipedia.org/wiki/Support-vector_machine</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Multilayer_perceptron\" class=\"uri\">https://en.wikipedia.org/wiki/Multilayer_perceptron</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Convolutional_neural_network\" class=\"uri\">https://en.wikipedia.org/wiki/Convolutional_neural_network</a></li>\r\n</ul></li>\r\n<li>A video I made some years ago where you can see some visual aids for this subject.<br />\r\n<a href=\"https://youtu.be/Xys1N_7MbSs\" class=\"uri\">https://youtu.be/Xys1N_7MbSs</a></li>\r\n</ul>',382,0,0,'CC-BY-SA','machine learning, basics, theory',0,0,1),
(2944,'2019-11-14','ONICS Basics Part 4: Network Flows and Connections',989,'I try to add a bit more basic networking info while writing a quick script for Dave Morris','<h1 id=\"terminology\">Terminology</h1>\r\n<ul>\r\n<li>connection - a bi-directional communication channel between two programs over a network</li>\r\n<li>client - the initiator of a connection</li>\r\n<li>server - the receiver of the connection</li>\r\n<li>port - a common term for the address of a program or service on a given machine</li>\r\n<li>5-tuple - the combination of protocol, client machine network address, client port, server machine network address, server port that uniquely identifies a connection</li>\r\n<li>flow - a grouping of packets to be treated in a common way</li>\r\n<li>microflow - a flow with a fine level of granularity such as the packets from one direction of traffic in a connection</li>\r\n</ul>\r\n<h1 id=\"the-topflowsh-script\">The topflow.sh Script</h1>\r\n<pre><code>#!/bin/sh\r\n\r\n# Start a capture in the background that drops the packets\r\n# and just reports the flow events\r\npktin $1 | nftrk -d -f /tmp/flows.txt &\r\nPID=$!\r\n\r\n# On CTRL-C clean kill the capture and clean up\r\ntrap "kill $PID ; rm -f /tmp/flows.txt /tmp/topflows.txt /tmp/namecache.txt ; exit 0" INT TERM\r\n\r\n# Once per second do\r\n# look at the last 100 flows\r\n# sort them by 5-tuple\r\n# remove duplicates\r\n# convert ports, protocols and addresses to names\r\n# sort by data usage per flow in reverse order (highest first)\r\n# a little more pretty printing\r\n# only take the top 20 lines\r\n# clear the screen and print the result\r\nwhile [ 1 ] ; do\r\n tail -100 /tmp/flows.txt |\r\n sort -s -t '|' -k 3,3 |\r\n awk -f uniqflows.awk |\r\n awk -f prflow.awk |\r\n sort -s -t ',' -k 3 -r |\r\n awk -f columns.awk |\r\n head -20 > /tmp/topflows.txt\r\n clear\r\n cat /tmp/topflows.txt\r\n sleep 1\r\ndone\r\n</code></pre>\r\n<p>You can find the complete code at: <a href=\"https://gitlab.com/onics/onics-examples\" class=\"uri\">https://gitlab.com/onics/onics-examples</a></p>\r\n',259,61,0,'CC-BY-SA','command line networking',0,0,1),
(2945,'2019-11-15','Saturday at OggCamp Manchester 2019',2225,'Interviews and chat from the UK\'slargestFLOSSevent.','<p>\r\n<ahref=\"https://www.oggcamp.org/\">OggCamp</a>isanunconferencecelebratingFreeCulture,FreeandOpenSourceSoftware,hardwarehacking,digitalrights,andallmannerofcollaborativeculturalactivitiesandiscommittedtocreatingaconferencethatisasinclusiveaspossible.<br/>\r\nThisyearateamofHPRvolunteershittheshow.\r\n</p>\r\n<p>\r\n<ahref=\"../eps/hpr2945/IMG_20191018_122746Z.jpg\"><imgsrc=\"../eps/hpr2945/IMG_20191018_122746Z-small.jpg\"></a><br/>\r\nKen\'s recording kit and some of the stickers.\r\n</p>\r\n<p>\r\n<a href=\"../eps/hpr2945/IMG_20191019_081508Z.jpg\"><img src=\"../eps/hpr2945/IMG_20191019_081508Z-small.jpg\"></a><br />\r\n<a href=\"https://hackerpublicradio.org/correspondents/0225.html\">Dave</a>, <a href=\"https://hackerpublicradio.org/correspondents/0268.html\">Andrew Conway/mcnalu</a> and Timttmy getting the booth ready.\r\n</p>\r\n<p>\r\n<a href=\"../eps/hpr2945/IMG_20191019_081704Z.jpg\"><img src=\"../eps/hpr2945/IMG_20191019_081704Z-small.jpg\"></a><br />\r\nOnly <a http=\"https://hackerpublicradio.org/correspondents.php\">HPR hosts</a> can sign the booth.\r\n</p>\r\n<p>\r\n<a href=\"../eps/hpr2945/IMG_20191019_085140Z.jpg\"><img src=\"../eps/hpr2945/IMG_20191019_085140Z-small.jpg\"></a><br />\r\n<a href=\"https://hackerpublicradio.org/correspondents/0370.html\">Yannick</a> signs the booth.\r\n</p>\r\n<p>\r\n<a href=\"../eps/hpr2945/IMG_20191019_091705Z.jpg\"><img src=\"../eps/hpr2945/IMG_20191019_091705Z-small.jpg\"></a><br />\r\nTimttmy\'sscripttoturnanAndroidphoneintoawebcam.Twoversionsofthescripttotakeascreenshotandpostittotheweb.\r\n</p>\r\n<p>\r\n<ahref=\"../eps/hpr2945/IMG_20191019_091709Z.jpg\"><imgsrc=\"../eps/hpr2945/IMG_20191019_091709Z-small.jpg\"></a><br/>\r\nSurveillancestate?\r\n</p>\r\n<p>\r\n<ahref=\"../eps/hpr2945/IMG_20191019_095727Z.jpg\"><imgsrc=\"../eps/hpr2945/IMG_20191019_095727Z-small.jpg\"></a><br/>\r\nOurlatesthost<ahref=\"https://hackerpublicradio.org/correspondents/0381.html\">Nihilazo</a>signsthebooth.\r\n</p>\r\n<p>\r\n<ahref=\"../eps/hpr2945/IMG_20191019_133636Z.jpg\"><imgsrc=\"../eps/hpr2945/IMG_20191019_133636Z-small.jpg\"></a><br/>\r\nAnInterviewwithBanParsonsfromthe<ahref=\"https://matrix.org/\">Matrix</a><em>Anopennetworkforsecure,decentralizedcommunication</em>\r\n</p>\r\n<p>\r\n<ahref=\"../eps/hpr2945/IMG_20191019_135427Z.jpg\"><imgsrc=\"../eps/hpr2945/IMG_20191019_135427Z-small.jpg\"></a><br/>\r\nAnInterviewwith<ahref=\"https://www.mystorm.uk/\">mystorm.uk</a>makersoftheopenFPGA.AnFPGAchipisare-programmablepieceofsiliconhardware,itcanbereconfiguredorprogrammedtoalogiccircuitofyourowndesign.\r\n\r\n<br/>\r\n<em>In2016wedecidedtosetupupthemyStormprojectinordertobuildOpenSourceFPGAhardware.Severalyearslaterwearebuildingthe5thgenerationof<ahref=\"https://github.com/folknology/BlackIceMx/wiki\">BlackIce</a>Developmentboards.<ahref=\"https://www.tindie.com/products/Folknology/blackice-mx/\">BlackIceMx</a>thelatestgenerationofourhardwarehasbeenbuiltusingBlackEdgeopenhardwarestandardwhichenablethe\'Core\'Board<ahref=\"https://github.com/folknology/IceCore/wiki/IceCore-Getting-Started\">IceCore</a>tobeseparatedfromitscarrierboardwhichprovidesMixModandPmodhardwareadd-ons.Pleasetakealookatthe<ahref=\"https://forum.mystorm.uk\">myStormforum</a>toaskquestionsandparticipateinourcommunity.</em>\r\n\r\n</p>\r\n<p>\r\n<ahref=\"../eps/hpr2945/IMG_20191019_135429Z.jpg\"><imgsrc=\"../eps/hpr2945/IMG_20191019_135429Z-small.jpg\"></a><br/>\r\n</p>\r\n<p>\r\n<ahref=\"../eps/hpr2945/IMG_20191019_141427Z.jpg\"><imgsrc=\"../eps/hpr2945/IMG_20191019_141427Z-small.jpg\"></a><br/>\r\n</p>\r\n<p>\r\n<ahref=\"../eps/hpr2945/IMG_20191019_143611Z.jpg\"><imgsrc=\"../eps/hpr2945/IMG_20191019_143611Z-small.jpg\"></a><br/>\r\nAnInterviewwithErikGrun
(2946,'2019-11-18','Sunday at OggCamp Manchester 2019',3378,'Interviews and chat from the UK\'slargestFLOSSevent.','<p>\r\n<ahref=\"../eps/hpr2946/434340905_92324.jpg\"><imgsrc=\"../eps/hpr2946/434340905_92324-small.jpg\"></a><br/>\r\n<ahref=\"https://hackerpublicradio.org/correspondents/0288.html\">beni</a>,<ahref=\"https://hackerpublicradio.org/correspondents/0268.html\">AndrewConway/mcnalu</a>,Timttmy,and<ahref=\"https://hackerpublicradio.org/correspondents/0225.html\">Dave</a>attheHPRbooth.\r\n</p>\r\n<p>\r\n<ahref=\"../eps/hpr2946/IMG_20191020_100452Z.jpg\"><imgsrc=\"../eps/hpr2946/IMG_20191020_100452Z-small.jpg\"></a><br/>\r\nMichaelfrom<ahref=\"https://www.electricflapjack.com/\">ElectricFlapJack</a>CustomBuiltGuitars,andauthorof<ahref=\"https://efguitars.s3.amazonaws.com/fretboard-generator.html\">FretboardTemplateGenerator</a>availableon<ahref=\"https://github.com/mdales/Fretboard-generator\">GitHub</a>\r\n</p>\r\n<p>\r\n<ahref=\"../eps/hpr2946/IMG_20191020_132900Z.jpg\"><imgsrc=\"../eps/hpr2946/IMG_20191020_132900Z-small.jpg\"></a><br/>\r\nPerspextemplateforcarvingthebodyandneck.\r\n</p>\r\n<p>\r\n<ahref=\"../eps/hpr2946/IMG_20191020_132904Z.jpg\"><imgsrc=\"../eps/hpr2946/IMG_20191020_132904Z-small.jpg\"></a><br/>\r\nAworkinprogress.\r\n</p>\r\n<p>\r\n<ahref=\"../eps/hpr2946/IMG_20191020_132909Z.jpg\"><imgsrc=\"../eps/hpr2946/IMG_20191020_132909Z-small.jpg\"></a><br/>\r\nToolsformakingguitar,includingthetooltoroundthefrets.\r\n</p>\r\n<p>\r\n<ahref=\"../eps/hpr2946/IMG_20191020_132913Z.jpg\"><imgsrc=\"../eps/hpr2946/IMG_20191020_132913Z-small.jpg\"></a><br/>\r\nAndofcourseyouneedaguitarstand.\r\n</p>\r\n<p>\r\n<ahref=\"../eps/hpr2946/IMG_20191020_132918Z.jpg\"><imgsrc=\"../eps/hpr2946/IMG_20191020_132918Z-small.jpg\"></a><br/>\r\n<ahref=\"https://efguitars.s3.amazonaws.com/fretboard-generator.html\">FretboardTemplateGenerator</a>availableon<ahref=\"https://github.com/mdales/Fretboard-generator\">GitHub</a>\r\n</p>\r\n<p>\r\n<ahref=\"../eps/hpr2946/IMG_20191020_101726Z.jpg\"><imgsrc=\"../eps/hpr2946/IMG_20191020_101726Z-small.jpg\"></a><br/>\r\nTaiKedzierskihangingoutwith\"Grumpy\"MikeCook.\r\n</p>\r\n<p>\r\n<ahref=\"../eps/hpr2946/IMG_20191020_101754Z.jpg\"><imgsrc=\"../eps/hpr2946/IMG_20191020_101754Z-small.jpg\"></a><br/>\r\nMikeproduceselectronicmusicalinstrumentsforpeoplewithaccessibilityissues.\r\n</p>\r\n<p>\r\n<ahref=\"../eps/hpr2946/IMG_20191020_103658Z.jpg\"><imgsrc=\"../eps/hpr2946/IMG_20191020_103658Z-small.jpg\"></a><br/>\r\nHealsohasabookcalled<ahref=\"https://www.apress.com/gp/book/9781484217207\">ArduinoMusicandAudioProjects</a>tohelpyoudothisyourself.\r\n</p>\r\n<p>\r\n<ahref=\"../eps/hpr2946/IMG_20191020_103704Z.jpg\"><imgsrc=\"../eps/hpr2946/IMG_20191020_103704Z-small.jpg\"></a><br/>\r\n<em>\r\nAt<ahref=\"https://www.drakemusic.org/\">DrakeMusic</a>weareleadersinmusic,disabilityandtechnology.<br/>\r\nWeareinnovators,educators,curatorsandadvocates.Webelieveeveryonehastherighttoexpressthemselvescreativelythroughmusic.Weusenewtechnologiesandideastoopenupaccesstomusicforall.Ourvisionisaworldwheredisabledandnon-disabledmusiciansworktogetherasequals.</em>\r\n</p>\r\n<p>\r\n<ahref=\"../eps/hpr2946/IMG_20191020_103728Z.jpg\"><imgsrc=\"../eps/hpr2946/IMG_20191020_103728Z-small.jpg\"></a><br/>\r\nThe<em>batbase</em>.\r\n</p>\r\n<p>\r\n<ahref=\"../eps/hpr2946/IMG_20191020_103744Z.jpg\"><imgsrc=\"../eps/hpr2946/IMG_20191020_103744Z-small.jpg\"></a><br/>\r\n</p>\r\n<p>\r\n<ahref=\"../eps/hpr2946/IMG_20191020_103749Z.jpg\"><imgsrc=\"../eps/hpr2946/IMG_20191020_103749Z-small.jpg\"></a><br/>\r\n</p>\r\n<p>\r\n<ahref=\"../eps/hpr2946/IMG_20191020_103821Z.jpg\"><imgsrc=\"../eps/hpr2946/IMG_20191020_103821Z-small.jpg\"></a><br/>\r\n</p>\r\n<p>\r\n<ahref=\"../eps/hpr2946/IMG_20191020_103722Z.jpg\"><imgsrc=\"../eps/hpr2946/IMG_20191020_103722Z-small.jpg\"></a><br/>\r\nThe<em>CattleCaster</em>.\r\n</p>\r\n<
(2947,'2019-11-19','The Mimblewimble Protocol',1261,'mimblewimble is a new blockchain protocol for scalability, privacy and fungibility','<p>Financial privacy is critical for adoption of cryptocurrency as a means of exchange. Individuals worry about employers monitoring their spending details, insurers increasing rates based on purchases and landlords raising rents when they get a promotion. Businesses can only operate using cryptocurrency if they can prevent disclosure of vendor payments, rates paid to suppliers, payroll details, and so on. At the same time, they need to selectively disclose financial data to governments and might need to demonstrate compliance in some industries.</p>\r\n<p>Mimblewimble is a new protocol that uses cryptography to achieve striking reductions in blockchain size, so users can run a full node on low powered devices like phones. It offers the strongest privacy protection assurances around, through a variety of clever tricks. For one thing, transaction history is not recorded, which also results in a smaller blockchain. There are no addresses and no transaction amounts are recorded.</p>\r\n<p>We’re not going to focus on the cryptography, although it’s a fascinating example of just how much progress is being made in recent years. We’ll focus instead on what makes this mysterious network protocol unique among cryptocurrencies.</p>\r\n',379,110,0,'CC-BY-SA','blockchain, privacy',0,0,1),
(2954,'2019-11-28','Wrestling As You Like It episode 1',462,'A Wrestling podcast reporting on indie wrestling. Today we are talking about different TV styles.','<p>TV and pro wrestling go hand in hand. Both have fed off of each other, and with the internet we are now exposed to many different promotions with their own visual style in order to broadcast wrestling in the ring.</p>\r\n',354,0,1,'CC-BY-SA','Pro Wrestling',0,0,1),
(2949,'2019-11-21','Grin and Beam: The 2 major mimblewimble blockchains',1387,'Grin and Beam are two mimblewimble implementations that are very different & we take a look at both','<p>Last time we reviewed the mimblewimble protocol for blockchain networks. This is an innovative protocol focused on privacy and scalability.</p>\r\n<p>In this episode we take a closer look at the two major implementations of mimblewimble, called Grin and Beam. They are both interesting projects that take very different approaches, yet both have managed to launch working blockchains that preserve the core strengths of the protocol.</p>',379,110,1,'CC-BY-SA','blockchain, privacy',0,0,1),
(2960,'2019-12-06','Dehydrated Foods',835,'Dehydrating your own fruits and vegetables for healthy snacks','<p>I have begun to dehydrate fruits and vegetables at home with my own dehydrator, and it lets me have fresher products without all of the additives. In this episode I discuss both the why and the how.</p>\r\n<ul>\r\n<li><a href=\"https://www.mayoclinic.org/tests-procedures/a1c-test/about/pac-20384643\" class=\"uri\">https://www.mayoclinic.org/tests-procedures/a1c-test/about/pac-20384643</a></li>\r\n<li><a href=\"https://www.webmd.com/food-recipes/news/20090323/7-rules-for-eating#1\" class=\"uri\">https://www.webmd.com/food-recipes/news/20090323/7-rules-for-eating#1</a></li>\r\n<li><a href=\"https://www.amazon.com/NESCO-FD-37A-Dehydrator-Speckled-Marbled/dp/B00CS5ZI6G\" class=\"uri\">https://www.amazon.com/NESCO-FD-37A-Dehydrator-Speckled-Marbled/dp/B00CS5ZI6G</a></li>\r\n<li><a href=\"https://www.rei.com/blog/hike/how-to-dehydrate-food\" class=\"uri\">https://www.rei.com/blog/hike/how-to-dehydrate-food</a></li>\r\n<li><a href=\"https://smile.amazon.com/Beginners-Guide-Dehydrating-Food-2nd/dp/1635860245/ref=sr_1_1?keywords=The+Beginner%27s+Guide+to+Dehydrating+Food%2C+2nd+Edition%3A+How+to+Preserve+All+Your+Favorite+Vegetables%2C+Fruits%2C+Meats%2C+and+Herbs&qid=1570990745&s=books&sr=1-1\">https://smile.amazon.com/Beginners-Guide-Dehydrating-Food-2nd/dp/1635860245/ref=sr_1_1?keywords=The+Beginner%27s+Guide+to+Dehydrating+Food%2C+2nd+Edition%3A+How+to+Preserve+All+Your+Favorite+Vegetables%2C+Fruits%2C+Meats%2C+and+Herbs&qid=1570990745&s=books&sr=1-1</a></li>\r\n<li><a href=\"https://addapinch.com/homemade-ranch-seasoning-mix-recipe/\" class=\"uri\">https://addapinch.com/homemade-ranch-seasoning-mix-recipe/</a></li>\r\n<li><a href=\"https://www.palain.com/?page_id=674\" class=\"uri\">https://www.palain.com/?page_id=674</a></li>\r\n</ul>',198,100,0,'CC-BY-SA','Health, Diet',0,0,1),
(2958,'2019-12-04','Haskell modules',1387,'Tuula talks about haskell modules','<p>With small programs it’s easy enough to have all code in single file. But as the program grows, you eventually want to organize things into separate files. In this episode I’ll talk a bit how to define modules and how to use them.</p>\r\n<h2 id=\"defining\">Defining</h2>\r\n<p>Each module is defined in separate file. In our example, we have file called <code>multiplexer.hs</code>, which contains our module definition.</p>\r\n<p>At the beginning of the file, we have following:</p>\r\n<pre><code>module Multiplexer (mix, match, Plexer, Scooper(..))\r\n where\r\n ....</code></pre>\r\n<p>We’re omitting actual function and type definitions as they aren’t important to this episode. In any case, there’s two functions: <code>mix</code> and <code>match</code> and two types: <code>Plexer</code> and <code>Scooper</code> that module exports (that is, these are available outside of the module). <code>Plexer</code> is imported as a type only and <code>Scooper</code> with field accessors or value constructors depending if it’s a record or algebraic datatype.</p>\r\n<h2 id=\"using-modules\">Using modules</h2>\r\n<p>In order to be able to use identifiers defined in separate module, we have to import them into our current one. In our imaginary program, we have <code>main.hs</code> that defines entry point for our program and we would like to import the definitions from <code>Multiplexer</code> module.</p>\r\n<p>Easiest one is to just have <code>import Multiplexer</code> at the start of the <code>main</code>. This brings all exported identifiers from <code>Multiplexer</code> and we can then use them. Both qualified and unqualified names are imported. Qualified means name is prepended with module name: <code>Multiplexer.mix</code> instead of just <code>mix</code>.</p>\r\n<p>If we want, we can specify what exactly should be imported: <code>import Multiplexer (mix, match)</code>. This causes only functions <code>mix</code> and <code>match</code> be imported, while <code>Plexer</code> and <code>Scooper</code> are unavailable for us. Again, both qualified and unqualified names are imported.</p>\r\n<p>In case we want only qualified names, we’ll write <code>import qualified Multiplexer</code>. After this <code>mix</code> isn’t available, but <code>Multiplexer.mix</code> is (and all the other identifiers exported by <code>Multiplexer</code>).</p>\r\n<p>Sometimes module name is long and tedious to repeat when using qualified names. In these cases, renaming module while importing is a good option. This can be done by writing <code>import Multiplexer as M</code>. After this, instead of <code>Multiplexer.mix</code> you write <code>M.mix</code>.</p>\r\n<p>Final thing I’m going to mention is importing everything else except specified identifiers. This is done by writing <code>import Multiplexer hiding (mix)</code>. This imports everything exported by <code>Multiplexer</code>, except <code>mix</code>.</p>\r\n<h2 id=\"summary\">Summary</h2>\r\n<p>There are many ways of importing and they can be mixed. Here’s a list of them:</p>\r\n<ul>\r\n<li><code>import Multiplexer</code></li>\r\n<li><code>import Multiplexer ()</code></li>\r\n<li><code>import Multiplexer (mix, match, Plexer, Scooper(..))</code></li>\r\n<li><code>import qualified Multiplexer</code></li>\r\n<li><code>import qualified Multiplexer (mix, match, Plexer, Scooper(..))</code></li>\r\n<li><code>import Multiplexer hiding (mix, match)</code></li>\r\n<li><code>import qualified Multiplexer hiding (Plexer, Scooper)</code></li>\r\n<li><code>import Multiplexer as M</code></li>\r\n<li><code>import Multiplexer as M (mix, match)</code></li>\r\n<li><code>import qualified Multiplexer as M</code></li>\r\n<li><code>import qualified Multiplexer as M (Plexer, Scooper(..))</code></li>\r\n</ul>\r\n<p>In short:</p>\r\n<ul>\r\n<li>Some identifiers can be chosen to be imported, while leaving others unimported</li>\r\n<li>Modules can be imported qualified (forcing an obligatory namespace qualifier to imported identi
(2951,'2019-11-25','A walk through my PifaceCAD Python code – Part 2',888,'In this episode I cover some generic functions at the top of the code.','<h2 id=\"code\">Code</h2>\r\n<p>The script being discussed in this show is available for download with this show: <a href=\"https://hackerpublicradio.org/eps/hpr2951/cad-menu.py\">cad-menu.py</a></p>\r\n<h2 id=\"generic-functions\">GENERIC FUNCTIONS</h2>\r\n<ul>\r\n<li><code>def get_hpr_que():</code><br />\r\nGoto hacker public stats page and extract the number of days to next free slot turns on blinkstick LED with colour dependent on the number of days to next free slot in HPR queue prints number of days to next free slot to the display</li>\r\n</ul>\r\n<h2 id=\"generic-blinkstick-functions\">GENERIC BLINKSTICK FUNCTIONS</h2>\r\n<ul>\r\n<li><p><code>def bstick_off():</code><br />\r\nSearch for all attached blinksticks and turn them all off</p></li>\r\n<li><p><code>def bstick_on(colour):</code><br />\r\nTurn blinkstick on and set led colour to string value stored in var colour. valid colours are, black, silver, gray, white, maroon, red, purple, fuchsia, green, lime, olive, yellow, navy, blue, teal, aqua</p></li>\r\n<li><p><code>def bstick_on_random():</code><br />\r\nTurn blinkstick on colour random</p></li>\r\n<li><p><code>def bstick_blink(colour):</code><br />\r\nTurn blinkstick on with supplied colour</p></li>\r\n</ul>\r\n<h2 id=\"end-blinkstick-functions\">END BLINKSTICK FUNCTIONS</h2>\r\n<ul>\r\n<li><p><code>def run_cmd(cmd):</code><br />\r\nUsed to run an external linux command</p></li>\r\n<li><p><code>def get_my_ip():</code><br />\r\nReturns ip address</p></li>\r\n<li><p><code>def get_my_essid():</code><br />\r\nReturns wifi ESSID</p></li>\r\n<li><p><code>def get_my_wifi_strength():</code><br />\r\nReturns wifi signal strength as a percentage</p></li>\r\n<li><p><code>def wait_for_ip():</code><br />\r\nTries 10 times to get IP address</p></li>\r\n<li><p><code>def show_wifi_info():</code><br />\r\nShow WiFi information on display, shows essid on first line and both the wifi signal strength as a percentage and ip address on the second line.</p></li>\r\n<li><p><code>def custom_bitmaps():</code><br />\r\nSelection of custom bitmaps to use on LCD display</p></li>\r\n<li><p>Article in pifacecad documentation giving details about creating custom bitmaps on the pifacecad<br />\r\n<a href=\"https://piface.github.io/pifacecad/creating_custom_bitmaps.html\" class=\"uri\">https://piface.github.io/pifacecad/creating_custom_bitmaps.html</a></p></li>\r\n<li><p>This tool referenced in the pifacecad documentation link above can help design custom bitmaps. Make sure you select 5x8<br />\r\n<a href=\"https://www.quinapalus.com/hd44780udg.html\" class=\"uri\">https://www.quinapalus.com/hd44780udg.html</a></p></li>\r\n<li><p><code>def writelongstring(longstring):</code><br />\r\nWrites a long string to the piface control and display LCD & scrolls it to the left until the last character appears on the right hand side of the screen</p></li>\r\n</ul>\r\n<pre><code># Local Variables (for function writelongstring)\r\nDisplaySize = 15\r\n# Number of characters that can be displayed on 1 line of display\r\n\r\nStepSize = 4\r\n# Step size when scrolling message on display\r\n\r\nScrollSpeed = 0.55\r\n# Adjusts scroll speed, delay in seconds between scrolls\r\n\r\nScroll = 0\r\n# Default value for scroll, used when string is smaller than display size</code></pre>\r\n<ul>\r\n<li><p><code>def init_display():</code><br/>\r\n# Setup LCD display for selected menu 0 (Podcasts), 1 (Audiobooks), 2 (System)</p></li>\r\n<li><p><code>def display_main_menu(event):</code><br/>\r\n# Clear LCD & dsplays the appropriate main menu message</p></li>\r\n</ul>\r\n',201,38,1,'CC-BY-SA','Podcasts, Linux, Command Line, Python, Raspberry Pi',0,0,1),
(2952,'2019-11-26','Publishing your book using open source tools',1562,'How I evolved from writing with a publisher to self-publishing using open source tools','<p>Printing on demand website: <a href=\"https://www.lulu.com\" class=\"uri\">https://www.lulu.com</a></p>',369,0,0,'CC-BY-SA','asciidoc,asciidoctor,lulu,writing,books',0,0,1),
(2953,'2019-11-27','How I got started in Linux',276,'How I start in Linux, computing, and Free Software','<p>Osdisc.com is the website that I mentioned while distro hopping. Unfortunately, as of August 2019, their site is no longer sending CD’s/DVD’s.</p>\r\n<p>How I recorded:<br />\r\nAndroid phone, lapel mic, and Audio Recorder app found here:</p>\r\n<p><a href=\"https://play.google.com/store/apps/details?id=com.github.axet.audiorecorder\" class=\"uri\">https://play.google.com/store/apps/details?id=com.github.axet.audiorecorder</a></p>\r\n<p>And here:</p>\r\n<p><a href=\"https://f-droid.org/en/packages/com.github.axet.audiorecorder/\" class=\"uri\">https://f-droid.org/en/packages/com.github.axet.audiorecorder/</a></p>\r\n',318,29,0,'CC-BY-SA','Linux, FreeBSD, Computers',0,0,1),
(2959,'2019-12-05','Interview with Josh Clements about gpodder.net ',2314,'What starts as an Interview and ends in a brain storm.','<p>\r\nIn today\'sshowKeninterviewsJoshClementsfromthe<ahref=\"https://gpodder.net\">gpodder.net</a>project.\r\n</p>\r\n<p>\r\nJoshansweredthe<ahref=\"https://github.com/gpodder/mygpo/blob/master/maintainer-needed.md\">calltoarms</a>heheardonthe<ahref=\"https://ubuntupodcast.org/2019/08/08/s12e18-pilotwings/\">UbuntuPodcast</a>.Wediscuss<em>theplan</em>andexplainhowyoucanalsogetinvolved.\r\n</p>\r\n<h3>Links</h3>\r\n<ul>\r\n<li><ahref=\"https://github.com/gpodder/mygpo/blob/master/maintainer-needed.md\">https://github.com/gpodder/mygpo/blob/master/maintainer-needed.md</a></li>\r\n<li><ahref=\"https://ubuntupodcast.org/2019/08/08/s12e18-pilotwings/\">https://ubuntupodcast.org/2019/08/08/s12e18-pilotwings/</a></li>\r\n<li><ahref=\"https://github.com/gpodder/\">https://github.com/gpodder/</a></li>\r\n<li><ahref=\"https://gpodder.github.io/docs/mailing-list.html\">https://gpodder.github.io/docs/mailing-list.html</a></li>\r\n<li><ahref=\"https://feeds.gpodder.net/\">https://feeds.gpodder.net/</a></li>\r\n<li><ahref=\"https://prgmr.com/xen/\">https://prgmr.com/xen/</a></li>\r\n<li><ahref=\"mailto:support@gpodder.net\">support@gpodder.net</a></li>\r\n</ul>\r\n',30,78,0,'CC-BY-SA','gpodder.net,JoshClements',0,0,1),
(2961,'2019-12-09','Kubernetics / Cloud - Terminology',664,'We talk about terms often used when using Kubernetes','<p>We talk about terms often used when using Kubernetes.</p>\r\n<p>Terms we talk about</p>\r\n<ul>\r\n<li>Node - Machine to run jobs on.</li>\r\n<li>Cluster - Grouping of nodes to deploy work to.</li>\r\n<li>Container - Compute unit that we can run in the cloud</li>\r\n<li>Pod - One or more containers that are one unit in the cloud that could be started, stopped, or restarted.</li>\r\n<li>Service - Different network services that serve the pods\r\n<ul>\r\n<li>Load balancers - Balance network calls to different pods</li>\r\n<li>Certmanager - Handles certificates, for instance, let’s encrypt.</li>\r\n<li>Ingress - Handles traffic from the external network</li>\r\n</ul></li>\r\n<li>Volumes - External resources used by pods to keep state</li>\r\n<li>ConfigMap - Configuration parameters that could be changed without restarting the pods or deployment.</li>\r\n<li>Deployment - A configuration of all the terms mentioned that you use to deploy as a unit to the cluster.</li>\r\n</ul>\r\n',382,0,0,'CC-BY-SA','kubernetics, basic, terminology',0,0,1),
(2968,'2019-12-18','Life and Times of a Geek part 3',2441,'Part 3 of my personal story of experiences with computers','<h2 id=\"introduction\">Introduction</h2>\r\n<p>In the last part of my story (show <a href=\"https://hackerpublicradio.org/eps.php?id=1811\" title=\"Life and Times of a Geek part 2\">1811</a> in 2015) I told you about some of my experiences at the University of Manchester as a postgraduate student from around 1973.</p>\r\n<p>Today I want to talk a little more about my time in Manchester and mention some of the things I did that may be of interest to Hackers!</p>\r\n<h2 id=\"researching-for-the-episode\">Researching for the episode</h2>\r\n<p>As I have been researching for this HPR episode I realise how long ago some of these events were - in Internet years particularly. In many cases I could find no online records of places, equipment or people. This seems to be because any records there might be are on paper and have never made it online. I contacted a company that made some of the laboratory equipment I used that I thought might be of interest, and the person I contacted said that although he remembered what I was referring to the company had kept no records of it and had had to discontinue it due to modern safety concerns.</p>\r\n<p>I find this somewhat dispiriting and it makes me feel very very old!</p>\r\n<h2 id=\"long-notes\">Long notes</h2>\r\n<p>I have provided detailed notes as usual for this episode. The HTML version can be <a href=\"https://hackerpublicradio.org/eps/hpr2968/full_shownotes.html\">viewed here</a> and the ePub version downloaded from <a href=\"https://hackerpublicradio.org/eps/hpr2968/full_shownotes.epub\">here</a>.</p>\r\n<h2 id=\"links\">Links</h2>\r\n<ul>\r\n<li>Building experimental apparatus:\r\n<ul>\r\n<li>Wikipedia page for <a href=\"https://en.wikipedia.org/wiki/Dexion\">Dexion</a> - for building metal structures</li>\r\n<li>Wikipedia page on the “<em>Skinner Box</em>” or <a href=\"https://en.wikipedia.org/wiki/Operant_conditioning_chamber\">Operant Conditioning Chamber</a></li>\r\n<li>“<em><a href=\"https://handytube.co.uk/\">Handy Tube</a></em>” used for making Skinner Boxes</li>\r\n</ul></li>\r\n<li>Video tape recorders:\r\n<ul>\r\n<li>The Rewind Museum <a href=\"https://www.rewindmuseum.com/reeltoreelvideo.htm\">reel-to-reel video recorders</a></li>\r\n<li>Wikipedia page on <a href=\"https://en.wikipedia.org/wiki/Video_tape_recorder\">Video tape recorders</a></li>\r\n<li>Youtube video about a <a href=\"https://www.youtube.com/watch?v=xwbMXqp0XtA\">Sanyo Reel to Reel Video Tape Recorder</a></li>\r\n</ul></li>\r\n<li>Logic programming:\r\n<ul>\r\n<li>Wikipedia page on the <a href=\"https://en.wikipedia.org/wiki/Logic_gate\">Logic Gate</a></li>\r\n<li>Wikipedia page on the (electronic) <a href=\"https://en.wikipedia.org/wiki/Flip-flop_(electronics)\">“<em>Flip-Flop</em>”</a></li>\r\n</ul></li>\r\n<li>D-MAC Digitiser:\r\n<ul>\r\n<li>StackExchange article discussing the <a href=\"https://history.stackexchange.com/questions/48789/what-is-this-d-mac-device\"><em>D-MAC</em></a> digitiser</li>\r\n</ul></li>\r\n<li>ICT (ICL) computers:\r\n<ul>\r\n<li>Wikipedia page on the <a href=\"https://en.wikipedia.org/wiki/ICT_1900_series\">ICT (ICL) 1900 series</a></li>\r\n<li>Wikipedia page on the <a href=\"https://en.wikipedia.org/wiki/GEORGE_%28operating_system%29\">ICL GEORGE operating system</a></li>\r\n</ul></li>\r\n<li>Teleprinter:\r\n<ul>\r\n<li>Wikipedia page on the <a href=\"https://en.wikipedia.org/wiki/Teletype_Model_33\">Teletype Model 33</a></li>\r\n</ul></li>\r\n<li>CDC computers:\r\n<ul>\r\n<li>Wikipedia page on the <a href=\"https://en.wikipedia.org/wiki/CDC_Cyber\">CDC Cyber range</a></li>\r\n</ul></li>\r\n<li>Wikipedia page on the <a href=\"https://en.wikipedia.org/wiki/APL_%28programming_language%29\">APL language</a></li>\r\n<li>Sinclair calculators:\r\n<ul>\r\n<li>Wikipedia page on the <a href=\"https://en.wikipedia.org/wiki/Sinclair_Scientific\">Sinclair Scientific</a></li>\r\n<li><a href=\"https://books.google.co.uk/books?id=FS6D5VL2qo4C&pg=PA639#v
(2975,'2019-12-27','SimpleScreenRecorder and Vidcutter',311,'Two useful applications to record a screen, and to chop and trim a video ','<p>In today’s show Ken talks about two small applications to make recording and trimming video easy.</p>\r\n<h3>What is SimpleScreenRecorder?</h3>\r\n<blockquote>\r\n<p>SimpleScreenRecorder is a Linux program that I’ve created to record programs and games. There were already a few programs that could do this, but I wasn’t 100% happy with any of them, so I created my own.</p>\r\n<p>My original goal was to create a program that was just really simple to use, but as I was writing it I started adding more and more features, and the result is actually a pretty powerful program. It’s ‘simple’ in the sense that it’s easier to use than ffmpeg/avconv or VLC, because it has a straightforward user interface.</p>\r\n</blockquote>\r\n<h3>What is VidCutter</h3>\r\n<blockquote>\r\n<p>The simplest & sexiest tool for cutting and joining your videos without the need for re-encoding or a diploma in multimedia. VidCutter focuses on getting the job done using tried and true tech in its arsenal via mpv and FFmpeg.</p>\r\n</blockquote>\r\n<h3>Links</h3>\r\n<ul>\r\n<li><a href=\"https://www.maartenbaert.be/simplescreenrecorder/\">SimpleScreenRecorder</a> Homepage</li>\r\n<li><a href=\"https://github.com/ozmartian/vidcutter\">vidcutter</a> Homepage</li>\r\n<li><a href=\"https://www.linuxandubuntu.com/home/vidcutter-linux-video-cutting-or-trimming-app\">VidCutter – Linux Video Cutting Or Trimming App</a> review on <a href=\"https://www.linuxandubuntu.com/\">Linux And Ubuntu</a></li>\r\n</ul>\r\n',30,0,1,'CC-BY-SA','SimpleScreenRecorder, Vidcutter, ffmpeg, ffprobe, mediainfo',0,0,1),
(2980,'2020-01-03','FLOSS Weekly 553 - Hacker Public Radio',4037,'Randal Schwartz and Aaron Newcomb featured HPR on FLOSS Weekly ','<p>On the 30th Oct 2019 <a href=\"https://hackerpublicradio.org/correspondents/0198.html\">Kevin O’Brien (Ahuka)</a> and <a href=\"https://hackerpublicradio.org/correspondents/0030.html\">Ken Fallon</a> were interviewed about <a href=\"https://hackerpublicradio.org\">Hacker Public Radio</a> by <a href=\"https://twit.tv/people/randal-schwartz\">Randal Schwartz</a> and <a href=\"https://twit.tv/people/aaron-newcomb\">Aaron Newcomb</a> for <a href=\"https://twit.tv/shows/floss-weekly/episodes/553\">FLOSS Weekly 553</a>.</p>\r\n<p>This is that show and is released under a <a href=\"https://creativecommons.org/licenses/by-nc-nd/4.0/\">Creative Commons Attribution Non-Commercial No-Derivatives 4.0 International license</a>.</p>\r\n<h3>Links</h3>\r\n<ul>\r\n<li><a href=\"https://twit.tv/people/randal-schwartz\">https://twit.tv/people/randal-schwartz</a></li>\r\n<li><a href=\"https://twit.tv/people/aaron-newcomb\">https://twit.tv/people/aaron-newcomb</a></li>\r\n<li><a href=\"https://twit.tv/shows/floss-weekly/episodes/553\">https://twit.tv/shows/floss-weekly/episodes/553</a></li>\r\n<li><a href=\"https://creativecommons.org/licenses/by-nc-nd/4.0/\">https://creativecommons.org/licenses/by-nc-nd/4.0/</a></li>\r\n<li><a href=\"https://hackerpublicradio.org\">https://hackerpublicradio.org</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/correspondents/0198.html\">https://hackerpublicradio.org/correspondents/0198.html</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/correspondents/0030.html\">https://hackerpublicradio.org/correspondents/0030.html</a></li>\r\n</ul>',30,78,0,'CC-BY-NC-ND','Randal Schwartz, Aaron Newcomb, FLOSS Weekly',0,0,1),
(2962,'2019-12-10','Bespoke bike building',1474,'Brian in Ohio continues his bike building project','<h2 id=\"links\">Links</h2>\r\n<ul>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=1282\">hpr 1282</a> john kulps efforts</li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2869\">hpr 2869</a> part one of my build</li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2875\">hpr 2875</a> part two</li>\r\n<li>recycled recumbent<br />\r\n<a href=\"https://sites.google.com/site/recycledrecumbents/home\" class=\"uri\">https://sites.google.com/site/recycledrecumbents/home</a></li>\r\n<li>fish mouth cutting on recumbents.com<br />\r\n<a href=\"https://www.wisil.recumbents.com/wisil/Plans/frametubes.htm\" class=\"uri\">https://www.wisil.recumbents.com/wisil/Plans/frametubes.htm</a></li>\r\n</ul>\r\n<h2 id=\"pictures\">Pictures</h2>\r\n<p>(The images below may be clicked to view the full-sized versions)</p>\r\n<p><a href=\"https://hackerpublicradio.org/eps/hpr2962/picture01-mocking-up-the-parts.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr2962/picture01-mocking-up-the-parts-small.jpg\" alt=\"Mocking up parts\" /></a><br />\r\nmocking up parts to see spacing, especially the crankset</p>\r\n<p><a href=\"https://hackerpublicradio.org/eps/hpr2962/picture02-cutting-fishmouths.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr2962/picture02-cutting-fishmouths-small.jpg\" alt=\"Laying out fishmouths\" /></a><br />\r\nlaying out ‘fishmouth’ cut, used to connect two tubes</p>\r\n<p><a href=\"https://hackerpublicradio.org/eps/hpr2962/picture03-cutting-fishmouths.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr2962/picture03-cutting-fishmouths-small.jpg\" alt=\"Cutting fishmouths\" /></a><br />\r\nlay out fishmouth</p>\r\n<p><a href=\"https://hackerpublicradio.org/eps/hpr2962/picture04-cutting-fishmouths.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr2962/picture04-cutting-fishmouths-small.jpg\" alt=\"Cutting fishmouths\" /></a><br />\r\nanother layout picture, note marks on tube</p>\r\n<p><a href=\"https://hackerpublicradio.org/eps/hpr2962/picture05-cutting-fishmouths.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr2962/picture05-cutting-fishmouths-small.jpg\" alt=\"Cutting fishmouths\" /></a><br />\r\nfinished product</p>\r\n<p><a href=\"https://hackerpublicradio.org/eps/hpr2962/picture06-cutting-fishmouths.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr2962/picture06-cutting-fishmouths-small.jpg\" alt=\"Cutting fishmouths\" /></a><br />\r\ntest fitting assembly one, the engine room</p>\r\n<p><a href=\"https://hackerpublicradio.org/eps/hpr2962/picture07-assembly-one-complete.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr2962/picture07-assembly-one-complete-small.jpg\" alt=\"Brazing complete\" /></a><br />\r\nbrazing complete! assembly one done</p>\r\n<p><a href=\"https://hackerpublicradio.org/eps/hpr2962/picture08-readying-assembly-two.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr2962/picture08-readying-assembly-two-small.jpg\" alt=\"Readying assembly\" /></a><br />\r\nsetting up assembly tube, gray tube slips inside the red tube</p>\r\n<p><a href=\"https://hackerpublicradio.org/eps/hpr2962/picture09-readying-assemby-two.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr2962/picture09-readying-assemby-two-small.jpg\" alt=\"Removing tab\" /></a><br />\r\nneed to cut that small tab off, get to hear this in the recording</p>\r\n<p><a href=\"https://hackerpublicradio.org/eps/hpr2962/picture10-jigging-up-assembly2.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr2962/picture10-jigging-up-assembly2-small.jpg\" alt=\"Jigging up\" /></a><br />\r\njigging up the frame, similar to john kulps set up, see hpr 1282</p>\r\n<p><a href=\"https://hackerpublicradio.org/eps/hpr2962/picture11-assemby2-done.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr2962/picture11-assemby2-done-small.jpg\" alt=\"Still in the jig\" /></a><br />\r\nstill in the jig but all brazed up, top half of frame done!</p>\r\n<p><a href=\"https://hackerpublicradio.org/eps/hpr2962
(2963,'2019-12-11','A walk through my PifaceCAD Python code – Part 3',880,'In this episode I cover functions activated when a button is pushed on the PiFaceCAD board','<h3 id=\"code\">Code</h3>\r\n<p>The script being discussed in this show is available for download with the previous show: <a href=\"https://hackerpublicradio.org/eps/hpr2951/cad-menu.py\">cad-menu.py</a></p>\r\n<h3 id=\"functions\">Functions</h3>\r\n<ul>\r\n<li><p><code>def button0(event):</code><br />\r\nPlay / Pause Button<br />\r\nPrint message to lcd and toggle between play and pause for podcasts, then runs <code>init_display</code> to display available options</p></li>\r\n<li><p><code>def button1(event):</code><br />\r\nTrack Information button<br />\r\nPrint message to lcd then display current moc track information such as moc state, current time, time left, current playlist number of total playlist number & podcast title.<br />\r\n<br />\r\nExample output from command <code>mocp --info</code></p>\r\n<pre><code>State: PAUSE\r\nFile: /home/pi/files/mp3/hpr1597.mp3\r\nTitle: Steve Smethurst - HPR1597: Extravehicular Activity (Hacker Public Radio)\r\nArtist: Steve Smethurst\r\nSongTitle: HPR1597: Extravehicular Activity\r\nAlbum: Hacker Public Radio\r\nTotalTime: 14:11\r\nTimeLeft: 02:47\r\nTotalSec: 851\r\nCurrentTime: 11:24\r\nCurrentSec: 684\r\nBitrate: 64kbps\r\nAvgBitrate: 64kbps\r\nRate: 44kHz</code></pre></li>\r\n<li><p><code>def button2(event):</code><br />\r\nPrevious Track Button<br />\r\nButton is only active if button is pushed twice within 0.3 seconds. This was added to stop moving to a new track by accidental pushing of button. If menu = 0 or 1 and value of variable TimeDiff is less than 0.3 then Print message to lcd and move to previous track in playlist. If menu = 2 and button pressed twice within 0.3 then display number of HPR shows in the queue</p></li>\r\n<li><p><code>def button3(event):</code><br />\r\nNext track Button<br />\r\nButton is only active if button is pushed twice within 0.3 seconds. This was added to stop moving to a new track by accidental pushing of button. If menu = 0 or 1 and value of variable TimeDiff is less than 0.3 then Print message to lcd and move to next track in playlist Button currently has no function if menu = 2</p></li>\r\n<li><p><code>def button4(event):</code><br />\r\nToggle backlight Button<br />\r\nIf 1st time button is pushed then turn off blinkstick and display main menu else Toggle lcd backlight between on and off</p></li>\r\n<li><p><code>def moc_seek():</code><br />\r\nUsed to seek backward or forward in track being played in mocp SeekPosition is a global variable used to store the current seek position, its value changes up and down when using button6 and button7</p></li>\r\n<li><code>def button5(event):</code><br />\r\nJogg switch<br />\r\nThis button is selected by momentarily pushing in the left/right toggle button. Button located on the top of unit<br />\r\n\r\n<ul>\r\n<li>If menu equals 0 or 1, [PODCASTS or AUDIOBOOKS] menu then<br />\r\n\r\n<ul>\r\n<li>if not in seek menu then display seek menu</li>\r\n<li>if in seek menu then jump forward or back in track by the amount currently displayed on the seek menu, uses function <code>moc_seek()</code></li>\r\n</ul></li>\r\n<li>If menu equals 2, [SYSTEM] menu then\r\n<ul>\r\n<li>Get date and time information, Clear screen, turn on LCD backlight print the shutdown message with date and time info to lcd & then issue the shutdown command</li>\r\n</ul></li>\r\n</ul></li>\r\n</ul>\r\n<!-- -->\r\n<ul>\r\n<li><code>def button6(event):</code><br />\r\nLeft Jogg switch decrement through menus also used during seek<br />\r\nThis button is selected by momentarily pushing the toggle switch to the left. Button located on the top of unit<br />\r\nButton only active if more than 0.3 seconds has passed since it was last pushed, this was added to get around switch bounce causing multiple jumps in menu, think left and right jogg switch is a bit noisy.\r\n<ul>\r\n<li>If in seek menu\r\n<ul>\r\n<li>SeekPosition decrements by one until SeekMin is reached, a
(2964,'2019-12-12','Bolos and Bowties: Neckwear for Nerds',980,'I talk about ties, at least the kind I like to wear when the occasion calls for it.','<p>It\'sprobablybecauseofanon-conformiststreakinme,butI\'ve never liked traditional neckties. In fact I never wanted to wear any ties until I got my first bolo tie, which was sufficiently different from everyone else and easy enough to put on that I decided I could wear bolo ties. I\'vebuiltacollectionofaboutadozenoftheseandtheyalwaysgetpositivecomments,especiallytheonesmadefromrecycledcircuitboards.RecentlyI\'ve expanded my horizons to include bowties, which have a more formal appearance and the added nerd factor of being difficult to tie for most people. In this episode I talk about my ties.</p>\r\n\r\n<h3>Click image to view photo gallery</h3>\r\n\r\n<p><a data-flickr-embed=\"true\" href=\"https://www.flickr.com/photos/137675441@N05/albums/72157711876166718\" title=\"Bolos and Bowties\"><img src=\"https://live.staticflickr.com/65535/49100398632_cf81d6b66b.jpg\" width=\"500\" height=\"281\" alt=\"Bolos and Bowties\"></a></p>\r\n\r\n<h2>Links</h2>\r\n\r\n<ul>\r\n <li><a href=\"https://circuitbreakerlabs.myshopify.com/\" target=\"_blank\">Circuit Breaker Labs</a> upcycled Jewelry made from circuit boards.</li>\r\n <li><a href=\"https://www.hightidebowties.com/blogs/news/15522315-10-reasons-why-you-should-wear-a-bow-tie\">10 Reasons to Wear a Bowtie</a></li>\r\n</ul>\r\n',238,0,0,'CC-BY-SA','Style, Fashion, Recycling, Upcycling, Circuit Boards, Ties, Bowties, Bolo Ties, Neck ties',0,0,1),
(2969,'2019-12-19','Crewing a spaceship in Haskell',1358,'How to calculate amount of crew needed for a spaceship','<h2 id=\"intro\">Intro</h2>\r\n<p>Every spaceship in game needs a crew to operate it. Smaller ships with fewer components require less crew than huge ones with lots of components.</p>\r\n<h2 id=\"types\">Types</h2>\r\n<p>Unit stats lists amount of crew required to operate a spaceship and if they need sleeping quarters.</p>\r\n<pre><code>data UnitStats = UnitStats\r\n { unitStatsMinimumCrew :: ![CrewRequirement]\r\n , unitStatsNominalCrew :: ![CrewRequirement]\r\n , unitStatsCrewSpace :: !TotalCrewSpace\r\n , unitStatsCrewSpaceRequired :: !CrewSpaceReq\r\n } deriving (Show, Read, Eq)</code></pre>\r\n<p>Different positions a crew can have is an enumeration:</p>\r\n<pre><code>data CrewPosition =\r\n Commander\r\n | Navigator\r\n | Signaler\r\n | SensorOperator\r\n | Gunner\r\n | Doctor\r\n | Nurse\r\n | Driver\r\n | Helmsman\r\n | Artificer\r\n | Crew\r\n | Passenger\r\n deriving (Show, Read, Eq, Enum, Bounded)\r\nderivePersistField "CrewPosition"</code></pre>\r\n<p>Rank of a crew member isn’t a military rank, but rather their position in ship’s internal hierarchy:</p>\r\n<pre><code>data CrewRank =\r\n SecondClass\r\n | FirstClass\r\n | Senior\r\n | Chief\r\n deriving (Show, Read, Eq, Enum, Bounded)\r\nderivePersistField "CrewRank"</code></pre>\r\n<p>Amount of crew is newtype that helps me not to mix different types of numbers with each other.</p>\r\n<pre><code>newtype CrewAmount = CrewAmount { unCrewAmount :: Int }\r\n deriving (Show, Read, Eq, Ord, Num)</code></pre>\r\n<p>Total crew space of a ship is divided to three different types: steerage, standard and luxury.</p>\r\n<pre><code>data TotalCrewSpace = TotalCrewSpace\r\n { totalCrewSpaceSteerage :: !(CrewSpace SteerageQuarters)\r\n , totalCrewSpaceStandard :: !(CrewSpace StandardQuarters)\r\n , totalCrewSpaceLuxury :: !(CrewSpace LuxuryQuarters)\r\n } deriving (Show, Read, Eq)</code></pre>\r\n<p>Again, crew space is newtype so I don’t mix different types of numbers with each other.</p>\r\n<pre><code>data CrewSpace a =\r\n CrewSpace { unCrewSpace :: CrewAmount }\r\n deriving (Show, Read, Eq)</code></pre>\r\n<p>I could have modeled fact that vehicle might need crew space with <code>Bool</code>, but having a descriptive name and type is more to my liking.</p>\r\n<pre><code>data CrewSpaceReq =\r\n CrewSpaceRequired\r\n | CrewSpaceOptional\r\n deriving (Show, Read, Eq)\r\nderivePersistField "CrewSpaceReq"</code></pre>\r\n<p>The fact that single person could manage multiple components is reflected by <code>ComponentCrewReq</code> having <code>Double</code> instead of <code>Integer</code></p>\r\n<pre><code>-- | Crew requirements for a component\r\ndata ComponentCrewReq =\r\n ComponentCrewReq CrewPosition Double\r\n deriving (Show, Read, Eq)</code></pre>\r\n<h2 id=\"in-closing\">In closing</h2>\r\n<p>If you have questions, comments or feedback, easiest way to catch me nowdays is by email or in fediverse where I’m <code>Tuula@mastodon.social</code></p>\r\n',364,107,0,'CC-BY-SA','haskell, problem solving',0,0,1),
(2965,'2019-12-13','instant feedback for students in maths',838,'How we use old CAS software to give students instant feedback in their maths homework','<p>I\'mtryingtomakesurethatthisshowdoesn\'t come across as as advertisment placement on HPR I won\'tprovidealinktoourapplication(whichwouldn\'t help a lot anyway as we don\'treallyhavemuchofawebsiteanyway.).</p>\r\n<p>HoweverI\'ll link to some of the technical components:</p>\r\n<p>The Computer Algebra System we use is called <a href=\"https://maxima.sourceforge.net/\">Maxima</a>, its history goes back to the early 80s. It\'swrittenincommonlisp.</p>\r\n<p>Wehaveconsideredswitchingto<ahref=\"https://www.sympy.org/\">SymPy</a>asamoremodernalternative.SymPydoesn\'t offer the feature completeness Maxima does, though. It has still a long way to go.</p>\r\n<p>Our servers run <a href=\"https://debian.org/\">Debian</a>. The current version is written in <a href=\"https://www.php.net/\">PHP</a> but we are working on a new version based on dockerized <a href=\"https://www.djangoproject.com/\">Django</a> with a JS frontend in <a href=\"https://emberjs.com/\">Ember</a> along with some micro services written in <a href=\"https://golang.org/\">Go</a>, <a href=\"https://python.org/\">Python</a> and <a href=\"https://www.php.net/\">PHP</a>.</p>\r\n<p>To render math we use <a href=\"https://www.mathjax.org/\">MathJax</a> in the current version and <a href=\"https://katex.org/\">KaTeX</a> in the new version. The PDF-export of worksheets is of course done in <a href=\"https://www.latex-project.org/\">LaTeX</a>.</p>',288,0,0,'CC-BY-SA','maths,education,learning',0,0,1),
(2966,'2019-12-16','World of Commodore 2019 Episode 1: The Interviews',1174,'In this first episode, I interview exhibitors and members at the World of Commodore in 2019.','<p>Hello, good people of Hacker Public Radio, my name is Paul Quirk and this is my very first ever podcast. I would like to give credit Klaatu of Gnu World Order for making me aware of Hacker Public Radio, which I’ve been a listener of for the past year. As we near the holiday season of the winter solstice, I decided to give back to the open source community with this gift of a mini series of podcasts about the World of Commodore from December 7, 2019.</p>\r\n<p>The World of Commodore is an annual computer expo dedicated to Commodore computers that is normally held on the first Saturday of December in the city of Mississauga, Ontario. It started off back in 1983 by Commodore Canada as a trade show where Commodore and related vendors could showcase their latest products for the holiday season. As a Commodore computer nerd kid of the 1980’s living within an hour’s drive of Mississauga, this was an event I always looked forward to with excitement. For me, this was bigger and better than Santa Claus. Commodore went bankrupt in 1994, but a decade later, the show was revived by the Toronto PET user’s group, or TPUG, one of the world’s oldest computer user groups of which I am a member. Today’s World of Commodore is very different from the expo’s of the 1980’s, and has transformed into an event where hackers from around the world gather together to share ideas and show off their own discoveries and products, both open source and commercial.</p>\r\n<p>Since many listeners and contributors of Hacker Public Radio got started with a Commodore computer at some time, and since this event has grown beyond Commodore products and into open source hardware and software, I thought this event would be of great interest to this community, and it is my hope that many of you listeners might join us at next year’s World of Commodore.</p>\r\n<p>I have decided to create a miniseries of podcasts of this event which I will release on a weekly schedule. In this first episode, I walk around the trade show floor and interview various exhibitors, vendors, and members of TPUG. As there is a visual element to this podcast, I have posted pictures of the exhibits in my personal non-commercial blog at pquirk.com, which I encourage you to visit in order to get the full experience. And so, with no further ado, let’s all go to the wonderful world of Commodore.</p>\r\n<ul>\r\n<li><a href=\"https://www.tpug.ca/\" class=\"uri\">https://www.tpug.ca/</a></li>\r\n<li><a href=\"https://signalsfromspace.ca/\" class=\"uri\">https://signalsfromspace.ca/</a></li>\r\n<li><a href=\"https://doublesidedgames.com/\" class=\"uri\">https://doublesidedgames.com/</a></li>\r\n<li><a href=\"https://pquirk.com/2019/12/08/world-of-commodore-2019-episode-1/\" class=\"uri\">https://pquirk.com/2019/12/08/world-of-commodore-2019-episode-1/</a></li>\r\n</ul>\r\n',383,103,0,'CC-BY-SA','Commodore,PET,Amiga,Gecko,retro',0,0,1),
(2967,'2019-12-17','Wrestling As You Like It Episode 2',1599,'Wrestling As You Like It Episode 2','<p>Today’s episode is about the landscape of professional wrestling today, the hierarchy, and how it came to be that way, and a brief explanation of different styles of professional wrestling.</p>',354,0,1,'CC-BY-SA','Pro Wrestling',0,0,1),
(2970,'2019-12-20','The Fediverse',1142,'The Fediverse is the open network of social media platforms','<p>The Fediverse is the name given to the collection of social media platforms that are distributed and interconnected. Distributed means that the servers are not centrally controlled, but are available to users in a variety of forms and conditions. And interconnected means they use protocols that are designed to allow communication between different platforms as well as different servers. The most common of these protocols is ActivityPub.</p>\r\n<p><a href=\"https://www.zwilnik.com/?page_id=1050\" class=\"uri\">https://www.zwilnik.com/?page_id=1050</a></p>\r\n<h2 id=\"links\">Links:</h2>\r\n<ul>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Fediverse\" class=\"uri\">https://en.wikipedia.org/wiki/Fediverse</a></li>\r\n<li><a href=\"https://blog.joinmastodon.org/2018/06/why-activitypub-is-the-future/\" class=\"uri\">https://blog.joinmastodon.org/2018/06/why-activitypub-is-the-future/</a></li>\r\n<li><a href=\"https://www.w3.org/TR/activitypub/\" class=\"uri\">https://www.w3.org/TR/activitypub/</a></li>\r\n<li><a href=\"https://hacks.mozilla.org/2018/11/decentralizing-social-interactions-with-activitypub/\" class=\"uri\">https://hacks.mozilla.org/2018/11/decentralizing-social-interactions-with-activitypub/</a></li>\r\n<li><a href=\"https://blog.joinmastodon.org/2018/06/why-activitypub-is-the-future/\" class=\"uri\">https://blog.joinmastodon.org/2018/06/why-activitypub-is-the-future/</a></li>\r\n<li><a href=\"https://github.com/pump-io/pump.io/blob/master/API.md\" class=\"uri\">https://github.com/pump-io/pump.io/blob/master/API.md</a></li>\r\n<li><a href=\"https://blog.diasporafoundation.org/4-islamic-state-fighters-on-diaspora\" class=\"uri\">https://blog.diasporafoundation.org/4-islamic-state-fighters-on-diaspora</a></li>\r\n<li><a href=\"https://emojos.in/\" class=\"uri\">https://emojos.in/</a></li>\r\n<li><a href=\"https://mwl.io/\" class=\"uri\">https://mwl.io/</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/ActivityPub\" class=\"uri\">https://en.wikipedia.org/wiki/ActivityPub</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Diaspora_(social_network)\" class=\"uri\">https://en.wikipedia.org/wiki/Diaspora_(social_network)</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Open_standard\" class=\"uri\">https://en.wikipedia.org/wiki/Open_standard</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/OStatus\" class=\"uri\">https://en.wikipedia.org/wiki/OStatus</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/XMPP\" class=\"uri\">https://en.wikipedia.org/wiki/XMPP</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Fediverse\" class=\"uri\">https://en.wikipedia.org/wiki/Fediverse</a></li>\r\n<li><a href=\"https://www.zwilnik.com/?page_id=1050\" class=\"uri\">https://www.zwilnik.com/?page_id=1050</a></li>\r\n</ul>\r\n',198,108,0,'CC-BY-SA','social media, alternative, Fediverse, ActivityPub',0,0,1),
(2971,'2019-12-23','World of Commodore 2019 Episode 2: Hacking GeckOS',2960,'Glen Holmer explains how he got Linux running on a Commodore 64.','<ul>\r\n<li><a href=\"https://pquirk.com/\" class=\"uri\">https://pquirk.com/</a></li>\r\n<li><a href=\"https://www.lyonlabs.org/\" class=\"uri\">https://www.lyonlabs.org/</a></li>\r\n<li><a href=\"https://www.youtube.com/user/TorontoPETUsersGroup/\" class=\"uri\">https://www.youtube.com/user/TorontoPETUsersGroup/</a></li>\r\n<li><a href=\"https://www.tpug.ca/\" class=\"uri\">https://www.tpug.ca/</a></li>\r\n</ul>',383,103,0,'CC-BY-SA','Commodore,PET,Amiga,Geckos,retro,Linux,Open Source',0,0,1),
(2972,'2019-12-24','The foot of the ski slope',2681,'MrX and Dave Morriss chat about nerdy things near a ski slope','<h2 id=\"another-in-the-chat-series-from-edinburgh\">Another in the chat series from Edinburgh</h2>\r\n<h3 id=\"hosted-by-mrx1-and-dave-morriss2\">Hosted by <a href=\"https://hackerpublicradio.org/correspondents/0201.html\" title=\"MrX\">MrX</a> and <a href=\"https://hackerpublicradio.org/correspondents/0225.html\" title=\"Dave Morriss\">Dave Morriss</a></h3>\r\n<p>This time we met up for breakfast on Sunday 24<sup>th</sup> November in a pub/restaurant in an area called <a href=\"https://en.wikipedia.org/wiki/Hillend,_Edinburgh\" title=\"Hillend, Midlothian\">Hillend</a>, just outside Edinburgh in <a href=\"https://en.wikipedia.org/wiki/Midlothian\" title=\"Midlothian municipal district\">Midlothian</a>. The hill close by is the location of the <a href=\"https://en.wikipedia.org/wiki/Midlothian_Snowsports_Centre\" title=\"Midlothian Snowsports Centre\">Midlothian Snowsports Centre</a>, an artificial Ski Slope which is very popular in the region for recreation and training.</p>\r\n<p>We chatted for a while inside then moved to <em>Studio C</em> in the car park and recorded this episode.</p>\r\n<h3 id=\"pdas-and-the-like\">PDAs and the like</h3>\r\n<p>We were talking about PDAs (Personal Data Assistants) from the 1980’s.</p>\r\n<ul>\r\n<li>MrX had recently been offered a <a href=\"https://en.wikipedia.org/wiki/Gemini_(PDA)\" title=\"Gemini PDA\">Gemini</a> device and had at one time owned a <a href=\"https://en.wikipedia.org/wiki/Psion_Series_3\" title=\"Psion Series 3\">Psion Series 3c</a>.</li>\r\n<li>Dave owns a broken <a href=\"https://en.wikipedia.org/wiki/Psion_Series_5\" title=\"Psion Series 5\">Psion Series 5</a> (and recently parted with a working one after much bargaining).</li>\r\n<li>Dave struggled to remember devices like the <a href=\"https://en.wikipedia.org/wiki/PalmPilot\" title=\"Palm Pilot\">Palm Pilot</a> which were quite popular in the 80’s and 90’s. These had no keyboard, but offered a touch-sensitive screen, used with a stylus, and had handwriting recognition<a href=\"#fn1\" class=\"footnote-ref\" id=\"fnref1\"><sup>1</sup></a>.</li>\r\n<li>MrX mentioned the Compaq <a href=\"https://en.wikipedia.org/wiki/IPAQ\" title=\"Compaq/HP iPAQ PDA\">iPAQ PDA</a> (Compaq was later acquired by Hewlett Packard) from the 2000’s, which was a much advanced PDA with similar features.</li>\r\n</ul>\r\n<h3 id=\"software-annoyances\">Software annoyances</h3>\r\n<ul>\r\n<li>Mr X has had some problems with the latest Audacity on Ubuntu. It sometimes does not launch from the menu link after an upgrade.</li>\r\n<li>Calibre on Dave’s <em>Debian Testing</em> system has stopped working recently, due to a Python error.<a href=\"#fn2\" class=\"footnote-ref\" id=\"fnref2\"><sup>2</sup></a></li>\r\n<li>Dave uses Clementine, the music player, which turns off the UI when you close it down the wrong way and apparently doesn’t provide a way to enable it again without hacking the configuration file<a href=\"#fn3\" class=\"footnote-ref\" id=\"fnref3\"><sup>3</sup></a>.</li>\r\n<li>MrX had problems with audio device recognition and uses <code>hdajackretask</code> to correct this. This is part of the <code>alsa-tools-gui</code> package on Debian (and related)<a href=\"#fn4\" class=\"footnote-ref\" id=\"fnref4\"><sup>4</sup></a>, but has a non-intuitive UI.</li>\r\n</ul>\r\n<h3 id=\"os-choices\">OS choices</h3>\r\n<ul>\r\n<li>Dave uses Raspbian Lite on his headless Raspberry Pis (which he secures using advice from Ken Fallon’s HPR show on preparing the <a href=\"https://hackerpublicradio.org/eps.php?id=2356\" title=\"hpr2356 :: Safely enabling ssh in the default Raspbian Image\">Raspbian image</a>).</li>\r\n<li>MrX uses standard Raspian on RPis, Ubuntu as his main Linux version, as well as OSMC (Open Source Media Center) on a Raspberry Pi, for watching media.</li>\r\n<li>Dave originally started with Fedora (actually Red Hat version 4 for a brief time) then moved to Ubuntu (Kubuntu) before moving to Debian Test
(2976,'2019-12-30','A walk through my PifaceCAD Python code – Part 4',391,'This is the last show in the series and covers the main program section at the bottom of my script','<p>This is the last show in the series. The series was recorded in one go and split into multiple parts. This last section is pretty short; it covers the main program section at the bottom of my script that calls all the other functions and allows the user to quit the program. In this episode I also mention explanatory notes that I included in my script. These are mainly for my own benefit so I could remember how I set up lirc. I’ve included these notes at the end of these show notes.</p>\r\n<p><b>Main program</b><br />\r\nTurn LCD backlight on, print <em>System up</em> message to LCD, wait a few seconds then clear screen. Activate push buttons on control and display board. Activates various IR buttons waiting on input from the remote control. Print quit message to terminal, waiting for input, repeat message until q is entered by user. When q is entered deactivate buttons and turn LCD backlight off.</p>\r\n<p>Below are my Lirc explanatory comments at the end of my Python script.</p>\r\n<blockquote>\r\n<p><code>lirc</code><br />\r\nThis is the Linux IR control program<br />\r\nLIRC (Linux Infrared remote control) is an open source package that allows users to receive and send infrared signals with a Linux-based computer system.</p>\r\n<p><code>Irrecord</code><br />\r\nTool used to record valid IR codes from your remote control. It generates the file <code>/etc/lirc/lircd.conf</code>, possibly overwrites original file so use with caution. It attempts to recognise your remote control from a series of button pushes. If the remote is not recognised then it captures the codes in raw mode, I abandoned this tool and got a valid IR file for a very similar remote control on the internet, see info below</p>\r\n<p><code>/etc/lirc/lircd.conf</code><br />\r\nFile used to store IR codes for your remote control, either using the tool <code>irrecord</code> or from somewhere on the internet. This file is a direct copy of file <code>\"BN59-00861A-SAMSUNG-TV.conf\"</code> I added the Samsung TV string to the file name.</p>\r\n<p><code>irw</code><br />\r\nTool used to get the key names for your particular remote control, for this to work you must first have a valid <code>/etc/lirc/lircd.conf</code> file</p>\r\n<p><code>~/.lircrc</code><br />\r\nThis file is used to store the remote control key names that you want to activate, and what action is to be taken when the button is pushed. Adding the field <code>\"remote =\"</code> allows the use of multiple remote controls. The remote control key names can be found by using the command <code>\"irw\"</code>, I created a file called <code>~/scripts/remote-key-names-sorted.txt</code> to store the valid key names for my Samsung remote control</p>\r\n<p><code>~/scripts/remote-key-names-sorted.txt</code><br />\r\nList of valid remote control key names for my Samsung remote control, this was generated using the <code>irw</code> command. I used the <code>\"tee\"</code> command to pipe output to the screen and write output to this file at the same time, see file for further details of commands I used.</p>\r\n</blockquote>\r\n',201,38,1,'CC-BY-SA','Podcasts, Linux, Command Line, Python, Raspberry Pi',0,0,1),
(3241,'2021-01-04','HPR Community News for December 2020',4055,'HPR Volunteers Dave, ToeJet, and Ken talk about shows released and comments posted in December 2020','<style>\ntable td.shrink {\n white-space:nowrap\n}\n</style>\n\n<h2>New hosts</h2>\n<p>\nWelcome to our new host: <br />\n\n <a href=\"https://hackerpublicradio.org/correspondents/0011.html\" target=\"_blank\">Pat from TLLTS</a>.\n</p>\n\n<h2>Last Month\'sShows</h2>\n<tableid=\"t01\">\n<tr>\n<th>Id</th>\n<th>Day</th>\n<th>Date</th>\n<th>Title</th>\n<th>Host</th>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3217\"target=\"_blank\">3217</a></strong></td>\n<td>Tue</td>\n<tdclass=\"shrink\">2020-12-01</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3217\"target=\"_blank\">SumpMinion</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0326.html\"target=\"_blank\">BrianinOhio</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3218\"target=\"_blank\">3218</a></strong></td>\n<td>Wed</td>\n<tdclass=\"shrink\">2020-12-02</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3218\"target=\"_blank\">AnintroductiontoDarktable</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0383.html\"target=\"_blank\">PaulQuirk</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3219\"target=\"_blank\">3219</a></strong></td>\n<td>Thu</td>\n<tdclass=\"shrink\">2020-12-03</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3219\"target=\"_blank\">LinuxInlawsS01E18:VoiceRecognitionandTexttoSpeech</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0384.html\"target=\"_blank\">monochromec</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3220\"target=\"_blank\">3220</a></strong></td>\n<td>Fri</td>\n<tdclass=\"shrink\">2020-12-04</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3220\"target=\"_blank\">PixelFed</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0198.html\"target=\"_blank\">Ahuka</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3221\"target=\"_blank\">3221</a></strong></td>\n<td>Mon</td>\n<tdclass=\"shrink\">2020-12-07</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3221\"target=\"_blank\">HPRCommunityNewsforNovember2020</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0159.html\"target=\"_blank\">HPRVolunteers</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3222\"target=\"_blank\">3222</a></strong></td>\n<td>Tue</td>\n<tdclass=\"shrink\">2020-12-08</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3222\"target=\"_blank\">MusingsaboutwritingabookabouttheOdoosoftwaresuite</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0369.html\"target=\"_blank\">JeroenBaten</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3223\"target=\"_blank\">3223</a></strong></td>\n<td>Wed</td>\n<tdclass=\"shrink\">2020-12-09</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3223\"target=\"_blank\">MyCOVIDyearsummary</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0300.html\"target=\"_blank\">b-yeezi</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3224\"target=\"_blank\">3224</a></strong></td>\n<td>Thu</td>\n<tdclass=\"shrink\">2020-12-10</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3224\"target=\"_blank\">AdventuresinRetrocomputingwiththeMacPlus</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0383.html\"target=\"_blank\">PaulQuirk</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3225\"target=\"_blank\">3225</a></strong></td>\n<td>Fri</td>\n<tdclass=\"shrink\">2020-12-11</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3225\"target=\"_blank\">Grillr
(3261,'2021-02-01','HPR Community News for January 2021',3606,'HPR Volunteers talk about shows released and comments posted in January 2021','<style>\ntable td.shrink {\n white-space:nowrap\n}\n</style>\n\n<h2>New hosts</h2>\n<p>\nWelcome to our new host: <br />\n\n <a href=\"https://hackerpublicradio.org/correspondents/0389.html\" target=\"_blank\">TrumpetJohn</a>.\n</p>\n\n<h2>Last Month\'sShows</h2>\n<tableid=\"t01\">\n<tr>\n<th>Id</th>\n<th>Day</th>\n<th>Date</th>\n<th>Title</th>\n<th>Host</th>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3240\"target=\"_blank\">3240</a></strong></td>\n<td>Fri</td>\n<tdclass=\"shrink\">2021-01-01</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3240\"target=\"_blank\">LinuxUnderAttack</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0198.html\"target=\"_blank\">Ahuka</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3241\"target=\"_blank\">3241</a></strong></td>\n<td>Mon</td>\n<tdclass=\"shrink\">2021-01-04</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3241\"target=\"_blank\">HPRCommunityNewsforDecember2020</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0159.html\"target=\"_blank\">HPRVolunteers</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3242\"target=\"_blank\">3242</a></strong></td>\n<td>Tue</td>\n<tdclass=\"shrink\">2021-01-05</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3242\"target=\"_blank\">Theeternalbattleoverhowtorunyourchromebookisabouttobegin</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0377.html\"target=\"_blank\">Zen_Floater2</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3243\"target=\"_blank\">3243</a></strong></td>\n<td>Wed</td>\n<tdclass=\"shrink\">2021-01-06</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3243\"target=\"_blank\">Pictor-freeandopenradioastronomy</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0268.html\"target=\"_blank\">AndrewConway</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3244\"target=\"_blank\">3244</a></strong></td>\n<td>Thu</td>\n<tdclass=\"shrink\">2021-01-07</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3244\"target=\"_blank\">InterviewwithAncoScholteterHorstCEOofFreedomInternet</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0030.html\"target=\"_blank\">KenFallon</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3245\"target=\"_blank\">3245</a></strong></td>\n<td>Fri</td>\n<tdclass=\"shrink\">2021-01-08</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3245\"target=\"_blank\">ELECTRICITY</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0036.html\"target=\"_blank\">operat0r</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3246\"target=\"_blank\">3246</a></strong></td>\n<td>Mon</td>\n<tdclass=\"shrink\">2021-01-11</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3246\"target=\"_blank\">LXCast:freeingtheFairphone3(andmanyotherphones)</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0285.html\"target=\"_blank\">2BFrank</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3247\"target=\"_blank\">3247</a></strong></td>\n<td>Tue</td>\n<tdclass=\"shrink\">2021-01-12</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3247\"target=\"_blank\">SaturdayMorningAutomotiveRoutine</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0389.html\"target=\"_blank\">TrumpetJohn</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3248\"target=\"_blank\">3248</a></strong></td>\n<td>Wed</td>\n<tdclass=\"shrink\">2021-01-13</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=324
(2973,'2019-12-25','Introduction to Advent of Code',836,'Advent of code is a challenge each year between 1-25 of December.','<p>I discuss all the challenges we have seen so far during the Advent of Code and talk about what they entailed and how hard they were to solve.</p>',382,0,0,'CC-BY-SA','coding, challenge',0,0,1),
(2974,'2019-12-26','Guitar Setup pt. 2',3107,'NYbill finish a guitar setup.','<p>Heh, listen to NYbill tune a guitar for an hour.</p>\r\n<p>Part two of guitar set up. Fret polishing, neck relief, string height, and intonation.</p>\r\n<h3 id=\"suppliers\">Suppliers:</h3>\r\n<ul>\r\n<li><p>Stewart MacDonald:<br />\r\n<a href=\"https://www.stewmac.com/\" class=\"uri\">https://www.stewmac.com/</a></p></li>\r\n<li><p>Warmoth:<br />\r\n<a href=\"https://www.warmoth.com/\" class=\"uri\">https://www.warmoth.com/</a></p></li>\r\n<li><p>Allied Lutherie:<br />\r\n<a href=\"https://alliedlutherie.com/\" class=\"uri\">https://alliedlutherie.com/</a></p></li>\r\n<li><p>Guitar Fetish:<br />\r\n<a href=\"https://www.guitarfetish.com/\" class=\"uri\">https://www.guitarfetish.com/</a></p></li>\r\n<li><p>Zona micro fiber polishing paper:<br />\r\n<a href=\"https://www.zonatool.net/cat/scroll-sander-sanding-tools/3m-wet-dry-micron-graded-polishing-papers/\" class=\"uri\">https://www.zonatool.net/cat/scroll-sander-sanding-tools/3m-wet-dry-micron-graded-polishing-papers/</a></p></li>\r\n<li><p>Pics for the episode:<br />\r\n<a href=\"https://media.gunmonkeynet.net/u/nybill/collection/guitar-setup-pt-2/\" class=\"uri\">https://media.gunmonkeynet.net/u/nybill/collection/guitar-setup-pt-2/</a></p></li>\r\n</ul>\r\n',235,0,0,'CC-BY-SA','Guitar, Setup, Repair',0,0,1),
(2977,'2019-12-31','World of Commodore 2019 Episode 3: Life after Commodore',1660,'A presentation by Dr. Richard Immers, author of \"Inside Commodore DOS\"','<p>Some relevant links of note:</p>\r\n<ul>\r\n<li><a href=\"https://www.goodreads.com/author/show/826731.Richard_C_Immers\" class=\"uri\">https://www.goodreads.com/author/show/826731.Richard_C_Immers</a></li>\r\n<li><a href=\"https://www.youtube.com/user/TorontoPETUsersGroup/\" class=\"uri\">https://www.youtube.com/user/TorontoPETUsersGroup/</a></li>\r\n<li><a href=\"https://www.tpug.ca/\" class=\"uri\">https://www.tpug.ca/</a></li>\r\n<li><a href=\"https://pquirk.com/\" class=\"uri\">https://pquirk.com/</a></li>\r\n</ul>\r\n',383,78,0,'CC-BY-SA','Commodore,PET,Amiga,64,Geckos,retro,Inside Commodore,DOS',0,0,1),
(2978,'2020-01-01','GARAGE DOOR',738,'I talk about various GARAGE DOOR and fixes','<p>Are you afraid if your garage door ? Have no fear!</p>',36,0,1,'CC-BY-SA','home improvement, garage door ,DIY',0,0,1),
(2982,'2020-01-07','World of Commodore 2019 Episode 4: Bare metal c64 Emulation on Raspberry Pi',2420,'Randy Rossi\'spresentationofhisGithubprojectonbaremetalemulationoftheC64onaPi3.','<p>Linksofnote:</p>\r\n<ul>\r\n<li><ahref=\"https://github.com/randyrossi/bmc64\"class=\"uri\">https://github.com/randyrossi/bmc64</a></li>\r\n<li><ahref=\"https://www.youtube.com/user/TorontoPETUsersGroup/\"class=\"uri\">https://www.youtube.com/user/TorontoPETUsersGroup/</a></li>\r\n<li><ahref=\"https://www.tpug.ca/\"class=\"uri\">https://www.tpug.ca/</a></li>\r\n<li><ahref=\"https://pquirk.com/\"class=\"uri\">https://pquirk.com/</a></li>\r\n</ul>',383,103,0,'CC-BY-SA','Raspberry,Pi,emulation,Commodore,64,WorldofCommodore,TPUG,Toronto,Pet,Users,Group,Github,OpenSour',0,0,1),
(2985,'2020-01-10','Firefox Update',1046,'Some recent updates to Firefox that add useful features','<p>Firefox has been the more secure alternative to Chrome, and it has over the last few months made some updates. So we may want to take a look and see if these are any good, and ask if they add to the security. In some cases there are valuable improvements, such as Facebook Container and the Monitor service.</p>\r\n<h2 id=\"links\">Links:</h2>\r\n<ul>\r\n<li><a href=\"https://www.mozilla.org/en-US/firefox/flashback/\" class=\"uri\">https://www.mozilla.org/en-US/firefox/flashback/</a></li>\r\n<li><a href=\"https://www.mozilla.org/en-US/firefox/privacy/\" class=\"uri\">https://www.mozilla.org/en-US/firefox/privacy/</a></li>\r\n<li><a href=\"https://www.mozilla.org/en-US/privacy/firefox/\" class=\"uri\">https://www.mozilla.org/en-US/privacy/firefox/</a></li>\r\n<li><a href=\"https://support.mozilla.org/en-US/kb/firefox-accounts-managing-account-data\" class=\"uri\">https://support.mozilla.org/en-US/kb/firefox-accounts-managing-account-data</a></li>\r\n<li><a href=\"https://www.zwilnik.com/?page_id=1072\" class=\"uri\">https://www.zwilnik.com/?page_id=1072</a></li>\r\n</ul>\r\n',198,74,0,'CC-BY-SA','Firefox, Sync, Container',0,0,1),
(2986,'2020-01-13','Onlykey Updated',1390,'Onlykey more like you better have two keys!','<p>I chat about Onlykey updates along with plugins / updates / issues/ fixes</p>\r\n<p><a href=\"https://chrome.google.com/webstore/detail/onlykey-configuration/adafilbceehejjehoccladhbkgbjmica?hl=en-US\" class=\"uri\">https://chrome.google.com/webstore/detail/onlykey-configuration/adafilbceehejjehoccladhbkgbjmica?hl=en-US</a></p>\r\n',36,74,1,'CC-BY-SA','fob,2fa,onlykey,security,computers',0,0,1),
(2991,'2020-01-20','Fix yer fog machine',674,'Save Your Fog Machine today!','<p><a href=\"https://smile.amazon.com/gp/product/B077HYSYSG\" class=\"uri\">https://smile.amazon.com/gp/product/B077HYSYSG</a></p>\r\n',36,0,1,'CC-BY-SA','Halloween,fog machine,DIY',0,0,1),
(2996,'2020-01-27','Spideroak Update',465,'I give you an update on my cloud backup solution and fixes','<p><a href=\"https://spideroak.support/hc/en-us/articles/115001891343-Command-Line-Reference\" class=\"uri\">https://spideroak.support/hc/en-us/articles/115001891343-Command-Line-Reference</a></p>\r\n<p>service script:</p>\r\n<pre><code># Make sure you have space or link the base path to some place else\r\n# make sure you have R/W for the plex user\r\n# ln -s /media/data/SPIDEROAK_CONFIG/ /home/plex/.config/SpiderOakONE\r\n\r\n[Unit]\r\nDescription=SPIDEROAK STARTUP\r\nAfter=network.target\r\n\r\n[Service]\r\nUser=plex\r\nGroup=adm\r\n\r\nType=simple\r\nExecStart=/bin/bash -c '\r\nPATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin ;\r\n/usr/bin/SpiderOakONE --headless --verbose'\r\n\r\n[Install]\r\nWantedBy=multi-user.target</code></pre>\r\n',36,0,1,'CC-BY-SA','cloud backup,computers,linux,spideroak one,spideroak',0,0,1),
(3006,'2020-02-10','Hijack Auxiliary Input of your car!',2159,'I talk about my Q40 and getting Auxiliary Input when your car does not have one','<p><a href=\"https://www.myg37.com/forums/audio-video-and-electronics/285929-2015-infiniti-q40-4dr-with-crap-audio.html\" class=\"uri\">https://www.myg37.com/forums/audio-video-and-electronics/285929-2015-infiniti-q40-4dr-with-crap-audio.html</a></p>\r\n<p><a href=\"https://rmccurdy.com/.scripts/downloaded/www.nicoclub.com/FSM/Q40/2015%20Q40/\" class=\"uri\">https://rmccurdy.com/.scripts/downloaded/www.nicoclub.com/FSM/Q40/2015%20Q40/</a></p>\r\n<p><strong>Updated: Solved:</strong> The audio could use a dac or something nice but this will do. Not (DO NOT PLUG IN THE HARNESS WRONG ORDER OR YOU WILL BLOW AT LEAST 4 FUSES ) I had to swap out 3 in the passenger side and 1 for the rear lights on the IPDM E/R next to the battery in a #@$% spot.</p>\r\n<p>pulled the pins and soldered a audio jack to them and fed it though the AC vent :</p>\r\n<p>pin 1 - G : Satellite radio sound signal LH pin 2 + R : Satellite radio sound signal LH pin 3 - w : Satellite radio sound signal RH pin 4 + b : Satellite radio sound signal RH</p>\r\n<h4 id=\"reference\">Reference:</h4>\r\n<ul>\r\n<li><a href=\"https://www.myg37.com/forums/audio-v...ml#post4253485\" class=\"uri\">https://www.myg37.com/forums/audio-v...ml#post4253485</a></li>\r\n<li><a href=\"https://rmccurdy.com/.scripts/downlo...5%20Q40/av.pdf\" class=\"uri\">https://rmccurdy.com/.scripts/downlo...5%20Q40/av.pdf</a> pg 42</li>\r\n</ul>\r\n<p><b>NOT SOLVED 08/21/2019 :</b> So I\'msickofthisjanksetup..thesoftwareiswonkyandworksabout1/2thetime..Ihavetoƒ@#$ with it for about 5-10 min every time I want to use it … WIRELINQ is crap.. and I don\'t want the 600$ BT mod .. I just want AUX in !! I dont care if CD or SAT is spliced!</p>\r\n<ul>\r\n<li>NO I\'m not using a Apple device ..</li>\r\n<li>NO I\'m not going BT because its crap audio ..</li>\r\n<li>NO I\'m not using MONO or anything like that (discord) because that\'s even worse then BT…</li>\r\n<li>NO I\'m not using a FM Transmitter because that\'s just stupid its a 2015 car it should have AUX input ..</li>\r\n</ul>\r\n<p>maybe I can hack it myself the issue is that the SAT is in the @<span class=\"math inline\"></span>^ing trunk .. so I would have to find the wires that go to the trunk. I use a long speaker wire with alligator clips on it and a continuity tester (volt meter ) to hunt for it …</p>\r\n<p>Part No<br />\r\n2591a 1ma5e</p>\r\n<p>Model No<br />\r\ncv-vn01e04d</p>\r\n<p>\"11 12 Infiniti G25 G37 Radio CD Player 2591A-1MA5E Bulk 711\"</p>\r\n<p><b>SOLVED 01/20/2018 :</b> YAY ! this works and I dont have to have grap BT audio</p>\r\n<ul>\r\n<li>2015 INFINITI Q40 NONAV ANDROID</li>\r\n<li>IPOD WIRELINQ GROM-WLQ</li>\r\n<li>Electop 2 Pack USB 2.0 A Female to USB Micro Female Adapter Converter</li>\r\n<li>Wsken Mini2 Micro USB Magnetic LED Display Data Sync Fast Charge 3.28ft Cable for Android (Silver)</li>\r\n</ul>\r\n',36,0,1,'CC-BY-SA','Car Audio,DIY,music,cars,auto',0,0,1),
(3011,'2020-02-17','Linux is HARD rant with Intel graphics',1228,'I go over my issues around Linux in general specifically Video issues','<p>Help me help you! I rant about linux and Video drivers etc …</p>\r\n<p>Get Video and CPU Info<br />\r\nchrome://gpu</p>\r\n<pre><code># gives you info about video GPU in chrome!\r\nchrome://gpu</code></pre>\r\n<p>phoronix-test-suite system-info</p>\r\n<pre><code># neat little project to dump out all kinds of info\r\nphoronix-test-suite system-info</code></pre>\r\n<pre><code># get hard disk temperatures !\r\n\r\nhddtemp /dev/sdb\r\n/dev/sdb: WDC WD4003FZEX-00Z4SA0: 37°C\r\nhddtemp /dev/sdc\r\n/dev/sdc: WDC WD4003FZEX-00Z4SA0: 36°C</code></pre>\r\n<p>vainfo - display information from VA API driver</p>\r\n<p>lspci specific device</p>\r\n<pre><code>lspci -v -s 00:02.0\r\n00:02.0 VGA compatible controller: Intel Corporation UHD Graphics 630 (Desktop) (prog-if 00 [VGA controller])\r\n Subsystem: ASRock Incorporation Device 3e92\r\n Flags: bus master, fast devsel, latency 0, IRQ 126\r\n Memory at a0000000 (64-bit, non-prefetchable) [size=16M]\r\n Memory at 90000000 (64-bit, prefetchable) [size=256M]\r\n I/O ports at 4000 [size=64]\r\n [virtual] Expansion ROM at 000c0000 [disabled] [size=128K]\r\n Capabilities: [40] Vendor Specific Information: Len=0c <?>\r\n Capabilities: [70] Express Root Complex Integrated Endpoint, MSI 00\r\n Capabilities: [ac] MSI: Enable+ Count=1/1 Maskable- 64bit-\r\n Capabilities: [d0] Power Management version 2\r\n Capabilities: [100] Process Address Space ID (PASID)\r\n Capabilities: [200] Address Translation Service (ATS)\r\n Capabilities: [300] Page Request Interface (PRI)\r\n Kernel driver in use: i915\r\n Kernel modules: i915\r\nlshw\r\n# lshw is a small tool to extract detailed information on the hardware configuration of the machine\r\n\r\nlshw -c video\r\n *-display\r\n description: VGA compatible controller\r\n product: UHD Graphics 630 (Desktop)\r\n vendor: Intel Corporation\r\n physical id: 2\r\n bus info: pci@0000:00:02.0\r\n version: 00\r\n width: 64 bits\r\n clock: 33MHz\r\n capabilities: pciexpress msi pm vga_controller bus_master cap_list rom\r\n configuration: driver=i915 latency=0\r\n resources: irq:126 memory:a0000000-a0ffffff memory:90000000-9fffffff ioport:4000(size=64) memory:c0000-dffff</code></pre>\r\n<p>glxinfo</p>\r\n<p>The glxinfo program shows information about the OpenGL and GLX implementations running on a given X display.</p>\r\n<pre><code>glxinfo | egrep -i 'device|memory|OpenGL|direct'</code></pre>\r\n<p>dmesg</p>\r\n<pre><code>dmesg | grep -e IOMMU -e DMAR\r\n\r\ndmesg | grep -E 'drm|radeon' | grep -iE 'firmware|microcode'\r\ndmesg | grep -i -e i915 -e drm -e vga</code></pre>\r\n<p>dmidecode - DMI table decoder</p>\r\n<pre><code>dmidecode -t baseboard | grep -i 'Product'</code></pre>\r\n<p>GPU usage</p>\r\n<pre><code>apt-get install intel-gpu-tools | intel_gpu_top</code></pre>\r\n<p>Google Dorks</p>\r\n<ul>\r\n<li>when googleing try -ubuntu -xubuntu</li>\r\n<li>when searching for start up stuff use ‘systemd’ in your query</li>\r\n</ul>\r\n',36,0,1,'CC-BY-SA','linux,video,DIY,xbmc,kodi,ubuntu,debian',0,0,1),
(3016,'2020-02-24','Nixie tube clock and friends!',874,'I chat about Novice Nixie tubes and tronics soldering etc','<p>Nixie tube (English: /ˈnɪk. siː/ NIK-see), or cold cathode display, is an electronic device for displaying numerals or other information using glow discharge.</p>\r\n<p><a href=\"https://www.tindie.com/products/robg/msp430-nixie-clock-kit/\" class=\"uri\">https://www.tindie.com/products/robg/msp430-nixie-clock-kit/</a></p>',36,0,0,'CC-BY-SA','DIY,nixie tube,LED,electronics ',0,0,1),
(2987,'2020-01-14','World of Commodore 2019 Episode 5: New games from Double Sided Games',2250,'A presentation by Jérémie Marsin of Double Sided games.','<p>Links of note:</p>\r\n<ul>\r\n<li><a href=\"https://doublesidedgames.com/\" class=\"uri\">https://doublesidedgames.com/</a></li>\r\n<li><a href=\"https://www.tpug.ca/\" class=\"uri\">https://www.tpug.ca/</a></li>\r\n<li><a href=\"https://pquirk.com/\" class=\"uri\">https://pquirk.com/</a></li>\r\n</ul>',383,0,0,'CC-BY-SA','Commodore 64,retro,computing,games,gamer,vintage',0,0,1),
(2992,'2020-01-21','World of Commodore 2019 Episode 6: Introduction to C64 OS',2159,'Greg Naçu presents to us his new operating system to the Commodore 64','<p>Links of note:</p>\r\n<ul>\r\n<li><a href=\"https://www.tpug.ca/\" class=\"uri\">https://www.tpug.ca/</a></li>\r\n<li><a href=\"https://pquirk.com/\" class=\"uri\">https://pquirk.com/</a></li>\r\n</ul>\r\n',383,103,0,'CC-BY-SA','Commodore,64,OS,World of Commodore',0,0,1),
(2990,'2020-01-17','JDK14 - Wrap up edition',911,'We look into what is included in the next release of the JDK.','<p>305: <a href=\"https://openjdk.java.net/jeps/305\">Pattern Matching for instanceof (Preview)</a><br />\r\n343: <a href=\"https://openjdk.java.net/jeps/343\">Packaging Tool (Incubator)</a><br />\r\n345: <a href=\"https://openjdk.java.net/jeps/345\">NUMA-Aware Memory Allocation for G1</a><br />\r\n349: <a href=\"https://openjdk.java.net/jeps/349\">JFR Event Streaming</a><br />\r\n352: <a href=\"https://openjdk.java.net/jeps/352\">Non-Volatile Mapped Byte Buffers</a><br />\r\n358: <a href=\"https://openjdk.java.net/jeps/358\">Helpful NullPointerExceptions</a><br />\r\n359: <a href=\"https://openjdk.java.net/jeps/359\">Records (Preview)</a><br />\r\n361: <a href=\"https://openjdk.java.net/jeps/361\">Switch Expressions (Standard)</a><br />\r\n362: <a href=\"https://openjdk.java.net/jeps/362\">Deprecate the Solaris and SPARC Ports</a><br />\r\n363: <a href=\"https://openjdk.java.net/jeps/363\">Remove the Concurrent Mark Sweep (CMS) Garbage Collector</a><br />\r\n364: <a href=\"https://openjdk.java.net/jeps/364\">ZGC on macOS</a><br />\r\n365: <a href=\"https://openjdk.java.net/jeps/365\">ZGC on Windows</a><br />\r\n366: <a href=\"https://openjdk.java.net/jeps/366\">Deprecate the ParallelScavenge + SerialOld GC Combination</a><br />\r\n367: <a href=\"https://openjdk.java.net/jeps/367\">Remove the Pack200 Tools and API</a><br />\r\n368: <a href=\"https://openjdk.java.net/jeps/368\">Text Blocks (Second Preview)</a><br />\r\n370: <a href=\"https://openjdk.java.net/jeps/370\">Foreign-Memory Access API (Incubator)</a></p>\r\n',382,0,0,'CC-BY-SA','java, news',0,0,1),
(2979,'2020-01-02','Bicycle Freewheel Maintenance',450,'I explain how to lube a bicycle freewheel','<p>This is a short episode where I explain how to service your bicycle freewheel if it\'smisbehaving.MypedalswereturningaroundwhenIwalkedthebike,andtheyoughttobestationary.Aquickdoseofchainoilinthefreewheelfixedtheproblem.Clicktheimagetoseephotosshowinghowtodothis.</p>\r\n\r\n<p><adata-flickr-embed=\"true\"href=\"https://www.flickr.com/photos/137675441@N05/albums/72157712277100862\"title=\"Bicycle Freewheel Lube\"><imgsrc=\"https://live.staticflickr.com/65535/49243896423_d89e9185da.jpg\"width=\"500\"height=\"281\"alt=\"Bicycle Freewheel Lube\"></a></p>\r\n',238,115,0,'CC-BY-SA','bicycles,bicyclemaintenance,DIY,bicyclerepair',0,0,1),
(2984,'2020-01-09','RHEL 8 Workstation first looks ',543,'Runing RHEL 8 workstation on a HP Stream Laptop','<p>Hi Everyone a bit random ideas about RHEL 8 on a low end laptop.</p>\r\n<p>Interesting Git and flatpak are already installed out of the box.</p>\r\n<p>MS Teams works great.</p>',129,0,0,'CC-BY-SA','HP Stream, RHEL 8, MS Teams, flatpak',0,0,1),
(2988,'2020-01-15','A tale of two hackers in the same system',518,'AIX Hacking and modem stuff!!','<p>Hi, I’m sigflup. This is about that awesome time I found that there was another hacker in the same system that I was hacking. Fun stuff</p>\r\n',115,0,1,'CC-BY-SA','unix,aix,modem,lynx',0,0,1),
(2989,'2020-01-16','2019-2020 New Year Show Episode 1',8435,'Eighth Annual New Year Show - Sint brings toys','<h3>Hacker Public Radio 2019-20 New Year Show Episode 1</h3>\r\n<p>04:30 - 11:00 EST (09:30 - 16:00 UTC)</p>\r\n<ul>\r\n<li>Ken explains Sinterklaas\r\n<ul>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Sinterklaas\">https://en.wikipedia.org/wiki/Sinterklaas</a></li>\r\n<li><a href=\"https://www.youtube.com/watch?v=vTGDFhi7z4U\">https://www.youtube.com/watch?v=vTGDFhi7z4U</a></li>\r\n</ul></li>\r\n<li><a href=\"https://www.comptia.org/certifications/a\">https://www.comptia.org/certifications/a</a></li>\r\n<li>Ken & Popey chat</li>\r\n<li>Netminer invites Popey & Ken\'sdaughtertobeguestsonLinuxLUGcast</li>\r\n<li>RaspberryPiIVdiscussion</li>\r\n<li>PopeyandTonyHchataboutrestoringmodelcars</li>\r\n<li>PopeyandTonyHchatabout:Moremodelcars,8-bitcomputing,ZXSpectrum,Commodore</li>\r\n<li><ahref=\"https://8bitversus.com/\">https://8bitversus.com/</a></li>\r\n<li>Sinclaircalculator-<ahref=\"https://en.wikipedia.org/wiki/List_of_Sinclair_calculators\">https://en.wikipedia.org/wiki/List_of_Sinclair_calculators</a></li>\r\n<li>PopeyandTonyHspeakaboutLenovolaptops</li>\r\n<li>MrCholmondleyWarner(<ahref=\"https://www.youtube.com/watch?v=tQWPR9TM0Gk)\">https://www.youtube.com/watch?v=tQWPR9TM0Gk)</a></li>\r\n<li>DaveMandTonyHtalkmoreaboutmodelcars,theirrestorationandhistory</li>\r\n<li>DaveMisworkingona\"MagicMirror2\"systemonaPi3A+toshowstatusinformation</li>\r\n<li>DinkyToys-<ahref=\"https://en.wikipedia.org/wiki/Dinky_Toys\">https://en.wikipedia.org/wiki/Dinky_Toys</a></li>\r\n</ul>\r\n',159,121,1,'CC-BY-SA','2019-20NewYearShow,NYS',0,0,1),
(3026,'2020-03-09','Hex Bug and Battle Bots',1120,'Review/mods of fun Hex Bug and Battle Bots','<p>Review/mods of fun Hex Bug and Battle Bots</p>\r\n',36,0,0,'CC-BY-SA','robots,hexbug,battlebots,RC,IR',0,0,1),
(2993,'2020-01-22','2019-2020 New Year Show Episode 2',9298,'Eighth Annual New Year Show with ThinkPads, Steam engines and Corporate America philosophy','<h3>Hacker Public Radio 2019-20 New Year Show Episode 2</h3>\r\n<p>11:00 - 16:30 EST (16:00 - 21:30 UTC)</p>\r\n<ul>\r\n<li>TonyH & JoeB chat: ThinkPads, podcasts they are involved with</li>\r\n<li>KenF explains podcast download stats</li>\r\n<li>Commercial podcasts hurting the little guy?</li>\r\n<li>TonyH & JoeB chat: Headphones</li>\r\n<li>TonyH & Popey chat: Food, games, first computer experience</li>\r\n<li>Moss joins in</li>\r\n<li>Old data storage: cassette tapes, Zip & Jazz drives</li>\r\n<li>Thaj joins Moss & JoeB: Favorite books & authors</li>\r\n<li>Netminer discusses Autism</li>\r\n<li>Automobile inspections</li>\r\n<li>Netminer & TonyH chat: personal property boundary issues</li>\r\n<li>Handsome_pirate joins: steam engine chat</li>\r\n<li>HonkeyMagoo joins</li>\r\n<li>David Richards steam engine Youtube channel -<a href= \"https://www.youtube.com/channel/UCBdj-vOveiEFWe3vnGoJUag\">https://www.youtube.com/channel/UCBdj-vOveiEFWe3vnGoJUag</a></li>\r\n<li>Mass transit, city traffic</li>\r\n<li>Corporate America philosophy</li>\r\n<li>Worker unions</li>\r\n<li>Fireworks</li>\r\n<li>Wimpy joins</li>\r\n<li>Ubuntu Mate discussion</li>\r\n<li>Donating used PC\'s</li>\r\n<li><ahref=\"https://8bitversus.com/\">https://8bitversus.com/</a></li>\r\n<li>Timezoneconfusion??</li>\r\n<li>Ubuntupodcast</li>\r\n<li>TonyH:howhediscoveredLinux</li>\r\n</ul>\r\n',159,121,1,'CC-BY-SA','2019-20NewYearShow,HPRNYS',0,0,1),
(2994,'2020-01-23','Wrestling As You Like It Episode 3',1327,'A podcast on why I like wrestling and how it works to draw in fans.','<p>In this episode I discuss what direction I’m taking the podcast in. Also more importantly I discuss what Supercards are and their purpose in Pro Wrestling.</p>',354,0,1,'CC-BY-SA','Pro Wrestling',0,0,1),
(2995,'2020-01-24','ActivityPub Conference 2019 - ActivityPub: past, present, future',961,'ActivityPub Conference 2019 Keynote','<p>The ActivityPub Conference of 2019 was held in Prague. This is about the opening keynote talk from Christopher Lemmer Webber. <a href=\"https://www.zwilnik.com/?page_id=1063\" class=\"uri\">https://www.zwilnik.com/?page_id=1063</a></p>\r\n<h3 id=\"links\">Links:</h3>\r\n<ul>\r\n<li><a href=\"https://redaktor.me/apconf/\" class=\"uri\">https://redaktor.me/apconf/</a></li>\r\n<li><a href=\"https://archive.org/details/apconf-chris\" class=\"uri\">https://archive.org/details/apconf-chris</a></li>\r\n<li><a href=\"https://dustycloud.org/\" class=\"uri\">https://dustycloud.org/</a></li>\r\n<li><a href=\"https://www.crockford.com/ec/\" class=\"uri\">https://www.crockford.com/ec/</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Fediverse\" class=\"uri\">https://en.wikipedia.org/wiki/Fediverse</a></li>\r\n<li><a href=\"https://www.zwilnik.com/?page_id=1063\" class=\"uri\">https://www.zwilnik.com/?page_id=1063</a></li>\r\n</ul>\r\n',198,108,0,'CC-BY-SA','social media, alternative, Fediverse, ActivityPub',0,0,1),
(2997,'2020-01-28','World of Commodore 2019 Episode 7: Video Playback with 1541 Ultimate',1161,'In this seventh episode, Greg returns to tell us how he got full video playback on a Commodore 64.','<h3 id=\"links\">Links</h3>\r\n<ul>\r\n<li><a href=\"https://www.youtube.com/user/TorontoPETUsersGroup/\" class=\"uri\">https://www.youtube.com/user/TorontoPETUsersGroup/</a></li>\r\n<li><a href=\"https://pquirk.com/\" class=\"uri\">https://pquirk.com/</a></li>\r\n<li><a href=\"https://www.c64-wiki.com/wiki/1541_Ultimate\" class=\"uri\">https://www.c64-wiki.com/wiki/1541_Ultimate</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/1541_Ultimate\" class=\"uri\">https://en.wikipedia.org/wiki/1541_Ultimate</a></li>\r\n</ul>\r\n',383,103,0,'CC-BY-SA','Commodore 64,retro,computing,games,gamer,vintage,video,World of Commodore,TPUG',0,0,1),
(2998,'2020-01-29','2019-2020 New Year Show Episode 3',9164,'Eighth Annual New Year Show: The US is awake','<h3>Hacker Public Radio 2019-20 New Year Show Episode 3</h3>\r\n<p>16:30 - 21:54 EST (21:30 - 02:54 UTC)</p>\r\n<ul>\r\n<li>KWisher joins: ponders the New Year show editing</li>\r\n<li>New PC discussion, used PC acquisitions</li>\r\n<li>Remote desktop solutions</li>\r\n<li>Raspberry Pi IV</li>\r\n<li>DannW joins: text editors, Pascal, Fortran & other programming languages</li>\r\n<li>MS Windows licensing, software, operating systems</li>\r\n<li>More MS woes</li>\r\n<li>Asperger syndrome, some light political chat</li>\r\n<li>ClaudioM joins: talks about BSD</li>\r\n<li>Moss: Feren OS - <a href=\"https://ferenos.weebly.com/\">https://ferenos.weebly.com/</a></li>\r\n<li>ZFS discussion</li>\r\n<li>Urandom Podcast - <a href=\"https://urandom-podcast.info/\">https://urandom-podcast.info/</a></li>\r\n<li>SELF - <a href=\"https://southeastlinuxfest.org/\">https://southeastlinuxfest.org/</a></li>\r\n<li>Destination Linux Podcast - <a href=\"https://destinationlinux.org/\">https://destinationlinux.org/</a></li>\r\n<li>Mandriva, Sabayon, Slackware, Fedora discussion</li>\r\n<li>Softmaker Office, office suite discussion</li>\r\n<li>Pokey joins: automobiles, politics</li>\r\n<li>Mushrooms, farming, college</li>\r\n<li>HP EliteBooks</li>\r\n<li>Linux Mint, thermal paste</li>\r\n<li>Winter weather & driving, tire socks</li>\r\n<li><a href=\"https://thermal-grizzly.com/en/products/16-kryonaut-en\">https://thermal-grizzly.com/en/products/16-kryonaut-en</a></li>\r\n<li>Netminer talks about his DOS days, ISO standards</li>\r\n<li>Spine/back issues, treatment</li>\r\n<li>Xoke joins in</li>\r\n<li>Pokey loves DuckDuckGo</li>\r\n<li>Gnome boxes virtualization - <a href=\"https://help.gnome.org/users/gnome-boxes/stable/\">https://help.gnome.org/users/gnome-boxes/stable/</a></li>\r\n<li>Android key mapper - <a href=\"https://f-droid.org/en/packages/io.github.sds100.keymapper/\">https://f-droid.org/en/packages/io.github.sds100.keymapper/</a></li>\r\n</ul>',159,121,1,'CC-BY-SA','2019-20 New Year Show',0,0,1),
(3002,'2020-02-04','World of Commodore 2019 Episode 8: Vote of thanks',1156,'This is the final episode of the World of Commodore 2019 mini series.','<h3 id=\"links\">Links</h3>\r\n<ul>\r\n<li><a href=\"https://www.tpug.ca/\" class=\"uri\">https://www.tpug.ca/</a></li>\r\n<li><a href=\"https://pquirk.com/\" class=\"uri\">https://pquirk.com/</a></li>\r\n</ul>',383,0,1,'CC-BY-SA','Commodore,64,PET, Vic 20, amiga,World of Commodore, TPUG',0,0,1),
(3003,'2020-02-05','2019-2020 New Year Show Episode 4',9707,'Eighth Annual New Year Show. From Star Wars to NASA','<h3 id=\"hacker-public-radio-2019-20-new-year-show-episode-4\">Hacker Public Radio 2019-20 New Year Show Episode 4</h3>\r\n<p>21:54 - 01:40 EST (02:54 - 06:40 UTC)</p>\r\n<ul>\r\n<li>Chat about music, Star Wars, The Mandalorian</li>\r\n<li>Current main distro</li>\r\n<li>X2go RDP, Teamviewer, Dark Reader Firefox theme</li>\r\n<li>Pokey sucks at uRandom promotion</li>\r\n<li>Advent - <a href=\"https://en.wikipedia.org/wiki/Advent\" class=\"uri\">https://en.wikipedia.org/wiki/Advent</a></li>\r\n<li>Pokey’s firestarters</li>\r\n<li>Thaj publicly shames Lyle</li>\r\n<li>Lyle joins in shame</li>\r\n<li>Brief history of the New Year show</li>\r\n<li>Thaj challenges everyone listening to find one HPR episode that doesn’t have tags and contribute them this year.Tags get sparse around episode 550 if you are trying to find a place to start.OH…and you also owe Ken a show too.</li>\r\n<li>Here are the instructions: <a href=\"https://hackerpublicradio.org/report_missing_tags.php\" class=\"uri\">https://hackerpublicradio.org/report_missing_tags.php</a></li>\r\n<li>Discussion about exercise</li>\r\n<li>Pokey tries to help Mongo with Mumble</li>\r\n<li>Thaj describes his custom keyboard layout</li>\r\n<li>Pokey repairs his wife’s laptop</li>\r\n<li>Thaj publicly shames Klattu & Pokey for no tags on their shows</li>\r\n<li>CladioM explains the Latin tradition “Twelve Grapes”</li>\r\n<li>Pokey talks about being a grandparent</li>\r\n<li>More HP & laptop talk</li>\r\n<li>Urugami joins</li>\r\n<li>Mongo joins</li>\r\n<li>Texas geography</li>\r\n<li>Motorcycles</li>\r\n<li>War stories</li>\r\n<li>NASA</li>\r\n</ul>\r\n',159,121,1,'CC-BY-SA','2019-20 New Year Show',0,0,1),
(3008,'2020-02-12','2019-2020 New Year Show Episode 5',7013,'Eighth Annual New Year Show: war stories and more war stories','<h3 id=\"hacker-public-radio-2019-20-new-year-show-episode-5\">Hacker Public Radio 2019-20 New Year Show Episode 5</h3>\r\n<p>01:40 - 07:20 EST (09:40 - 12:20 UTC)</p>\r\n<ul>\r\n<li>More war stories, podcasts, lawn mowing</li>\r\n<li>Timezones, Daylight Savings Time</li>\r\n<li>Antique computers - PDP, VAX, distro talk</li>\r\n<li>NAS discussion, EU politics</li>\r\n<li>Urugami joins</li>\r\n<li>Mongo joins</li>\r\n<li>Texas geography</li>\r\n<li>Motorcycles</li>\r\n<li>War stories</li>\r\n<li>NASA</li>\r\n<li>More war stories, podcasts, lawn mowing</li>\r\n<li>Timezones, Daylight Savings Time</li>\r\n<li>Antique computers - PDP, VAX, distro talk</li>\r\n<li>NAS discussion, EU politics</li>\r\n</ul>\r\n',159,121,1,'CC-BY-SA','2019-20 New Year Show',0,0,1),
(3005,'2020-02-07','Is ActivityPub Paving The Way to Web 3.0?',735,'ActivityPub Conference 2019, a talk about whether ActivityPub is leading the way to Web 3.0','<p>The ActivityPub Conference of 2019 was held in Prague. This is about a talk raising a suggestion that ActivityPub might be a way to implement Web 3.0. <a href=\"https://www.zwilnik.com/?page_id=1081\" class=\"uri\">https://www.zwilnik.com/?page_id=1081</a></p>\r\n<h3 id=\"links\">Links:</h3>\r\n<ul>\r\n<li><a href=\"https://redaktor.me/apconf/\" class=\"uri\">https://redaktor.me/apconf/</a></li>\r\n<li><a href=\"https://archive.org/details/apconf-talks/Talk2_Maloki_compressed.mov\" class=\"uri\">https://archive.org/details/apconf-talks/Talk2_Maloki_compressed.mov</a></li>\r\n<li><a href=\"https://medium.com/@maloki/does-mastodon-spark-joy-no-meet-florence-788bbc8b48c2\" class=\"uri\">https://medium.com/@maloki/does-mastodon-spark-joy-no-meet-florence-788bbc8b48c2</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Fediverse\" class=\"uri\">https://en.wikipedia.org/wiki/Fediverse</a></li>\r\n<li><a href=\"https://www.zwilnik.com/?page_id=1081\" class=\"uri\">https://www.zwilnik.com/?page_id=1081</a></li>\r\n</ul>',198,108,0,'CC-BY-SA','social media, alternative, Fediverse, ActivityPub',0,0,1),
(3015,'2020-02-21','ActivityPub Conference 2019 - The Semantic Social Network',438,'ActivityPub Conference 2019, building a Semantic Social Network','<p>The ActivityPub Conference of 2019 was held in Prague. This is about a talk using ActivityPub to create the Semantic Social Network. <a href=\"https://www.zwilnik.com/?page_id=1086\" class=\"uri\">https://www.zwilnik.com/?page_id=1086</a></p>\r\n<h3 id=\"links\">Links:</h3>\r\n<ul>\r\n<li><a href=\"https://redaktor.me/apconf/\" class=\"uri\">https://redaktor.me/apconf/</a></li>\r\n<li><a href=\"https://archive.org/details/apconf-talks/Talk3_Pukkamustard_compressed.mov\" class=\"uri\">https://archive.org/details/apconf-talks/Talk3_Pukkamustard_compressed.mov</a></li>\r\n<li><a href=\"https://schema.org/\" class=\"uri\">https://schema.org/</a></li>\r\n<li><a href=\"https://schema.org/servesCuisine\" class=\"uri\">https://schema.org/servesCuisine</a></li>\r\n<li><a href=\"https://schema.org/areaServed\" class=\"uri\">https://schema.org/areaServed</a></li>\r\n<li><a href=\"https://5stardata.info/en/\" class=\"uri\">https://5stardata.info/en/</a></li>\r\n<li><a href=\"https://moz.com/blog/json-ld-for-beginners\" class=\"uri\">https://moz.com/blog/json-ld-for-beginners</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Fediverse\" class=\"uri\">https://en.wikipedia.org/wiki/Fediverse</a></li>\r\n<li><a href=\"https://www.zwilnik.com/?page_id=1086\" class=\"uri\">https://www.zwilnik.com/?page_id=1086</a></li>\r\n</ul>',198,108,0,'CC-BY-SA','social media, alternative, Fediverse, ActivityPub',0,0,1),
(3025,'2020-03-06','Keep unwanted messages off the Fediverse',881,'ActivityPub Conference 2019, techniques for fighting SPAM and unwanted messages in the Fediverse.','<p>The ActivityPub Conference of 2019 was held in Prague. This is about a talk about how we can keep SPAM and unwanted messages off of our platforms in the Fediverse. <a href=\"https://www.zwilnik.com/?page_id=1089\" class=\"uri\">https://www.zwilnik.com/?page_id=1089</a></p>\r\n<h3 id=\"links\">Links:</h3>\r\n<ul>\r\n<li><a href=\"https://redaktor.me/apconf/\" class=\"uri\">https://redaktor.me/apconf/</a></li>\r\n<li><a href=\"https://archive.org/details/apconf-talks/Talk4_Serge_compressed.mov\" class=\"uri\">https://archive.org/details/apconf-talks/Talk4_Serge_compressed.mov</a></li>\r\n<li><a href=\"https://gitlab.com/spritely/ocappub\" class=\"uri\">https://gitlab.com/spritely/ocappub</a></li>\r\n<li><a href=\"https://www.zwilnik.com/spritely/ocappub/master/*How%20to%20build%20it\" class=\"uri\">https://www.zwilnik.com/spritely/ocappub/master/*How%20to%20build%20it</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Fediverse\" class=\"uri\">https://en.wikipedia.org/wiki/Fediverse</a></li>\r\n<li><a href=\"https://www.zwilnik.com/?page_id=1089\" class=\"uri\">https://www.zwilnik.com/?page_id=1089</a></li>\r\n</ul>',198,108,0,'CC-BY-SA','social media, alternative, Fediverse, ActivityPub, SPAM',0,0,1),
(3035,'2020-03-20','Decentralised Hashtag Search and Subscription in Federated Social Networks',669,'ActivityPub Conference 2019, a proposal for how we can use hashtags to find and subscribe to content','<p>The ActivityPub Conference of 2019 was held in Prague. This is about a talk a proposal for a method to allow searching for hashtags in a decentralized Fediverse environment so that we can find, and subscribe to, content of interest. <a href=\"https://www.zwilnik.com/?page_id=1091\" class=\"uri\">https://www.zwilnik.com/?page_id=1091</a></p>\r\n<h3 id=\"links\">Links:</h3>\r\n<ul>\r\n<li><a href=\"https://redaktor.me/apconf/\" class=\"uri\">https://redaktor.me/apconf/</a></li>\r\n<li><a href=\"https://archive.org/details/apconf-talks/Talk5_Schmittlauch_compressed.mov\" class=\"uri\">https://archive.org/details/apconf-talks/Talk5_Schmittlauch_compressed.mov</a></li>\r\n<li><a href=\"https://relay.mastodon.host/\" class=\"uri\">https://relay.mastodon.host/</a></li>\r\n<li><a href=\"https://hacks.mozilla.org/2018/11/decentralizing-social-interactions-with-activitypub/\" class=\"uri\">https://hacks.mozilla.org/2018/11/decentralizing-social-interactions-with-activitypub/</a></li>\r\n<li><a href=\"https://source.joinmastodon.org/mastodon/pub-relay\" class=\"uri\">https://source.joinmastodon.org/mastodon/pub-relay</a></li>\r\n<li><a href=\"https://git.orlives.de/schmittlauch/paper_hashtag_federation/src/branch/master/paper_hashtag_federation.pdf\" class=\"uri\">https://git.orlives.de/schmittlauch/paper_hashtag_federation/src/branch/master/paper_hashtag_federation.pdf</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Fediverse\" class=\"uri\">https://en.wikipedia.org/wiki/Fediverse</a></li>\r\n<li><a href=\"https://www.zwilnik.com/?page_id=1091\" class=\"uri\">https://www.zwilnik.com/?page_id=1091</a></li>\r\n</ul>',198,108,0,'CC-BY-SA','social media, alternative, Fediverse, ActivityPub, Hashtags',0,0,1),
(3045,'2020-04-03','OSS compliance with privacy by default and design',951,'How can Open Source Software manage the mandates of regulations like the GDPR?','<p>The GDPR (General Data Protection Regulation) was enacted by the European Community in 2016, and began to be enforced in 2018. Since this covers a large segment of the Internet users, and other jurisdictions are looking at similar legislation this talk is a timely look at what is required and how Open Source Software can meet the legal requirements. <a href=\"https://www.zwilnik.com/?page_id=1096\" class=\"uri\">https://www.zwilnik.com/?page_id=1096</a></p>\r\n<h2 id=\"links\">Links:</h2>\r\n<ul>\r\n<li><a href=\"https://redaktor.me/apconf/\" class=\"uri\">https://redaktor.me/apconf/</a></li>\r\n<li><a href=\"https://archive.org/details/apconf-talks/Talk6_Cristina_compressed.mov\" class=\"uri\">https://archive.org/details/apconf-talks/Talk6_Cristina_compressed.mov</a></li>\r\n<li><a href=\"https://xwiki.com/en/company/who-we-are/\" class=\"uri\">https://xwiki.com/en/company/who-we-are/</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/General_Data_Protection_Regulation\" class=\"uri\">https://en.wikipedia.org/wiki/General_Data_Protection_Regulation</a></li>\r\n<li><a href=\"https://developercertificate.org/\" class=\"uri\">https://developercertificate.org/</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Fediverse\" class=\"uri\">https://en.wikipedia.org/wiki/Fediverse</a></li>\r\n<li><a href=\"https://www.zwilnik.com/?page_id=1096\" class=\"uri\">https://www.zwilnik.com/?page_id=1096</a></li>\r\n</ul>\r\n',198,108,0,'CC-BY-SA','social media, alternative, Fediverse, ActivityPub, Privacy',0,0,1),
(3007,'2020-02-11','Photography 101',1468,'I tell you everything I know about the basics of photography','<h2 id=\"links\">Links</h2>\r\n<ul>\r\n<li><a href=\"https://musopen.org/music/43172-pleasant-moments/\" class=\"uri\">https://musopen.org/music/43172-pleasant-moments/</a></li>\r\n<li><a href=\"https://pquirk.com\" class=\"uri\">https://pquirk.com</a></li>\r\n</ul>\r\n',383,0,0,'CC-BY-SA','Photography 101,digital,film,camera',0,0,1),
(2999,'2020-01-30','SQRL - Secure Quick Reliable Login',1442,'In this podcast we talk about what SQRL is and how it works.','<p>In this podcast, we talk about what SQRL is, and how it works, why I feel that it’s an exciting new login method that is safe and easy to use.</p>\r\n<ul>\r\n<li><p>SQRL Documentation<br />\r\n<a href=\"https://www.grc.com/sqrl/sqrl.htm\" class=\"uri\">https://www.grc.com/sqrl/sqrl.htm</a></p></li>\r\n<li><p>SQRL Forums<br />\r\n<a href=\"https://sqrl.grc.com/\" class=\"uri\">https://sqrl.grc.com/</a></p></li>\r\n<li><p>SQRL Github organization<br />\r\n<a href=\"https://github.com/sqrldev\" class=\"uri\">https://github.com/sqrldev</a></p></li>\r\n<li><p>Android Application<br />\r\n<a href=\"https://play.google.com/store/apps/details?id=org.ea.sqrl\" class=\"uri\">https://play.google.com/store/apps/details?id=org.ea.sqrl</a></p></li>\r\n<li><p>Github repository for Android Application<br />\r\n<a href=\"https://github.com/kalaspuffar/secure-quick-reliable-login\" class=\"uri\">https://github.com/kalaspuffar/secure-quick-reliable-login</a></p></li>\r\n</ul>\r\n',382,0,1,'CC-BY-SA','security, login method',0,0,1),
(3281,'2021-03-01','HPR Community News for February 2021',4150,'HPR Volunteers talk about shows released and comments posted in February 2021','<style>\ntable td.shrink {\n white-space:nowrap\n}\n</style>\n\n<h2>New hosts</h2>\n<p>\nWelcome to our new hosts: <br />\n\n <a href=\"https://hackerpublicradio.org/correspondents/0390.html\" target=\"_blank\">o9l</a>, \n <a href=\"https://hackerpublicradio.org/correspondents/0391.html\" target=\"_blank\">Some Guy On The Internet</a>.\n</p>\n\n<h2>Last Month\'sShows</h2>\n<tableid=\"t01\">\n<tr>\n<th>Id</th>\n<th>Day</th>\n<th>Date</th>\n<th>Title</th>\n<th>Host</th>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3261\"target=\"_blank\">3261</a></strong></td>\n<td>Mon</td>\n<tdclass=\"shrink\">2021-02-01</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3261\"target=\"_blank\">HPRCommunityNewsforJanuary2021</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0159.html\"target=\"_blank\">HPRVolunteers</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3262\"target=\"_blank\">3262</a></strong></td>\n<td>Tue</td>\n<tdclass=\"shrink\">2021-02-02</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3262\"target=\"_blank\">MythoughtsondiversityinLinuxandopensource</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0297.html\"target=\"_blank\">swift110</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3263\"target=\"_blank\">3263</a></strong></td>\n<td>Wed</td>\n<tdclass=\"shrink\">2021-02-03</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3263\"target=\"_blank\">MyBeginningsinTech</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0390.html\"target=\"_blank\">o9l</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3264\"target=\"_blank\">3264</a></strong></td>\n<td>Thu</td>\n<tdclass=\"shrink\">2021-02-04</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3264\"target=\"_blank\">IntrotoNagios</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0342.html\"target=\"_blank\">norrist</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3265\"target=\"_blank\">3265</a></strong></td>\n<td>Fri</td>\n<tdclass=\"shrink\">2021-02-05</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3265\"target=\"_blank\">MyChromebookExperience</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0198.html\"target=\"_blank\">Ahuka</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3266\"target=\"_blank\">3266</a></strong></td>\n<td>Mon</td>\n<tdclass=\"shrink\">2021-02-08</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3266\"target=\"_blank\">UpgradingDebianonmyraspberrypi</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0201.html\"target=\"_blank\">MrX</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3267\"target=\"_blank\">3267</a></strong></td>\n<td>Tue</td>\n<tdclass=\"shrink\">2021-02-09</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3267\"target=\"_blank\">RippingMedia2021</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0036.html\"target=\"_blank\">operat0r</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3268\"target=\"_blank\">3268</a></strong></td>\n<td>Wed</td>\n<tdclass=\"shrink\">2021-02-10</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3268\"target=\"_blank\">VideoGameReview-ArkSurvivalEvolved</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0039.html\"target=\"_blank\">Enigma</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3269\"target=\"_blank\">3269</a></strong></td>\n<td>Thu</td>\n<tdclass=\"shrink\">2021-02-11</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id
(3306,'2021-04-05','HPR Community News for March 2021',2000,'HPR Volunteers talk about shows released and comments posted in March 2021','<style>\ntable td.shrink {\n white-space:nowrap\n}\n</style>\n\n<h2>New hosts</h2>\n<p>\nWelcome to our new host: <br />\n\n <a href=\"https://hackerpublicradio.org/correspondents/0392.html\" target=\"_blank\">timttmy</a>.\n</p>\n\n<h2>Last Month\'sShows</h2>\n<tableid=\"t01\">\n<tr>\n<th>Id</th>\n<th>Day</th>\n<th>Date</th>\n<th>Title</th>\n<th>Host</th>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3281\"target=\"_blank\">3281</a></strong></td>\n<td>Mon</td>\n<tdclass=\"shrink\">2021-03-01</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3281\"target=\"_blank\">HPRCommunityNewsforFebruary2021</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0159.html\"target=\"_blank\">HPRVolunteers</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3282\"target=\"_blank\">3282</a></strong></td>\n<td>Tue</td>\n<tdclass=\"shrink\">2021-03-02</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3282\"target=\"_blank\">HPLaptopwithAMDRyzen3MobilewithRadeonGraphics</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0391.html\"target=\"_blank\">SomeGuyOnTheInternet</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3283\"target=\"_blank\">3283</a></strong></td>\n<td>Wed</td>\n<tdclass=\"shrink\">2021-03-03</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3283\"target=\"_blank\">HPRRPGClubreviewsDeadEarth</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0078.html\"target=\"_blank\">klaatu</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3284\"target=\"_blank\">3284</a></strong></td>\n<td>Thu</td>\n<tdclass=\"shrink\">2021-03-04</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3284\"target=\"_blank\">Introductiontogdb</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0078.html\"target=\"_blank\">klaatu</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3285\"target=\"_blank\">3285</a></strong></td>\n<td>Fri</td>\n<tdclass=\"shrink\">2021-03-05</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3285\"target=\"_blank\">UpgradingLubuntuonmySamsungN150Plusnetbook</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0201.html\"target=\"_blank\">MrX</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3286\"target=\"_blank\">3286</a></strong></td>\n<td>Mon</td>\n<tdclass=\"shrink\">2021-03-08</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3286\"target=\"_blank\">WireguardHowTo</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0392.html\"target=\"_blank\">timttmy</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3287\"target=\"_blank\">3287</a></strong></td>\n<td>Tue</td>\n<tdclass=\"shrink\">2021-03-09</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3287\"target=\"_blank\">Quicktip</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0318.html\"target=\"_blank\">Archer72</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3288\"target=\"_blank\">3288</a></strong></td>\n<td>Wed</td>\n<tdclass=\"shrink\">2021-03-10</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3288\"target=\"_blank\">LinuxInlawsS01E25:TheGrumpyOldCoders</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0384.html\"target=\"_blank\">monochromec</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3289\"target=\"_blank\">3289</a></strong></td>\n<td>Thu</td>\n<tdclass=\"shrink\">2021-03-11</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3289\"target=\"_blank\">NextCloudthehardway</a></td>\n<td><ahref=\"https:/
(3055,'2020-04-17','Advice to new Fediverse administrators and developers',754,'An experienced admin for a Mastodon Instance at a major Fediverse developer offers some tips','<p>Framasoft is a company that develops for PeerTube and Mobilizon, and also hosts a Mastodon instance. The speaker is the sysadmin for the Mastodon instance gives his tips based on his experience at this non-profit company. <a href=\"https://www.zwilnik.com/?page_id=1098\" class=\"uri\">https://www.zwilnik.com/?page_id=1098</a></p>\r\n<h2 id=\"links\">Links:</h2>\r\n<ul>\r\n<li><a href=\"https://redaktor.me/apconf/\" class=\"uri\">https://redaktor.me/apconf/</a></li>\r\n<li><a href=\"https://archive.org/details/apconf-talks/Talk1_Luc_compressed.mov\" class=\"uri\">https://archive.org/details/apconf-talks/Talk1_Luc_compressed.mov</a></li>\r\n<li><a href=\"https://frama.link/ap-conf-2019\" class=\"uri\">https://frama.link/ap-conf-2019</a></li>\r\n<li><a href=\"https://joinpeertube.org/\" class=\"uri\">https://joinpeertube.org/</a></li>\r\n<li><a href=\"https://joinmobilizon.org/en/\" class=\"uri\">https://joinmobilizon.org/en/</a></li>\r\n<li><a href=\"https://soutenir.framasoft.org/en/\" class=\"uri\">https://soutenir.framasoft.org/en/</a></li>\r\n<li><a href=\"https://www.zwilnik.com/?page_id=1034\" class=\"uri\">https://www.zwilnik.com/?page_id=1034</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Fediverse\" class=\"uri\">https://en.wikipedia.org/wiki/Fediverse</a></li>\r\n<li><a href=\"https://www.zwilnik.com/?page_id=1098\" class=\"uri\">https://www.zwilnik.com/?page_id=1098</a></li>\r\n</ul>\r\n',198,108,0,'CC-BY-SA','social media, alternative, Fediverse, ActivityPub',0,0,1),
(3065,'2020-05-01','The case for the unattributed message',977,'Anonymity can cause problems (trolls) but also can be necessary.','<p>Anonymity has an unfortunate consequence of enabling trolls and abuse. But there are cases where it is important for people to communicate anonymously. In this talk some ideas are presented on how to enable a measure of anonymity without having all of the problems. <a href=\"https://www.zwilnik.com/?page_id=1103\" class=\"uri\">https://www.zwilnik.com/?page_id=1103</a></p>\r\n<h2 id=\"links\">Links:</h2>\r\n<ul>\r\n<li><a href=\"https://redaktor.me/apconf/\" class=\"uri\">https://redaktor.me/apconf/</a></li>\r\n<li><a href=\"https://archive.org/details/apconf-talks/Talk7_Caleb_compressed.mov\" class=\"uri\">https://archive.org/details/apconf-talks/Talk7_Caleb_compressed.mov</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/EFnet\" class=\"uri\">https://en.wikipedia.org/wiki/EFnet</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Freenet\" class=\"uri\">https://en.wikipedia.org/wiki/Freenet</a></li>\r\n<li><a href=\"https://medium.com/@mhatta/easy-censorship-resistant-communication-with-syndie-e063a6c9cf35\" class=\"uri\">https://medium.com/@mhatta/easy-censorship-resistant-communication-with-syndie-e063a6c9cf35</a></li>\r\n<li><a href=\"https://www.zwilnik.com/wp-admin/post.php?post=1101&action=edit\" class=\"uri\">https://www.zwilnik.com/wp-admin/post.php?post=1101&action=edit</a></li>\r\n<li><a href=\"https://medium.com/@ameet/strong-opinions-weakly-held-a-framework-for-thinking-6530d417e364\" class=\"uri\">https://medium.com/@ameet/strong-opinions-weakly-held-a-framework-for-thinking-6530d417e364</a></li>\r\n<li><a href=\"https://www.zwilnik.com/?page_id=1034\" class=\"uri\">https://www.zwilnik.com/?page_id=1034</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Fediverse\" class=\"uri\">https://en.wikipedia.org/wiki/Fediverse</a></li>\r\n<li><a href=\"https://www.zwilnik.com/?page_id=1103\" class=\"uri\">https://www.zwilnik.com/?page_id=1103</a></li>\r\n</ul>\r\n',198,108,0,'CC-BY-SA','social media, alternative, Fediverse, ActivityPub, Privacy, Anonymity',0,0,1),
(3075,'2020-05-15','Federated Blogging with WriteFreely',740,'A look at a minimally social blogging app using ActivityPub.','<p>Many social media apps seem determined to put bells and whistles in every possible place, which is not always in the interest of the user. This talk presents an alternative view which is called “minimally social” which only puts in the features needed by the user. In this case, the main focus is on a simple blogging app. There is also a brief mention of a very technical talk about coding. <a href=\"https://www.zwilnik.com/?page_id=1103\" class=\"uri\">https://www.zwilnik.com/?page_id=1103</a></p>\r\n<h2 id=\"links\">Links:</h2>\r\n<ul>\r\n<li><a href=\"https://redaktor.me/apconf/\" class=\"uri\">https://redaktor.me/apconf/</a></li>\r\n<li><a href=\"https://archive.org/details/apconf-talks/Talk8_Matt_compressed.mov\" class=\"uri\">https://archive.org/details/apconf-talks/Talk8_Matt_compressed.mov</a></li>\r\n<li><a href=\"https://read.as/\" class=\"uri\">https://read.as/</a></li>\r\n<li><a href=\"https://libresaas.org/\" class=\"uri\">https://libresaas.org/</a></li>\r\n<li><a href=\"https://www.zwilnik.com/?page_id=1105\" class=\"uri\">https://www.zwilnik.com/?page_id=1105</a></li>\r\n<li><a href=\"https://archive.org/details/apconf-talks/Talk9_Michael_compressed.mov\" class=\"uri\">https://archive.org/details/apconf-talks/Talk9_Michael_compressed.mov</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Fediverse\" class=\"uri\">https://en.wikipedia.org/wiki/Fediverse</a></li>\r\n<li><a href=\"https://www.zwilnik.com/?page_id=1103\" class=\"uri\">https://www.zwilnik.com/?page_id=1103</a></li>\r\n</ul>\r\n',198,108,0,'CC-BY-SA','social media, alternative, Fediverse, ActivityPub, Blogging',0,0,1),
(3085,'2020-05-29','Architectures of Robust Openness',1142,'A look at how to secure social networks against attack while still being open to strangers.','<p>Social networks can be attacked by people who want to cause abuse and disruption, and one way to deal with that is to lock down the membership. But that goes against the idea of social, which should include being open to welcoming strangers. Mark Miller presents an analysis of how you can be both secure and welcoming which focuses on Object Capabilities. <a href=\"https://www.zwilnik.com/?page_id=1107\" class=\"uri\">https://www.zwilnik.com/?page_id=1107</a></p>\r\n<h2 id=\"links\">Links:</h2>\r\n<ul>\r\n<li><a href=\"https://redaktor.me/apconf/\" class=\"uri\">https://redaktor.me/apconf/</a></li>\r\n<li><a href=\"https://archive.org/details/apconf-mark\" class=\"uri\">https://archive.org/details/apconf-mark</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Project_Xanadu\" class=\"uri\">https://en.wikipedia.org/wiki/Project_Xanadu</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Miller_columns\" class=\"uri\">https://en.wikipedia.org/wiki/Miller_columns</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/E_(programming_language)\" class=\"uri\">https://en.wikipedia.org/wiki/E_(programming_language)</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Caja_programming_language\" class=\"uri\">https://en.wikipedia.org/wiki/Caja_programming_language</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Foresight_Institute\" class=\"uri\">https://en.wikipedia.org/wiki/Foresight_Institute</a></li>\r\n<li><a href=\"https://www.synopsys.com/blogs/software-security/polaris-software-integrity-platform/\" class=\"uri\">https://www.synopsys.com/blogs/software-security/polaris-software-integrity-platform/</a></li>\r\n<li><a href=\"https://www.cs.jhu.edu/~seaborn/plash/html/\" class=\"uri\">https://www.cs.jhu.edu/~seaborn/plash/html/</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Bitfrost\" class=\"uri\">https://en.wikipedia.org/wiki/Bitfrost</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Security_Content_Automation_Protocol\" class=\"uri\">https://en.wikipedia.org/wiki/Security_Content_Automation_Protocol</a></li>\r\n<li><a href=\"https://alanhkarp.com/scoopfs/index.html\" class=\"uri\">https://alanhkarp.com/scoopfs/index.html</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Secure_Scuttlebutt\" class=\"uri\">https://en.wikipedia.org/wiki/Secure_Scuttlebutt</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Fediverse\" class=\"uri\">https://en.wikipedia.org/wiki/Fediverse</a></li>\r\n<li><a href=\"https://www.zwilnik.com/?page_id=1107\" class=\"uri\">https://www.zwilnik.com/?page_id=1107</a></li>\r\n</ul>\r\n',198,108,0,'CC-BY-SA','social media, alternative, Fediverse, ActivityPub, Security, OCaps',0,0,1),
(3000,'2020-01-31','Chopin Free project',1433,'An effort to produce royalty and copyright free versions of Frédéric Chopin work.','<p>\r\nThe <a href=\"https://musopen.org/about/\">Musopen</a> (www.musopen.org) is a 501(c)(3) non-profit focused on improving access and exposure to music by creating free resources and educational materials. We provide recordings, sheet music, and textbooks to the public for free, without copyright restrictions. Put simply, our mission is to set music free.\r\n</p>\r\n<p>\r\nTheir latest <a href=\"https://www.kickstarter.com/projects/Musopen/set-chopin-free\">Kickstarter</a> aims to open the works of <a href=\"https://en.wikipedia.org/wiki/Fr%C3%A9d%C3%A9ric_Chopin\">Frédéric Chopin</a> copyright free.\r\n</p>',383,0,0,'CC-BY-SA','musopen, Frédéric Chopin',0,0,1),
(3004,'2020-02-06','Fixing simple audio problems with Audacity',808,'Sharing a few experiences with Audacity that may be helpful to others','<h2 id=\"overview\">Overview</h2>\r\n<p>I recorded the audio for the show I did with <a href=\"https://hackerpublicradio.org/correspondents/0201.html\" title=\"MrX\">MrX</a> in late 2019: <a href=\"https://hackerpublicradio.org/eps.php?id=2972\">“hpr2972 :: The foot of the ski slope”</a>. I was using my Zoom H2n recorder in my car, on a small tripod placed on the dashboard. Something about this setup caused the result to be very <em>boomy</em> and (to me) unpleasant to listen to. This episode is about what I did for a cure, after some research.</p>\r\n<p>I have also been using the <a href=\"https://manual.audacityteam.org/man/truncate_silence.html\" title=\"Truncate Silence\">‘<em>Truncate Silence</em>’</a> effect in Audacity incorrectly in the past, and I used the opportunity to learn how to do a better job with it.</p>\r\n<p>Now, I am well aware that there are some skilled and experienced Audio Engineers out there in HPR-land. I am certainly not one of these, though I quite enjoy fiddling with audio to make it sound better. I’d like to make two requests:</p>\r\n<ol type=\"1\">\r\n<li>If I didn’t do a good job, please tell me what I did wrong here, and how I should have done it.</li>\r\n<li>Think about doing a show (or shows) on HPR about how to deal with common audio problems. For example: how to remove a mains hum, the use of compression and normalisation.</li>\r\n</ol>\r\n<h2 id=\"long-notes\">Long notes</h2>\r\n<p>A longer form of these notes may be <a href=\"https://hackerpublicradio.org/eps/hpr3004/full_shownotes.html\">found here (full_shownotes.html)</a>. These go into more detail on the steps I took to try and make the audio for show 2972 more tolerable.</p>\r\n<h2 id=\"links\">Links</h2>\r\n<ul>\r\n<li>Wikipedia page describing <a href=\"https://en.wikipedia.org/wiki/Audacity_%28audio_editor%29\">Audacity</a></li>\r\n<li>Audacity <a href=\"https://www.audacityteam.org/\">website</a></li>\r\n<li>Effects:\r\n<ul>\r\n<li><a href=\"https://manual.audacityteam.org/man/noise_reduction.html\">Noise Reduction</a></li>\r\n<li><a href=\"https://manual.audacityteam.org/man/high_pass_filter.html\">High-pass Filter</a></li>\r\n<li><a href=\"https://manual.audacityteam.org/man/amplify.html\">Amplify</a></li>\r\n<li><a href=\"https://manual.audacityteam.org/man/truncate_silence.html\">Truncate Silence</a></li>\r\n</ul></li>\r\n</ul>\r\n',225,0,1,'CC-BY-SA','audio,Audacity,effects,problem solving',0,0,1),
(3009,'2020-02-13','Linux Inlaws S01E01',3570,'Linux Inlaws - a podcast about on topics around free and open source software','<p><em>Linux Inlaws</em> - a podcast about on topics around free and open source software, any associated contraband, communism / the revolution in general and whatever else fancies your tickle.</p>\r\n<p>Please note that this and other episodes may contain strong language, offensive humor and other certainly not politically correct language - you have been warned (our parents insisted on this disclaimer - happy mum?). Thus the content is not suitable for consumption in the workplace (especially when played back on a speaker in an open plan office or similar environments), any minors under the age of 35 or any pets including fluffy little killer bunnies, your trusty guide dog (unless on speed) and cute t-rexes or other associated dinosaurs.</p>\r\n\r\n<p>\r\nIn this show the lads introduce themselves and discuss the technology they use and why they are putting on the show.\r\n</p>\r\n\r\n<h3>Links:</h3>\r\n<ul>\r\n<li><a href=\"https://linuxinlaws.eu/\">https://linuxinlaws.eu/</a></li>\r\n<li>email: feedback at linuxinlaws eu</li>\r\n<li><a href=\"https://traceroute-online.com/mtr/\">https://traceroute-online.com/mtr/</a></li>\r\n</ul>\r\n',384,111,1,'CC-BY','free open source software revolution',0,0,1),
(3095,'2020-06-12','Intro to GIMP',1064,'An introduction to GIMP to kick off a new series.','<p>GIMP is the open source alternative to the proprietary Photoshop, and can do most of the same things while respecting your freedom. This show will kick off a new series of tutorials. As a note of caution, I am not an expert, I am just learning GIMP as I go. But I thought there was no harm in sharing my experiences with the HPR community. <a href=\"https://www.ahuka.com/?page_id=1423\" class=\"uri\">https://www.ahuka.com/?page_id=1423</a></p>\r\n<h2 id=\"links\">Links:</h2>\r\n<ul>\r\n<li><a href=\"https://www.youtube.com/watch?v=Q8C0LJPpr64\" class=\"uri\">https://www.youtube.com/watch?v=Q8C0LJPpr64</a></li>\r\n<li><a href=\"https://www.youtube.com/watch?v=SoP5LOFxPeY\" class=\"uri\">https://www.youtube.com/watch?v=SoP5LOFxPeY</a></li>\r\n<li><a href=\"https://www.youtube.com/watch?v=_L_MMU22bAw\" class=\"uri\">https://www.youtube.com/watch?v=_L_MMU22bAw</a></li>\r\n<li><a href=\"https://www.youtube.com/watch?v=TiavEWDVQGE\" class=\"uri\">https://www.youtube.com/watch?v=TiavEWDVQGE</a></li>\r\n<li><a href=\"https://www.gimp.org/tutorials/\" class=\"uri\">https://www.gimp.org/tutorials/</a></li>\r\n<li><a href=\"https://www.makeuseof.com/tag/gimp-photo-editing/\" class=\"uri\">https://www.makeuseof.com/tag/gimp-photo-editing/</a></li>\r\n<li><a href=\"https://www.wikihow.com/Use-GIMP\" class=\"uri\">https://www.wikihow.com/Use-GIMP</a></li>\r\n<li><a href=\"https://daviesmediadesign.com/20-gimp-2-10-tutorials-for-beginners/\" class=\"uri\">https://daviesmediadesign.com/20-gimp-2-10-tutorials-for-beginners/</a></li>\r\n<li><a href=\"https://www.pcworld.com/article/3451356/gimp-basics-tips-and-tricks-for-beginners.html\" class=\"uri\">https://www.pcworld.com/article/3451356/gimp-basics-tips-and-tricks-for-beginners.html</a></li>\r\n<li><a href=\"https://howtogimp.com/\" class=\"uri\">https://howtogimp.com/</a></li>\r\n<li><a href=\"https://issuu.com/gimpmagazine\" class=\"uri\">https://issuu.com/gimpmagazine</a></li>\r\n<li><a href=\"https://www.gimp.org/downloads/\" class=\"uri\">https://www.gimp.org/downloads/</a></li>\r\n<li><a href=\"https://whatis.techtarget.com/fileformat/XCF-GIMP-document\" class=\"uri\">https://whatis.techtarget.com/fileformat/XCF-GIMP-document</a></li>\r\n<li><a href=\"https://gist.github.com/rbrito/e57c87d5376fd56113df058abf71bdf3\" class=\"uri\">https://gist.github.com/rbrito/e57c87d5376fd56113df058abf71bdf3</a></li>\r\n<li><a href=\"https://www.ahuka.com/?page_id=1423\" class=\"uri\">https://www.ahuka.com/?page_id=1423</a></li>\r\n</ul>\r\n',198,113,0,'CC-BY-SA','GIMP, images, photos, graphics',0,0,1),
(3010,'2020-02-14','FOSDEM first impressions',1638,'Impressions from my first attendance at FOSDEM.','<p><a href=\"https://fosdem.org\">FOSDEM</a> is the biggest Free and Open Source conference in the world and on its 20<sup>th</sup> anniversary I decided to attend for the first time. By a good turn of fate, and some well-judged pitching, Ken Fallon secured a stand for the <a href=\"https://freeculturepodcasts.org/\">Free Culture Podcasts project</a> which is an umbrella group that covers HPR, many of the shows on <a href=\"https://otherside.network/\">The Other Side Network</a> and many more excellent podcasts that are released under creative commons licenses.</p>\r\n\r\n<p>This audio is recorded in snippets in between manning the stand and gives some off-the-cuff observations from a FOSDEM noob. I was surprised to find that relatively few visitors to our stand had heard of HPR, which we quickly rectified of course, and I give a brief summary of the feedback we received. Also mentioned in this show, but not actually appearing, are my co-conspirators at FOSDEM, <a href=\"https://hackerpublicradio.org/correspondents/0030.html\">Ken</a>, <a href=\"https://hackerpublicradio.org/correspondents/0288.html\">Beni</a>, <a href=\"https://hackerpublicradio.org/correspondents/0129.html\">JWP</a> as well as <a href=\"https://hackerpublicradio.org/correspondents/0225.html\">Dave Morriss</a> who unfortunately wasn\'tabletojoinusinpersonbutwasverymuchthereinspirit.</p>\r\n\r\n',268,0,0,'CC-BY-SA','fosdem,conference,podcasts,creativecommons',0,0,1),
(3012,'2020-02-18','Sample episode from Wikipediapodden',518,'An English microsode of their Swedish language podcast about Wikipedia.','<p>\r\nJan Ainali from the <a href=\"https://wikipediapodden.se/\">https://wikipediapodden.se/</a> podcast came over to the <a href=\"https://freeculturepodcasts.org/\">https://freeculturepodcasts.org/</a> booth at <a href=\"https://fosdem.org/2020/\">FOSDEM</a> 2020.\r\n</p>\r\n<p>\r\nThey do a Swedish Language Podcast about wikipedia et al, and of course we added them to the <a href=\"https://freeculturepodcasts.org/\">https://freeculturepodcasts.org/</a> site. While their main shows are in Swedish, they also have summaries that they do in English which can be found at <a href=\"https://wikipediapodden.se/tag/english/\">https://wikipediapodden.se/tag/english/</a>, (<a href=\"https://wikipediapodden.se/tag/english/feed/\">RSS Feed</a>).\r\n</p>',30,75,1,'CC-BY-SA','fosdem, wikipediapodden, swedish, sweden',0,0,1),
(3036,'2020-03-23','WiiU is dead long live WiiU!',1439,'How to approach dea-ish mod communities','<ul>\r\n<li><p>lulz:<br />\r\n<a href=\"https://twitter.com/operat0r/status/1224025568334708737\" class=\"uri\">https://twitter.com/operat0r/status/1224025568334708737</a></p></li>\r\n<li><p>Discord:<br />\r\n<a href=\"https://discord.gg/nintendohomebrew\" class=\"uri\">https://discord.gg/nintendohomebrew</a></p></li>\r\n<li><p>Saves:<br />\r\n<a href=\"https://gbatemp.net/threads/wii-u-save-files-compilation.427761/#post-6374659\" class=\"uri\">https://gbatemp.net/threads/wii-u-save-files-compilation.427761/#post-6374659</a></p></li>\r\n<li><p>lego ntsc save<br />\r\n<a href=\"https://drive.google.com/open?id=1bTtXv1c8NkOkeHoKOkWHhP6RbiXv9ERo\" class=\"uri\">https://drive.google.com/open?id=1bTtXv1c8NkOkeHoKOkWHhP6RbiXv9ERo</a><br />\r\n<a href=\"https://www.youtube.com/user/BullyWiiPlaza/videos\" class=\"uri\">https://www.youtube.com/user/BullyWiiPlaza/videos</a></p></li>\r\n<li><p>old cheat engine files:<br />\r\n<a href=\"https://rmccurdy.com/.scripts/downloaded/CheatEngineTables-master/tables/\" class=\"uri\">https://rmccurdy.com/.scripts/downloaded/CheatEngineTables-master/tables/</a></p></li>\r\n</ul>\r\n',36,0,1,'CC-BY-SA','wiiu,modding,hacking,tcpgecko,android,ssl pinning,games',0,0,1),
(3014,'2020-02-20','A Headless Raspberry Pi Streaming Radio',1068,'I use a Raspberry Pi to make a streaming radio device for my pillow speaker.','<p>In this episode I talk about how I used a Raspberry Pi to create a streaming radio device to feed my pillow speaker. This is something I used to do with clock radios and later a satellite radio, but in an effort to decrease monthly subscription costs for services I did not use optimally, I discontinued my satellite radio subscription about a year ago. This new free solution is an excellent substitute for Satellite Radio so far, since I was mostly listening to this same channel on the Sat Radio but paying about $12 a month for the privilege. The device I’m using is a <a href=\"https://www.raspberrypi.org/products/raspberry-pi-2-model-b/\">Raspberry Pi 2 Model B</a> with <a href=\"https://ubuntu.com/download/raspberry-pi\">Ubuntu Server</a>. My barrier to this project in the past was not being able to find the URL for the stream I wanted but I discovered you can find it easily if you use Firefox with <a href=\"https://www.downloadhelper.net/\">Video Download Helper</a> to reveal the URL on a page with media playing (in this case it’s from TuneIn):</p>\r\n\r\n<pre><code>https://XX.XXX.XXX.XXX/radio-stationmp3-48?session-id=af1b271fefba04b650f8e253c6b253bd&source=TuneIn\r\n</code></pre>\r\n\r\n<p>Strip off everything after the <code>48</code> to get raw URL:</p>\r\n\r\n<pre><code>https://XX.XXX.XXX.XXX/radio-stationmp3-48\r\n</code></pre>\r\n\r\n<p>Command to play stream with <a href=\"https://www.mpg123.de/\">mpg123</a> on the Pi. Using the <code>-q</code> option to suppress output:</p>\r\n\r\n<pre><code>mpg123-pulse -q https://XX.XXX.XXX.XXX/radio-stationmp3-48 &\r\n</code></pre>\r\n\r\n<p>Once I figure out the command that plays the stream I want, I save the command as an executable script in <code>/home/$user/bin</code>.</p>\r\n\r\n<h3 id=\"usingtheradio\">Using the “Radio”</h3>\r\n\r\n<p>To start playing a stream you first have to SSH into the RasPi. This is easy from a laptop using any terminal emulator. I use pubkey auth so I don’t have to type a password every time. On my phone I use <a href=\"https://play.google.com/store/apps/details?id=org.connectbot&hl=en_US\">ConnectBot</a>. Once I’m into the Pi I run the radio commands from CLI like <code>espn</code> or <code>kmfa</code> or <code>krvs</code>. To stop playback I kill the process with <code>pkill mpg</code>. I have a 3.5mm audio splitter Plugged into the headphone jack of the USB audio interface. In one side of the splitter I’ve got an old pair of earbuds where one side didn’t work, with the working earbud under my pillow. That’s my pillow speaker. On the other side of the splitter I put the audio cable for an <a href=\"https://smile.amazon.com/gp/product/B005GUQ0FI/\">FM transmitter</a>, so that I can use an FM radio to listen to the stream while I’m walking around the house.</p>\r\n\r\n<p>Click the image below to see pictures of the setup.</p>\r\n\r\n<p><a data-flickr-embed=\"true\" href=\"https://www.flickr.com/photos/137675441@N05/albums/72157712927722077\" title=\"Raspberry Pi Radio\"><img src=\"https://live.staticflickr.com/65535/49473218252_39195601ed.jpg\" width=\"500\" height=\"281\" alt=\"Raspberry Pi Radio\"></a></p>\r\n\r\n<h3 id=\"links\">Links</h3>\r\n\r\n<ul>\r\n<li><a href=\"https://www.raspberrypi.org/products/raspberry-pi-2-model-b/\">Raspberry Pi 2 Model B</a></li>\r\n<li><a href=\"https://ubuntu.com/download/raspberry-pi\">Ubuntu Server</a></li>\r\n<li><a href=\"https://www.downloadhelper.net/\">Video Download Helper</a> (Firefox extension)</li>\r\n<li>The <a href=\"https://smile.amazon.com/gp/product/B001MSS6CS/\">USB Audio interface</a> I use</li>\r\n<li>Panda Wireless <a href=\"https://smile.amazon.com/gp/product/B00762YNMG\">USB WiFi adapter</a></li>\r\n<li><a href=\"https://www.mpg123.de/\">mpg123</a> command-line audio player</li>\r\n<li><a href=\"https://play.google.com/store/apps/details?id=org.connectbot&hl=en_US\">ConnectBot</a></li>\r\n<li><a href=\"https://smile.am
(3018,'2020-02-26','Encrypted edit',1234,'Klaatu talks about editing and viewing encrypted files in a tmpfs in RAM','<ul>\r\n<li><a href=\"https://www.passwordstore.org/\" target=\"_blank\">Password-store</a> and the <strong>pre</strong> command.</li>\r\n<li><a href=\"https://gitlab.com/notklaatu/credit/\" target=\"_blank\">Credit</a> command</li>\r\n</ul>\r\n',78,0,0,'CC-BY-SA','GPG, privacy',0,0,1),
(3017,'2020-02-25','Developing Black and White Film',2544,'Join me as I develop my first roll of black and white film since over 30 years ago.','<p>My photos will be available at: <a href=\"https://pquirk.com\" class=\"uri\">https://pquirk.com</a></p>\r\n',383,0,0,'CC-BY-SA','Photography,film,developing,black and white',0,0,1),
(3019,'2020-02-27','Linux Inlaws S01E02 FOSDEM shenanigans',3929,'Linux Inlaws - a podcast about on topics around free and open source software','<p>Linux Inlaws - a podcast about on topics around free and open source software, any associated contraband, communism / the revolution in general and whatever else fancies your tickle.</p>\r\n<h2 id=\"links\">Links:</h2>\r\n<ul>\r\n<li><a href=\"https://linuxinlaws.eu\" class=\"uri\">https://linuxinlaws.eu</a></li>\r\n<li><a href=\"https://fosdem.org\" class=\"uri\">https://fosdem.org</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=3009\" class=\"uri\">https://hackerpublicradio.org/eps.php?id=3009</a></li>\r\n</ul>',384,111,1,'CC-BY-SA','free open source software, revolution, FLOSS',0,0,1),
(3013,'2020-02-19','Bash Tips - 21',2497,'Environment variables','<h2 id=\"the-environment-more-collateral-bash-tips\">The Environment <small><small>(More collateral Bash tips)</small></small></h2>\r\n<h3 id=\"overview\">Overview</h3>\r\n<p>You will probably have seen references to <em>The Environment</em> in various contexts relating to shells, shell scripts, scripts in other languages and compiled programs.</p>\r\n<p>In Unix and Unix-like operating systems an environment is maintained by the shell, and we will be looking at how Bash deals with this in this episode. When a script, program or subprocess is invoked it is given an array of strings called the <em>environment</em>. This is a list of name-value pairs, of the form <code>name=value</code>.</p>\r\n<h4 id=\"using-the-environment\">Using the environment</h4>\r\n<p>The environment is used to convey various pieces of information to the executing script or program. For example, two standard variables provided by the shell are <code>\'HOME\'</code>, which is set to the current user’s home directory and <code>\'PWD</code>,settothecurrentworkingdirectory.Theshellusercanset,change,removeandviewenvironmentvariablesfortheirownpurposesaswewillseeinthisepisode.TheBashshellitselfcreatesandinsomecasesmanagesenvironmentvariables.</p>\r\n<p>Theenvironmentcontainsglobaldatawhichispasseddowntosubprocesses(<em>child</em>processes)bycopying.However,itisnotpossibleforasubprocesstopassinformation<b>back</b>tothesuperior(<em>parent</em>)process.</p>\r\n<h4id=\"viewing-the-environment\">Viewingtheenvironment</h4>\r\n<p>Youcanviewtheenvironmentinanumberofways.</p>\r\n<ul>\r\n<li><p>Fromthecommandlinethecommand<code>printenv</code>candothis(thisisusuallybutnotalwaysastand-alonecommand:it’s<code>/usr/bin/printenv</code>onmyDebiansystem).Wewilllookatthiscommandlater.</p></li>\r\n<li><p>Thecommand<code>env</code>withoutanyargumentsdoesthesamethingas<code>printenv</code>withoutarguments.Thisisactuallyatooltorunaprograminamodifiedenvironmentwhichwewilllookatlater.Theenvironmentprintingcapabilitycanberegardedasmoreofabonusfeature.</p></li>\r\n<li><p>Scriptinglanguageslike<code>awk</code>(aswellasPythonandPerl,tonamejustafew)canviewandmanipulatetheenvironment.</p></li>\r\n<li><p>Compiledlanguagessuchas<code>C</code>candothistooofcourse.</p></li>\r\n<li><p>Thereareothercommandsthatwillshowtheenvironment,andwewilllookatsomeofthesebriefly.</p></li>\r\n</ul>\r\n<h4id=\"changing-variables-in-the-environment\">Changingvariablesintheenvironment</h4>\r\n<p>Thevariablesintheenvironmentarenotsignificantlydifferentfromthe<em>shellparameters</em>wehaveseenthroughoutthisBashTipsseries.Theonlydifferenceisthattheyaremarkedfor<em>export</em>tocommandsandsub-shells.Youwilloftenseevariables(orparameters)intheenvironmentreferredtoas<em>environmentvariables</em>.TheBashmanualmakesadistinctionbetweenordinaryparameters(variables)andenvironmentvariables,butmanyothersourcesarelesspreciseaboutthisinmyexperience.</p>\r\n<p>Thestandardvariablesintheenvironmenthaveupper-casenames(<code>HOME</code>,<code>SHELL</code>,<code>PWD</code>,etc),butthereisnoreasonwhyavariableyoucreateshouldnotbeinlowerormixedcase.Infact,theBashmanualsuggeststhatyoushouldavoidusingallupper-casenamessoasnottoclashwithBash’svariables.</p>\r\n<p>Variablescanbecreatedandchangedanumberofways.</p>\r\n<ul>\r\n<li>Theycanbesetupatlogintime(globallyorlocally)throughvariousstandardconfigurationfiles.Itisintendedtolookatthissubjectinanupcomingepisodesowewillleavediscussingthesubjectuntilthen.</li>\r\n<li>Byprecedingthecommandorscriptinvocationwith<em>name=value</em>expressionswhichwilltemporarilyplacethesevariablesintotheenvironmentforthecommand</li>\r\n<li
(3020,'2020-02-28','Validating data in Haskell',1500,'Tuula talks about wow to validate incoming http request before acting on them','<h1 id=\"background\">Background</h1>\r\n<p>The space game I working on needs a admin interface that can by used by game masters to view and modify the simulation.</p>\r\n<p>For start, I added interface for viewing, modifying and creating new people. It has three HTTP endpoints that are defined below. In this episode, I’ll concentrate on creating a new person and especially making sure that parameters used are valid.</p>\r\n<pre><code>/api/admin/people AdminApiPeopleR GET\r\n/api/admin/people/#PersonId AdminApiPersonR GET PUT\r\n/api/admin/addPerson AdminApiAddPersonR POST</code></pre>\r\n<h1 id=\"types-and-parsing\">Types and parsing</h1>\r\n<p>There are two important approaches on making sure that data is valid. Making illegal state unpresentable and parsing instead of validation.</p>\r\n<p>If it’s impossible to create invalid data, you don’t have to validate it. Instead of using <code>Integer</code> and checking that given parameter is 0 or more, you should use <code>Natural</code>. Since <code>Natural</code> can’t have negative values, you don’t have to validate it. Similarly, instead of using a list, you could use <code>NonEmpty</code> to make sure that there’s at least one element present in the collection.</p>\r\n<p>Parse, don’t validate is similar approach. Instead of having a lax parser and then validating the result, parser should reject data that doesn’t make sense. By selecting suitable datatypes to represent data in the system, simply parsing incoming message is sometimes enough to validate it at the same time.</p>\r\n<h1 id=\"person-creation\">Person creation</h1>\r\n<p>Function in charge of generating a new person has signature of <code>generatePersonM :: RandomGen g => StarDate -> PersonOptions -> Rand g Person</code>. Given a current <code>StarDate</code> and <code>PersonOptions</code> describing what kind of person is needed, it will return a computation that can be executed to generate a random person.</p>\r\n<p><code>PersonOptions</code> is very barebones. There’s only one field to tell what kind of age the person should have and even that is an optional field.</p>\r\n<pre><code>data PersonOptions = PersonOptions\r\n { personOptionsAge :: Maybe AgeOptions\r\n } deriving (Show, Read, Eq)</code></pre>\r\n<p><code>AgeOptions</code> has two possibilities. <code>AgeBracket</code> describes case where age should be inside of given range. <code>ExactAge</code> specifies exactly what age should be.</p>\r\n<pre><code>data AgeOptions =\r\n AgeBracket Age Age\r\n | ExactAge Age\r\n deriving (Show, Read, Eq)</code></pre>\r\n<p><code>Age</code> is newtype wrapping <code>Natural</code>, thus <code>Age</code> can never be less than zero.</p>\r\n<pre><code>newtype Age = Age { unAge :: Natural }\r\n deriving (Show, Read, Eq, Num, Ord)</code></pre>\r\n<p>Hand written <code>FromJSON</code> instance takes care of rejecting numbers that aren’t integers and at least zero. One could skip the checks here and parsed <code>Age</code> still couldn’t be negative. Advantage of explicit checks is that we get much nicer error message instead of just annoying runtime exception.</p>\r\n<pre><code>instance FromJSON Age where\r\n parseJSON =\r\n withScientific "age"\r\n (\\x -> case toBoundedInteger x of\r\n Nothing ->\r\n mempty\r\n\r\n Just n ->\r\n if n >= 0 then\r\n return $ Age $ fromIntegral (n :: Int)\r\n\r\n else\r\n mempty)</code></pre>\r\n<p>So, when creating a new person, you can have:</p>\r\n<ul>\r\n<li>no age options at all, computer can pick something</li>\r\n<li>specific age, computer calculates date of birth based on current date</li>\r\n<li>age bracket, computer calculates date of birth based on current date and bracket</li>\r\n<li
(3022,'2020-03-03','FOSDEM 2020 Stand Interviews',5578,'Interviews with some of the stands at FOSDEM 2020','<h1>Table of Contents</h1>\r\n\r\n<ul>\r\n <li><a href=\"#previous\">Previously Interviewed Projects</a></li>\r\n <li><a href=\"#missed\">Projects we did not get to Interview (yet)</a></li>\r\n <li><a href=\"#0_A.D\">0 A.D.</a></li>\r\n <li><a href=\"#AdoptOpenJDK\">AdoptOpenJDK</a></li>\r\n <li><a href=\"#Apache_Camel\">Apache Camel</a></li>\r\n <li><a href=\"#Checkmk\">Checkmk</a></li>\r\n <li><a href=\"#Coderdojo\">Coderdojo</a></li>\r\n <li><a href=\"#Eclipse_Foundation\">Eclipse Foundation</a></li>\r\n <li><a href=\"#GitLab\">GitLab</a></li>\r\n <li><a href=\"#GNU_Health\">GNU Health</a></li>\r\n <li><a href=\"#Javascript\">Javascript</a></li>\r\n <li><a href=\"#Jenkins-x\">Jenkins-x</a></li>\r\n <li><a href=\"#Kopano\">Kopano</a></li>\r\n <li><a href=\"#KubeVirt_Metal3\">KubeVirt and Metal3</a></li>\r\n <li><a href=\"#Micropython_Espruino\">Micropython and Espruino</a></li>\r\n <li><a href=\"#Nuspell\">Nuspell</a></li>\r\n <li><a href=\"#openHAB\">openHAB</a></li>\r\n <li><a href=\"#OpenStack_Foundation\">OpenStack Foundation</a></li>\r\n <li><a href=\"#OpenTAP\">OpenTAP</a></li>\r\n <li><a href=\"#OpenUK\">OpenUK</a></li>\r\n <li><a href=\"#openWifi\">openWifi</a></li>\r\n <li><a href=\"#OWASP\">OWASP</a></li>\r\n <li><a href=\"#Percona\">Percona</a></li>\r\n <li><a href=\"#PineTime\">PineTime</a></li>\r\n <li><a href=\"#PostGraphile\">PostGraphile</a></li>\r\n <li><a href=\"#Skolelinux_AlekSIS_Teckids\">Skolelinux / AlekSIS / Teckids</a></li>\r\n <li><a href=\"#Technoethical\">Technoethical</a></li>\r\n <li><a href=\"#TinyGo\">Tiny Go</a></li>\r\n <li><a href=\"#XCP-ng\">XCP-ng</a></li>\r\n <li><a href=\"#Zenroom\">Zenroom</a></li>\r\n <li><a href=\"#fenster-full\">Fenster</a></li>\r\n</ul>\r\n\r\n<h2 id=\"previous\">Previously Interviewed Projects</h2>\r\n<ul>\r\n <li><a href=\"https://hackerpublicradio.org/eps.php?id=2224#K2.3\">Apache Software Foundation</a></li>\r\n <li><a href=\"https://hackerpublicradio.org/eps.php?id=2226#AW.4\">Automotive Grade Linux</a></li>\r\n <li><a href=\"https://hackerpublicradio.org/eps.php?id=2222#K1A.10\">CentOS</a></li>\r\n <li><a href=\"https://hackerpublicradio.org/eps.php?id=2222#K1A.5\">CiviCRM</a></li>\r\n <li><a href=\"https://hackerpublicradio.org/eps.php?id=2226#AW.1\">Coreboot</a></li>\r\n <li><a href=\"https://hackerpublicradio.org/eps.php?id=2223#K1B.4\">Debian</a></li>\r\n <li><a href=\"https://hackerpublicradio.org/eps.php?id=1702\">Flashrom</a></li>\r\n <li><a href=\"https://hackerpublicradio.org/eps.php?id=2223#K1C.7b\">Foreman</a></li>\r\n <li><a href=\"https://hackerpublicradio.org/eps.php?id=2222#K1A.7\">FreeBSD Project</a></li>\r\n <li><a href=\"https://hackerpublicradio.org/eps.php?id=2223#K1C.1\">Free Software Foundation Europe</a></li>\r\n <li><a href=\"https://hackerpublicradio.org/eps.php?id=2223#K1B.2\">Gentoo Linux</a></li>\r\n <li><a href=\"https://hackerpublicradio.org/eps.php?id=2222#K1A.2\">GNOME</a></li>\r\n <li><a href=\"https://hackerpublicradio.org/eps.php?id=2227#H.1\">Godot Engine</a></li>\r\n <li><a href=\"https://hackerpublicradio.org/eps.php?id=2225#K2.15b\">Google Summer of Code</a> (Saturday)</li>\r\n <li><a href=\"https://hackerpublicradio.org/eps.php?id=1932\">Grafana</a></li>\r\n <li><a href=\"https://hackerpublicradio.org/eps.php?id=2223#K1B.1b\">Haiku</a> (Saturday)</li>\r\n <li><a href=\"https://hackerpublicradio.org/eps.php?id=2222#K1A.8\">illumos</a></li>\r\n <li><a href=\"https://hackerpublicradio.org/eps.php?id=2226#AW.5\">Infobooth on amateur radio</a> (HAM Radio)</li>\r\n <li><a href=\"https://hackerpublicradio.org/eps.php?id=2224#K2.5\">Jenkins</a></li>\r\n <li><a href=\"https://hackerpublicradio.org/eps.php?id=2222#K1A.1\">KDE</a></li>\r\n <li><a href=\"https://hackerpublicradio.org/eps.php?id=2222#K1A.3\">LibreOffice</a></li>\r\n <li><a href=\"https://hackerpublicradio.org/eps.php?id=1746\">Linux Professional Institute</a> (Saturday)</li>\r\n <li><a href=\"https:/
(3023,'2020-03-04','Critique My Script, Episode 1 - Qots-Crew-Gen',782,'Discussion of using a shell script to randomly generate a ten man aircrew.','<p>This is my second HPR episode and the first in what could be a series about shell scripts I have written. This episode goes through a short script which randomly generates first and last names for a ten man aircrew to use with the Avalon Hill game B-17 Queen of the Skies.</p>\r\n<p>You can see the basic script in action here:<br />\r\n<a href=\"https://www.sodface.com/misc/qots-crew-gen\" class=\"uri\">https://www.sodface.com/misc/qots-crew-gen</a></p>\r\n<p>and a more complicated version here, though based on the same underlying methodolgy:<br />\r\n<a href=\"https://www.sodface.com/misc/qots-crew-gen2\" class=\"uri\">https://www.sodface.com/misc/qots-crew-gen2</a></p>\r\n<p>Here’s the script:</p>\r\n<pre><code>#!/bin/sh\r\n\r\nfirst_names='./firstnames.txt'\r\nlast_names='./surnames.txt'\r\ncrew_positions='./positions.txt'\r\ncrew_ranks='./ranks.txt'\r\n\r\nlen_first_names=$(wc -l < ${first_names})\r\nlen_last_names=$(wc -l < ${last_names})\r\n\r\nnum_pairs=$(printf "10 ${len_first_names} ${len_last_names}" | \\\r\n awk 'BEGIN { srand() }\r\n { for (i=1; i<=$1; i++) {\r\n for(f = 2; f <= NF; f++) {\r\n num=int(rand() * $f + 1); printf num"," } printf "\\n"\r\n }\r\n }')\r\n\r\ni=1\r\n\r\nfor crew_member in ${num_pairs}\r\ndo\r\n line_num=$(printf "${crew_member}" | cut -d',' -f1)\r\n first_name=$(sed -n ${line_num}p ${first_names})\r\n\r\n line_num=$(printf "${crew_member}" | cut -d',' -f2)\r\n last_name=$(sed -n ${line_num}p ${last_names})\r\n\r\n crew_position=$(sed -n ${i}p ${crew_positions})\r\n crew_rank=$(sed -n ${i}p ${crew_ranks})\r\n\r\n #\r\n # Use the variables above to generate HTML.\r\n # Omitted here to simplify this example.\r\n #\r\n\r\n i=$((( ${i} +1 )))\r\ndone</code></pre>\r\n',380,0,0,'CC-BY-SA','Shell Script,Random Numbers,Awk',0,0,1),
(3024,'2020-03-05','A funny thing happened the other day',259,'Describing a funny thing that happened the other day.','<p>Equipment used</p>\r\n<ul>\r\n<li><p><a href=\"https://en.wikipedia.org/wiki/Nexus_7_(2013)\">Nexus 7 tablet</a></p></li>\r\n<li><p><a href=\"https://www.amazon.co.uk/HccToo-Multifunctional-Rechargeable-Dictaphone-Conversation/dp/B015H9JP6S/ref=sr_1_1?ie=UTF8&qid=1502381150&sr=8-1&keywords=dictation+machines\">My faithful Dictaphone</a></p></li>\r\n<li><p>Noise source<br />\r\n<img src=\"https://hackerpublicradio.org/eps/hpr3024_noise-source.JPG\" alt=\"Noise source\" width=\"400\" height=\"400\" /></p></li>\r\n</ul>\r\n',201,0,1,'CC-BY-SA','story, audio, sound',0,0,1),
(3027,'2020-03-10','What is quantum computing and why should we care?',1515,'What is all the quantum computing hype about & what is it that quantum computers will be able to do?','<h3 id=\"what-are-quantum-computers-anyway\">What are quantum computers anyway?</h3>\r\n<p>Physical computing systems that take advantage of quantum effects.</p>\r\n<h3 id=\"what-kind-of-quantum-effects-and-why-does-that-matter\">What kind of quantum effects, and why does that matter?</h3>\r\n<p>Entanglement and superposition: Entanglement lets us do unusual, head-scratching kinds of things like teleportation. Superposition lets us harness the almost unimaginable potential of quantum mechanics to do things that conventional computers can never do.</p>\r\n<h3 id=\"how-can-you-ever-explain-that-in-a-podcast\">How can you ever explain that in a podcast?</h3>\r\n<p>To really understand the details, you must have math, but math and audio formats are not so compatible. So I use analogies, and throw in some pithy quotes from Einstein and hope that does the trick.</p>\r\n<h3 id=\"big-picture\">Big picture?</h3>\r\n<p>Lots of work going on to build quantum processors (QPUs) that use quantum memory and, get this, will at some point actually do error correction. There are programming frameworks and rudimentary compilers to compile down python code all the way down to microwave pulses and laser pulses and there is control machinery to gather back the signals and interpret them to ones and zeros. Quantum computers will be securely networked using quantum protocols and we’ll all live happily ever after in a quantum computing world.</p>\r\n<p><b>Questions?</b> Please leave suggestions if you want to dive a bit deeper in some topic areas - it’ll encourage me to do more episodes.</p>\r\n',379,0,0,'CC-BY-SA','quantum computing',0,0,1),
(3028,'2020-03-11','Monads and Haskell',1275,'A hopefully not too rambly \"introduction\" to functors and monads in and out of haskell','<p>This is basically a transcript of the post I wrote on the subject which I host <a href=\"https://www.crvs.xyz/posts_haskeljoin.html\">here</a> It has a bit more than what I talked about</p>\r\n<h1 id=\"join-in-haskell\">Join in Haskell</h1>\r\n<p><code>join</code> is a monadic operation, instead of working only on lists, it works on monads and has the signature:</p>\r\n<pre><code> join :: Monad m => m ( m a ) -> (m a)\r\n</code></pre>\r\n<p>In effect it <code>joins</code> or <code>merges</code> two successive monad applications into a single monad application. But join is not part of the canonical monad definition, which is given by:</p>\r\n<pre><code> return :: Monad m => a -> m a` ; and`\r\n (>>=) :: Monad m => m a -> ( a -> m b ) -> m b\r\n</code></pre>\r\n<p>A good or rather trivial way to think of the relationship between <code>return</code> <code>join</code> and <code>(>>=)</code> is that in essence, since each monad is a functor, then what <code>(>>=)</code> does is that it maps the second argument over the first argument, and then uses <code>join</code> to merge the two applications of the monad constructor, i.e.:</p>\r\n<pre><code> (x >>= f) = join $ fmap f x\r\n</code></pre>\r\n<p>However, join needs to be constructed from <code>return</code> and <code>(>>=)</code>. The naive solution is that we want to <code>trick</code> <code>(>>=)</code> to let us apply a function that does not pile up yet another <code>m</code> onto our initial type <code>m (m a)</code> and surprisingly, this will actually work if we let</p>\r\n<pre><code> join x = (x >>= id)\r\n</code></pre>\r\n<p>Initially this is surprising since <code>id</code> has the signature <code>(c -> c)</code> instead of the necessary <code>a -> m b</code>! However, when <code>c</code> is not an atomic type, but rather of the form <code>m d</code> for some (maybe atomic) type <code>d</code>, then we actually have the signature <code>m d -> m d</code>, and if we bind type <code>a</code> to <code>m d</code> and type <code>b</code> to <code>d</code>, we obtain <code>id</code> with actual type signatuare <code>a -> m b</code>, and it can indeed be used as the second argument of <code>(>>=)</code>, and everything actually makes sense.</p>\r\n<p>Now style is important and so we can do an eta reduction on this, to get a point-free implementation by simply binding the second argument of <code>>>=</code>:</p>\r\n<pre><code> join = (>>= id)\r\n</code></pre>\r\n<p>This is all fine and well for the type number, and it <em>does</em> work, but it\'salsoimportanttounderstandhowitworks,solet\'s see it in a simple example, using the <code>Maybe</code> monad. So let\'sstartbyrefreshingtheimplementationofthemonadinstance:</p>\r\n<pre><code>instanceMonadMaybewhere\r\n\r\n(>>=)::Maybea->(a->Maybeb)->Maybeb\r\n(>>=)Nothing_=Nothing\r\n(>>=)(Justx)f=fx\r\n\r\nreturn::a->Maybea\r\nreturn=Just\r\n</code></pre>\r\n<p>Solet\'s now go through the successive bindings when performing <code>(>>=id)</code>:</p>\r\n<pre><code> Just x = Just (Just 2) => x = Just 2\r\n Just x >>= id = id x = x\r\n x = Just 2\r\n</code></pre>\r\n<p>This example is pretty much verbatim the same thing for the <code>Either</code> monad and many other monads that follow a similar principle, so let\'slookatabitmoreofacomplexexample.Let\'s look at the <code>List</code> monad:</p>\r\n<p>instance Monad List where</p>\r\n<pre><code> (>>=) :: [a] -> (a -> [b]) -> [b]\r\n (>>=) [] _ = []\r\n (>>=) (x:xs) f = f x ++ (xs >>= f)\r\n\r\n return :: a -> [a]\r\n return = (:[])\r\n</code></pre>\r\n<p>Following the bindings again we have</p>\r\n<pre><code> [[2,3],[4]] = (x:xs) => x = [2,3] ; xs = [[4]]\r\n (x:xs)
(3029,'2020-03-12','At Union Station with a train delay',347,'This is a soundscape while waiting for a train at Union Station.','<p>I was waiting for the Metra train, when there was an announcement that the train would be late due to a server failure.</p>',318,101,0,'CC-BY-SA','soundscape, trains',0,0,1),
(3030,'2020-03-13','My new Samsung tablet',1686,'A general discussion about my new 10.5 inch Samsung Galaxy tablet','<ul>\r\n<li><p>Samsung Galaxy Tab A 10.5 inch 2018 Tablet at 3:30<br />\r\n<a href=\"https://www.amazon.co.uk/Samsung-Galaxy-10-5-WiFi-Black/dp/B07GG5DSTW/ref=asc_df_B07GG5DSTW/?tag=googshopuk-21&linkCode=df0&hvadid=310819184817&hvpos=1o1&hvnetw=g&hvrand=16845709935342815174&hvpone=&hvptwo=&hvqmt=&hvdev=c&hvdvcmdl=&hvlocint=&hvlocphy=9046893&hvtargid=aud-858395717453:pla-667424753514&psc=1&th=1&psc=1\">Amazon link</a></p></li>\r\n<li><p>Nexus 7 at 3:50<br />\r\n<a href=\"https://en.wikipedia.org/wiki/Nexus_7_(2013)\" class=\"uri\">https://en.wikipedia.org/wiki/Nexus_7_(2013)</a></p></li>\r\n<li><p>New tablet Battery at 5:20<br />\r\nLithium Polymer batteries, 7300 mAh capacity with claimed 15 hours of video playback on one charge. It seems to charge surprisingly quickly.</p></li>\r\n<li><p>Wikipedia entry for Edinburgh City Bypass at 9:30<br />\r\n<a href=\"https://en.wikipedia.org/wiki/Edinburgh_City_Bypass\" class=\"uri\">https://en.wikipedia.org/wiki/Edinburgh_City_Bypass</a></p></li>\r\n<li><p>Eye strain at 14:07</p></li>\r\n<li><p>Bluetooth Ear buds at 15:15<br />\r\nSimilar to these: <a href=\"https://www.amazon.co.uk/Bluetooth-Wireless-Headphones-Canceling-Compatible-white/dp/B084ST42CL/ref=sr_1_13?keywords=bluetooth+earbuds&qid=1582899080&sr=8-13\">Amazon link</a></p></li>\r\n<li><p>Bluetooth speaker at 16:52<br />\r\n<a href=\"https://www.amazon.co.uk/EasyAcc-Portable-Rechargeable-Bluetooth-Microphone/dp/B00JK6MQEI/ref=sr_1_2?crid=1X95EE1DRL6DI&keywords=bluetooth+speaker+easyacc&qid=1582899239&sprefix=bluetooth+speaker+easy+%2Caps%2C161&sr=8-2\">Amazon link</a></p></li>\r\n<li><p>Bluetooth keyboard at 22:35<br />\r\n<a href=\"https://www.amazon.co.uk/Universal-Adjustable-Brightness-Smartphone-Rechargeable/dp/B00X5P8BJO/ref=sr_1_1?crid=1K2NT7A80IVPK&keywords=arteck+universal+backlit+7-colors&qid=1582899392&sprefix=Artec+Uni%2Caps%2C160&sr=8-1\">Amazon link</a></p></li>\r\n<li><p>Additional thoughts after recording this episode</p>\r\n<ul>\r\n<li><p>Closing one eye seems to solve the problem though not very practical. It doesn’t seem to matter which eye I close.</p></li>\r\n<li><p>Doesn’t seem to bother me with the other 8” Samsung tablet or any other tablet / phone.</p></li>\r\n<li><p>Counter intuitively increasing the brightness makes things better</p></li>\r\n<li><p>Searching for eye strain and Samsung brought up one or two results of people saying a similar thing to myself; one person commenting that they were fed up of people telling them to get an eye test and like myself they do not have this problem with any other device.</p></li>\r\n</ul></li>\r\n</ul>\r\n',201,0,1,'CC-BY-SA','Android, Tablet',0,0,1),
(3031,'2020-03-16','Daniel Persson - Me? Me!',1131,'I talk about who I am and where I come from and what my interests are.','<p>Talking about my history, forgot to talk about my open-source interests and different projects I’m a part of.</p>\r\n<p>If you want to know more about me you could follow any of the links below.</p>\r\n<ul>\r\n<li><p><a href=\"https://danielpersson.dev/\" class=\"uri\">https://danielpersson.dev/</a></p></li>\r\n<li><p><a href=\"https://youtube.com/c/DanielPersson\" class=\"uri\">https://youtube.com/c/DanielPersson</a></p></li>\r\n<li><p><a href=\"https://github.com/kalaspuffar\" class=\"uri\">https://github.com/kalaspuffar</a></p></li>\r\n<li><p><a href=\"https://github.com/sqrldev/wordpress-sqrl-login\" class=\"uri\">https://github.com/sqrldev/wordpress-sqrl-login</a></p></li>\r\n</ul>\r\n',382,0,0,'CC-BY-SA','biography',0,0,1),
(3032,'2020-03-17','piCore on a Raspberry Pi 1 Model B',651,'How I revived my Raspberry Pi Model 1 B with piCore and a tiny SD card.','<p>In this episode, I discuss how I revived my Raspberry Pi 1 Model B using piCore, a specialized version of Tiny Core Linux for the Raspberry Pi, on a 128 MB SD card that I had laying around. I also mention nanoBSD and Alpine Linux as possible alternatives to try out.</p>\r\n<ul>\r\n<li><p>Tiny Core Linux<br />\r\n<a href=\"https://tinycorelinux.net/\" class=\"uri\">https://tinycorelinux.net/</a></p></li>\r\n<li><p>piCore Releases<br />\r\n<a href=\"https://www.tinycorelinux.net/9.x/armv6/\" class=\"uri\">https://www.tinycorelinux.net/9.x/armv6/</a></p></li>\r\n<li><p>nanoBSD<br />\r\n<a href=\"https://www.freebsd.org/doc/en_US.ISO8859-1/articles/nanobsd/index.html\" class=\"uri\">https://www.freebsd.org/doc/en_US.ISO8859-1/articles/nanobsd/index.html</a><br />\r\n<a href=\"https://www.freebsd.org/doc/en_US.ISO8859-1/articles/nanobsd/howto.html\" class=\"uri\">https://www.freebsd.org/doc/en_US.ISO8859-1/articles/nanobsd/howto.html</a></p></li>\r\n<li><p>Alpine Linux<br />\r\n<a href=\"https://alpinelinux.org/\" class=\"uri\">https://alpinelinux.org/</a><br />\r\n<a href=\"https://wiki.alpinelinux.org/wiki/Raspberry_Pi\" class=\"uri\">https://wiki.alpinelinux.org/wiki/Raspberry_Pi</a></p></li>\r\n</ul>\r\n',152,0,0,'CC-BY-SA','raspberrypi,rpi,linux,bsd',0,0,1),
(3033,'2020-03-18','Linux Inlaws S01E03 32 Bit Time Travel',3543,'Linux Inlaws - a podcast on topics around free and open source software','<p>For show notes, please visit <a href=\"https://linuxinlaws.eu\" class=\"uri\">https://linuxinlaws.eu</a></p>',384,111,1,'CC-BY-SA','Linux Inlaws, free open source software, revolution, FLOSS',0,0,1),
(3034,'2020-03-19','How to bridge Freenode IRC rooms to Matrix.org',786,'Thaj builds upon a previous episode by Clacke to deep dive into bridging IRC to Matrix.org','<ul>\r\n<li><p>Attribution</p>\r\n<ul>\r\n<li><a href=\"https://hackerpublicradio.org/correspondents/0311.html\">Clacke</a> - <a href=\"https://hackerpublicradio.org/eps.php?id=2169\">HPR Episode 2169 on Matrix</a></li>\r\n<li><a href=\"https://thelovebug.org/\">Dave Lee</a> - Helped a great deal in getting me on board with Matrix bridging. Check out his other podcasts at <a href=\"https://otherside.network/\">The Other Side Podcast Network</a></li>\r\n</ul></li>\r\n<li><p><a href=\"matrix.org\">Matrix.org</a> is a Free, open source, and decentralized messaging system. One of the strong points of this system is its ability to <a href=\"https://matrix.org/bridges\">bridge</a> multiple protocols together into one interface.</p></li>\r\n<li><p><a href=\"https://about.riot.im/\">Riot.im</a></p></li>\r\n<li><p>Bridging to Freenode\'sIRCserverisbuiltintoMatrix.org.IfyoualreadyhavearegisteredNickonFreenodeitisasimpleprocesstoassociateyourMatrixandFreenodeaccounts.</p></li>\r\n<li><p>StepstobridgetoaFreenodeIRCroom</p>\r\n<ol>\r\n<li>Startadirectmessagewith@freenode_NickServ:matrix.organdsendthecommand<code>identifynickpass</code>(replacingnickandpasswithyourcredentials).</li>\r\n<li>Directmessage@appservice-irc:matrix.orgwiththecommand<code>!storepassnick:pass</code></li>\r\n<li>Jointheroom#freenode_#oggcastplanet:matrix.org. <em>You can really join any room on freenode with #freenode_#CHANNAME:matrix.org</em></li>\r\n<li>PROFIT!!!!</li>\r\n</ol></li>\r\n</ul>\r\n',270,108,0,'CC-BY-SA','Freenode, IRC, Matrix.org, Riot.im, Social Media',0,0,1),
(3037,'2020-03-24','Ambient recording at Union Station',205,'Ambient recording in the main hall at Union Station, Chicago','<p>This was recorded in the main hall at Union Station in Chicago, Illinois.<br />\r\nThere was a brief security announcement about watching for bags or package left unattended.</p>',318,101,0,'CC-BY-SA','soundscape, train station',0,0,1),
(3038,'2020-03-25','Solo Magic',2244,'All the magic without the gathering','<p>This episode outlines my single-player mod for the <strong>Magic: The Gathering</strong> card game.</p>',78,95,0,'CC-BY-SA','magic, mtg',0,0,1),
(3040,'2020-03-27','Why use GNU Autotools',1766,'6 good reasons you should be using a build system','<p>GNU Autotools is a build system that helps you distribute your code in a predictable and reliable way.\r\nBuild systems offer many benefits, including:\r\n</p>\r\n\r\n<ol>\r\n<li>Standard and automate-able build process</li>\r\n<li>hooks into packaging systems (RPM, DEB, Slackbuilds, Flatpak, Snap, and so on)</li>\r\n<li>version reporting</li>\r\n<li>build for various OSes</li>\r\n<li>you get lots of code to handle every possible corner case, for free</li>\r\n<li>with a single configuration, you can build your project as the developer, build it for packagers, and enable users to build it for themselves</li>\r\n</ol>\r\n\r\n<p>Next up: how to use GNU Autotools</p>',78,0,0,'CC-BY-SA','autotools,build,make',0,0,1),
(3041,'2020-03-30','How to use GNU Autotools',2337,'How to use GNU Autotools','<p>I found a great article on this topic here: <a href=\"\" target=\"_blank\">https://opensource.com/article/19/7/introduction-gnu-autotools</a>, so please refer to that as show notes.</p>\r\n<p>\r\n<small>\r\nPage included by Ken, as permitted by cc-by-sa\r\n</small>\r\n</p>\r\n<h1>Introduction to GNU Autotools</h1>\r\n\r\n<p id=\"introduction-to-gnu-autotools\">Have you ever downloaded the source code for a popular software project that required you to type the almost ritualistic <strong>./configure; make && make install</strong> command sequence to build and install it? If so, you’ve used <a href=\"https://www.gnu.org/software/automake/faq/autotools-faq.html\" target=\"_blank\">GNU Autotools</a>. If you’ve ever looked into some of the files accompanying such a project, you’ve likely also been terrified at the apparent complexity of such a build system.</p>\r\n\r\n<p>Good news! GNU Autotools is a lot simpler to set up than you think, and it’s GNU Autotools itself that generates those 1,000-line configuration files for you. Yes, you can write 20 or 30 lines of installation code and get the other 4,000 for free.</p>\r\n\r\n<h2 id=\"autotools-at-work\">Autotools at work</h2>\r\n\r\n<p>If you’re a user new to Linux looking for information on how to install applications, you do not have to read this article! You’re welcome to read it if you want to research how software is built, but if you’re just installing a new application, go read my article about <a href=\"https://opensource.com/article/18/1/how-install-apps-linux\">installing apps on Linux</a>.</p>\r\n\r\n<p>For developers, Autotools is a quick and easy way to manage and package source code so users can compile and install software. Autotools is also well-supported by major packaging formats, like DEB and RPM, so maintainers of software repositories can easily prepare a project built with Autotools.</p>\r\n\r\n<p>Autotools works in stages:</p>\r\n\r\n<ol>\r\n<li>First, during the <strong>./configure</strong> step, Autotools scans the host system (the computer it’s being run on) to discover the default settings. Default settings include where support libraries are located, and where new software should be placed on the system.</li>\r\n<li>Next, during the <strong>make</strong> step, Autotools builds the application, usually by converting human-readable source code into machine language.</li>\r\n<li>Finally, during the <strong>make install</strong> step, Autotools copies the files it built to the appropriate locations (as detected during the configure stage) on your computer.</li>\r\n</ol><p>This process seems simple, and it is, as long as you use Autotools.</p>\r\n\r\n<h2 id=\"the-autotools-advantage\">The Autotools advantage</h2>\r\n\r\n<p>GNU Autotools is a big and important piece of software that most of us take for granted. Along with <a href=\"https://en.wikipedia.org/wiki/GNU_Compiler_Collection\" target=\"_blank\">GCC (the GNU Compiler Collection)</a>, Autotools is the scaffolding that allows Free Software to be constructed and installed to a running system. If you’re running a <a href=\"https://en.wikipedia.org/wiki/POSIX\" target=\"_blank\">POSIX</a> system, it’s not an understatement to say that most of your operating system exists as runnable software on your computer because of these projects.</p>\r\n\r\n<p>In the likely event that your pet project isn’t an operating system, you might assume that Autotools is overkill for your needs. But, despite its reputation, Autotools has lots of little features that may benefit you, even if your project is a relatively simple application or series of scripts.</p>\r\n\r\n<h3 id=\"portability\">Portability</h3>\r\n\r\n<p>First of all, Autotools comes with portability in mind. While it can’t make your project work across all POSIX platforms (that’s up to you, as the coder), Autotools can ensure that the files you’ve marked for installation get installed to the most sensible locations on a known platfor
(3039,'2020-03-26','Making a Raspberry Pi status display',1608,'A project making use of my Pi 3A+, an old monitor and MagicMirror2','<h2 id=\"introduction\">Introduction</h2>\r\n<p>I have had a project on my <em>To Do</em> list for a while: to make a status display from a Raspberry Pi. My vision was to show the state of various things including some HPR stuff, and I had imagined setting up a Pi with a monitor and controlling it over SSH.</p>\r\n<p>I started on the project over the Christmas period 2019. I have a Raspberry Pi 3A+, which is a sort of souped-up Pi Zero, which I bought on a whim and hadn’t found a use for (Yannick reviewed this RPi model in show <a href=\"https://hackerpublicradio.org/eps.php?id=2711\" title=\"hpr2711 :: Raspberry Pi 3A+ Review\">2711</a>). I also had an old square Dell monitor from about 15 years ago which still worked (at least to begin with).</p>\r\n<p>I had imagined I’d write some software of my own with a web front end which ran various tasks to monitor things.</p>\r\n<p>However, in my researches I came across <em>MagicMirror<sup>2</sup></em> which I thought I might be able to use instead of writing my own thing.</p>\r\n<h2 id=\"long-notes\">Long notes</h2>\r\n<p>I have provided detailed notes as usual for this episode, and these can be <a href=\"https://hackerpublicradio.org/eps/hpr3039/full_shownotes.html\">viewed here</a>.</p>\r\n<h2 id=\"links\">Links</h2>\r\n<ul>\r\n<li>JavaScript programming language:\r\n<ul>\r\n<li><a href=\"https://en.wikipedia.org/wiki/JavaScript\">Wikipedia entry</a></li>\r\n</ul></li>\r\n<li>Node.js JavaScript runtime environment:\r\n<ul>\r\n<li><a href=\"https://nodejs.org/en/\">Website</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Node.js\">Wikipedia entry</a></li>\r\n</ul></li>\r\n<li>Electron software framework:\r\n<ul>\r\n<li><a href=\"https://www.electronjs.org/\">Website</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Electron_%28software_framework%29\">Wikipedia entry</a></li>\r\n</ul></li>\r\n<li>MagicMirror<sup>2</sup>:\r\n<ul>\r\n<li><a href=\"https://github.com/MichMich/MagicMirror\">GitHub page</a></li>\r\n<li><a href=\"https://magicmirror.builders/\">Website</a></li>\r\n<li><a href=\"https://github.com/MichMich/MagicMirror/wiki/3rd-party-modules\">List of third-party modules</a></li>\r\n</ul></li>\r\n<li>Resources:\r\n<ul>\r\n<li>Example files:\r\n<ul>\r\n<li><a href=\"https://hackerpublicradio.org/eps/hpr3039/config.js\">config.js</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps/hpr3039/custom.css\">custom.css</a></li>\r\n</ul></li>\r\n</ul></li>\r\n</ul>\r\n',225,0,1,'CC-BY-SA','Raspberry Pi,VGA monitor,MagicMirror2,MQTT,Node.js,Electron',0,0,1),
(3042,'2020-03-31','The COVID-19 Work From Home Stream - Day 0',4021,'A couple of HPR characters decide to spend some of their social distancing time being social','<p>Tuesday 17.03.2020</p>\r\n<p>Guests: honkeymagoo, crvs, and Thaj</p>\r\n<ul>\r\n<li>How likely we are to get COVID-19</li>\r\n<li>Should we invest while the market is down</li>\r\n<li>How bad is the internet infrastructure in the US</li>\r\n<li>Learning Python\r\n<ul>\r\n<li><a href=\"https://grasshopper.app/\">Grasshopper</a></li>\r\n<li><a href=\"https://github.com/ubarredo/LearnPythonTheHardWay\">Learn Python tne Hard Way</a></li>\r\n<li><a href=\"https://exercism.io\">Excercism</a></li>\r\n<li>Klaatu\'s<ahref=\"https://www.amazon.com/Programming-Book-S-Kenlon/dp/098478425X/ref=sr_1_1?dchild=1&keywords=9780984784257&linkCode=qs&qid=1584490615&s=books&sr=1-1\">ProgrammingBook</a></li>\r\n</ul></li>\r\n<li>Growingplants</li>\r\n<li>ThatAudiobookClubthough...</li>\r\n<li>Videogames</li>\r\n<li>SingleBoardComputers\r\n<ul>\r\n<li>OpenBSDon<ahref=\"https://www.openbsd.org/arm64.html\">RaspberryPi</a></li>\r\n</ul></li>\r\n<li>Whyhaven\'t you done a show about that Thaj?</li>\r\n<li>Emacs and org-mode</li>\r\n<li>Nano for the win</li>\r\n</ul>\r\n',270,0,1,'CC-BY-SA','COVID-19, Stock Markets, Emacs, Python, Programming, Audiobooks, Growing Food, Video Games, SBCs',0,0,1),
(3043,'2020-04-01','How I record for HPR',119,'The tools I use to record a show for HPR','<ol type=\"1\">\r\n<li><p>Sentry BT250 Bluetooth Headphones w/ mic<br />\r\n<a href=\"https://www.amazon.com/Wireless-Rechargeable-Stereo-Earbuds-Bluetooth/dp/B015NFWDX8\" class=\"uri\">https://www.amazon.com/Wireless-Rechargeable-Stereo-Earbuds-Bluetooth/dp/B015NFWDX8</a></p></li>\r\n<li><p>F-Droid - free open source apps for Android<br />\r\n<a href=\"https://f-droid.org/en/\" class=\"uri\">https://f-droid.org/en/</a></p></li>\r\n<li>Audio Recorder from F-Droid<br />\r\n<a href=\"https://f-droid.org/en/packages/com.github.axet.audiorecorder/\" class=\"uri\">https://f-droid.org/en/packages/com.github.axet.audiorecorder/</a><br />\r\nFeatures:\r\n<ul>\r\n<li>Mute incoming call audio while recording</li>\r\n<li>Variety of format encoding\r\n<ul>\r\n<li>ogg (default)</li>\r\n<li>wav</li>\r\n<li>flac</li>\r\n<li>m4a</li>\r\n<li>mp3</li>\r\n<li>opus</li>\r\n</ul></li>\r\n</ul></li>\r\n<li><p>X-plore Android file explorer<br />\r\n<a href=\"https://play.google.com/store/apps/details?id=com.lonelycatgames.Xplore&hl=en_US\" class=\"uri\">https://play.google.com/store/apps/details?id=com.lonelycatgames.Xplore&hl=en_US</a></p></li>\r\n<li>Audacity\r\n<ul>\r\n<li>Amplify tool</li>\r\n<li>Bass and Treble tool</li>\r\n</ul></li>\r\n</ol>\r\n',318,0,0,'CC-BY-SA','recording, bluetooth, android',0,0,1),
(3047,'2020-04-07','The COVID-19 Work From Home Stream - Day 1',2449,'A couple of HPR characters decide to spend some of their social distancing time being social','<p>Wednesday 18.03.2020 (2020-03-18)</p>\r\n<p>Guests: honkeymagoo, crvs, Lyle, Thaj</p>\r\n<ul>\r\n<li><a href=\"https://obsproject.com\">Open Broadcaster Studio</a></li>\r\n<li>A grocery store trip is a sign of the apocalypse?</li>\r\n<li>Bidets are the fix for TP shortages</li>\r\n<li>Insider details on the grocery business</li>\r\n<li>My beard is NOT negotiable</li>\r\n<li>Long term impacts of social distance\r\n<ul>\r\n<li>How are schools handling this?</li>\r\n</ul></li>\r\n<li>Matrix, IRC, and Microsoft Teams...OH MY!!</li>\r\n<li>Do you need another person for your HPR episode, call Thaj.</li>\r\n<li>Lyle has a <a href=\"https://i.imgur.com/GVEOiIB.jpg\">meme</a></li>\r\n<li>Lyle makes a <a href=\"https://cooking.nytimes.com/recipes/1018203-simple-crusty-bread-\">bread</a></li>\r\n<li>More Python</li>\r\n<li>ffmpeg</li>\r\n</ul>',270,0,1,'CC-BY-SA','OBS, Bidets, Grocery',0,0,1),
(3048,'2020-04-08','Alternatives to toilet paper',702,'A non-satirical and non-sarcastic review of alternatives to toilet paper.','<p>In some countries, people seem to be legitimately concerned about the availability of toilet paper. This episode offers alternatives to toilet paper in the hope of relieving people of additional stress around hygiene.\r\n</p><p>This is not a joke episode and contains no offensive language, but it is about a potentially sensitive subject, so it has been marked explicit as a precaution.</p>',78,100,1,'CC-BY-SA','hygiene',0,0,1),
(3051,'2020-04-13','The COVID-19 Work From Home Stream - Day 2',2552,'A few HPR characters decide to spend some of their social distancing time being social','<p>Thursday 19.03.2020</p>\r\n<p>Guests: honkeymagoo, Thaj</p>\r\n<ul>\r\n<li>Talk about creating video tutorials for work</li>\r\n<li>Still more talking about Python</li>\r\n<li>Plumble dies</li>\r\n<li>Is being open to technology based on age?</li>\r\n<li>How much farther will this virus shut things down?</li>\r\n<li>Oh no....politics!</li>\r\n<li>Healthcare in the US</li>\r\n</ul>',270,0,1,'CC-BY-SA','Healthcare, Python, COVID-19, Plumble, Politcs, Technology',0,0,1),
(3054,'2020-04-16','Coronavirus Thoughts',1101,'Where we are with this pandemic, and how should we respond.','<p>This is an attempt on my part to pull together what we know about the Coronavirus, and what measures we can take. It emphasizes the importance of social distancing, and evaluates our prospects for conquering the disease. <a href=\"https://www.palain.com/?page_id=731\" class=\"uri\">https://www.palain.com/?page_id=731</a></p>\r\n<ul>\r\n<li><a href=\"https://www.palain.com/?page_id=356\" class=\"uri\">https://www.palain.com/?page_id=356</a></li>\r\n<li><a href=\"https://www.palain.com/?page_id=358\" class=\"uri\">https://www.palain.com/?page_id=358</a></li>\r\n<li><a href=\"https://www.palain.com/?page_id=360\" class=\"uri\">https://www.palain.com/?page_id=360</a></li>\r\n<li><a href=\"https://www.palain.com/?page_id=402\" class=\"uri\">https://www.palain.com/?page_id=402</a></li>\r\n<li><a href=\"https://www.palain.com/?page_id=402\" class=\"uri\">https://www.palain.com/?page_id=402</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2685\" class=\"uri\">https://hackerpublicradio.org/eps.php?id=2685</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2695\" class=\"uri\">https://hackerpublicradio.org/eps.php?id=2695</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2705\" class=\"uri\">https://hackerpublicradio.org/eps.php?id=2705</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2870\" class=\"uri\">https://hackerpublicradio.org/eps.php?id=2870</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2880\" class=\"uri\">https://hackerpublicradio.org/eps.php?id=2880</a></li>\r\n<li><a href=\"https://www.theguardian.com/world/2020/apr/05/when-will-a-coronavirus-vaccine-be-ready\" class=\"uri\">https://www.theguardian.com/world/2020/apr/05/when-will-a-coronavirus-vaccine-be-ready</a></li>\r\n<li><a href=\"https://s2.washingtonpost.com/camp-rw/?e=endpbG5pa0B6d2lsbmlrLmNvbQ%3D%3D&s=5e8b05f4fe1ff6038cf6a56a&linknum=0&linktot=79\" class=\"uri\">https://s2.washingtonpost.com/camp-rw/?e=endpbG5pa0B6d2lsbmlrLmNvbQ%3D%3D&s=5e8b05f4fe1ff6038cf6a56a&linknum=0&linktot=79</a></li>\r\n<li><a href=\"https://www.jci.org/articles/view/138003\" class=\"uri\">https://www.jci.org/articles/view/138003</a></li>\r\n<li><a href=\"https://www.scientificamerican.com/podcast/science-talk/\" class=\"uri\">https://www.scientificamerican.com/podcast/science-talk/</a></li>\r\n<li><a href=\"https://fivethirtyeight.com/videos/why-we-shouldnt-hope-covid-19-is-seasonal-like-the-flu/\" class=\"uri\">https://fivethirtyeight.com/videos/why-we-shouldnt-hope-covid-19-is-seasonal-like-the-flu/</a></li>\r\n<li><a href=\"https://fivethirtyeight.com/features/why-we-still-need-to-test-widely-for-coronavirus/\" class=\"uri\">https://fivethirtyeight.com/features/why-we-still-need-to-test-widely-for-coronavirus/</a></li>\r\n<li><a href=\"https://www.palain.com/?page_id=731\" class=\"uri\">https://www.palain.com/?page_id=731</a></li>\r\n</ul>\r\n\r\n<hr />\r\n<small>Show notes added by Ken as they are released under a Creative Commons Attribution-ShareAlike 4.0 International License. </small>\r\n\r\n<p>\r\n Well, since I am sitting at home maintaining a “social distance” I thought I would put down some thoughts about this pandemic and how we will be affected. But a disclaimer to be completely clear: I am not a doctor or a research scientist. I am retired, but I was once a college professor teaching \r\n <em>\r\n Statistics\r\n </em>\r\n and \r\n <em>\r\n Research Methods\r\n </em>\r\n . I think this helps me in some way to interpret the information I receive, but when I want authoritative information I look to real doctors, the CDC, and qualified researchers. If you want to know more about what I mean by qualified researchers, you might want to check out my series on interpreting studies:\r\n</p>\r\n<ul>\r\n <li>\r\n <a rel=\"noreferrer noopener\" href=\"https://www.palain.com/?page_id=356\" target=\"_blank\">\r\n Scientific and Medical Report
(3049,'2020-04-09','What computers taught me about reality',1451,'Klaatu tells us what computers taught him about reality','<p>Some musings about what computers taught me about reality and perception.</p>',78,0,0,'CC-BY-SA','philosophy,system design',0,0,1),
(3044,'2020-04-02','mocp snooze tip',391,'A quick snooze tip when using mocp','<p>I use cordless headphones, I find this very handy when I want <code>mocp</code> to play for a set time then pause.</p>\r\n<p>Commands used</p>\r\n<ul>\r\n<li><p>Ctrl + r, to quickly find the command</p></li>\r\n<li><p><code>sleep 10m && mocp -G</code></p></li>\r\n<li><p><code>sleep 10m && mocp -M ~/.moc/audiobooks -G</code></p></li>\r\n<li><p><code>sleep 5h && iplayer-url</code></p></li>\r\n</ul>',201,0,1,'CC-BY-SA','Linux, bash, podcasts, audio',0,0,1),
(3056,'2020-04-20','Jitsi',764,'Jitsi is an open-source multiplatform videoconferencing ','<p>Jitsi is a collection of free and open-source multiplatform voice, videoconferencing and instant messaging applications for the web platform, Windows, Linux, Mac OS X and Android</p>\r\n<p>Jitsi <small><small>(<b>Editor\'sNote</b>:shownotesamended2020-06-13fromcomment)</small></small></p>\r\n<pre><code>systemctlstopdocker\r\n\r\nrm-Rf/var/lib/docker\r\nrm-Rf~/.jitsi-meet-cfg\r\n\r\n# change docker-data to your path you want to put images in\r\nmount --rbind /media/moredata/docker-data /var/lib/docker\r\n\r\napt-get remove --purge install docker-ce docker-ce-cli containerd.io\r\napt-get install docker-ce docker-ce-cli containerd.io\r\n\r\ncurl -L "https://github.com/docker/compose/releases/download/1.23.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose\r\nchmod +x /usr/local/bin/docker-compose\r\n\r\ngit clone https://github.com/jitsi/docker-jitsi-meet && cd docker-jitsi-meet\r\n\r\nsystemctl restart docker\r\n\r\ncp env.example .env\r\nmkdir -p ~/.jitsi-meet-cfg/{web/letsencrypt,transcripts,prosody,jicofo,jvb}\r\n\r\ndocker-compose --log-level DEBUG up -d --force-recreate --remove-orphans\r\n\r\ntail -f `find /var/lib/docker/containers -iname "*.log" `\r\n\r\ndocker container ls\r\n\r\ndocker exec -it d4c89a799fd7 bash\r\n\r\n# side that will be controlled needs to run\r\nhttps://github.com/jitsi/jitsi-meet-electron/releases/latest</code></pre>\r\n<ul>\r\n<li><p><a href=\"https://rmccurdy.com/.scripts/videos/rmccurdy_com/HPR_Jitsi.mp4\" class=\"uri\">https://rmccurdy.com/.scripts/videos/rmccurdy_com/HPR_Jitsi.mp4</a></p></li>\r\n<li><p><a href=\"https://rmccurdy.com/.scripts/videos/rmccurdy_com/HPR_Jitsi.mp3\" class=\"uri\">https://rmccurdy.com/.scripts/videos/rmccurdy_com/HPR_Jitsi.mp3</a></p></li>\r\n</ul>\r\n',36,0,1,'CC-BY-SA','linux,debian,computers,software,internet,Jitsi,video,conferencing,open-source',0,0,1),
(3052,'2020-04-14','Locating computers on a network',1322,'Ken explains some different ways to locate computers on the network','<h1>Locating computers on a network</h1>\r\n\r\n<p>Sometimes you may wish to locate a device on your network. It might be to find rogue devices, or to locate a new device be that a printer, an Internet of Things light bulb, or whatever. In my case I was trying to track down a RaspberryPi. Raspbian now lists the IP Addresses assigned to it when it first starts, but that requires a monitor to be connected.</p>\r\n\r\n<h2 id=\"locating-using-your-router\">Locating using your router.</h2>\r\n\r\n<p>This is by far the easiest way to find a new device but it is also the most manual. If you have access to the (WiFi) Router/<a href=\"https://en.wikipedia.org/wiki/Dynamic_Host_Configuration_Protocol\">DHCP</a> server on your network then this should be a matter of logging in and getting the address from the menu area probably called <code>Network</code> or <code>LAN</code> or something like that. So first list all the computers that are on the network. Then turn on your pi, and see if a new one has joined. If you\'reluckyitmayevenbelabeled<em>RaspberryPiFoundation</em>.</p>\r\n\r\n<p>InmycaseIwanttolocatethesedevicesautomaticallyusingascript.Sobelowwewillexploresomewaysthatyoucanapproachtheproblemoflocatingdevicesonyournetwork.AllofthemrelyontryingtofindthemappingbetweenanEthernetMACAddress,andaIPAddress.ItwillhelptounderstandalittleabouthowEthernetworks.Thisisaniceshortoverview,<ahref=\"https://www.youtube.com/watch?v=5u52wbqBgEY\">HowdoesEthernetwork?(animated)</a>by<ahref=\"https://www.youtube.com/channel/UCXkx8hX8Xo4lb7T0_-yZzVg\">JanosPasztor</a></p>\r\n\r\n<h2id=\"arp\">ARP</h2>\r\n\r\n<p>Idon\'t know the network device you will be using so I\'dliketoshareafewwaysofdoingthisusingthe<ahref=\"https://en.wikipedia.org/wiki/Address_Resolution_Protocol\">ARP</a>protocol.Thisprovidesamappingbetweenadevice\'s permanent <a href=\"https://en.wikipedia.org/wiki/MAC_address\">MAC address</a> and their, often temporarily, assigned <a href=\"https://en.wikipedia.org/wiki/IP_address\">IP address</a>.</p>\r\n\r\n<p>When your computer <code>192.168.1.1</code> wants to talk to another device it will need to know the Ethernet <a href=\"https://en.wikipedia.org/wiki/MAC_address\">MAC address</a> of the other device. Let\'sassumeitwantstoconnecttothelocalprinter<code>192.168.1.2</code>thatisonthesamenetwork,anditknowsitsIPAddress.Ifyourcomputerhasalreadyheardtheprintercommunicateonthenetwork,itwillhavealreadyaddedtheprinter\'s IP address and MAC Address to its so called ARP table. Over time older entries will be removed from this table either because they are too old, or there were too many entries.</p>\r\n\r\n<p>Linux has a command called <code>arp</code> which will show you a list of the IP addresses mapped to the MAC/HWaddress address.</p>\r\n<pre><code># arp -n\r\nAddress HWtype HWaddress Flags Mask Iface\r\n192.168.1.254 ether ff:ee:dd:cc:bb:aa C eno1\r\n192.168.1.2 ether 00:11:22:33:44:55 C eno1\r\n192.168.1.1 ether 00:aa:bb:cc:dd:ee C eno1\r\n</code></pre>\r\n\r\n<p>From a <a href=\"https://en.wikipedia.org/wiki/Internet_Protocol\">Internet Protocol (IP)</a> point of view all your devices in your house are probably in the same <a href=\"https://en.wikipedia.org/wiki/Subnetwork\">Subnet(work)</a>. But what if you need to communicate outside your network? For example to ping a well known server <code>8.8.8.8</code> to check if you have an Internet Connection. The IP settings also include a <a href=\"https://en.wikipedia.org/wiki/Default_gateway\">Default gateway</a> to send all traffic not intended for the local network.</p>\r\n\r\n<h2 id=\"finding-the-default-gateway\">Finding the Default gateway</h2>\r\n\r\n<p>Your c
(3053,'2020-04-15','AudioBookClub 17 - Blood Witness',9328,'Straight out of the Freezer, the HPR Audiobook Club reviews Blood Witness by David Hitt','<h1 id=\"in-this-episode-the-hpr-audiobook-club-discusses-the-audiobook-blood-witness-by-david-hitt\">In this episode the HPR Audiobook Club discusses the audiobook <a href=\"https://www.scribl.com/books/PA513/blood-witness\">Blood Witness</a> by David Hitt</h1>\r\n<hr />\r\n<h1 id=\"non-spoiler-thoughts\">Non-Spoiler Thoughts</h1>\r\n<hr />\r\n<ul>\r\n<li>This book may or may not be offensive to some. We discuss.</li>\r\n<li>Audio quality was generally good, very few double reads.</li>\r\n<li>Thaj is annoyed by the transition sound.</li>\r\n<li>We generally enjoyed the theme music.</li>\r\n<li>We discuss the characters that we found the most interesting.</li>\r\n<li>Lyle apologizes for being unintentionally offensive.</li>\r\n<li>How do vampires work in this book anyways ?</li>\r\n</ul>\r\n<h1 id=\"beverage-reviews\">Beverage Reviews</h1>\r\n<hr />\r\n<p>As usual, the HPR AudioBook Club took some time to review the beverages that each of us were drinking during the episode</p>\r\n<ul>\r\n<li><strong>Thaj:</strong> Water, and a bit of something different. Thaj has had a rough week so he treated himself to <a href=\"https://www.worldmarket.com/product/daelmans-dutch-caramel-waffles.do\">Daelmans Wafers</a></li>\r\n<li><strong>x1101:</strong> <a href=\"https://redhook.com/beers/redhook-ipa\">Redhook Longhammer IPA</a></li>\r\n<li><strong>pokey:</strong> Pokey’s beverage in this episode is Twisted Cabernet Savaugnon.</li>\r\n<li><strong>FiftyOneFifty:</strong> <a href=\"https://www.beeradvocate.com/beer/profile/37795/147598/\">Mike’s Hard Smashed Apple Ale</a></li>\r\n</ul>\r\n<h1 id=\"things-we-talked-about\">Things We talked about</h1>\r\n<hr />\r\n<ul>\r\n<li>Pokey thinks the ending is not strong.</li>\r\n<li>He also finds some plot holes.</li>\r\n<li>There is a big door for a sequel.</li>\r\n<li>The logistics of becoming a vampire.</li>\r\n<li>Why \"Twilight\" sucks.</li>\r\n<li>How the characters react to becoming a vampire.</li>\r\n<li>The book wasn’t as graphic as we anticipated.</li>\r\n<li>We introduce… OneFiftyOneFifty!</li>\r\n<li>Fire!!!</li>\r\n<li>Sparks vs.allsparks</li>\r\n<li>Link in the shownotes…or not.</li>\r\n<li>Do you need a \"good person\" to cheer on in a story to enjoy it?</li>\r\n<li><a href=\"https://edictzero.wordpress.com/\">Edict Zero:FIS</a></li>\r\n<li><a href=\"https://www.youtube.com/watch?v=-PSP2Adz5j8\">The Lab Rats - Devil’s Train</a></li>\r\n<li><a href=\"https://monsterjavaguns.com/\">https://monsterjavaguns.com/</a></li>\r\n<li>OK, so we gave up on the book and just talked about games.</li>\r\n</ul>\r\n<h1 id=\"our-next-audiobook\">Our Next Audiobook</h1>\r\n<hr />\r\n<p><a href=\"https://startrekcontinuingmission.com/\">Star Trek: The Continuing Mission</a></p>\r\n<h1 id=\"the-next-audiobook-club-recording\">The Next Audiobook Club Recording</h1>\r\n<hr />\r\n<p>Right now we are working through a backlog of older episode that have already been recorded. Once that ends we fully anticipate recording new episodes with listener participation.</p>\r\n<h1 id=\"further-recommendations\">Further Recommendations</h1>\r\n<hr />\r\n<ul>\r\n<li><a href=\"https://play.google.com/store/apps/details?id=com.watabou.pixeldungeon&hl=en\">Pixel Dungeon</a></li>\r\n<li><a href=\"https://www.canakit.com/raspberry-pi-starter-kit.html\">Raspberry Pi 2 Kit</a></li>\r\n<li><a href=\"https://news.bbcimg.co.uk/media/images/81372000/jpg/_81372893_b_ivlqbu0aesbph.jpglarge.jpg\">Dollar Nemoy</a></li>\r\n</ul>\r\n<h1 id=\"feedback\">Feedback</h1>\r\n<hr />\r\n<p>Thank you very much for listening to this episode of the HPR AudioBookClub. We had a great time recording this show, and we hope you enjoyed it as well. We also hope you’ll consider joining us next time we record a new episode. Please leave a few words in the episode’s comment section.</p>\r\n<p>As always; remember to visit the HPR contribution page HPR could really use your <a href=\"
(3060,'2020-04-24','Running a local imap server',360,'Ken installs courier-imap locally to have a local backup of his mail.','<h1 id=\"setting-up-a-local-imap-server\">Setting up a local imap server</h1>\r\n<p>To install a local imap daemon that will only listen to localhost connections, made via ssh tunneling. This is for use as a local backup of your imap files, or for keeping a remote backup somewhere.</p>\r\n<p>This is not a mail delivery solution but rather a way to keep a backup of your email using to a <code>MailDir</code> directory that you can access using your email client. As each message is stored in its own file, you can also use normal tools like <code>find|sed|awk|grep</code> to find messages.</p>\r\n<p>This setup can be installed locally or remotely on, for example, a raspberry pi. In that case you can enable a portforwarding rule in <code>~/.ssh/config</code> to include something like <code>LocalForward 127.0.0.1:2143 127.0.0.1:143</code></p>\r\n<p>Install using <code>aptitude install courier-imap courier-authdaemon</code></p>\r\n<p>You can check the status using <code>systemctl status courier-imap.service courier-authdaemon.service</code></p>\r\n<p>Edit the file <code>/etc/courier/imapd</code> and modify the following settings:</p>\r\n<p>Address to listen on, can be set to a single IP address.</p>\r\n<pre><code> < ADDRESS=0\r\n > ADDRESS=127.0.0.1\r\n</code></pre>\r\n<p>Maximum number of IMAP servers started</p>\r\n<pre><code> < MAXDAEMONS=40\r\n > MAXDAEMONS=80\r\n</code></pre>\r\n<p>Maximum number of connections to accept from the same IP address</p>\r\n<pre><code> < MAXPERIP=20\r\n > MAXPERIP=40\r\n</code></pre>\r\n<p>The following setting is optional, and causes messages from the given folder to be automatically deleted after the given number of days.</p>\r\n<pre><code> < IMAP_EMPTYTRASH=Trash:7\r\n > #IMAP_EMPTYTRASH=Trash:7\r\n</code></pre>\r\n<p>Change the directory name of the maildir directory.</p>\r\n<pre><code> < MAILDIRPATH=Maildir\r\n > MAILDIRPATH=/home/pi/MailDir\r\n</code></pre>\r\n<p>Then restart the service using <code>systemctl restart courier-imap.service courier-authdaemon.service</code>.</p>\r\n<p>When I did this I got a strange error about but installing the package <code>gamin</code> fixed it. Which is a <em>Library providing the FAM File Alteration Monitor API</em>.</p>\r\n<pre><code> Filesystem notification initialization error -- contact your mail\r\n administrator (check for configuration errors with the FAM/Gamin library)\r\n</code></pre>\r\n<h3 id=\"links\">Links</h3>\r\n<ul>\r\n<li><a href=\"https://www.courier-mta.org/imap/documentation.html\">https://www.courier-mta.org/imap/documentation.html</a></li>\r\n<li><a href=\"https://www.faqforge.com/linux/fix-for-courier-imap-error-check-for-configuration-errors-with-the-famgamin-library/\">https://www.faqforge.com/linux/fix-for-courier-imap-error-check-for-configuration-errors-with-the-famgamin-library/</a></li>\r\n</ul>\r\n',30,0,0,'CC-BY-SA','courier, imap, MailDir, raspberrypi',0,0,1),
(3058,'2020-04-22','The COVID-19 Work From Home Stream - Day 3',6065,'A few HPR characters decide to spend some of their social distancing time being social','<p>Friday 2020-03-02</p>\r\n<ul>\r\n<li>A secret message left for Thaj (for the record it pronounced like the Taj in Taj Mahal)</li>\r\n<li>How do you use a bidet?</li>\r\n<li>The different ways to organize work from home</li>\r\n<li>Kids and working from home</li>\r\n<li><a href=\"https://www.youtube.com/watch?v=CdJ6VzIthRY&feature=youtu.be\">Jon\'svideo</a></li>\r\n<li><ahref=\"https://lbry.com/\">LBRY</a></li>\r\n<li>Drivingisnotfun</li>\r\n<li>Moreffmpegtalk</li>\r\n<li>Bidetscomeupagain</li>\r\n<li>#oggcastplanet on Freenode</li>\r\n<li>Programming languages</li>\r\n<li>By the way...I run Arch</li>\r\n<li>Kevin Wisher and Thaj talk shop</li>\r\n<li>What is that accent?</li>\r\n</ul>\r\n',270,0,1,'CC-BY-SA','Bidets, ffmpeg, driving, Programming, Arch Linux, OggcastPlanet, education',0,0,1),
(3061,'2020-04-27','Parental Controls With Mike Ivy',2051,'We talk about Parental Controls and IOT device ','<ul>\r\n<li>Amazon free time</li>\r\n<li>Microsoft family safety live account</li>\r\n</ul>\r\n',36,0,1,'CC-BY-SA','IOT,hacking,amazon,android,firestick',0,0,1),
(3057,'2020-04-21','Formal verification with Coq',1271,'Tuula talks about formally verifying code','<p><a href=\"https://coq.inria.fr/\">Coq</a> is interactive theorem prover, which comes with its own programming language Gallina.</p>\r\n<p>If we wanted to write function that calculates resulting blood type based on two gene alleles, we could do it as following.</p>\r\n<p>Start by defining types that represents alleles and resulting blood type:</p>\r\n<pre><code>Inductive BloodTypeAllele : Type :=\r\n | BloodTypeA\r\n | BloodTypeB\r\n | BloodTypeO.\r\n\r\nInductive BloodType : Type :=\r\n | TypeA\r\n | TypeB\r\n | TypeAB\r\n | TypeO.</code></pre>\r\n<p>Mapping between them is defined as follows:</p>\r\n<pre><code>Definition bloodType (a b : BloodTypeAllele) : BloodType :=\r\n match a, b with\r\n | BloodTypeA, BloodTypeA => TypeA\r\n | BloodTypeA, BloodTypeO => TypeA\r\n | BloodTypeA, BloodTypeB => TypeAB\r\n | BloodTypeB, BloodTypeB => TypeB\r\n | BloodTypeB, BloodTypeA => TypeAB\r\n | BloodTypeB, BloodTypeO => TypeB\r\n | BloodTypeO, BloodTypeA => TypeA\r\n | BloodTypeO, BloodTypeB => TypeB\r\n | BloodTypeO, BloodTypeO => TypeO\r\n end.</code></pre>\r\n<p>Notice that the only way of getting <code>TypeO</code> blood is for both alleles to be <code>BloodTypeO</code>.</p>\r\n<p>We can state theorems about the code:</p>\r\n<pre><code>Theorem double_O_results_O_type :\r\n bloodType BloodTypeO BloodTypeO = TypeO.\r\nProof.\r\n reflexivity.\r\n Qed.</code></pre>\r\n<p><code>double_O_results_O_type</code> states that <code>bloodType BloodTypeO BloodTypeO</code> will have value of <code>TypeO</code>. There’s also attached proof for this theorem.</p>\r\n<p>Second theorem is longer:</p>\r\n<pre><code>Theorem not_double_O_does_not_result_O_type :\r\n forall (b1 b2 : BloodTypeAllele),\r\n b1 <> BloodTypeO \\/ b2 <> BloodTypeO ->\r\n bloodType b1 b2 <> TypeO.\r\nProof.\r\n intros.\r\n destruct b1.\r\n - destruct b2.\r\n + discriminate.\r\n + discriminate.\r\n + discriminate.\r\n - destruct b2.\r\n + discriminate.\r\n + discriminate.\r\n + discriminate.\r\n - destruct b2.\r\n + discriminate.\r\n + discriminate.\r\n + destruct H.\r\n * simpl. contradiction.\r\n * simpl. contradiction.\r\nQed.</code></pre>\r\n<p>It states that if <code>bloodType</code> is applied with anything else than two <code>BloodTypeO</code>, the result will not be <code>TypeO</code>. Proof for this is longer. It goes through each and every combination of parameters and proves that the result isn’t <code>TypeO</code>. Mathematician could write this as: ∀ b1 b2, b1 ≠ BloodTypeO ∨ b2 ≠ BloodTypeO → bloodType b1 b2 ≠ TypeO.</p>\r\n<p>If code above is in module called <code>Genes</code>, we can add following at the end to instruct compiler to emit Haskell code:</p>\r\n<pre><code>Extraction Language Haskell.\r\nExtraction Genes.</code></pre>\r\n<p>Resulting code is as follows:</p>\r\n<pre><code>data BloodTypeAllele =\r\n BloodTypeA\r\n | BloodTypeB\r\n | BloodTypeO\r\n\r\ndata BloodType =\r\n TypeA\r\n | TypeB\r\n | TypeAB\r\n | TypeO\r\n\r\nbloodType :: BloodTypeAllele -> BloodTypeAllele -> BloodType\r\nbloodType a b =\r\n case a of {\r\n BloodTypeA -> case b of {\r\n BloodTypeB -> TypeAB;\r\n _ -> TypeA};\r\n BloodTypeB -> case b of {\r\n BloodTypeA -> TypeAB;\r\n _ -> TypeB};\r\n BloodTypeO ->\r\n case b of {\r\n BloodTypeA -> TypeA;\r\n BloodTypeB -> TypeB;\r\n BloodTypeO -> TypeO}}</code></pre>\r\n<p>Now we have Haskell code that started in Coq, has two properties formally verified and is ready to be integrated with rest of the system.</p>\r\n<p>Further reading:</p>\r\n<ul>\r\n<li><a href=\"https://softwarefoundations.cis.upenn.edu/\">Software Foundations</a></li>\r\n<li><a href=\"https://cel.archives-ouvertes.fr/file/index/docid/459139/filename/coq-hurry.pdf\">Coq in a Hurry</a></li>\r\n</ul>\r\n',364,0,0,'
(3059,'2020-04-23','A quick intro to Snapcast',293,'A brief overview of Snapcast, an open source multi-room audio streaming system.','<p>Relevant links:</p>\r\n<ul>\r\n<li><a href=\"https://github.com/badaix/snapcast\">Snapcast</a></li>\r\n<li><a href=\"https://www.musicpd.org/\">MPD</a></li>\r\n<li><a href=\"https://mpv.io/\">mpv</a></li>\r\n<li><a href=\"https://github.com/badaix/snapdroid\">Snapdroid</a></li>\r\n<li><a href=\"https://github.com/atoomic/snapcast-volume-ui\">snapcast-volume-ui</a></li>\r\n<li><a href=\"https://github.com/badaix/snapcast/blob/master/doc/json_rpc_api/v2_0_0.md\">Snapcast JSON-RPC documentation</a></li>\r\n</ul>',386,0,1,'CC-BY-SA','opensource, selfhosted',0,0,1),
(3062,'2020-04-28','Vassal: How to play board games while remote',931,'How to do physical distancing while avoiding social distance using digitized boardgames','<p>A friend, a stranger and I played <a href=\"https://www.vassalengine.org/\">https://www.vassalengine.org/</a> together.</p>\r\n<p>We played the Carcasonne-simple 1.2 module downloaded from <a href=\"https://www.vassalengine.org/wiki/Module:Carcassonne\">https://www.vassalengine.org/wiki/Module:Carcassonne</a>.</p>\r\n<p>There are some things that may be confusing the first time, but the game engine works well, the rule- and tile-set we played worked well, text chat is surprisingly adequate for talking to people while playing, and I would like to play again some time.</p>\r\n<p>Original Fediverse post at <a href=\"https://libranet.de/display/0b6b25a8-675e-91bf-8b9d-5c6226360513\">https://libranet.de/display/0b6b25a8-675e-91bf-8b9d-5c6226360513</a>.</p>',311,95,0,'CC-BY-SA','game, board game, xmpp, remote, network game',0,0,1),
(3063,'2020-04-29','Pens, pencils, paper and ink - 1',879,'Looking at a few more of my writing implements','<h2 id=\"introduction\">Introduction</h2>\r\n<p>It’s been over four years since I did a show about fountain pens. It was in the <a href=\"https://hackerpublicradio.org/series/0023.html\" title=\"What's in My Toolkit\"><em>What’s in My Toolkit</em></a> series entitled <a href=\"https://hackerpublicradio.org/eps.php?id=1941\" title=\"What's in my case\"><em>What’s in my case</em></a>, show 1941 released on 2016-01-11.</p>\r\n<p>I thought it might be appropriate to visit the subject once again. I want to tell you about some new pens and pencils I have acquired, some inks I am enjoying and some of the notebooks I have bought.</p>\r\n<p>There’s too much for a single show here, so I’m making a mini-series of three shows. This also leaves the door open for more when the collection grows in the future!</p>\r\n<h2 id=\"long-notes\">Long notes</h2>\r\n<p>I have provided detailed notes with pictures for this episode, and these can be <a href=\"https://hackerpublicradio.org/eps/hpr3063/full_shownotes.html\">viewed here</a>.</p>\r\n<h2 id=\"links\">Links</h2>\r\n<ul>\r\n<li>Fountain pens:\r\n<ul>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Fountain_pen\">Wikipedia article</a></li>\r\n<li><a href=\"https://www.wikihow.com/Use-a-Fountain-Pen\">How to use a fountain pen</a></li>\r\n</ul></li>\r\n<li>Fountain pen revival:\r\n<ul>\r\n<li>Article in <em>“The Independent”</em>: <a href=\"https://www.independent.co.uk/news/long_reads/fountain-pens-stationery-writing-style-revival-a8707501.html\"><em>When a simple ballpoint just won’t do</em></a></li>\r\n</ul></li>\r\n<li>Reasons to use a fountain pen:\r\n<ul>\r\n<li><a href=\"https://www.youtube.com/watch?v=xVksqX7_650\">13 Reasons Why You Should Use a Fountain Pen</a></li>\r\n</ul></li>\r\n<li>Vacuum filling pens:\r\n<ul>\r\n<li>How to use a vacuum filler: <a href=\"https://www.youtube.com/watch?v=qTOSY8U2UIM\">Video from Goulet Pens</a></li>\r\n<li>TWSBI VAC-20 ink bottle: <a href=\"https://www.youtube.com/watch?v=JYMt1wEdWd4\">Video from Goulet Pens</a></li>\r\n</ul></li>\r\n<li>Pen brands:\r\n<ul>\r\n<li><a href=\"https://www.lamy.com\">LAMY</a></li>\r\n<li><a href=\"https://www.twsbi.com/\">TWSBI</a></li>\r\n<li><a href=\"https://www.pilotpen.com/\">Pilot</a></li>\r\n<li><a href=\"https://troikaus.com\">Troika</a> <em>(US site)</em></li>\r\n</ul></li>\r\n<li>HPR links:\r\n<ul>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=1941\">hpr1941 :: What’s in my case</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2061\">hpr2061 :: Handwriting</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2273\">hpr2273 :: Fountain Pens</a></li>\r\n</ul></li>\r\n</ul>',225,112,1,'CC-BY-SA','fountain pen,ballpoint pen',0,0,1),
(3064,'2020-04-30','How I got started in Electronics',427,'How I got started in Electronics and some job stuff','<p>Links:</p>\r\n<ul>\r\n<li><a href=\"https://archive.org/search.php?query=forrest%20mims\" class=\"uri\">https://archive.org/search.php?query=forrest%20mims</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Forrest_Mims\" class=\"uri\">https://en.wikipedia.org/wiki/Forrest_Mims</a></li>\r\n<li><a href=\"https://www.newark.com/mcm-partnership\" class=\"uri\">https://www.newark.com/mcm-partnership</a></li>\r\n<li><p><a href=\"https://www.allelectronics.com/\" class=\"uri\">https://www.allelectronics.com/</a></p></li>\r\n<li><p>This is where I found the doubler circuit.<br />\r\n<a href=\"https://www.zpag.net/Electroniques/Kit/Radio_Shack_-_Engineer's_Mini-Notebook_-_Basic_Semiconductor_Circuits.pdf\" class=\"uri\">https://www.zpag.net/Electroniques/Kit/Radio_Shack_-_Engineer\'s_Mini-Notebook_-_Basic_Semiconductor_Circuits.pdf</a></p></li>\r\n<li><p>Closeapproximationofmyfirsttransformer.<br/>\r\n<imgsrc=\"https://archive.org/download/screenshotfrimar27171804cdt2020/screenshot_Fri%20Mar%2027%2017%3A18%3A04%20CDT%202020.png\"alt=\"https://archive.org/download/screenshotfrimar27171804cdt2020/screenshot_Fri%20Mar%2027%2017%3A18%3A04%20CDT%202020.png\"/></p></li>\r\n<li><p>PowersuppliesIhadinmyteens.<br/>\r\n<imgsrc=\"https://archive.org/download/screenshotfrimar27171804cdt2020/screenshot_Fri%20Mar%2027%2017%3A16%3A04%20CDT%202020.png\"alt=\"https://archive.org/download/screenshotfrimar27171804cdt2020/screenshot_Fri%20Mar%2027%2017%3A16%3A04%20CDT%202020.png\"/><br/>\r\n<imgsrc=\"https://archive.org/download/screenshotfrimar27171804cdt2020/screenshot_Fri%20Mar%2027%2017%3A40%3A31%20CDT%202020.png\"alt=\"https://archive.org/download/screenshotfrimar27171804cdt2020/screenshot_Fri%20Mar%2027%2017%3A40%3A31%20CDT%202020.png\"/></p></li>\r\n<li>PlacesIworked.\r\n<ul>\r\n<li>Manu-tronics<br/>\r\n<ahref=\"https://www.bizjournals.com/milwaukee/stories/1999/01/25/daily21.html\"class=\"uri\">https://www.bizjournals.com/milwaukee/stories/1999/01/25/daily21.html</a></li>\r\n<li>BoughtoutbySanminaCorporation<br/>\r\n<ahref=\"https://www.sanmina.com/media-center/videos/kenosha-facility/\"class=\"uri\">https://www.sanmina.com/media-center/videos/kenosha-facility/</a></li>\r\n<li>BaxterHealthcare<br/>\r\n<ahref=\"https://www.baxter.com/\"class=\"uri\">https://www.baxter.com/</a></li>\r\n<li>Colleague3pumppicture<br/>\r\n<ahref=\"https://drive.google.com/drive/folders/1tZlkSQi6gdpPc9UqGiDy2bzXuXcxZ-fl?usp=sharing\"class=\"uri\">https://drive.google.com/drive/folders/1tZlkSQi6gdpPc9UqGiDy2bzXuXcxZ-fl?usp=sharing</a></li>\r\n<li>IllinoisInstrument(SystechIllinois)<br/>\r\n<ahref=\"https://www.systechillinois.com/en/products/ec900-process-oxygen-analyser\"class=\"uri\">https://www.systechillinois.com/en/products/ec900-process-oxygen-analyser</a></li>\r\n</ul></li>\r\n</ul>\r\n',318,0,0,'CC-BY-SA','electronics,soldering,trains,jobs',0,0,1),
(3105,'2020-06-26','Akaso EK7000 Pro',1009,'My experience with an inexpensive Waterproof action camera called the Akaso EK7000 Pro','<p>Action cameras are becoming very popular, and many incorporate a waterproof feature. If you want to try this with something less expensive than a GoPro, take a look at this review.</p>\r\n<ul>\r\n<li><a href=\"https://youtu.be/tucT47cn5II\" class=\"uri\">https://youtu.be/tucT47cn5II</a></li>\r\n<li><a href=\"https://www.palain.com/wp-content/uploads/2020/01/Camera.png\" class=\"uri\">https://www.palain.com/wp-content/uploads/2020/01/Camera.png</a></li>\r\n<li><a href=\"https://www.palain.com/wp-content/uploads/2020/01/Waterproof_Case-751x1024.png\" class=\"uri\">https://www.palain.com/wp-content/uploads/2020/01/Waterproof_Case-751x1024.png</a></li>\r\n<li><a href=\"https://www.youtube.com/watch?v=xA7A5eYitLI\" class=\"uri\">https://www.youtube.com/watch?v=xA7A5eYitLI</a></li>\r\n<li><a href=\"https://www.youtube.com/watch?v=L0guCNiJp5M\" class=\"uri\">https://www.youtube.com/watch?v=L0guCNiJp5M</a></li>\r\n<li><a href=\"https://www.youtube.com/watch?v=1p4yOmvkyP4\" class=\"uri\">https://www.youtube.com/watch?v=1p4yOmvkyP4</a></li>\r\n<li><a href=\"https://www.youtube.com/watch?v=NK1v_ECiJgo\" class=\"uri\">https://www.youtube.com/watch?v=NK1v_ECiJgo</a></li>\r\n<li><a href=\"https://www.palain.com/wp-content/uploads/2020/01/Removing-1024x764.png\" class=\"uri\">https://www.palain.com/wp-content/uploads/2020/01/Removing-1024x764.png</a></li>\r\n<li><a href=\"https://www.palain.com/wp-content/uploads/2020/04/20190601_004658.mov\" class=\"uri\">https://www.palain.com/wp-content/uploads/2020/04/20190601_004658.mov</a></li>\r\n<li><a href=\"https://www.palain.com/wp-content/uploads/2020/04/20190601_031004-1024x582.jpg\" class=\"uri\">https://www.palain.com/wp-content/uploads/2020/04/20190601_031004-1024x582.jpg</a></li>\r\n<li><a href=\"https://www.palain.com/photography/akaso-ek7000-pro/\" class=\"uri\">https://www.palain.com/photography/akaso-ek7000-pro/</a></li>\r\n</ul>\r\n',198,0,0,'CC-BY-SA','Camera, Waterproof Camera, Action camera',0,0,1),
(3068,'2020-05-06','Keeping track of downloads in Elm',791,'Tuula shows how to keep track of what data is being downloaded in Elm','<h2 id=\"background\">Background</h2>\r\n<p>I have page that requests several resources from server. To keep track what is going on, I initially had model like:</p>\r\n<pre><code>type alias Model =\r\n { availableChassis : List Chassis\r\n , chassisLoaded : Bool\r\n , chassisLoading : Bool\r\n ...\r\n }</code></pre>\r\n<p>Problem with this is that I have to remember to check those boolean flags while rendering on screen. And it’s possible to have inconsistent state (both loading and loaded).</p>\r\n<h2 id=\"solution\">Solution</h2>\r\n<p>We can model state with algebraic datatypes and we don’t even have to write it by ourselves as there’s <a href=\"https://package.elm-lang.org/packages/krisajenkins/remotedata/latest\">RemoteData</a> library.</p>\r\n<p>Now we can change our model to following:</p>\r\n<pre><code>import RemoteData exposing (RemoteData(..), WebData)\r\n\r\ntype alias Model =\r\n { availableChassis : WebData (List Chassis)\r\n }</code></pre>\r\n<ul>\r\n<li><code>availableChassis</code> has four states it can be in:\r\n<ul>\r\n<li><code>NotAsked</code>, data isn’t available and it hasn’t been requested from server</li>\r\n<li><code>Loading</code>, data isn’t available, but it has been requested from server</li>\r\n<li><code>Success (List Chassis)</code>, data has been loaded from server</li>\r\n<li><code>Failure Http.Error</code>, there was error while loading data</li>\r\n</ul></li>\r\n</ul>\r\n<p>For example, while rendering the view, you could do</p>\r\n<pre><code> case model.availableChassis of\r\n NotAsked ->\r\n renderEmptyTable\r\n\r\n Loading ->\r\n renderLoadingTable\r\n\r\n Success chassis ->\r\n renderChassisList chassis\r\n\r\n Failure error ->\r\n renderErrorMessage error</code></pre>\r\n',364,0,0,'CC-BY-SA','Elm, programming',0,0,1),
(3080,'2020-05-22','Ansible ping',440,'Troubleshooting a basic install of Ansible','Here are some steps you need to should take when setting up <a href=\"https://www.ansible.com/)\">Ansible</a> for the first time.\r\n\r\n<ul>\r\n<li><a href=\"#Install_the_software\">Install the software</a></li>\r\n<li><a href=\"#Confirm_ssh_working\">Confirm ssh working</a></li>\r\n<li><a href=\"#Create_a_Inventory/Host_file\">Create a Inventory/Host_file</a></li>\r\n<li><a href=\"#Ansible_Ping\">Ansible Ping</a></li>\r\n<li><a href=\"#Create_a_playbook\">Create a playbook</a></li>\r\n<li><a href=\"#Confirm_the_YAML_is_valid\">Confirm the YAML is valid</a></li>\r\n<li><a href=\"#Confirm_the_syntax_is_valid\">Confirm the syntax is valid</a></li>\r\n<li><a href=\"#Confirm_everything_works_together\">Confirm everything works together</a></li>\r\n</ul>\r\n\r\n<h3 id=\"Install_the_software\">Install the software</h3>\r\nFirst you need to <a href=\"https://docs.ansible.com/ansible/latest/installation_guide/intro_installation.html\">install</a> the <a href=\"https://www.ansible.com/)\">Ansible</a> software. On Fedora that is as simple as a <em>dnf install ansible</em>, or on debian <em>apt install ansible</em>.\r\n\r\n<h3 id=\"Confirm_ssh_working\">Confirm ssh working</h3>\r\n\r\nConfirm that you can connect to the servers via ssh as you would normally.\r\n\r\n<pre><code>ssh -i /home/my_user/.ssh/id_ed25519_pi my_user@192.168.0.1\r\nssh -i /home/my_user/.ssh/id_ed25519_pi your_username@192.168.1.2\r\n</code></pre>\r\n\r\n<h3 id=\"Create_a_Inventory/Host_file\">Create a Inventory/Host file</h3>\r\n\r\nTranslate the ssh commands into a <a href=\"https://docs.ansible.com/ansible/latest/user_guide/intro_inventory.html\">Inventory/Host</a> file. I am using a YAML in this example but other variants are available.\r\n\r\n<pre><code>all:\r\n hosts:\r\n my_server:\r\n ansible_host: 192.168.0.1\r\n your_server:\r\n ansible_host: 192.168.1.2\r\n ansible_ssh_user: your_username\r\n vars:\r\n ansible_connection: ssh\r\n ansible_ssh_user: my_user\r\n ansible_ssh_private_key_file: /home/my_user/.ssh/id_ed25519_pi\r\n</code></pre>\r\n\r\n<h3 id=\"Ansible_Ping\">Ansible Ping</h3>\r\nCheck that your server is up and reported correctly in your file by having <a href=\"https://www.ansible.com/)\">Ansible</a> ping it. This should allow you to determine if at least there is a command and control connection available.\r\n\r\n<pre><code>ansible --inventory-file my_inventory.yaml -m ping all\r\n</code></pre>\r\n\r\nThis uses the group <em>all</em> and will ping all servers under it. The reply below shows a positive and negative response. \r\n\r\n<pre><code>my_server | SUCCESS => {\r\n \"ansible_facts\": {\r\n \"discovered_interpreter_python\": \"/usr/bin/python\"\r\n },\r\n \"changed\": false,\r\n \"ping\": \"pong\"\r\n}\r\nyour_server | UNREACHABLE! => {\r\n \"changed\": false,\r\n \"msg\": \"Failed to connect to the host via ssh: ssh: connect to host 192.168.1.2 port 22: No route to host\",\r\n \"unreachable\": true\r\n}\r\n</code></pre>\r\n\r\nThe <em>msg</em> will give you a clue as to what is going wrong and you should try to ssh directly with the Ansible credentials again, and then try and ping using Ansible.\r\n<pre><code>ansible --inventory-file my_inventory.yaml -m ping your_server\r\n</code></pre>\r\n\r\nModify the Inventory file until you have managed to get a successful reply. \r\n\r\n<h3 id=\"Create_a_playbook\">Create a playbook</h3>\r\n\r\nWork on your playbook and verify that it is valid yaml.\r\n\r\n<pre><code>---\r\n- name: Test Ping\r\n hosts: all\r\n tasks:\r\n - action: ping\r\n</code></pre>\r\n\r\n<h3 id=\"Confirm_the_YAML_is_valid\">Confirm the YAML is valid</h3>\r\nIf there is no reply all is good.\r\n<pre><code>yamllint ~/my_example.yaml\r\n</code></pre>\r\n\r\nIf there is no reply all is good. For your reference I will remove the <em>---</em> line and this is the response.\r\n<pre><code>yamllint ~/my_example.yaml\r\n/home/user/my_example.yaml\r\n 1:1 warning missing docum
(3084,'2020-05-28','AudioBookClub 18 - Star Trek: The Continuing Mission',6017,'The HPR Audiobook Club reviews the fan audio drama Star Trek: The Continuing Mission','<h1 id=\"in-this-episode-the-hpr_audiobookclub-discusses-star-trek-the-continuing-mission-created-by-sebastian-prooth-and-andy-tyrer\">In this episode, the HPR_AudioBookClub discusses <a href=\"https://startrekcontinuingmission.com/\">Star Trek The Continuing Mission</a> created by Sebastian Prooth and Andy Tyrer.</h1>\r\n<hr />\r\n<h1 id=\"non-spoiler-thoughts\">Non-Spoiler Thoughts</h1>\r\n<hr />\r\n<ul>\r\n<li>Thaj misses Star Trek, and this made me realize that (this has since changed)</li>\r\n<li>Voice acting is very good.</li>\r\n<li>It\'shardtotranslatethingslikestarshipcombatintoanaudiodrama.</li>\r\n<li>BackgroundsoundsreallysellthestructureoftheseepisodesasStarTrek.</li>\r\n<li>Thisprovesthatanabundanceofcanonisnotareasontorebootthings.Thisfindsanicheinanunexploredpartofthetimelineandworks.</li>\r\n<li>Thewarpsoundeffectforjumpingtowarpisweird.</li>\r\n<li>WethinkLostnBronxshouldwriteaStarDrfiterAudiodramaforustoproduce.</li>\r\n</ul>\r\n<h1id=\"beverage-reviews\">BeverageReviews</h1>\r\n<hr/>\r\n<p>Asusual,theHPRAudioBookClubtooksometimetoreviewthebeveragesthateachofusweredrinkingduringtheepisode</p>\r\n<ul>\r\n<li><strong>Thaj:</strong>WaterandsomethingfromKrogerthatIthinkresembleschocolateicecream.</li>\r\n<li><strong>x1101:</strong>ThrowbackstyleMt.Dewmadewithreal,diabetesinducing,sugar</li>\r\n<li><strong>pokey:</strong>LedLightBulbs....waitwhat?!?!</li>\r\n<li><strong>FiftyOneFifty:</strong>JohnnyWalkerBlack</li>\r\n</ul>\r\n<h1id=\"things-we-talked-about\">ThingsWetalkedabout</h1>\r\n<hr/>\r\n<ul>\r\n<li>Recastingthecaptainwasabadidea.</li>\r\n<li>ThajhatesCthulhuepisodesofscifishows.</li>\r\n<li>WhichStarTrekisthebest(thecorrectanswerisDS9)</li>\r\n<li>StarTrekasanallegoryfortherealworld.</li>\r\n<li>Pokeydoesn\'t like time travel in Star Trek.</li>\r\n<li>And...we\'rebackonDS9</li>\r\n<li>WegeekaboutthedifferenttypesofshipsinTrek.</li>\r\n<li>Sincewedidn\'t talk about the audio drama that much, we did actually like it.</li>\r\n</ul>\r\n<h1 id=\"our-next-audiobook\">Our Next Audiobook</h1>\r\n<hr />\r\n<p><a href=\"https://scribl.com/books/PFC12/tincture-an-apocalyptic-proposition\">Tincture, An Apocalyptic Proposition</a></p>\r\n<h1 id=\"the-next-audiobook-club-recording\">The Next Audiobook Club Recording</h1>\r\n<hr />\r\n<p>Right now we are working through a backlog of older episode that have already been recorded. Once that ends we fully anticipate recording new episodes with listener participation.</p>\r\n<h1 id=\"further-recommendations\">Further Recommendations</h1>\r\n<hr />\r\n<ul>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Stirling_engine\">Stirling Engines</a></li>\r\n<li><a href=\"https://nathanlowell.com/\">Nathan Lowell</a></li>\r\n<li>Pokey wouldn\'tmindafewcyborgmodifications</li>\r\n<li><ahref=\"https://www.panmacmillan.com/author/peterfhamilton\">PeterF.Hamilton</a></li>\r\n<li>LockPicking</li>\r\n<li><ahref=\"https://cs608829.vk.me/v608829353/ac55/QTzYhbf8oUc.jpg\">IDon\'t want to live on this planet anymore</a></li>\r\n<li>Cory Doctrow\'s<ahref=\"https://craphound.com/makers/download/\">\"Makers\"</a></li>\r\n<li><ahref=\"https://www.shapeways.com/product/T3ZY4LFDB/thorn-dice-set-with-decader\">3Dprintedmetaldice</a></li>\r\n<li><ahref=\"https://www.aliexpress.com/item/Practical-Portable-Casino-Spade-A-Poker-Card-Beer-Bottle-Opener-Stainless-Steel-Wine-Bottle-Opener-for/32243512631.html\">Aceofspacescreditcardbottleopener</a></li>\r\n<li><ahref=\"https://awesomestufftobuy.com/critical-hit-d20-ice-mold/\">DiceIce</a></li>\r\n<li><ahref=\"https://awesomestufftobuy.com/come-in-go-away-doormat/\">Doormat</a></li>\r\n</ul>\r\n<h1id=\"feedback\">Feedback</h1>\r\n<hr/>\r\n<p>Thankyouverymuchforlisteningtothisepisode
(3100,'2020-06-19','For your consideration - Makers Corner',4534,'Makers Corner is a tech oriented DIY podcast, from the Other Side Podcast Network','<p>\r\nI\'mamazedIdidn\'t find this podcast earlier, epically as one half of the team is HPR Host <a href=\"https://hackerpublicradio.org/correspondents/0370.html\">Yannick</a>, and that we listed it on our Sister Project <a href=\"https://freeculturepodcasts.org/\">Free Culture Podcasts</a>.</p>\r\n<p>\r\nThis show is a sample episode I picked, but it is not a typical show. I wanted to give a bit more exposure to the interview.\r\n</p>\r\n<p>\r\nIn this episode, Nate talks about his oldest boy’s Electronic Engineering class. Then, <a href=\"https://twitter.com/pimoroni\">Jon</a> and <a href=\"https://twitter.com/gadgetoid\">Phil</a> join in to talk about the <a href=\"https://32blit.com/\">32Blit</a>. And finally, the guys have a look at the <a href=\"https://www.thingiverse.com/thing:1657541\">Monster Mouth Headphone Holder – Clampable</a>, from <a href=\"https://www.thingiverse.com/\">thingiverse</a>.</p>\r\n\r\n<h3>Links</h3>\r\n<ul>\r\n<li>Website: <a href=\"https://makerscorner.tech\">https://makerscorner.tech</a></li>\r\n<li>RSS Feed: <a href=\"https://makerscorner.tech/feed/podcast/\">https://makerscorner.tech/feed/podcast/</a></li>\r\n<li><a href=\"https://twitter.com/pimoroni\">https://twitter.com/pimoroni</a></li>\r\n<li><a href=\"https://twitter.com/gadgetoid\">https://twitter.com/gadgetoid</a></li>\r\n<li><a href=\"https://www.thingiverse.com/\">https://www.thingiverse.com/</a></li>\r\n</ul>',30,75,0,'CC-BY-SA','pimoroni, gadgetoid, Monster Mouth Headphone Holder,Free Culture Podcasts',0,0,1),
(3074,'2020-05-14','For your consideration - Escape Pod',1773,'A sample episode from Escape Pod The Original Science Fiction Podcast','<p>\r\nIt\'shightimeIsubmittedasampleepisodefrom<ahref=\"https://escapepod.org/\">EscapePod</a>,oneofthemanyexcellentPodcastsfromthe<ahref=\"https://www.escapeartists.net/\">EscapeArtists</a>.Theyareaseriousplatformforthebestsciencefictionouttheretoday.\r\n</p>\r\n<p>\r\nWithsomuchchoice,IcanpickarecommendationthatIthinkwillberightupHPR\'s alley, and that is <a href=\"https://escapepod.org/2018/04/19/escape-pod-624-fandom-for-robots/\">Escape Pod 624: Fandom for Robots</a> released on April 19, 2018 written by Vina Jie-Min Prasad and Narrated by Trendane Sparks.\r\n</p>\r\n<p>\r\nThe sound files are published by under a Creative Commons Attribution-NonCommercial-NoDerivatives license <a href=\"https://creativecommons.org/licenses/by-nc-nd/3.0/\">https://creativecommons.org/licenses/by-nc-nd/3.0/</a>.\r\n</p>',30,75,1,'CC-BY-NC-ND','EA Podcasts, Escape Pod, Fandom for Robots, Vina Jie-Min Prasad, Trendane Sparks',0,0,1),
(3326,'2021-05-03','HPR Community News for April 2021',4825,'HPR Volunteers talk about shows released and comments posted in April 2021','<style>\ntable td.shrink {\n white-space:nowrap\n}\n</style>\n\n<h2>New hosts</h2>\n<p>\nWelcome to our new hosts: <br />\n\n <a href=\"https://hackerpublicradio.org/correspondents/0393.html\" target=\"_blank\">Anonymous Host</a>, \n <a href=\"https://hackerpublicradio.org/correspondents/0394.html\" target=\"_blank\">Trey</a>.\n</p>\n\n<h2>Last Month\'sShows</h2>\n<tableid=\"t01\">\n<tr>\n<th>Id</th>\n<th>Day</th>\n<th>Date</th>\n<th>Title</th>\n<th>Host</th>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3304\"target=\"_blank\">3304</a></strong></td>\n<td>Thu</td>\n<tdclass=\"shrink\">2021-04-01</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3304\"target=\"_blank\">Newsflash21/01/04</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0393.html\"target=\"_blank\">AnonymousHost</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3305\"target=\"_blank\">3305</a></strong></td>\n<td>Fri</td>\n<tdclass=\"shrink\">2021-04-02</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3305\"target=\"_blank\">Nagiospart2</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0342.html\"target=\"_blank\">norrist</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3306\"target=\"_blank\">3306</a></strong></td>\n<td>Mon</td>\n<tdclass=\"shrink\">2021-04-05</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3306\"target=\"_blank\">HPRCommunityNewsforMarch2021</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0159.html\"target=\"_blank\">HPRVolunteers</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3307\"target=\"_blank\">3307</a></strong></td>\n<td>Tue</td>\n<tdclass=\"shrink\">2021-04-06</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3307\"target=\"_blank\">Gitworktree</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0078.html\"target=\"_blank\">klaatu</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3308\"target=\"_blank\">3308</a></strong></td>\n<td>Wed</td>\n<tdclass=\"shrink\">2021-04-07</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3308\"target=\"_blank\">let\'s talk about Thunderbird</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0391.html\" target=\"_blank\">Some Guy On The Internet</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3309\" target=\"_blank\">3309</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2021-04-08</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3309\" target=\"_blank\">Linux Inlaws S01E27: The Big Uncertainties in Life and beyond</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0384.html\" target=\"_blank\">monochromec</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3310\" target=\"_blank\">3310</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2021-04-09</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3310\" target=\"_blank\">Layer Masks</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0198.html\" target=\"_blank\">Ahuka</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3311\" target=\"_blank\">3311</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2021-04-12</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3311\" target=\"_blank\">Bradley M. Kuhn\'sarticlefrom2019onRichardM.Stallman</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0393.html\"target=\"_blank\">AnonymousHost</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3312\"target=\"_blank\">3312</a></strong></td>\n<td>Tue</td>\n<tdclass=\"shrink\">2021-04-13</td>\n<td><ahref=\"https://hackerp
(3351,'2021-06-07','HPR Community News for May 2021',3956,'The HPR Matrons are doing the rounds.','<style>\ntable td.shrink {\n white-space:nowrap\n}\n</style>\n\n<h2>New hosts</h2>\n<p>\nThere were no new hosts this month.\n</p>\n\n<h2>Last Month\'sShows</h2>\n<tableid=\"t01\">\n<tr>\n<th>Id</th>\n<th>Day</th>\n<th>Date</th>\n<th>Title</th>\n<th>Host</th>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3326\"target=\"_blank\">3326</a></strong></td>\n<td>Mon</td>\n<tdclass=\"shrink\">2021-05-03</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3326\"target=\"_blank\">HPRCommunityNewsforApril2021</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0159.html\"target=\"_blank\">HPRVolunteers</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3327\"target=\"_blank\">3327</a></strong></td>\n<td>Tue</td>\n<tdclass=\"shrink\">2021-05-04</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3327\"target=\"_blank\">LookingintoCephstoragesolution</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0382.html\"target=\"_blank\">DanielPersson</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3328\"target=\"_blank\">3328</a></strong></td>\n<td>Wed</td>\n<tdclass=\"shrink\">2021-05-05</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3328\"target=\"_blank\">PandasPart2</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0039.html\"target=\"_blank\">Enigma</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3329\"target=\"_blank\">3329</a></strong></td>\n<td>Thu</td>\n<tdclass=\"shrink\">2021-05-06</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3329\"target=\"_blank\">LinuxInlawsS01E29:The(oneandonly)LinuxKernelContributorPanel</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0384.html\"target=\"_blank\">monochromec</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3330\"target=\"_blank\">3330</a></strong></td>\n<td>Fri</td>\n<tdclass=\"shrink\">2021-05-07</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3330\"target=\"_blank\">ALayerMaskProject</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0198.html\"target=\"_blank\">Ahuka</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3331\"target=\"_blank\">3331</a></strong></td>\n<td>Mon</td>\n<tdclass=\"shrink\">2021-05-10</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3331\"target=\"_blank\">AudioforPodcasting:Episode1-TheMicrophone</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0270.html\"target=\"_blank\">ThajSara</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3332\"target=\"_blank\">3332</a></strong></td>\n<td>Tue</td>\n<tdclass=\"shrink\">2021-05-11</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3332\"target=\"_blank\">MycurrentDevices</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0129.html\"target=\"_blank\">JWP</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3333\"target=\"_blank\">3333</a></strong></td>\n<td>Wed</td>\n<tdclass=\"shrink\">2021-05-12</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3333\"target=\"_blank\">MyTVStanddevicesandPine64.org</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0129.html\"target=\"_blank\">JWP</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3334\"target=\"_blank\">3334</a></strong></td>\n<td>Thu</td>\n<tdclass=\"shrink\">2021-05-13</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3334\"target=\"_blank\">InfosecPodcastsPart2-GeneralInformationSecurity</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0394.html\"target=\"_blank\">Trey</a></td>\n</tr>\n<tr>\n<td><strong>
(3077,'2020-05-19','Video conference Push to Talk',457,'Building the push to talk button missing from many video conference tools','<p>For the sake of archival, \"state of the world\" refers to the COVID-19 pandemic.</p>\r\n<p>The code and CAD files for this project can be found <a href=\"https://github.com/DanNixon/pulseaudio-ptt\">here</a>.</p>\r\n<p>Relevant links:</p>\r\n<ul>\r\n<li><a href=\"https://www.freedesktop.org/wiki/Software/PulseAudio/\">PulseAudio</a> is the sound server used by many Linux distributions</li>\r\n<li><a href=\"https://pypi.org/project/pulsectl/\">pulsectl</a> is a Python library that allows you to control a PulseAudio server</li>\r\n<li><a href=\"https://www.adafruit.com/category/168\">NeoPixels</a> are cool addressable LEDs</li>\r\n<li>The <a href=\"https://www.pjrc.com/teensy/\">Teensy</a> is a small but powerful microcontroller development board</li>\r\n<li><a href=\"https://pythonhosted.org/pyserial/\">pySerial</a> is a library allowing you to use serial ports in Python</li>\r\n<li><a href=\"https://platformio.org/\">PlatformIO</a> is a tool for making software development for embedded platforms easy</li>\r\n</ul>\r\n<p>Early prototype:<br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3077/01_prototype.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3077/01_prototype_thumbnail.jpg\" title=\"Prototype\" alt=\"Electronic parts assembled for testing\" style=\"width:50.0%;height:50.0%\" /></a></p>\r\n<p>Assembled electronics fitted into case ready to be closed:<br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3077/02_pre_assembly.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3077/02_pre_assembly_thumbnail.jpg\" title=\"Pre-assembly\" alt=\"Electronics fitted into case ready for case to be closed\" style=\"width:50.0%;height:50.0%\" /></a></p>\r\n<p>View of the top of the case, showing Cherry switch and NeoPixel LED indicator:<br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3077/03_top.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3077/03_top_thumbnail.jpg\" title=\"Top view\" alt=\"View of the top of the finished device showing button and indicator LED\" style=\"width:50.0%;height:50.0%\" /></a></p>\r\n<p>View of the bottom of the case, showing USB port and some of the nicer M3 screws from my parts bin:<br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3077/04_bottom.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3077/04_bottom_thumbnail.jpg\" title=\"Bottom view\" alt=\"View of bottom of the finished device showing screws and USB port\" style=\"width:50.0%;height:50.0%\" /></a></p>\r\n<p>Plugged in and powered on, showing the muted state:<br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3077/05_muted.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3077/05_muted_thumbnail.jpg\" title=\"Muted state\" alt=\"Device showing the muted state\" style=\"width:50.0%;height:50.0%\" /></a></p>\r\n<p>Button pushed, showing the unmuted/mic live state:<br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3077/06_unmuted.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3077/06_unmuted_thumbnail.jpg\" title=\"Unmuted state\" alt=\"Device with the button pushed showing the unmuted state\" style=\"width:50.0%;height:50.0%\" /></a></p>\r\n',386,103,1,'CC-BY-SA','arduino, linux audio, electronics, hardware',0,0,1),
(3067,'2020-05-05','Getting my Python3 code working in Python2',1526,'What I had to do to get my raspberry Pi PifaceCAD board working after a Debian upgrade.','<p>I have a raspberry Pi model B with the original Pifacecad add on board</p>\r\n<p>I recently upgraded the operating system on my raspberry pi from Wheezy (Debian 7) to Jessie (Debian 8), all seemed fine till I tried to run my Python3 project. It reported that the <code>pifacecad</code> module wasn’t present. I tried to install the module using the standard <code>apt-get</code> command given in the Pifacecad documentation. It installed OK for python 2 but It would not install for python 3 as there was a dependency issue with the <code>python-lirc</code> library. I’m guessing the upgrade broke something.</p>\r\n<p>I installed a fresh minimal installation of raspbian Stretch (Debian 9) onto a new SD card and ran the standard installation command in the Pifacecad documentation. It all installed but there was a warning about Spi which I had forgotten to enable. I enabled this using the <code>raspi-config</code> util and rebooted the pi.</p>\r\n<p>I then tested the installation by running the <code>sys-info.py</code> example that is mentioned in the installation documentation that comes with the pifacecad board.</p>\r\n<p>Running this example gave a warning saying that the pifacecad hardware could not be found at this point I gave up and decided instead to run my project in python 2.</p>\r\n<p>Of course at first the code wouldn’t run using python 2 and I had to do a bit of digging around to find out what was going wrong.</p>\r\n<p>You may find this useful in the unlikely event that you have a project written in python 3 that you want to run in python 2, it might also be useful if you’re going in the other direction.</p>\r\n<p>One other thing that I briefly stumbled upon was that I believe there is a tool available that attempts to convert python 2 code to python 3 I don’t know anything about it and didn’t bother looking to see if there is a tool to go in the opposite direction which is what I needed. I’ve included a link to the tool below <a href=\"https://docs.python.org/2/library/2to3.html\" class=\"uri\">https://docs.python.org/2/library/2to3.html</a></p>\r\n<p>I’ve got the two versions of code loaded into the excellent graphical diff tool <code>meld</code> and I’ll just briefly cover the things that I had to change.</p>\r\n<p>Link to meld diff tool: <a href=\"https://meldmerge.org/\" class=\"uri\">https://meldmerge.org/</a></p>\r\n<p>After some mucking about I got it partially working by installing Piface module for Python 2.7</p>\r\n<p>Had to do the following changes to get the code working in Python 2.7:</p>\r\n<ul>\r\n<li><p>Changed first line of code from python3 to python2 so that code was run using the correct interpreter</p></li>\r\n<li><p>Print statement fixed by see<br />\r\n<a href=\"https://stackoverflow.com/questions/32032697/how-to-use-from-future-import-print-function\" class=\"uri\">https://stackoverflow.com/questions/32032697/how-to-use-from-future-import-print-function</a></p></li>\r\n<li>Python 3 uses the urllib.request command. For Python 3 I used</li>\r\n</ul>\r\n<pre><code> urllib.request.urlopen(url).read()</code></pre>\r\n<blockquote>\r\n<p><a href=\"https://docs.python.org/3/library/urllib.request.html\" class=\"uri\">https://docs.python.org/3/library/urllib.request.html</a></p>\r\n</blockquote>\r\n<ul>\r\n<li>Python 2 uses the urllib2 command. For Python 2 I used the following</li>\r\n</ul>\r\n<pre><code> urllib2.urlopen(url).read()</code></pre>\r\n<blockquote>\r\n<p><a href=\"https://docs.python.org/2/library/urllib2.html\" class=\"uri\">https://docs.python.org/2/library/urllib2.html</a></p>\r\n</blockquote>\r\n<ul>\r\n<li><p><code>hostname --all</code> has different output on this version of Debian, now includes mac address which I did not want.</p></li>\r\n<li><p>Getting the wifi ESSID information. I used <code>iwconfig</code> to get this information. The path to iwconfig command changed in this version of Debia
(3069,'2020-05-07','Linux Inlaws S01E05 Porn and Skynet',4029,'This is Linux Inlaws, a series on free and open source software, black humour, the revolution','<p>Linux Inlaws - a podcast about on topics around free and open source software, any associated contraband, communism / the revolution in general and whatever else fancies your tickle.</p>\r\n<p>Please note that this and other episodes may contain strong language, offensive humor and other certainly not politically correct language - you have been warned (our parents insisted on this disclaimer - happy mum?). Thus the content is not suitable for consumption in the workplace (especially when played back on a speaker in an open plan office or similar environments), any minors under the age of 35 or any pets including fluffy little killer bunnies, your trusty guide dog (unless on speed) and cute t-rexes or other associated dinosaurs.</p>\r\n<ul>\r\n<li>Ubuntu 20.04: <a href=\"https://wiki.ubuntu.com/FocalFossa/ReleaseNotes\" class=\"uri\">https://wiki.ubuntu.com/FocalFossa/ReleaseNotes</a></li>\r\n<li>Kernel 5.6: <a href=\"https://itsfoss.com/linux-kernel-5-6\" class=\"uri\">https://itsfoss.com/linux-kernel-5-6</a></li>\r\n<li>Wireguard: <a href=\"https://www.wireguard.com\" class=\"uri\">https://www.wireguard.com</a></li>\r\n<li>Python 2.7.18: <a href=\"https://mail.python.org/archives/list/python-dev@python.org/message/OFCIETIXLX34X7FVK5B5WPZH22HXV342/\" class=\"uri\">https://mail.python.org/archives/list/python-dev@python.org/message/OFCIETIXLX34X7FVK5B5WPZH22HXV342/</a></li>\r\n<li>Python 404: <a href=\"https://www.python.org/dev/peps/pep-0404\" class=\"uri\">https://www.python.org/dev/peps/pep-0404</a></li>\r\n<li>RTPM: <a href=\"https://en.wikipedia.org/wiki/Real-Time_Messaging_Protocol\" class=\"uri\">https://en.wikipedia.org/wiki/Real-Time_Messaging_Protocol</a></li>\r\n<li>webRTC: <a href=\"https://en.wikipedia.org/wiki/WebRTC\" class=\"uri\">https://en.wikipedia.org/wiki/WebRTC</a></li>\r\n<li>MPEG: <a href=\"https://en.wikipedia.org/wiki/MPEG-4\" class=\"uri\">https://en.wikipedia.org/wiki/MPEG-4</a></li>\r\n<li>VP9: <a href=\"https://en.wikipedia.org/wiki/VP9\" class=\"uri\">https://en.wikipedia.org/wiki/VP9</a></li>\r\n<li>Audio compression: <a href=\"https://en.wikipedia.org/wiki/Data_compression#Audio\" class=\"uri\">https://en.wikipedia.org/wiki/Data_compression#Audio</a></li>\r\n<li>Container formats: <a href=\"https://en.wikipedia.org/wiki/Comparison_of_video_container_formats\" class=\"uri\">https://en.wikipedia.org/wiki/Comparison_of_video_container_formats</a></li>\r\n</ul>',384,111,1,'CC-BY-SA','linux inlaws, communism, free and open source software, adult entertainment, skynet',0,0,1),
(3070,'2020-05-08','making vim xdg compatible',3070,'move your vim configuration out of the home directory','<h1 id=\"xdg-vim-config\">xdg vim config</h1>\r\n<p>To make vim load an alternative config file either use an alias or the VIMINIT variable. i.e. place either <code>alias vim=\"vim -u ~/.config/vim/vimrc\"</code> or <code>VIMINIT=\"source ~/.config/vim/vimrc\"</code> in your <code>.bashrc</code> (ironically, that one is still in my home folder).</p>\r\n<p>Once that is loaded, you should source the following file after \"nocompatible\"</p>\r\n<pre><code>" file: ~/.config/vim/xdg.vim\r\nif empty($XDG_CACHE_HOME)\r\n let $XDG_CACHE_HOME=$HOME."/.cache"\r\nendif\r\n\r\nif empty($XDG_CONFIG_HOME)\r\n let $XDG_CONFIG_HOME=$HOME."/.config"\r\nendif\r\n\r\nif empty($XDG_DATA_HOME)\r\n let $XDG_DATA_HOME=$HOME."/.local/share"\r\nendif\r\n\r\nset directory=$XDG_CACHE_HOME/vim/swap,~/,/tmp\r\nset backupdir=$XDG_CACHE_HOME/vim/backup,~/,/tmp\r\nset undodir=$XDG_CACHE_HOME/vim/undo,~/,/tmp\r\nset viminfo+=n$XDG_CACHE_HOME/vim/viminfo\r\nset runtimepath+=$XDG_CONFIG_HOME/vim,$XDG_CONFIG_HOME/vim/after,$XDG_DATA_HOME/vim/bundle/Vundle.vim,$VIM,$VIMRUNTIME\r\nlet $MYVIMRC=$XDG_CONFIG_HOME."/vim/vimrc"\r\n</code></pre>\r\n<p>With this file in place you should call it from your vimrc</p>\r\n<pre><code>" file: ~/.config/vim/vimrc\r\nset nocompatible\r\nfiletype off\r\nsource $HOME/.config/vim/xdg.vim\r\ncall vundle#begin()\r\nlet vundle#bundle_dir = expand("$XDG_DATA_HOME/vim/bundle")\r\n\r\n" include your calls to Plugin here\r\n\r\ncall vundle#end()\r\nfiletype plugin indent on\r\nsyntax on\r\n\r\nsource ~/.config.\r\n</code></pre>\r\n<p>Note that it is important that all the paths are defined BEFORE Vundle (or whatever is your plugin manager) is called, since the path to it is defined in <code>xdg.vim</code>.</p>\r\n<p>You can check my full vim config at <a href=\"https://gitlab.com/crvs/dotfiles/-/tree/master/.config/vim\">gitlab</a>.</p>\r\n<h2 id=\"references\">References</h2>\r\n<p>The vim script I modified my config from - <a href=\"https://gist.github.com/dkasak/6ae1c6bf0d771155f23b\">https://gist.github.com/dkasak/6ae1c6bf0d771155f23b</a></p>\r\n',385,82,1,'CC-BY-SA','vim, configuration, XDG',0,0,1),
(3071,'2020-05-11','Bash snippet - quotes inside quoted strings',799,'How to add quotes to quoted strings in Bash','<h2 id=\"bash-and-quoted-strings\">Bash and quoted strings</h2>\r\n<p>An issue I just hit in Bash was that I had a quoted string, and I wanted to enclose it in quotes. How to do this?</p>\r\n<p>This is the umpteenth time I have stumbled over this issue, and I realised I had found out how to solve it a while back but the information hadn’t rooted itself into my mind!</p>\r\n<p>I have always been less clear in my mind about quoted strings in Bash than I should be, so, assuming others might have similar confusion I thought I’d try and clarify things in the form of an HPR show.</p>\r\n<h3 id=\"the-problem\">The problem</h3>\r\n<p>The thing I was having difficulties with was an <code>alias</code> definition of a useful pipeline:</p>\r\n<pre><code>nmap -sn 192.168.0.0/24 | awk '/^Nmap scan report/{print ""; print; next}{print}'</code></pre>\r\n<p>This uses <code>nmap</code> (see Ken’s show <a href=\"https://hackerpublicradio.org/eps.php?id=3052\" title=\"hpr3052 :: Locating computers on a network\">3052</a> for a discussion of its use) piped into an <code>awk</code> one-liner that formats the information returned by <code>nmap</code>.</p>\r\n<p>The <code>alias</code> command can be used to store such a command or command sequence as a single simple command. It’s usually added to the <code>~/.bashrc</code> file so it gets added to every Bash shell you start up (note <em>Bash Tips #22</em>, currently being written, will cover these startup files).</p>\r\n<p>An <code>alias</code> definition looks something like this:</p>\r\n<pre><code>alias la='ls -Al'</code></pre>\r\n<p>The alias itself <code>\'la\'</code> is defined as the command <code>ls -Al</code>.</p>\r\n<p>So how to make my <code>nmap</code> sequence into an alias given that the commands contain both single and double quotes?</p>\r\n<h3 id=\"quoted-strings-in-bash\">Quoted strings in Bash</h3>\r\n<p>Bash is (to my mind) a bit weird with quoted strings.</p>\r\n<p>There are two sorts of quotes in Bash (leaving aside the <em>backquote</em> or <em>backtick</em> – <code>`</code>):</p>\r\n<ul>\r\n<li><p>Single quotes, also called <em>hard</em> quotes (<code>\'</code>).Theliteralvalueofcharactersbetweenthequotesispreserved.Singlequotesarenotallowed,evenifprecededbybackslashescapecharacters.</p></li>\r\n<li><p>Doublequotes,alsocalled<em>soft</em>quotes(<code>\"</code>). Certain characters within the quotes have special meanings, such as <code>\'$\'</code> and <code>\'\\'</code>. Double quotes are allowed in the string when preceded by a backslash.</p></li>\r\n</ul>\r\n<p>There’s a more comprehensive treatment of these quoting types (and others) in the <a href=\"https://www.gnu.org/software/bash/manual/html_node/Quoting.html\" title=\"BashReferenceManual:3.1.2Quoting\">Bash Reference Manual</a>.</p>\r\n<h3 id=\"changing-quotes-and-concatenating-strings\">Changing quotes and concatenating strings</h3>\r\n<p>To make a variable containing a string with embedded quotes you can do this:</p>\r\n<pre><code>$ x='string1'"'"'string2'\r\n$ echo $x\r\nstring1'string2</code></pre>\r\n<p>What we did here was close <code>\'string1\'</code>, start a new string enclosed in double quotes <code>\"\'\"</code>, then append a second string <code>\'string2\'</code>. Bash treats the three strings as one, but they have to be contiguous. There must be no intervening spaces<a href=\"#fn1\" class=\"footnote-ref\" id=\"fnref1\"><sup>1</sup></a>.</p>\r\n<p>This solution is rather ugly. You could also use Bash string concatenation to do this, though it’s more long-winded:</p>\r\n<pre><code>$ x='string1'\r\n$ x+="'"\r\n$ x+='string2'\r\n$ echo $x\r\nstring1'string2</code></pre>\r\n<p>The same principles hold for double quotes of course:</p>\r\n<pre><code>$ x="string1"'"'"string2"\r\n$ echo $x\r\nstring1"string2</code>
(3072,'2020-05-12','The joy of pip-tools and pyenv-virtualenv',1441,'How to manage your dependencies and environment isolation when developing in Python','<p>TL;DL: What I end up recommending is that you use pip-tools for your dependency management needs, and pyenv-virtualenv for your environment management needs. In the show I explain why you would want these things.</p>\r\n\r\n<p>I talk about these tools:</p>\r\n\r\n<ul>\r\n <li><a href=\"https://virtualenv.pypa.io/\">virtualenv</a></li>\r\n <li><a href=\"https://python-poetry.org/\">poetry</a></li>\r\n <li><a href=\"https://pipenv.pypa.io/\">pipenv</a></li>\r\n <li><a href=\"https://github.com/jazzband/pip-tools/\">pip-tools</a></li>\r\n <li><a href=\"https://virtualenvwrapper.readthedocs.io/\">virtualenvwrapper</a></li>\r\n <li><a href=\"https://github.com/pyenv/pyenv\">pyenv</a></li>\r\n <li><a href=\"https://github.com/pyenv/pyenv-virtualenv\">pyenv-virtualenv</a></li>\r\n</ul>\r\n\r\n<p>I mention in passing, and as fodder for further shows:</p>\r\n\r\n<ul>\r\n <li><a href=\"https://reproducible-builds.org/\">reproducible builds</a></li>\r\n <li><a href=\"https://nixos.org/nix/\">Nix</a></li>\r\n <li><a href=\"https://tox.readthedocs.io/\">tox</a></li>\r\n <li>I also owe you a show on my awesome bash prompt that shows me which environment I am in.</li>\r\n</ul>\r\n\r\n<h2 id=\"install-pyenv-and-pyenv-virtualenv\">Install pyenv and pyenv-virtualenv</h2>\r\n\r\n<pre><code>git clone https://github.com/pyenv/pyenv ~/.pyenv\r\ngit clone https://github.com/pyenv/pyenv-virtualenv ~/.pyenv/plugins/pyenv-virtualenv\r\n</code></pre>\r\n\r\n<p>Add to <code>~/.bash_profile</code>:</p>\r\n\r\n<pre><code>export PYENV_ROOT=$HOME/.pyenv\r\nexport PATH=$PYENV_ROOT/bin:$PATH\r\n</code></pre>\r\n\r\n<p>Add to <code>~/.bash_profile</code> (optional):</p>\r\n\r\n<pre><code>eval \"$(pyenv init -)\"\r\neval \"$(pyenv virtualenv-init -)\"\r\n</code></pre>\r\n\r\n<p>The optional bits provide you with the <code>pyenv shell</code> functionality for setting a session-specific Python version, and automatic activation of the virtualenv. Most of the time you don’t need activation, scripts and commands run just fine via the shims, but some tooling around Python may sometimes need to know which virtualenv you’re in.</p>\r\n\r\n<p>Run the export and eval lines in your shell to have the configuration work immediately. Alternatively, do <code>su - yourusername</code> to login to a new session that runs the profile. The <code>-</code> is important.</p>\r\n\r\n<p>You might be able to get away with just opening a new tab or window in your terminal. Whether that runs the profile depends on your settings.</p>\r\n\r\n<h2 id=\"set-up-your-pyenv-virtualenv-for-your-project\">Set up your pyenv virtualenv for your project</h2>\r\n\r\n<pre><code># Creates the virtualenv named my-project-env using \r\n# the python named system (your system default python)\r\npyenv virtualenv system my-project-env \r\ncd /path/to/my-project\r\npyenv local my-project-env\r\n</code></pre>\r\n\r\n<p>Your system Python may or may not work for this. You might have to install pip and virtualenv. It might still break with some message about <code>ensurepip</code> failing (currently both Nix (20.09pre) python and Ubuntu (18.04) python are failing for me, and older Anaconda pythons also had a broken venv). In that case, use pyenv to install a Python that works, and use that instead of the system python:</p>\r\n\r\n<pre><code>pyenv install miniconda3-latest\r\npyenv virtualenv miniconda3-latest my-project-env\r\ncd /path/to/my-project\r\npyenv local my-project-env\r\n</code></pre>\r\n\r\n<h2 id=\"install-pip-tools\">Install pip-tools</h2>\r\n\r\n<p>You’ll want to do this inside the virtual environment that you want to manage. Don’t install pip-tools globally.</p>\r\n\r\n<pre><code>cd /path/to/my/project\r\n# And, assuming you have the shims on your $PATH\r\n# and you set the pyenv local as shown previously\r\npython -m pip install pip-tools\r\n</code></pre>\r\n\r\n<p>Now put your requirements in <code>requirements.in</
(3076,'2020-05-18','Keep calm and Virion',3526,'A COVID-19 lockdown chat from Scotland','<h2 id=\"introduction\">Introduction</h2>\r\n<p>Two HPR hosts from Scotland get together over Mumble to chat about all manner of stuff.</p>\r\n<ul>\r\n<li><a href=\"https://hackerpublicradio.org/correspondents/0268.html\">Andrew Conway</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/correspondents/0225.html\">Dave Morriss</a></li>\r\n</ul>\r\n<h2 id=\"apology\">Apology</h2>\r\n<p>Dave’s sound was a bit muffled in this recording. It turns out that it’s important which USB port the microphone (Zoom recorder) is plugged into. Who knew!</p>\r\n<h2 id=\"notes\">Notes</h2>\r\n<p>Some of the topics we discussed</p>\r\n<ul>\r\n<li>Accent differences in Scotland\r\n<ul>\r\n<li>What is <em>Butcher Meat</em>? Is it an Edinburgh expression?</li>\r\n</ul></li>\r\n<li>The Fish Van from <a href=\"https://en.wikipedia.org/wiki/Pittenweem\" title=\"A fishing village in Fife\">Pittenweem</a>\r\n<ul>\r\n<li>The mysterious non-Crab Crab meat</li>\r\n<li>Dressed and live crabs in <a href=\"https://en.wikipedia.org/wiki/Cromer\" title=\"A town on the Norfolk coast\">Cromer</a></li>\r\n</ul></li>\r\n<li>Handling enforced isolation; the response to COVID-19</li>\r\n<li>The type of disposable masks sold for DIY use can be impractical</li>\r\n<li>Supermarket online shopping and delivery versus local shopping</li>\r\n<li>The etiquette of distancing when out walking or cycling for exercise during the lockdown</li>\r\n<li>Cycling anecdotes\r\n<ul>\r\n<li><a href=\"https://www.slime.com/uk/products/bike/sealants/tube-sealant.php\" title=\"Slime tube sealant\">Slime</a> tube sealant</li>\r\n<li>Old railway lines turned to cycle paths (e.g.<a href=\"https://en.wikipedia.org/wiki/Balerno_line\" title=\"Balerno railway line, now a walkway\">Balerno line</a> in Edinburgh, <a href=\"https://en.wikipedia.org/wiki/Marriott's_Way\" title=\"Marriott's Way, Norfolk, originally a railway line\">Marriott’s Way</a> in Norfolk)</li>\r\n</ul></li>\r\n<li>Industrial archaeology and historical buildings\r\n<ul>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Water_of_Leith\" title=\"Water of Leith\">Water of Leith</a>, Edinburgh</li>\r\n<li>Paper making (<a href=\"https://en.wikipedia.org/wiki/Esparto\" title=\"Esparto grass\">Esparto grass</a>)</li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/River_Kelvin\" title=\"River Kelvin\">River Kelvin</a>, Glasgow</li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/William_Thomson,_1st_Baron_Kelvin\" title=\"Lord Kelvin\">Lord Kelvin</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Warrender_Baths\" title=\"Warrender Baths, Edinburgh\">Warrender Baths</a>, Edinburgh</li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Govanhill_Baths\" title=\"Govanhill Baths, Glasgow\">Govanhill Baths</a>, Glasgow (ref. <em>steamie</em>)</li>\r\n</ul></li>\r\n<li>Electronics\r\n<ul>\r\n<li><a href=\"https://en.wikipedia.org/wiki/ESP8266\" title=\"Low-cost Wi-Fi microchip\">ESP8266</a>, <a href=\"https://en.wikipedia.org/wiki/ESP32\" title=\"Microcontroller with integrated Wi-Fi and dual-mode Bluetooth\">ESP32</a></li>\r\n<li><a href=\"https://sonoff.tech/\" title=\"Home automation\">Sonoff</a> home automation</li>\r\n</ul></li>\r\n<li>D&D sessions\r\n<ul>\r\n<li>Initiated by <a href=\"https://hackerpublicradio.org/correspondents/0078.html\">Klaatu</a> in New Zealand</li>\r\n</ul></li>\r\n<li>Shortages during the pandemic: toilet rolls, flour, etc\r\n<ul>\r\n<li>Supply chains: wholesale versus domestic</li>\r\n</ul></li>\r\n<li><em>Dracula</em> by Bram Stoker\r\n<ul>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Whitby\" title=\"A coastal town in Yorkshire\">Whitby</a>, Yorkshire</li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Brașov\" title=\"A city in Transylvania, Romania\">Brașov</a>, Transylvania, Romania.\r\n<ul>\r\n<li>Called <em>Corona</em> at one point in its history.</li>\r\n<li>Near to <a href=\"https://en.wikipedia.org/wiki/Bran_Castle\" title=\"Bran Castle, near Brașov\">Bran Castle</a>, known outs
(3090,'2020-06-05','Locating Computer on a Enterprise Network',2388,'advanced nmap tips','<p>\r\nIn this episode operat0r responds to <a href=\"https://hackerpublicradio.org/eps.php?id=3052\">hpr3052 :: Locating computers on a network</a>, with more tips and tricks. Then he continues through a detailed exercise in using nmap on the corporate network.\r\n</p>\r\n<p>\r\nThe expanded commands can be found <a href=\"https://hackerpublicradio.org/eps/hpr3090.txt\">here</a>.\r\n</p>',36,61,1,'CC-BY-SA','nmap,hacking,computers,networking,scripting,bash,shell',0,0,1),
(3073,'2020-05-13','Matchbox and Diecast Restoration',182,'A short episode about my New hobby restoring Matchbox and other Diecast models','<p>\r\nToday\'sshowisaboutmyrecentlystartedhobbyofrestoringMatchboxmodels.ItalkedaboutthisontheNewYearshowandKensaiditdeservedashowinitsownright.\r\n</p>\r\n<p>\r\nSotodayIbrieflytalkabouthowIgotintothehobbythroughwatchingYouTubeVideosofMarty\'s Matchbox Makeovers, and my first restoration pictured below. Enjoy.\r\n</p>\r\n<p>\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3073.jpg\">\r\n<img src=\"https://hackerpublicradio.org/eps/hpr3073_thumbnail.jpg\" title=\"\" alt=\"Photo of a silver matchbox car\" ></a>\r\n</p>\r\n\r\n\r\n<h3>Links:</h3>\r\n<ul>\r\n<li><a href=\"https://www.youtube.com/channel/UCLM7pRUW6CmqqoAic24wbpQ\">https://www.youtube.com/channel/UCLM7pRUW6CmqqoAic24wbpQ</a></li>\r\n</ul>\r\n\r\n',338,114,0,'CC-BY-SA','Matchbox, Diecast Models, Restoration',0,0,1),
(3078,'2020-05-20','Coronavirus Update 2020-05-07',878,'Where we are with this pandemic, and how should we respond?','<p>This is an update to my earlier show to pull together what we know about the Coronavirus on this date, and what measures we can take. It focuses on the lack of solid information at this point and suggests a prudent course to stay safe. <a href=\"https://www.palain.com/health-topics/coronavirus-update-20200507/\" class=\"uri\">https://www.palain.com/health-topics/coronavirus-update-20200507/</a></p>\r\n<ul>\r\n<li><a href=\"https://www.palain.com/health-topics/scientific-and-medical-reports/\" class=\"uri\">https://www.palain.com/health-topics/scientific-and-medical-reports/</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2685\" class=\"uri\">https://hackerpublicradio.org/eps.php?id=2685</a></li>\r\n<li><a href=\"https://www.cdc.gov/flu/about/burden/2017-2018.htm\" class=\"uri\">https://www.cdc.gov/flu/about/burden/2017-2018.htm</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/All_models_are_wrong\" class=\"uri\">https://en.wikipedia.org/wiki/All_models_are_wrong</a></li>\r\n<li><a href=\"https://www.healthdata.org/covid/updates\" class=\"uri\">https://www.healthdata.org/covid/updates</a></li>\r\n<li><a href=\"https://www.medpagetoday.com/infectiousdisease/covid19/86127\" class=\"uri\">https://www.medpagetoday.com/infectiousdisease/covid19/86127</a></li>\r\n<li><a href=\"https://www.cnn.com/2020/05/04/health/us-coronavirus-monday/index.html\" class=\"uri\">https://www.cnn.com/2020/05/04/health/us-coronavirus-monday/index.html</a></li>\r\n<li><a href=\"https://www.palain.com/health-topics/coronavirus-update-20200507/\" class=\"uri\">https://www.palain.com/health-topics/coronavirus-update-20200507/</a></li>\r\n</ul>\r\n\r\n<hr />\r\n\r\n<p>\r\nExtracted from <a href=\"https://www.palain.com/health-topics/coronavirus-update-20200507/\">Palain.com</a> under the tearms of Creative Commons Attribution-ShareAlike 4.0 International License. \r\n</p>\r\n\r\n<h1 >Coronavirus Update 20200507</h1>\r\n\r\n<p>The coronavirus pandemic is continuing throughout most of the world, and I wanted to put down some observations on where we stand today. First, note that I put the date in the title. This is because the situation in some ways changes day-by-day, even though there are continuities. That makes it a dangerous place to be because it is human nature to look for the latest news and jump on it if it looks good. And that is a prime mistake because we do not in fact know enough at this point to be confident in these news reports. I would refer you to my earlier essay, <a rel=\"noreferrer noopener\" href=\"https://www.palain.com/health-topics/scientific-and-medical-reports/\" target=\"_blank\">Scientific and Medical Reports</a>, which is highly relevant right now. While I could not have predicted this pandemic when I wrote it, it contains basic principles that are <em>always</em> relevant. </p>\r\n\r\n\r\n\r\n<p>The nature of the press is that it is like the carnivorous plant in the movie <em>Little Shop of Horrors</em>, always crying \"Feed Me!\" And of course we are all interested if not to say anxious for any news on the course of this disease and where it is taking us. What this means is that you will see a unstoppable stream of news stories touting the latest study on one or another aspect of this. Add in the desire of politicians to spin things to their advantage, and you have a recipe for disaster. To keep sane, remember a few basic principles:</p>\r\n\r\n\r\n\r\n<ul><li>One study proves nothing. There are lots of studies, and many of them are one-and-done without having any effect on medical practice. If there is an interesting result, it merely indicates an area for further study.</li><li>Study results are only meaningful when they have withstood peer review and have been replicated by other scientists. This process does produce good results, but only with time. Only in movies do scientists go into the lab and come out 24 hours later with the answer.</li><li>If you really want to know w
(3115,'2020-07-10','Pest Control',2291,'Talk about pest control','<ul>\r\n<li><a href=\"https://smile.amazon.com/s?k=Mosquito+Dunk\" class=\"uri\">https://smile.amazon.com/s?k=Mosquito+Dunk</a>\r\n<ul>\r\n<li>essentra ic3 for outdoors (30-90days)</li>\r\n<li>bee Friendly Mavrik Perimeter for indoor/outdoor OR bad for bees 4 oz of bifen (30-90days)</li>\r\n<li>delta dust for cracks / walls etc ( 6 -8 mos nasty stuff … )</li>\r\n<li>Syngenta Advion Cockroach Gel Bait ( only when you have issues with above approach or infestation )</li>\r\n<li><a href=\"https://www.stihlusa.com/products/sprayers/backpack-sprayers/sr450/\" class=\"uri\">https://www.stihlusa.com/products/sprayers/backpack-sprayers/sr450/</a> ( blower I use for outside ~$700USD I spray neighbors for $20USD to create a perimeter around my house :P )</li>\r\n<li>use normal pump sprayer for indoors suggest using a metal tip for finer mist on baseboards etc youtube for best approach… I DO NOT spray surfaces that people touch .. some folks spray ‘safe’ indoor stuff on carpet and couches … I spray under/around/behind</li>\r\n</ul></li>\r\n<li>FULL TANK ( ~3.5 gal )GETS:\r\n<ul>\r\n<li>4 oz of bifen OR .5oz of Mavrik</li>\r\n<li>12 of essentra ic3</li>\r\n</ul></li>\r\n<li>Pump Sprayer gets:\r\n<ul>\r\n<li>1gal water</li>\r\n<li>.5oz bifen or .1 Mavrik</li>\r\n</ul></li>\r\n</ul>\r\n',36,0,1,'CC-BY-SA','Pest Control,bugs,DIY,Home Improvement',0,0,1),
(3082,'2020-05-26','RFC 5005 Part 1 – Paged and archived feeds? Who cares?',2108,'An interview with two passionate RFC 5005 fans on how to handle big Atom feeds','<p>This conversation took almost an hour, so I split it into two shows:</p>\r\n\r\n<ul>\r\n <li>Part 1 talks mostly about the RFC itself, what it means and why.</li>\r\n <li>Part 2 goes into personal experiences with the RFC and with syndication in general, in particular in the context of web comics. This is part 1.</li>\r\n</ul>\r\n\r\n<h2 id=\"the-why\">The why</h2>\r\n\r\n<p>When serving most RSS/Atom feed readers today, you have to choose: Do you make a complete feed with all the things you ever published, or do you make a shorter feed with just the latest entries?</p>\r\n\r\n<p>This is a trade-off with pros and cons, and it seems like a trade-off you have to make, but a solution to let your Atom feed have the cake and eat it too existed already 13 years ago, if only any of our feed readers would adhere to it: RFC 5005, <em>Feed Paging and Archiving</em></p>\r\n\r\n<h2 id=\"the-what\">The what</h2>\r\n\r\n<p><a href=\"https://tools.ietf.org/html/rfc5005\">https://tools.ietf.org/html/rfc5005</a> was published in September 2007</p>\r\n\r\n<ul>\r\n <li>The XML namespace for RFC 5005 elements is <code>https://purl.org/syndication/history/1.0</code>, aliased as <code>fh</code> below.</li>\r\n <li>Section 2 defines the <em>complete feed</em>: It is one document (Atom file) that contains the entire set the feed describes. The document is marked with an <code>fh:complete</code> element.</li>\r\n <li>Section 3 defines the <em>paged feed</em>: It is a series of documents connected with Atom <code>link</code> elements with <code>rel</code> set to the <em>link relations</em> <code>first</code>, <code>last</code>, <code>previous</code> or <code>next</code>.</li>\r\n <li>Section 4 defines the <em>archived feed</em>: It has a <em>subscription document</em> that may change at any time, and a series of <em>archive documents</em> that are expected to have stable contents and URIs. The link relations defined are <code>current</code>, <code>prev-archive</code> and <code>next-archive</code>. The semantics are clearer: <code>prev-archive</code> refers to previously published entries, and because the contents are stable you can stop when you see a URI to a document you already have. Archive documents are marked with the <code>fh:archive</code> element.</li>\r\n</ul>\r\n\r\n<h2 id=\"the-who\">The who</h2>\r\n\r\n<p>In this show I’m talking to:</p>\r\n\r\n<h3 id=\"fluffy\">fluffy</h3>\r\n\r\n<ul>\r\n <li>Federated social web:<br />\r\n<a href=\"https://queer.party/@fluffy\">https://queer.party/@fluffy</a></li>\r\n <li>Writes and makes things in several creative fields:<br />\r\n<a href=\"https://beesbuzz.biz/\">https://beesbuzz.biz/</a></li>\r\n <li>Publ is like a static site generator, but dynamic. It produces RFC 5005 archive feeds, of course:<br />\r\n<a href=\"https://publ.beesbuzz.biz/\">https://publ.beesbuzz.biz/</a></li>\r\n <li>Thoughts on ephemeral content vs content worth archiving and how they relate to protocols:<br />\r\n<a href=\"https://beesbuzz.biz/blog/5709-Keeping-it-personal\">https://beesbuzz.biz/blog/5709-Keeping-it-personal</a></li>\r\n</ul>\r\n\r\n<h3 id=\"jamey\">Jamey</h3>\r\n\r\n<ul>\r\n <li>Federated social web:<br />\r\n<a href=\"https://toot.cat/@jamey\">https://toot.cat/@jamey</a></li>\r\n <li>Blog:<br />\r\n<a href=\"https://minilop.net/\">https://minilop.net/</a></li>\r\n <li>Made a prototype full-history reader that follows RFC 5005 links:<br />\r\n<a href=\"https://reader.minilop.net/\">https://reader.minilop.net/</a></li>\r\n <li>Made a webcomic reader mostly mentioned in Part 2:<br />\r\n<a href=\"https://www.comic-rocket.com/\">https://www.comic-rocket.com/</a></li>\r\n <li>Made a WordPress plugin implementing RFC 5005:<br />\r\n<a href=\"https://github.com/jameysharp/wp-fullhistory\">https://github.com/jameysharp/wp-fullhistory</a></li>\r\n <li>Made an RFC 5005 archive feed synthesizer for sites with a predictable post freq
(3083,'2020-05-27','Mumbling while on lockdown',3021,'Two Edinburgh-based hosts have a chat from their respective houses','<h2 id=\"introduction\">Introduction</h2>\r\n<p>Two HPR hosts based in Edinburgh got together over Mumble to have a chat during the COVID-19 lockdown.</p>\r\n<ul>\r\n<li><a href=\"https://hackerpublicradio.org/correspondents/0201.html\">MrX</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/correspondents/0225.html\">Dave Morriss</a></li>\r\n</ul>\r\n<h2 id=\"apology\">Apology</h2>\r\n<p>Dave’s sound was a bit distorted in this recording. Having had recent problems using the Zoom recorder as a microphone, this time the in-built microphone was resorted to, with even worse results it turned out. See the <a href=\"#sound-processing\">Sound processing</a> section below if you want to know more.</p>\r\n<h2 id=\"notes\">Notes</h2>\r\n<p>Some of the topics we discussed</p>\r\n<ul>\r\n<li>Locations for recording. Ambient noises.</li>\r\n<li>WiFi versus ethernet. Dave has a 5-port switch on his dining table (not 8-port).</li>\r\n<li>ADSL routers</li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/NSLU2\" title=\"Linksys NSLU2\">Linksys NSLU2</a> <code>\"</code><em>SLUG</em><code>\"</code></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/SheevaPlug\" title=\"SheevaPlug\">SheevaPlug</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/CUPS\" title=\"Common Unix Printing System\">CUPS</a> - printing and scanning with old non-networked printers</li>\r\n<li><em>Legacy computing experiences</em>:\r\n<ul>\r\n<li>Diablo exchangeable disks</li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Line_printer\" title=\"Line printer\">Line printers</a>. Fan-fold 132 column paper</li>\r\n<li>Punched card experiences. Card sequence numbers. <a href=\"https://en.wikipedia.org/wiki/IBM_card_sorter\" title=\"Card sorter\">Card sorters</a>.</li>\r\n<li>Checking disks for warped platters</li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Magnetic_tape_data_storage\" title=\"Magnetic tape data storage\">Magnetic tapes</a>; recovering from damage.</li>\r\n</ul></li>\r\n<li>8-track tapes</li>\r\n<li><a href=\"https://mocft.co.uk/\" title=\"Museum of Communication, Burntisland, Fife\">Museum of Communication, Fife</a>\r\n<ul>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Strowger_switch\" title=\"Strowger switch\">Strowger switch</a> electromechanical stepping switch telephone exchange system</li>\r\n</ul></li>\r\n</ul>\r\n<h2 id=\"links\">Links</h2>\r\n<ul>\r\n<li><a href=\"https://en.wikipedia.org/wiki/NSLU2\">Linksys NSLU2</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/SheevaPlug\">SheevaPlug</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/CUPS\">CUPS</a> - Common Unix Printing System</li>\r\n<li><a href=\"https://mocft.co.uk/\">Museum of Communication, Burntisland, Fife</a></li>\r\n</ul>\r\n<h3 id=\"sound-processing\">Sound processing</h3>\r\n<p><small> The recording was made in multichannel mode in anticipation of problems. The distorted channel was processed by using the <em>Clip Fix</em> effect in Audacity, which didn’t seem to change much except reduce the sound level. It was also necessary to find and remove sounds produced by the <em>push to talk</em> key presses. Removal meant replacing these sounds by silence so the two channels would not get out of step. After this the two channels were merged together and silences truncated. </small></p>\r\n<p><small> Lessons learned: don’t use a built-in microphone if you can help it! </small></p>\r\n</article>\r\n',225,0,1,'CC-BY-SA','COVID-19,lockdown',0,0,1),
(3081,'2020-05-25','Why do formal verification?',1120,'Tuula talks about testing and formal verification of software','<p>In episode <a href=\"https://hackerpublicradio.org/eps.php?id=3057\">3057</a> I talked about formal verification of software and forgot to mention why one would want to do it. This episode hopefully answers to that.</p>\r\n<p>While formal verification is powerful tool, it’s also rather cumbersome and slow to use. In some cases you’re better off with traditional ways of testing.</p>',364,0,0,'CC-BY-SA','testing, verification, mathematics',0,0,1),
(3079,'2020-05-21','Linux Inlaws S01E06 Porn and Trump',4779,'The lads discuss Audacity, KDEnlive, Blender, PwC, The Current War, Better Things, and Pamela Adlon','<p>This is Linux Inlaws, a series on free and open source software, black humour, the revolution and freedom in general (this includes ideas and software) and generally having fun.</p>\r\n<p>Linux Inlaws - a podcast about on topics around free and open source software, any associated contraband, communism / the revolution in general and whatever else fancies your tickle.</p>\r\n<p>Please note that this and other episodes may contain strong language, offensive humor and other certainly not politically correct language - you have been warned (our parents insisted on this disclaimer - happy mum?). Thus the content is not suitable for consumption in the workplace (especially when played back on a speaker in an open plan office or similar environments), any minors under the age of 35 or any pets including fluffy little killer bunnies, your trusty guide dog (unless on speed) and cute T-Rexes or other associated dinosaurs.</p>\r\n<p>Links:</p>\r\n<ul>\r\n<li>Audacity: <a href=\"https://www.audacityteam.org\" class=\"uri\">https://www.audacityteam.org</a></li>\r\n<li>Audacity OSX work-around: <a href=\"https://forum.audacityteam.org/viewtopic.php?t=105586\" class=\"uri\">https://forum.audacityteam.org/viewtopic.php?t=105586</a></li>\r\n<li>KDEnlive: <a href=\"https://kdenlive.org\" class=\"uri\">https://kdenlive.org</a></li>\r\n<li>Blender: <a href=\"https://www.blender.org\" class=\"uri\">https://www.blender.org</a></li>\r\n<li>PwC mishap: <a href=\"https://www.theregister.co.uk/2020/05/06/pwc_azure_squatting\" class=\"uri\">https://www.theregister.co.uk/2020/05/06/pwc_azure_squatting</a></li>\r\n<li>The Current War: <a href=\"https://en.wikipedia.org/wiki/The_Current_War\" class=\"uri\">https://en.wikipedia.org/wiki/The_Current_War</a></li>\r\n<li>Rick and Morty: <a href=\"https://www.adultswim.com/videos/rick-and-morty\" class=\"uri\">https://www.adultswim.com/videos/rick-and-morty</a></li>\r\n<li>Better Things: <a href=\"https://en.wikipedia.org/wiki/Better_Things_(TV_series)\" class=\"uri\">https://en.wikipedia.org/wiki/Better_Things_(TV_series)</a></li>\r\n<li>Pamela Adlon: <a href=\"https://twitter.com/pamelaadlon\" class=\"uri\">https://twitter.com/pamelaadlon</a></li>\r\n</ul>',384,111,1,'CC-BY-SA','Audacity, KDEnlive, Blender, PwC mishap, The Current War, Better Things, Pamela Adlon',0,0,1),
(3087,'2020-06-02','Phonetic alphabet',114,'The NATO phonetic alphabet recited once.','<p>The NATO phonetic alphabet. Play this a few times until it\'singrainedinyourmemorybanks.It\'ll change the way you communicate.</p>\r\n<p>\r\n<a href=\"https://en.wikipedia.org/wiki/NATO_phonetic_alphabet\">Wikipedia</a>\r\n</p>',78,43,0,'CC-BY-SA','nato, alphabet, communication',0,0,1),
(3088,'2020-06-03','Matchbox Restoration Part 2',307,'Second episode discussing restoring Matchbox diecast models Tony talks tools and materials needed ','<h3 id=\"matchbox-hpr-episode-2-equipment\">Matchbox HPR Episode 2 – Equipment</h3>\r\n<p>Hello all those in HPR land. This is Tony Hughes coming to you from Blackpool in the UK. I hope you are all keeping well at the current time of restrictions due to the Corona Virus.</p>\r\n<p>In this the second of my recordings talking about restoring of Matchbox and other Die-cast models, I am going to talk of the equipment you will find essential, and some other things that while at the start you could live without, as you get into the hobby you may find extremely useful.</p>\r\n<p>So the first thing you will need is a drill for drilling the posts out on the model, both to aid in dismantling them and if you plan to reassemble with the aid of small screws, to drill the hole in the post for tapping to accommodating the screws. This can be a hand held wired or cordless drill or if you have a workshop with a drill press, all the better as this can be used in several ways during the reassembly of the models. That is on my wish list as I don’t have one at the moment.</p>\r\n<p>Secondly you will need a set of modelling files for removing the burr on axles, to remove these and the plastic wheels of the base of the model to allow for repainting if required.</p>\r\n<p>Wire brushes for cleaning the remains of any paint that didn’t get removed by the paint stripper.</p>\r\n<p>Hemostat Clamp Tweezers or crocodile clips on a rod, for use to hold the model during spray painting</p>\r\n<p>Additionally, although you can start doing restorations without these, the following will become very useful to help save time and achieve better finishes of the completed restoration.</p>\r\n<p>Rotary Tool, the most well known is the Dremel but there are many other manufacturers of similar tools at more economic cost. However beware you do get what you pay for and you may find buying the cheapest you can find a false economy. My cheap Lidl rotary tool which I have had for a few years but barely used, failed after 5 months of use a few weeks ago. The chuck ring thread striped and it will no longer hold bits in the chuck. The rotary tool makes the removal of the axles a very quick job, and cleaning paint stripped castings with a wire rotary brush is a breeze.</p>\r\n<p>Another thing you may find useful is a small spray booth with an extractor fan and filter for removing over-spray from the area you are painting in if doing this indoors, particularly if your workshop is in the house. Although one YouTube modeller I follow sprays his models on the cooker with the cooker extractor fan on to achieve a similar result when painting indoors.</p>\r\n<p>Finally you may wish to put a compressor and spray gun on your wish list if you get hooked as this gives you a far better range of colours you can paint in, as you can mix your own shades. Some in this community are sticklers for trying to get an exact match to the original colour of the model, others like me at the moment are happy to use shop bought spray paint cans.</p>\r\n<p>Small table vice for holding the model. A set of helping hands for the same during painting, particularly when painting fine details.</p>\r\n<p>So that’s the tools, now the consumables:</p>\r\n<ul>\r\n<li>Gloves – Rubber washing up gloves to protect from some of the chemicals used to strip paint.</li>\r\n<li>Latex gloves for using when spray painting as you have more control while wearing these rather than the looser fitting rubber washing up gloves.</li>\r\n<li>Work gloves to use when drilling or using other tools.</li>\r\n<li>Paint face mask to prevent inhaling fumes.</li>\r\n<li>Paint stripper, I use B&Q’s DIAL own brand paint stripper. I also use caustic soda for the same thing, occasionally one will work when the other failed to remove the paint, it depends on the original paint applied to the model.</li>\r\n<li>Model filler for repairing dents in the casting</li>\r\n<li>Wir
(3089,'2020-06-04','For my Entertainment',425,'How I have my file server and media center put together','<h3>Reasoning.</h3>\r\n<p>I have a file server with Slackware running on a Pi4. I wanted to make the<br />movies and TV Shows easily accessible on the TV without using a DVD or Blu ray<br />player.</p>\r\n<p>It would give my wife and I a chance to sit and watch a show without much<br />fuss. The latest show we are on is Sue Thomas F.B. Eye.<br />The main character, Sue has been deaf from about the age of 4 years.<br />She is adept at reading lips and learned to speak despite being deaf.</p>\r\n<p><a title=\"Sue Thomas F.B. Eye\" href=\"https://en.wikipedia.org/wiki/Sue_Thomas:_F.B.Eye\">https://en.wikipedia.org/wiki/Sue_Thomas:_F.B.Eye</a></p>\r\n<h3>Hardware.</h3>\r\n<p>The Pi4 is enclosed in a stripped out power supply that died on me. The fan<br />still worked, so I wired it to the Pi on the 5v line. It runs at half the<br />speed it was designed for, but that makes it run almost silent. With the<br />heatsinks added, stays about 35C when idle and 50C when encoding video.</p>\r\n<h3>Pi Networking.</h3>\r\n<p>I have 2 Pi\'sconnectedviaethernet.Oneison192.168.2.5withagatewayof<br/>192.168.2.6,withtheotheron192.168.2.6withagatewayof192.168.2.5.<br/>Essentiallyjustacrossovernetwork.ThereasonforthisisrunningKodionPi4<br/>haschoppyvideo,butisbetteratrunningvideoencoding.SoIlinkedittoa<br/>Pi3torunKodiviaasambasharefromthePi4.</p>\r\n<p>UsedOSMCforthekodiinterface.<br/>ItwasthedistributionthatwasstableonmyPiandbootedrighttotheKodi<br/>interface.</p>\r\n<p><atitle=\"OSMC - Open Source Media Center\"href=\"https://osmc.tv/download/\">https://osmc.tv/download/</a></p>\r\n<p><code>lsblk</code>-Listblockdevices<br/><code>ddstatus=progressif=osmc.imgof=/devsdX</code></p>\r\n<h3>InstallingSlackware.</h3>\r\n<p>Getsources<br/><atitle=\"Get Slackware ARM\"href=\"https://sarpi.fatdog.eu/index.php?p=getslack\">https://sarpi.fatdog.eu/index.php?p=getslack</a></p>\r\n<pre><code>root@mynixbox:/tmp# mkdir /slackarm\r\nroot@mynixbox:/tmp# mount /dev/sdc1 /slackarm\r\nroot@mynixbox:/tmp# cd /slackarm\r\nroot@mynixbox:/slackarm#</code></pre>\r\n<p>To download Slackware ARM 14.2, type the following at the command prompt:</p>\r\n<p><code>root@mynixbox:/slackarm# rsync -Prv --delete<br />ftp.slackware.uk::slackwarearm/slackwarearm-14.2 .</code></p>\r\n<p>[FatDog says ...] DON\'T forget the period \".\" at the end of the rsync command<br />or it won\'t work!</p>\r\n<p>I made a directory called extras, under the /slackarm directory</p>\r\n<p><a title=\"Sarpi sources for Slackware current\" href=\"https://sarpi.fatdog.eu/index.php?p=rpi4getcurrent\">https://sarpi.fatdog.eu/index.php?p=rpi4getcurrent</a></p>\r\n<p><code>upgradepkg --install-new</code> (for each of these packages, after finishing the main Slackware installation.)</p>\r\n<h5>System Packages</h5>\r\n<p><code>kernel_sarpi4-5.4.40-armv7l-1_slackcurrent_13May20_sp1.txz <br />\r\nkernel-modules-sarpi4-5.4.40-armv7l-1_slackcurrent_13May20_sp1.txz <br />\r\nsarpi4-boot-firmware-armv7l-1_slackcurrent_13May20_sp1.txz\r\nsarpi4-hacks-4.0-armv7l-1_slackcurrent_13May20_sp1.txz</code></p>\r\n<h3>Partitioning example</h3>\r\n<p>After mounting the sd card listed by the lsblk command, run <br />cfdisk /dev/mmcblk0 to partition the card.</p>\r\n<pre><code>mmcblk0 179:0 0 59.5G 0 disk <br />|-mmcblk0p2 179:2 0 4G 0 part [SWAP]<br />|-mmcblk0p3 179:3 0 55.3G 0 part /<br />`-mmcblk0p1 179:1 0 150M 0 part <br />root@slack-server:mark # df -h / <br />Filesystem Size Used Avail Use% Mounted on /dev/root 55G 25G 28G 48% /\r\n\r\nmkfs.vfat /dev/mmcblk0p1<br />mkswap /dev/mmcblk0p2</code></pre>\r\n<h3>Samba snippet</h3>\r\n<pre><code>[MediaServer.Movies]<br />path = /mnt/media2/Movies/<br />writable = no<br />browsable = yes<br />read only = no<br />guest ok = no<br />public = no</code></pre>\r\n<h3>fstab snippet (Kodi)</h3>\r\n<pre><code>//192.168.2.5/MediaServer.Movies /mnt/Movies cifs noauto,users,usernam
(3104,'2020-06-25','HPR AudioBook Club 19 - Tincture: An Apocalyptic Proposition',7607,'The HPR Audiobook Club reviews the audiobook Tincture by Matthew D. Jordan','<h2 id=\"in-this-episode-the-hpr_audiobookclub-discusses-tincture-an-apocalyptic-proposition-written-by-matthew-d-jordan\">In this episode, the HPR_AudioBookClub discusses <a href=\"https://scribl.com/books/PFC12/tincture-an-apocalyptic-proposition\">Tincture: An Apocalyptic Proposition</a> written by Matthew D. Jordan</h2>\r\n<hr />\r\n<h2 id=\"non-spoiler-thoughts\">Non-Spoiler Thoughts</h2>\r\n<hr />\r\n<ul>\r\n<li>If you don\'tlikeknowingwhatisgoingonuntilhalfwaythroughthebook,thenthisbookisforyou.</li>\r\n<li>Thebookusesaveryinterestingtypeofspeechthatwasallkindadig.</li>\r\n<li>Someofuslikedthisbooksomuchthatwemainlinedthe<ahref=\"https://scribl.com/books/PCA29/tincture-and-the-devil-pulls-six-guns\">sequel</a>immediately.</li>\r\n<li>Thisfeelsalotlike\"The Dark Tower\"seriesbyStephenKing,andevenreferencesit.</li>\r\n<li>WetalkabouttheuseofHebrewinthecharacternamesinthestory.</li>\r\n<li>Themusicforthebookisexcellent,andmatchesthestoryverywell.</li>\r\n<li>Howdoyoumakealcoholintheapocalypse?</li>\r\n<li>ThisalsofeelsalotliketheFalloutgames.</li>\r\n<li>ThereturnofPLOTBULLETS!!!!</li>\r\n</ul>\r\n<h2id=\"beverage-reviews\">BeverageReviews</h2>\r\n<hr/>\r\n<p>Asusual,theHPRAudioBookClubtooksometimetoreviewthebeveragesthateachofusweredrinkingduringtheepisode</p>\r\n<ul>\r\n<li><strong>Thaj:</strong>Mademyowntinctureofhomemadeicedteaandlemonademixed.Tastesgood.Thajstillcan\'t grow lemons though :(</li>\r\n<li><strong>x1101:</strong> <a href=\"https://cdn.bourbonbanter.com/wp-content/uploads/2013/07/wildturkeyrarebreedbourbon.jpg?090fad\">Wild Turkey Rare Breed</a></li>\r\n<li><strong>pokey:</strong> I have <a href=\"https://www.beeradvocate.com/beer/profile/10272/39258/\">beer</a> this month it\'sprettygood.ILikeit,butIdon\'t love it. I also bought a few of the credit card sized tools that we talked about on our last episode. In short they are interesting, but mostly not very useful.</li>\r\n<li><strong>FiftyOneFifty:</strong> <a href=\"https://www.shiner.com/beer/prickly-pear\">Shiner Prickly Pear</a>. This unusual beer came as a complete surprise to me because I was frankly expecting a sweet peary. Instead I was confronted by a very dry, only slightly hoppy (20 IBU) beer without much flavor but a lasting aftertaste that is slightly sweet. Those Shiner boys aren\'tmessingaround,theymakebeerwithcactus.Ireallydidnotenjoythefirstbeerbutbytheendofthesixitisgrowingonme.Thoughitwouldberefreshingonahotday,IdoubtIwillbebuyingitagain.</li>\r\n</ul>\r\n<h2id=\"things-we-talked-about\">ThingsWetalkedabout</h2>\r\n<hr/>\r\n<ul>\r\n<li>Wetalkabouttheconnectionsto\"The Dark Tower\"</li>\r\n<li><ahref=\"https://i44.tinypic.com/2ptqn4o.jpg\">\"Blue\"Irons(Marcs/Afulan/Rolandsguns)</a></li>\r\n<li><ahref=\"https://www.gunblast.com/images/SHOT2003_Day1/DSC05601.jpg\">Anotherbiggun</a></li>\r\n<li>Isthistimetravel,dimensiontravel,orsomethingentirelydifferent?</li>\r\n<li>ThetiestoJudeo-ChristianmythologyisinterestingtoThaj.</li>\r\n<li>Isgettingtheanswersaboutthesettingwhatyoureallywant?</li>\r\n<li>Thebookdoesn\'t exactly get guns right...</li>\r\n</ul>\r\n<h2 id=\"our-next-audiobook\">Our Next Audiobook</h2>\r\n<hr />\r\n<p><a href=\"https://scribl.com/books/P2A75/quarter-share\">Quarter Share</a> by Nathan Lowell</p>\r\n<h2 id=\"the-next-audiobook-club-recording\">The Next Audiobook Club Recording</h2>\r\n<hr />\r\n<p>Right now we are working through a backlog of older episode that have already been recorded. Once that ends we fully anticipate recording new episodes with listener participation.</p>\r\n<h2 id=\"further-recommendations\">Further Recommendations</h2>\r\n<hr />\r\n<ul>\r\n<li><a href=\"https://www.homewetbar.com/images/pro
(3091,'2020-06-08','fuguserv',2628,'Fuguita OpenBSD server - building a new wifi-router / server','<ul>\r\n<li><p>Where you can go to get your copy of the fuguita OS.<br />\r\n<a href=\"https://fuguita.org\" class=\"uri\">https://fuguita.org</a></p></li>\r\n<li><p>Additional book references.<br />\r\n<a href=\"https://nostarch.com/pf3\" class=\"uri\">https://nostarch.com/pf3</a><br />\r\n<a href=\"https://nostarch.com/obenbsd2e\" class=\"uri\">https://nostarch.com/obenbsd2e</a></p></li>\r\n</ul>\r\n<p>The files I cover in the <code>/etc/</code> directory first..</p>\r\n<p><code>dhclient.conf</code></p>\r\n<pre><code>interface "em0" {\r\n# ignore domain-name-servers;\r\n reject 192.168.1.1;\r\n}\r\n#supersede domain-name-servers 127.0.0.1;</code></pre>\r\n<p><code>dhcpd.conf</code></p>\r\n<pre><code>option domain-name-servers 192.168.1.1;\r\nsubnet 192.168.1.0 netmask 255.255.255.0 {\r\n option routers 192.168.1.1;\r\n range 192.168.1.40 192.168.1.190;\r\n host myserver {\r\n fixed-address 192.168.1.2;\r\n hardware ethernet 00:00:00:00:00:00;\r\n }\r\n host darkstar {\r\n fixed-address 192.168.1.210;\r\n hardware ethernet a0:d3:7a:42:aa:1d;\r\n }\r\n host zenbig {\r\n fixed-address 192.168.1.215;\r\n hardware ethernet 14:d6:4d:aa:6c:c6;\r\n }\r\n host zenstar {\r\n fixed-address 192.168.1.205;\r\n hardware ethernet 2c:6e:85:bf:72:91;\r\n }\r\n host mini10 {\r\n fixed-address 192.168.1.200;\r\n hardware ethernet 88:25:2C:B2:94:8C;\r\n }\r\n host nexus9 {\r\n fixed-address 192.168.1.195;\r\n hardware ethernet 44:91:60:9e:d2:73;\r\n }\r\n host diningpi {\r\n fixed-address 192.168.1.197;\r\n hardware ethernet b8:27:eb:09:bb:1e;\r\n }\r\n host think330 {\r\n fixed-address 192.168.1.193;\r\n hardware ethernet 50:5B:C2:E5:CA:F5;\r\n }\r\n host largedongle1 {\r\n fixed-address 192.168.1.211;\r\n hardware ethernet 00:C0:CA:82:EC:30;\r\n }\r\n host largedongle2 {\r\n fixed-address 192.168.1.212;\r\n hardware ethernet 00:C0:CA:82:E6:29;\r\n }</code></pre>\r\n<p><code>dhcpd.interfaces</code></p>\r\n<pre><code>athn0</code></pre>\r\n<p><code>hostname.athn0</code></p>\r\n<pre><code>inet 192.168.1.5 255.255.255.0 192.168.1.255\r\nmedia autoselect\r\nmediaopt hostap\r\nchan 4\r\nwpa\r\nnwid fuguserv\r\nwpakey 1234567890ABCD#\r\nup</code></pre>\r\n<p><code>hostname.bridge0</code></p>\r\n<pre><code>add vether0\r\nadd em0\r\nadd athn0\r\nblocknonip vether0\r\nblocknonip em0\r\nblocknonip athn0\r\nup</code></pre>\r\n<p><code>hostname.em0</code></p>\r\n<pre><code>dhcp\r\ninet6 autoconf</code></pre>\r\n<p><code>hostname.vether0</code></p>\r\n<pre><code>inet 192.168.1.1 255.255.255.0 192.168.1.255</code></pre>\r\n<p><code>pf.conf</code></p>\r\n<pre><code>nt_if="{ vether0 em0 athn0 }"\r\nbroken="224.0.0.22 127.0.0.0/8 192.168.0.0/16 172.16.0.0/12\r\n 10.0.0.0/8 169.254.0.0/16 192.0.2.0/24\r\n 198.51.100.0/24, 203.0.113.0/24,\r\n 169.254.0.0/16 0.0.0.0/8 240.0.0.0/4 255.255.255.255/32"\r\ntable <bruteforce> persist\r\nset block-policy drop\r\nset loginterface egress\r\nset skip on lo0\r\nmatch in all scrub (no-df random-id max-mss 1440)\r\nmatch out on egress inet from !(egress:network) to any nat-to (egress:0)\r\nantispoof quick for (egress)\r\nblock quick from <bruteforce>\r\nblock in quick on egress from { $broken no-route urpf-failed } to any\r\nblock in quick inet6 all\r\nblock return out quick inet6 all\r\n#block return out quick log on egress proto { tcp udp } from any to
(3092,'2020-06-09','Pens, pencils, paper and ink - 2',1256,'Looking at more writing equipment','<h2 id=\"introduction\">Introduction</h2>\r\n<p>This is the second in a short series about pens, pencils, writing paper and ink. In this episode we will look at three more fountain pens (two lower-priced and one around £50), a mechanical pencil and some paper.</p>\r\n<h2 id=\"long-notes\">Long notes</h2>\r\n<p>I have provided detailed notes as usual for this episode, and these can be <a href=\"https://hackerpublicradio.org/eps/hpr3092/full_shownotes.html\">viewed here</a>.</p>\r\n<h2 id=\"links\">Links</h2>\r\n<ul>\r\n<li>Pen brands:\r\n<ul>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Kaweco\">Kaweco</a> Wikipedia page</li>\r\n<li><a href=\"https://www.mrpen.co.uk/contents/en-uk/d184.html\">Italix</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Uni-ball\">uni-ball</a> Wikipedia page (maker of Kuru Toga)</li>\r\n</ul></li>\r\n<li>Reviews:\r\n<ul>\r\n<li>The Well Appointed Desk: <a href=\"https://www.wellappointeddesk.com/2020/02/pen-review-platinum-prefounte-fountain-pen/\">Platinum Prefounte</a></li>\r\n</ul></li>\r\n<li>Calligraphy Skills\r\n<ul>\r\n<li><a href=\"https://www.calligraphy-skills.com/italic-calligraphy.html\">Italic calligraphy</a></li>\r\n<li><a href=\"https://www.calligraphy-skills.com/italic-lettering.html\">Italic lettering</a></li>\r\n</ul></li>\r\n<li>Paper brands:\r\n<ul>\r\n<li><a href=\"https://www.bloc-rhodia.com/index-en.html\">Rhodia</a></li>\r\n</ul></li>\r\n<li>HPR links:\r\n<ul>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=1941\">hpr1941 :: What’s in my case</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2061\">hpr2061 :: Handwriting</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2273\">hpr2273 :: Fountain Pens</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=3063\">hpr3063 :: Pens, pencils, paper and ink - 1</a></li>\r\n</ul></li>\r\n</ul>\r\n',225,112,1,'CC-BY-SA','fountain pen,mechanical pencil,paper',0,0,1),
(3093,'2020-06-10','Response to Linux Inlaws S01E06 (hpr 3079) on NeXT',430,'Response to Linux Inlaws S01E06 (hpr 3079) regarding NeXT, NeXTSTEP, and what would become Mac OS X.','<p>Some clarification on NeXT as I ramble on about all things NeXT, what would become \"Mac OS X\" (now \"macOS\"), and a harbinger of what was to come.</p>\r\n<h2 id=\"links\">Links:</h2>\r\n<ul>\r\n<li><a href=\"https://en.wikipedia.org/wiki/NeXTSTEP\" class=\"uri\">https://en.wikipedia.org/wiki/NeXTSTEP</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/NeXT_Computer#Legacy\" class=\"uri\">https://en.wikipedia.org/wiki/NeXT_Computer#Legacy</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/OpenStep\" class=\"uri\">https://en.wikipedia.org/wiki/OpenStep</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Rhapsody_(operating_system)\" class=\"uri\">https://en.wikipedia.org/wiki/Rhapsody_(operating_system)</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Darwin_(operating_system)\" class=\"uri\">https://en.wikipedia.org/wiki/Darwin_(operating_system)</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/A/UX\" class=\"uri\">https://en.wikipedia.org/wiki/A/UX</a></li>\r\n</ul>',152,0,0,'CC-BY-SA','NeXT, NeXTSTEP, OPENSTEP, Rhapsody, Darwin, MacOSX, OSX, macOS, AUX',0,0,1),
(3098,'2020-06-17','Matchbox Restoration Part 3',191,'In this the 3rd in the series Tony discusses dismantling the castings of the MK10 Jaguar','<h2 id=\"hpr-matchbox-show-episode-3\">HPR Matchbox show Episode 3</h2>\r\n<p>Good day to all in HPR land, this is Tony Hughes coming to you again from Blackpool in the UK. To recap this is the 3rd in a series of shows about my hobby of restoring Matchbox and other Die-cast models. In the first 2 shows I introduced the concept and discussed the tools and other equipment you would need to start this hobby.</p>\r\n<p>In this episode I have decided to return to where it all started with the Matchbox No28 the Jaguar Mk10. Please refer to the show notes for the pictures of the process as we move along. You can see in the first picture the 4 castings used in this process.</p>\r\n<p>Picture 000:<br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3098/img_000.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3098/img_000_thumbnail.jpg\" alt=\"Picture 000\" /></a></p>\r\n<p>This is a lovely little casting and is a nice introduction to the techniques used in the process. Also I have several of these that I can strip down to their components and that should give us enough quality parts to reassemble at least one good example, hopefully one or two more.</p>\r\n<p>The next picture shows you the base of the model and that there is a mushroomed post that needs to be drilled out at the rear of the model, the front of the base is retained by a tab, which once the post is removed and the base released, this can be slid forward to free the tab.</p>\r\n<p>Picture 001:<br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3098/img_001.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3098/img_001_thumbnail.jpg\" alt=\"Picture 001\" /></a></p>\r\n<p>I drilled out this post. The post is drilled out with a 4mm drill bit, and as you can see in the next picture on this particular casting I was a little over zealous and damaged the base a little, although as it is the base it’s not a major issue.</p>\r\n<p>Picture 003:<br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3098/img_003.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3098/img_003_thumbnail.jpg\" alt=\"Picture 003\" /></a></p>\r\n<p>I then released the base by prying it off the remainder of the post with a small flat bladed screwdriver to lever it of the body. This now allowed the removal of the inner plastic forming the seating and holding a small plastic suspension piece. In the next picture you can see the casting without any internals but with the plastic window unit still held in place with another shallow mushroom post.</p>\r\n<p>Picture 005:<br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3098/img_005.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3098/img_005_thumbnail.jpg\" alt=\"Picture 005\" /></a></p>\r\n<p>Being very careful not to be too aggressive drilling this mushroom holding the windscreen unit, it is removed, again with a 4mm drill bit, so that a little pressure from a flat blade slid between the roof and the glassing unit will allow it to pop out without it breaking. It usually takes several attempts of a little drilling, trying with the flat blade, then if not coming free, a little more drilling until it pops off.</p>\r\n<p>Picture 006:<br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3098/img_006.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3098/img_006_thumbnail.jpg\" alt=\"Picture 006\" /></a></p>\r\n<p>Picture 006x:<br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3098/img_006x.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3098/img_006x_thumbnail.jpg\" alt=\"Picture 006x\" /></a></p>\r\n<p>This process was repeated with the other 3 castings and the result is shown in the next picture</p>\r\n<p>Picture 008:<br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3098/img_008.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3098/img_008_thumbnail.jpg\" alt=\"Picture 008\" /></a></p>\r\n<p>As you can see the casting on the upper left of the ima
(3094,'2020-06-11','Holy crud! I have a kinesis advantage 2 keyboard!',275,'Sigflup does a review of the Kinesis Advantage 2 keyboard','<h3>Kinesis Advantage 2 Keyboard</h3>\r\n\r\n<p><img src=\"https://theadesilva.com/keyboard.jpg\" alt=\"Kinesis Advantage 2 Keyboard\"/></p>',115,0,0,'CC-BY-SA','keyboards',0,0,1),
(3097,'2020-06-16','Linux Inlaws S01E07 The Big Blue Button',3895,'The lads talk to Fred Dixon, product manager for BigBlueButton.','<p>In this episode our two chaps welcome Fred Dixon, product manager for BigBlueButton, on the show to talk about the project, its history and if it will finally run on Fedora and CentOS.</p>\r\n<p>Surrounding musings include how to hack the GDM login screen, why Martin is <i>not</i> behind the recent Easyjet hack and poxes as well as anti-poxes.</p>\r\n<h2>Shownotes:</h2>\r\n<ul>\r\n<li>BigBlueButton: <a href=\"https://bigbluebutton.org\" target=_blank>https://bigbluebutton.org</a></li>\r\n<li><a href=\"https://www.theregister.co.uk/2020/05/19/easyjet_hack_9million_2000_credit_cards\" target=_blank>The Easyjet hack</a></li>\r\n<li>How to hack the GDM login screen in Focal Fossa: <a href=\"https://github.com/PRATAP-KUMAR/focal_gdm3_login_theme_complete_hack\" target=_blank>https://github.com/PRATAP-KUMAR/focal_gdm3_login_theme_complete_hack</a></li>\r\n<li>The Ubuntu logo for the GDM3 login screen for Focal Fossa and previous Ubuntu versions can be found at: /usr/share/plymouth/ubuntu-logo.png. Simply truncate this to zero bytes and the logo will be gone from the login screen</li>\r\n<li>Virgy\'sopensourcewebsite:<ahref=\"https://www.websiteplanet.com/blog/what-is-open-source-software\"target=_blank>https://www.websiteplanet.com/blog/what-is-open-source-software</a></li>\r\n</ul>\r\n',384,111,1,'CC-BY-SA','BigBlueButton,GDM,FocalFossa,Ubuntu',0,0,1);
INSERTINTO`eps`(`id`,`date`,`title`,`duration`,`summary`,`notes`,`hostid`,`series`,`explicit`,`license`,`tags`,`version`,`downloads`,`valid`)VALUES(3371,'2021-07-05','HPR Community News for June 2021',3988,'Dave and Ken talk about shows released and comments posted in June 2021','<style>\ntable td.shrink {\n white-space:nowrap\n}\n</style>\n\n<h2>New hosts</h2>\n<p>\nThere were no new hosts this month.\n</p>\n\n<h2>Last Month\'sShows</h2>\n<tableid=\"t01\">\n<tr>\n<th>Id</th>\n<th>Day</th>\n<th>Date</th>\n<th>Title</th>\n<th>Host</th>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3347\"target=\"_blank\">3347</a></strong></td>\n<td>Tue</td>\n<tdclass=\"shrink\">2021-06-01</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3347\"target=\"_blank\">EthicalAnalysisofRenewableEnergyandConservation</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0383.html\"target=\"_blank\">PaulQuirk</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3348\"target=\"_blank\">3348</a></strong></td>\n<td>Wed</td>\n<tdclass=\"shrink\">2021-06-02</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3348\"target=\"_blank\">FeedbackontheArticlebyhedorahaboutHPR</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0030.html\"target=\"_blank\">KenFallon</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3349\"target=\"_blank\">3349</a></strong></td>\n<td>Thu</td>\n<tdclass=\"shrink\">2021-06-03</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3349\"target=\"_blank\">LinuxInlawsS01E31:InterviewwithPaulRamseyFOSSaficionadoandentrepreneur</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0384.html\"target=\"_blank\">monochromec</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3350\"target=\"_blank\">3350</a></strong></td>\n<td>Fri</td>\n<tdclass=\"shrink\">2021-06-04</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3350\"target=\"_blank\">BlendingLayers</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0198.html\"target=\"_blank\">Ahuka</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3351\"target=\"_blank\">3351</a></strong></td>\n<td>Mon</td>\n<tdclass=\"shrink\">2021-06-07</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3351\"target=\"_blank\">HPRCommunityNewsforMay2021</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0159.html\"target=\"_blank\">HPRVolunteers</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3352\"target=\"_blank\">3352</a></strong></td>\n<td>Tue</td>\n<tdclass=\"shrink\">2021-06-08</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3352\"target=\"_blank\">HPR2020-2021NewYearsEveShowEpisode4</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0269.html\"target=\"_blank\">Honkeymagoo</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3353\"target=\"_blank\">3353</a></strong></td>\n<td>Wed</td>\n<tdclass=\"shrink\">2021-06-09</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3353\"target=\"_blank\">Myterminaljourney,part01.</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0391.html\"target=\"_blank\">SomeGuyOnTheInternet</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3354\"target=\"_blank\">3354</a></strong></td>\n<td>Thu</td>\n<tdclass=\"shrink\">2021-06-10</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3354\"target=\"_blank\">MyDevices</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0036.html\"target=\"_blank\">operat0r</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3355\"target=\"_blank\">3355</a></strong></td>\n<td>Fri</td>\n<tdclass=\"shrink\">2021-06-11</td>\n<td><ahre
(3391,'2021-08-02','HPR Community News for July 2021',4611,'HPR Volunteers talk about shows released and comments posted in July 2021','<style>\ntable td.shrink {\n white-space:nowrap\n}\n</style>\n\n<h2>New hosts</h2>\n<p>\nThere were no new hosts this month.\n</p>\n\n<h2>Last Month\'sShows</h2>\n<tableid=\"t01\">\n<tr>\n<th>Id</th>\n<th>Day</th>\n<th>Date</th>\n<th>Title</th>\n<th>Host</th>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3369\"target=\"_blank\">3369</a></strong></td>\n<td>Thu</td>\n<tdclass=\"shrink\">2021-07-01</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3369\"target=\"_blank\">LinuxInlawsS01E33:TheReturnoftheRust</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0384.html\"target=\"_blank\">monochromec</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3370\"target=\"_blank\">3370</a></strong></td>\n<td>Fri</td>\n<tdclass=\"shrink\">2021-07-02</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3370\"target=\"_blank\">MoreFreeImages?</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0198.html\"target=\"_blank\">Ahuka</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3371\"target=\"_blank\">3371</a></strong></td>\n<td>Mon</td>\n<tdclass=\"shrink\">2021-07-05</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3371\"target=\"_blank\">HPRCommunityNewsforJune2021</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0159.html\"target=\"_blank\">HPRVolunteers</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3372\"target=\"_blank\">3372</a></strong></td>\n<td>Tue</td>\n<tdclass=\"shrink\">2021-07-06</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3372\"target=\"_blank\">HPR2020-2021NewYearsEveShowEpisode8</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0269.html\"target=\"_blank\">Honkeymagoo</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3373\"target=\"_blank\">3373</a></strong></td>\n<td>Wed</td>\n<tdclass=\"shrink\">2021-07-07</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3373\"target=\"_blank\">HPRRPGClubreviewsStarfinder</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0078.html\"target=\"_blank\">klaatu</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3374\"target=\"_blank\">3374</a></strong></td>\n<td>Thu</td>\n<tdclass=\"shrink\">2021-07-08</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3374\"target=\"_blank\">WhyIlovetheMacBookMid2010</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0297.html\"target=\"_blank\">swift110</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3375\"target=\"_blank\">3375</a></strong></td>\n<td>Fri</td>\n<tdclass=\"shrink\">2021-07-09</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3375\"target=\"_blank\">CarODB2FunandFail</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0036.html\"target=\"_blank\">operat0r</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3376\"target=\"_blank\">3376</a></strong></td>\n<td>Mon</td>\n<tdclass=\"shrink\">2021-07-12</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3376\"target=\"_blank\">MakingbookswithLinux-part2</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0225.html\"target=\"_blank\">DaveMorriss</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3377\"target=\"_blank\">3377</a></strong></td>\n<td>Tue</td>\n<tdclass=\"shrink\">2021-07-13</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3377\"target=\"_blank\">Chromebooksupportandmore</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0377.html\"target=\"_blank\">Zen_Floater2</a></td>\n</tr>\n<tr>\n<td
(3114,'2020-07-09','Using the Akaso EK7000 Pro',666,'Some tips on using the camera based on my limited experience on one trip.','<p>I found this camera to be useful, but it has a few quirks. Here is what I learned about using it. I took it on a cruise in the Caribbean Sea in February 2020, just before the coronavirus hit everything.</p>\r\n<ul>\r\n<li><a href=\"https://www.palain.com/photography/using-the-akaso-ek7000-pro/\" class=\"uri\">https://www.palain.com/photography/using-the-akaso-ek7000-pro/</a></li>\r\n</ul>\r\n',198,0,0,'CC-BY-SA','Camera, Waterproof Camera, Action camera',0,0,1),
(3125,'2020-07-24','GIMP: The Canvas',785,'The Canvas is the first key concept in learning Gimp','<p>The Canvas is the main stage on which all of the action takes place, and it controls some aspects of the final image. When you get ready to export, you only export what is on the canvas.</p>\r\n<h3 id=\"links\">Links:</h3>\r\n<ul>\r\n<li><a href=\"https://en.wikipedia.org/wiki/XCF_(file_format)\" class=\"uri\">https://en.wikipedia.org/wiki/XCF_(file_format)</a></li>\r\n<li><a href=\"https://www.ahuka.com/gimp/the-canvas/\" class=\"uri\">https://www.ahuka.com/gimp/the-canvas/</a></li>\r\n</ul>',198,113,0,'CC-BY-SA','GIMP, images, photos, graphics, canvas, layer',0,0,1),
(3110,'2020-07-03','Finding an Android phone to run LineageOS',2277,'Join Ken on this 6 year long journey of success but also failure','<h1 id=\"finding-an-android-phone-to-run-lineageos\">Finding an Android phone to run LineageOS</h1>\r\n<p>Affordable phone that support school apps, and allow firewall.</p>\r\n<h2 id=\"tldr\">TL;DR</h2>\r\n<p>Don\'t,unlessyouarewillingtoloosethemoneyyouarepaying.</p>\r\n<h2id=\"requirements\">Requirements</h2>\r\n<ul>\r\n<li>Supportedfor3-5years.</li>\r\n<li>Apps=Android=LineageOS</li>\r\n<li>Firewall=AFWall+=Unlocked+Root</li>\r\n<li>Affordable</li>\r\n</ul>\r\n<h3id=\"support\">Support</h3>\r\n<p>GettingabrandnewphonemeansthatDevelopershavenothadtimetoreleasecode.</p>\r\n<p>Olderphonesarenolongeravailableforpurchase,andactuallybecomemoreexpensive.</p>\r\n<p>Toooldaversionandappsarenolongersupported.</p>\r\n<h2id=\"finding-a-phone-that-can-be-unlocked\">Findingaphonethatcanbeunlocked</h2>\r\n<p>Iuseasitecalled<ahref=\"https://tweakers.net/smartphones/vergelijken/\">Tweakers.net</a>whichallowsyoutodoparametersearch.</p>\r\n<p>Setthemaximumpriceyouarewillingtopay.</p>\r\n<p>ThecurrentversionofAndroidis10soselectonlythose.Youwantyourphonetobesupportedforaslongaspossible.</p>\r\n<p>Makeanyotherselectionsthatyouthinkarecritical,likememory,processoretcbutbepreparedtoadjustthislater.</p>\r\n<p>InmycaseIselectedaminimumof4GRamand64GStoragethefirsttime.</p>\r\n<p>Sortbypricelowtohigh,andloopthrough,findingwhatsupportthereisfor<ahref=\"https://twrp.me/Devices/\">TWRP</a>.Thatwilltellyouhowopenthephoneis.IftheManufacturersupport(thespiritof)unlocking,thenremovethemfromthelist.</p>\r\n<ul>\r\n<li>HTCsupportunlockingbutnotdon\'t give code to the developers so it\'suseless.</li>\r\n<li>MotorolasupportwasgoodbutsincethetakeoverbyLenovotheyhavestoppedsupportingunlocking.</li>\r\n<li>Googlephonesareunlockedandareidealfordevelopersbutaretooexpensive.</li>\r\n<li>XiaomirequiresyoutowaituntiltheEU14daynoquestionsaskedwarrantyhasexpired.</li>\r\n<li>Fairphonetooexpensive.</li>\r\n<li>PinePhonemaybeanoptionbutpeoplereportthecurrentversionbeingtooslow.</li>\r\n</ul>\r\n<p>Afterfindingaphonethatcanbeunlockedandrooted,thenchecktoseeifthereisan<em>official</em>versionfor<ahref=\"https://wiki.lineageos.org/devices/\">LineageOS</a></p>\r\n<p>Ifnophonemeetsalltherequirementsthentrythenextone.</p>\r\n<p>It\'s very likely you will not find a phone. You are then faced with the choice of adjusting your parameters, for example picking a more expensive model, but at the end of the day be prepared that you may not find a phone.</p>\r\n<p>If you do find a phone, it\'sverylikelythatitmaybeadifferentversionthantheonesupported.IhavehadtoreturnseveralphonesthatIhadunlockedandjusthopedthatthesupplierwouldtakethembackandrefundme.</p>\r\n<p>Evenonsupportedphones,especiallynewerones,it\'s quite often that a major piece of functionality will not work. I have had issues with no GPS on one phone, and bluetooth/wifi not working on another until files were manually edited on each reboot.</p>\r\n<p>Do not do this if you want a stress free life, and also if you are not willing to accept the waste of all the money, and time involved.</p>\r\n<h3 id=\"links\">Links</h3>\r\n<ul>\r\n<li><a href=\"https://tweakers.net/smartphones/vergelijken/\">Tweakers.net</a></li>\r\n<li><a href=\"https://twrp.me/Devices/\">TWRP</a></li>\r\n<li><a href=\"https://wiki.lineageos.org/devices/\">LineageOS</a></li>\r\n<li><a href=\"https://github.com/Genymobile/scrcpy\">scrcpy</a></li>\r\n<li><a href=\"https://tektab.com/2015/10/31/android-bootloaderfastboot-mode-and-recovery-mode-explained/\">Android bootloader/fastboot mode and recovery mode explained/Android boot process</a> October 31, 2015 Saad Faruque</li>\r\n<li><a href=\"https://www.pin
(3102,'2020-06-23','RFC 5005 Part 2 – Webcomics, subscribers and feed readers',902,'fluffy, Jamey and I go on for another ten minutes about how webcomic artists feel about feeds','<p>An interview with two passionate RFC 5005 fans on how to handle big Atom feeds</p>\r\n\r\n<p>This conversation took almost an hour, so I split it into two shows:</p>\r\n\r\n<ul>\r\n <li>Part 1 talks mostly about the RFC itself, what it means and why. <a href=\"https://hackerpublicradio.org/eps.php?id=3082\">HPR 3082</a></li>\r\n <li>Part 2 goes into personal experiences with the RFC and with syndication in general, in particular in the context of web comics.</li>\r\n</ul>\r\n\r\n<p>This is part 2.</p>\r\n\r\n<p>In this show I’m talking to:</p>\r\n\r\n<h3 id=\"fluffy\">fluffy</h3>\r\n\r\n<ul>\r\n <li>Federated social web:<br />\r\n<a href=\"https://queer.party/@fluffy\">https://queer.party/@fluffy</a></li>\r\n <li>Writes and makes things in several creative fields:<br />\r\n<a href=\"https://beesbuzz.biz/\">https://beesbuzz.biz/</a></li>\r\n <li>Publ is like a static site generator, but dynamic. It produces RFC 5005 archive feeds, of course:<br />\r\n<a href=\"https://publ.beesbuzz.biz/\">https://publ.beesbuzz.biz/</a></li>\r\n <li>Thoughts on ephemeral content vs content worth archiving and how they relate to protocols:<br />\r\n<a href=\"https://beesbuzz.biz/blog/5709-Keeping-it-personal\">https://beesbuzz.biz/blog/5709-Keeping-it-personal</a></li>\r\n</ul>\r\n\r\n<h3 id=\"jamey\">Jamey</h3>\r\n\r\n<ul>\r\n <li>Federated social web:<br />\r\n<a href=\"https://toot.cat/@jamey\">https://toot.cat/@jamey</a></li>\r\n <li>Blog:<br />\r\n<a href=\"https://minilop.net/\">https://minilop.net/</a></li>\r\n <li>Made a prototype full-history reader that follows RFC 5005 links:<br />\r\n<a href=\"https://reader.minilop.net/\">https://reader.minilop.net/</a></li>\r\n <li>Made a webcomic reader mostly mentioned in Part 2:<br />\r\n<a href=\"https://www.comic-rocket.com/\">https://www.comic-rocket.com/</a></li>\r\n <li>Made a WordPress plugin implementing RFC 5005:<br />\r\n<a href=\"https://github.com/jameysharp/wp-fullhistory\">https://github.com/jameysharp/wp-fullhistory</a></li>\r\n <li>Made an RFC 5005 archive feed synthesizer for sites with a predictable post frequency and URL structure:<br />\r\n<a href=\"https://github.com/jameysharp/predictable/\">https://github.com/jameysharp/predictable/</a><br />\r\nHosted at <a href=\"https://fh.minilop.net/\">https://fh.minilop.net/</a></li>\r\n <li>Was on HPR 9 years ago, talking about X.Org!<br />\r\n<a href=\"https://hackerpublicradio.org/eps.php?id=0825\">https://hackerpublicradio.org/eps.php?id=0825</a></li>\r\n</ul>\r\n\r\n<h2 id=\"conversation-notes\">Conversation notes</h2>\r\n\r\n<ul>\r\n <li>Back in 2002, Aaron Swartz published his joke MIME-header-based <em>RSS 3</em>:<br />\r\n<a href=\"https://www.aaronsw.com/weblog/000574\">https://www.aaronsw.com/weblog/000574</a><br />\r\nThe cultural context at the time and the rivalry between RSS 0.91+, RSS 1.0, RSS 2.0 and Atom deserves a show of its own.</li>\r\n</ul>\r\n',311,0,0,'CC-BY-SA','webcomics, rfc5005, atom, rss, feeds',0,0,1),
(3099,'2020-06-18','Linux Inlaws S01E08 The review of the review',2741,'In this short episode our two heroes rant about Linus, Transmeta, EdgeOS','<h2>S01E08: <a href=\"https://hackerpublicradio.org/eps.php?id=3099\" target=_blank>The review of the review</a></h2>\r\n<p>More shenanigans from our two heroes. In this short episode our two heroes rant about Linus and other old people, Transmeta and other history, discuss Martin\'sEdgeOSwoesanddiscoverthatMIPSisindeedaCPUarchitecturesupportedbystandardDebian.TheshowconcludeswithashortreviewofClaudio\'s <a href=https://hackerpublicradio.org/eps.php?id=3093>review</a> and poxes about the Arch wiki and Californication. You have been warned!</p>\r\n\r\n<h3>Links:</h3>\r\n<ul>\r\n<li>Linus Torvald\'s80columnrant:<ahref=https://lkml.iu.edu/hypermail/linux/kernel/2005.3/08168.htmltarget=_blank>https://lkml.iu.edu/hypermail/linux/kernel/2005.3/08168.html</a></li>\r\n<li>Linux\'s device tree explained: <a href=https://elinux.org/Device_Tree_Reference target=_blank>https://elinux.org/Device_Tree_Reference</a></li>\r\n<li>Debian packages for EdgeOS: <a href=https://help.ui.com/hc/en-us/articles/205202560-EdgeRouter-Add-Debian-Packages-to-EdgeOS target=_blank>https://help.ui.com/hc/en-us/articles/205202560-EdgeRouter-Add-Debian-Packages-to-EdgeOS</a></li>\r\n<li>Arch Wiki: <a href=https://wiki.archlinux.org target=_blank>https://wiki.archlinux.org</a></li>\r\n<li>Californication: <a href=https://www.sho.com/californication target=_blank>https://www.sho.com/californication</a></li>\r\n<li>The Italian music extract is courtesy of Christian Petermann from his piece Folk Festival (CC-BY-SA)</li>\r\n</ul>\r\n',384,111,1,'CC-BY-SA','Linus, Transmeta, EdgeOS, Arch, Californication, device tree ',0,0,1),
(3096,'2020-06-15','Unscripted ramblings on a walk: PC Building.',135,'I take a walk and discuss my experience building a new PC after having not done so for many years.','<p>I certainly want to say that this episode isn\'tabrag-a-thonaboutmynewrig.ItrytodiscusswhatsurprisedmemostabouthowPCbuildinghaschangedinthelast10-15years.</p>\r\n<p>Thepartsformybuild:</p>\r\n<ul>\r\n<li>AMDThreadripper1920X3.5GHz12-CoreProcessor</li>\r\n<li>ASRockX399TaichiATXsTR4Motherboard</li>\r\n<li>EVGA850B3,80+Bronze850W,FullyModularPSU</li>\r\n<li>NoctuaNH-U14STR4-SP3,Premium-GradeCPUCooler</li>\r\n<li>MSIGamingGeForceGT710</li>\r\n<li>FractalDesignDefineCcase</li>\r\n<li>CorsairLPX32GB(2x16GB)3200MHzC16DDR4DRAMMemoryKit</li>\r\n<li>GELIDGC-Extremethermalpaste</li>\r\n<li>Random500GBSSDfrommypartsbin</li>\r\n</ul>',241,57,0,'CC-BY-SA','pc,hardware,build,battlestation,discussion,review,walk',0,0,1),
(3101,'2020-06-22','Metrics',1553,'A layman\'sexplanationofthemathematicalconceptofmetric.','<p>Whetheryouarewritingasimpledartssimulation8-bitcomputergameoraretraversingthegalaxyElite-style,youmightwellfindyourselftanglingwiththemathematicalconceptknownasthemetric.InthisepisodeIdescribethemathematicalconceptofametricwhichIaddresswiththefollowingquestions.Briefanswersareprovidedbelowbuttheshow,Ihope,givesmorecontextandcolour.</p>\r\n<h3id=\"what-is-a-metric\">Whatisametric?</h3>\r\n<p>Atypeofrulerthatisusedinmathematics.</p>\r\n<h3id=\"why-not-just-use-a-ruler\">Whynotjustusearuler?</h3>\r\n<p>Youcanifallyouwanttodoismeasuredistancesinreallifebutifyouwanttoworkoutdistancesfromcoordinatesyouneedametric.</p>\r\n<h3id=\"whats-the-simplest-example-of-a-metric\">What\'s the simplest example of a metric?</h3>\r\n<p>In 1D, distance s equals change in x coordinate.</p>\r\n<h3 id=\"ok-can-i-have-a-more-interesting-example-please\">OK, can I have a more interesting example please?</h3>\r\n<p>On a flat 2D surface, distance squared is the change in x squared plus change in y squared.</p>\r\n<h3 id=\"isnt-that-pythagoras\">Isn\'tthatpythagoras?</h3>\r\n<p>Yes,itis,butusingtheworddistanceandtwoco-ordinates.</p>\r\n<h3id=\"what-other-co-ordinates-can-we-use-for-a-flat-2d-surface\">Whatotherco-ordinatescanweuseforaflat2Dsurface?</h3>\r\n<p>Thosexandyco-ordinatesarecalledCartesianco-ordinates.Insteadwecanusepolarco-ordinates:radiusr,andtheangleφ(orphi)measuredclockwisefromthevertical.Thesemightbemoreconvenientinsomecases,sayforadartboardcomputergame,orifyouareworkingwithacompassbearing,egheadeastfor1kmwouldbecomestartattheorigin(r=0)andmovewithphi=90°untilr=1km.</p>\r\n<h3id=\"does-pythagoras-still-work-in-polar-coords\">DoesPythagorasstillworkinpolarcoords?</h3>\r\n<p>Yesandno.No,itisnolongertruetosaythatdistancesquaredequalsradiussquaredplusφsquared,butsincethegeometryisthesame-aflat2Dsurface-wecansaythata<em>change</em>indistancesquaredequalsthe<em>change</em>inradiussquaredplusradiussquaredtimesthe<em>change</em>inφsquared.</p>\r\n<h3id=\"why-do-we-have-to-talk-about-changes-in-s-r-and-φ\">Whydowehavetotalkaboutchangesins,randφ?</h3>\r\n<p>Becauseoneofourcoordinatesnowappearsinthemetric.Thatis,theradiussquaredmultipliesontothechangeinφsquared.Thismeansthatachangeinφdependsonr.Inotherwords,biggercircleshavebiggercircumferences.Actually,it\'s more intricate than that, as we must deal with infinitesimals: quantities which are very, very, very small but not zero.</p>\r\n<h3 id=\"can-we-use-cartesian-or-polar-co-ordinates-on-the-surface-of-the-earth\">Can we use Cartesian or polar co-ordinates on the surface of the Earth?</h3>\r\n<p>Only over short distances, much smaller than the radius of the Earth which is 6400km. So up to about 100km that\'sfineformanypurposes,butnotwhenflyingaplaneovergreatdistances,sayLondontoSingapore.</p>\r\n<h3id=\"why-not\">Whynot?</h3>\r\n<p>ThesurfaceoftheEarthmaylooklocallyflatbutofcoursetheEarthhasacurved2Dsurface.Thismeansthatthissurfacehasanon-euclideangeometry,whichmeansthatPythagorasdoesnotholdandwecannotevendefineCartesianco-ordinates,letaloneusethem.</p>\r\n<h3id=\"i-want-to-know-more-or-my-mind-is-not-fully-blown\">IwanttoknowmoreORmymindisnotfullyblown.</h3>\r\n<p>Iwillprobablydomoreshowsonthis.</p>\r\n<h3id=\"can-i-have-some-links\">CanIhavesomelinks?</h3>\r\n<p>Sure:</p>\r\n<ul>\r\n<li><ahref=\"https://en.wikipedia.org/wiki/Alcubierre_drive\">Alcubierredrive</a></li>\r\n<li><ahref=\"https://en.wikipedia.org/wiki/Darts\">Dartboard</a></li>\r\n<li><ahref=\"https://en.wikipedia.org/wiki/Polar_coordinate_system\">Polarcoordinates</a></li>\r\n<li><ahref=\"https://en.wikiped
(3103,'2020-06-24','A warning about browser extensions and add-ons.',93,'A unmaintained extension lead to a popup storm','<p>\r\nI started getting popups while going to safe websites in chromium-browser. I disabled all browser extensions and then turned them back on individually. I found one that which was causing the problem and it is no longer on the app store. It was however still working and had not been revoked on my browser.\r\n</p>\r\n<p>\r\nPlease check your extensions and add-ons to make sure they are regularly updated.\r\n</p>',30,0,0,'CC-BY-SA','extensions,add-ons,firefox,chromium,chrome,thunderbird',0,0,1),
(3116,'2020-07-13','Unscripted ramblings on a walk: Crisis at The Manor',1137,'A walk and a talk about a lightning strike zapping a network.','<p>In an episode years ago, I talked about \"libernil.net\" (a network for my family and friends). That network grew to be known as \"The Manor\" (manor.space) and has hosted more friends over time. Not too long ago our primary infrastructure was knocked out by lightning. On today\'swalk,Italkalittlebitaboutwhathappened.</p>',241,0,1,'CC-BY-SA','networks,post-mortem,retrospective,community,walk,rambling',0,0,1),
(3108,'2020-07-01','Fuguita as a Desktop',3148,'I cover all the wonderful things about using Fuguita as your Desktop','<p>I cover many issues about using OpenBSD based Fuguita as your Desktop. I wouldn\'thaveitanyotherway,IuseFuguitaformymainDesktopthesedays.</p>\r\n',377,0,0,'CC-BY-SA','OpenBSD,Fuguita,Desktop,Portability,Sanity',0,0,1),
(3119,'2020-07-16','Converting to FFS2',2426,'FFS2, FuguIta encryption and UUID\'sand9voltbatteries','<p>ItalkaboutconvertingmyI386DellMini10runningOpenBSD6.7tothenewFFS2filesystem.IalsotalkaboutthetwonewfeaturesofFuguIta6.7whicharedataencryptionandtheuseofUUID\'s in the noasks file which is used for automatic booting. I also talk about 9 volt batteries and high technology transistor radios. I am also surprised by an SD card discovery I found on my Dell Mini 10.</p>\r\n',377,0,0,'CC-BY-SA','FFS2, SD cards, OpenBSD',0,0,1),
(3120,'2020-07-17','How open are roleplaying games?',2767,'Klaatu and mcnalu talk through what open and free mean in roleplaying games.','<p>Roleplaying games open you up to a seemingly unlimited array of possibilities taking place in many universes. But truly unlimited freedom would literally mean nothing without a context of history, lore and rules for your adventures. Klaatu and mcnalu talk through what open and free mean in roleplaying games with a particular focus on Dungeons & Dragons which Klaatu has been been running for the HPR community in recent months.</p>\r\n<p>If you want to play D&D you can go to the website of its publisher <a href=\"https://dnd.wizards.com/\">Wizards of the Coast</a> and browse for the player and other manuals. But if you want to play but can\'torwon\'t pay then you can use the <a href=\"https://dnd.wizards.com/articles/features/systems-reference-document-srd\">System Reference Document (SRD)</a> which is published under the <a href=\"https://www.opengamingfoundation.org/ogl.html\">Open Game License (OGL)</a>. You can even use that document to create and publish your own adventures.</p>\r\n<p>However, if you want to publish an adventure with the full set of D&D rules from official manuals — every monster and every spell — then you need the publisher\'sapproval.TodothisforD&Dyouneedtopublishthroughthe<ahref=\"https://support.dmsguild.com/hc/en-us/articles/360024677993-Getting-Started-on-Dungeon-Masters-Guild\">DungeonMasters\' Guild</a>.</p>\r\n',268,0,0,'CC-BY-SA','open,free,roleplaying,licensing',0,0,1),
(3128,'2020-07-29','Linux Inlaws S01E11 The Python Bumper Part 2',4065,'The chaps continue to shed more light on our beloved programming language','<ul>\r\n <li>TIOBE index: <a href=https://www.tiobe.com/tiobe-index target=_blank>https://www.tiobe.com/tiobe-index</a></li>\r\n <li>Stackoverflow index: <a href=https://insights.stackoverflow.com/survey/2020#technology-most-loved-dreaded-and-wanted-languages-loved target=_blank>https://insights.stackoverflow.com/survey/2020#technology-most-loved-dreaded-and-wanted-languages-loved</a></li>\r\n <li>PEP 520 (the Zen of Python): <a href=https://www.python.org/dev/peps/pep-0020 target=_blank>https://www.python.org/dev/peps/pep-0020</a></li>\r\n <li>PEP 572: <a href=https://www.python.org/dev/peps/pep-0572 target=_blank>https://www.python.org/dev/peps/pep-0572</a></li>\r\n <li>PEP 572 discussion: <a href=https://twitter.com/llanga/status/989670881176702976 target=_blank>https://twitter.com/llanga/status/989670881176702976</a></li>\r\n <li>Claudio\'slink:<ahref=https://www.kevra.org/TheBestOfNext/DifferentNeXTSpellings/DifferentNeXTSpellings.htmltarget=_blank>https://www.kevra.org/TheBestOfNext/DifferentNeXTSpellings/DifferentNeXTSpellings.html</a></li>\r\n<li>SecretDiaryofaCallGirl:<ahref=https://en.wikipedia.org/wiki/Secret_Diary_of_a_Call_Girltarget=_blank>https://en.wikipedia.org/wiki/Secret_Diary_of_a_Call_Girl</a></li>\r\n<li>SophieWilsoninterview:<ahref=\"https://www.youtube.com/watch?v=R2SdSLCMKEA&t=1852s\"target=_blank>https://www.youtube.com/watch?v=R2SdSLCMKEA&t=1852s</a></li>\r\n</ul>\r\n\r\n\r\n',384,111,1,'CC-BY-SA','Python3.9,MortgagesinNewYork,Williamsburg,Wirecard,middle-agedblondes',0,0,1),
(3106,'2020-06-29','Linux Inlaws S01E09 Postgres',3851,'The lads talk to Bruce Momjian Postgres evangelist','<h2>S01E09:</h2>\r\n<p><a href=\"https://hackerpublicradio.org/eps.php?id=3106\" target=_blank>Postgres</a><br/>\r\nListen to our two OAP interviewing Bruce\r\nMomjian, Postgres evangelist and long-time supporter of this popular SQL\r\ndatabase. Expect lots of strong language around SQL and NoSQL topics and\r\nsome ranting about MINT\'sattitudetowardssnaps,afunbreachofahealth\r\nserviceproviderintheUKandwhybroadcastersshouldstickto\r\nmonopolies.</p>\r\n<ul>\r\n<li>MINTChromiumissue:<ahref=https://blog.linuxmint.com/?p=3766target=_blank>https://blog.linuxmint.com/?p=3766</a></li>\r\n<li>PostgreSQL:<ahref=https://www.postgresql.orgtarget=_blank>https://www.postgresql.org</a></li>\r\n<li>BabylonHealthbreach:<ahref=https://www.bbc.com/news/technology-52986629target=_blank>https://www.bbc.com/news/technology-52986629</a></li>\r\n</ul>',384,111,1,'CC-BY-SA','Postgres,SQL,NoSQL,MINT',0,0,1),
(3107,'2020-06-30','Generating comfortable passwords',1800,'generating passwords to be comfortably type-able','<h2 id=\"random-password-generation\">Random Password Generation</h2>\r\n<p>First implementation: 14 character long with 6 letters and 8 digits</p>\r\n<pre><code>#!/usr/bin/env python3\r\n# file: passgen-v1.py\r\n\r\nimport random\r\n\r\nLETTERS = "abcdefghijklmnopqrstuvwxyz"\r\n\r\nif __name__ == "__main__":\r\n\r\n passwd = []\r\n\r\n for i in range(6):\r\n passwd.append(random.choice(LETTERS))\r\n\r\n for i in range(8):\r\n passwd.append(random.choice("1234567890"))\r\n\r\n print("".join(passwd))\r\n</code></pre>\r\n<p>The passwords that come out of this are a bit difficult to type so I forced it to alternate between the left and right hands</p>\r\n<pre><code>#!/usr/bin/env python3\r\n# file: passgen-v2.py\r\n\r\nimport random\r\n\r\nLEFTS = "',.pyaoeui;qjkx"\r\nRIGHTS = "fgcrldhdhtns-bmwvz"\r\n\r\nif __name__ == "__main__":\r\n\r\n passwd = []\r\n\r\n for i in range(6):\r\n if i % 2 == 0:\r\n passwd.append(random.choice(LEFTS))\r\n else:\r\n passwd.append(random.choice(RIGHTS))\r\n\r\n for i in range(8):\r\n if i % 2 == 0:\r\n passwd.append(random.choice("123456"))\r\n else:\r\n passwd.append(random.choice("7890"))\r\n\r\n print("".join(passwd))\r\n</code></pre>\r\n<p>The regularity of switching between left and right hands (intuitively, and almost surely) decreases the entropy of the password, so use markov models to make that happen for the most part but critically NOT enforce it.</p>\r\n<pre><code>#!/usr/bin/env python3\r\n# file: passgen-v3.py\r\n\r\nimport random\r\n\r\nLs = [\r\n "aoeui", # L1\r\n "',.py", # L2\r\n ";qjkx", # L3\r\n "123456", # L4\r\n "-snthd", # R1\r\n "lrcgf", # R2\r\n "zvwmb", # R3\r\n "7890" # R4\r\n]\r\n\r\nA = [[ .03, .03, .03, .01, .27, .27, .27, .09],\r\n [ .03, .03, .03, .01, .27, .27, .27, .09],\r\n [ .03, .03, .03, .01, .27, .27, .27, .09],\r\n [.004, .003, .003, .09, .03, .03, .03, .81],\r\n [ .27, .27, .27, .09, .03, .03, .03, .01],\r\n [ .27, .27, .27, .09, .03, .03, .03, .01],\r\n [ .27, .27, .27, .09, .03, .03, .03, .01],\r\n [ .03, .03, .03, .81, .004, .003, .003, .09]]\r\n\r\npi = [ .41, .03, .03, .03, .41, .03, .03, .03]\r\n\r\ndef sample( l ):\r\n l_partial = [ sum(l[:i+1],0) for i in range(len(l))]\r\n u = random.uniform(0,1)\r\n for j,v in enumerate(l_partial):\r\n if v > u:\r\n return j\r\n\r\nif __name__ == "__main__":\r\n\r\n passwd = []\r\n\r\n s = sample(pi)\r\n for i in range(20):\r\n s = sample(A[s])\r\n passwd.append(random.choice(Ls[s]))\r\n\r\n print("".join(passwd))\r\n</code></pre>\r\n<p>For increased entropy should also consider peppering in a few upper case characters.</p>\r\n<pre><code>#!/usr/bin/env python3\r\n# file: passgen-v3.py\r\n\r\nimport random\r\n\r\nLs = [\r\n "aoeui", # L1\r\n "',.py", # L2\r\n ";qjkx", # L3\r\n "123456", # L4\r\n "-snthd", # R1\r\n "lrcgf", # R2\r\n "zvwmb", # R3\r\n "7890" # R4\r\n]\r\n\r\nA = [[ .03, .03, .03, .01, .27, .27, .27, .09],\r\n [ .03, .03, .03, .01, .27, .27, .27, .09],\r\n [ .03, .03, .03, .01, .27, .27, .27, .09],\r\n [.004, .003, .003, .09, .03, .03, .03, .81],\r\n [ .27, .27, .27, .09, .03, .03, .03, .01],\r\n [ .27, .27, .27, .09, .03, .03, .03, .01],\r\n [ .27, .27, .27, .09, .03, .03, .03, .01],\r\n [ .03, .03, .03, .81, .004, .003, .003, .09]]\r\n\r\npi = [ .41, .03, .03, .03, .41, .03, .03, .03]\r\n\r\nUPPER=.1\r\n\r\ndef sample( l ):\r\n l_partial =
(3109,'2020-07-02','Matchbox Restoration Part 4',277,'In this the 4th in the series Tony discusses paint removal on the castings of the MK10 Jaguars','<p>Good day to all in HPR land, this is Tony Hughes coming to you again from Blackpool in the UK. To recap this is the 4th in a series of shows about my hobby of restoring Matchbox and other Die cast models. In the last show I went through the process of stripping the models down to their component parts. In this episode I will discuss the process I use to remove the paint and prepare the casting for repainting and reassembly.</p>\r\n<p>So first off, and I should have said this last episode, a health and safety warning. If there are young people listening to this some of the things talked about on today\'sshowrequireparentalsupervision,andarenotrecommendedforyoungpeopleunlessproperlysupervised.Sowiththatpublicserviceannouncementoutofthewaylet\'s get on with the show.</p>\r\n<p>So before the base can be put in the paint stripper the wheels and axles need to be removed. As you can see from the picture there are flanges holding on the wheels to the metal axle and one side is only a small flange.</p>\r\n<p>Picture 000<br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3109/img_000.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3109/img_000_thumbnail.jpg\" alt=\"Picture 000\" /></a></p>\r\n<p>This can be removed with a small needle file or a small rotary file attachment for my rotary tool. Once removed the bases can be put in with the rest of the casting for paint removal.</p>\r\n<p>Picture 001<br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3109/img_001.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3109/img_001_thumbnail.jpg\" alt=\"Picture 001\" /></a></p>\r\n<p>So let\'stalkaboutpaintremoval,obviouslythefirstoneyouwillthinkofissomekindofchemicalpaintstripperandIuse2differentmethodsofthis.ThefirstandprobablythesafestinthefirstinstanceisacommercialpaintstripperfromoneofthechainDIYstoreshereintheUK,B&Q.Thereisalocalstoreabout10minutesdrivefrommesoitisconvenientduringnormalshoppingtimesjusttopopinandgraba2.5LtrcontaineroftheirownbrandDIALpaintstripperthatisfantasticforthisjobandquiteeconomic.</p>\r\n<p>Thesecondisalittlemoreaggressiveifyouneedfastresultsbutrequiresalittlemoreinthewayofcarewhenusingitasitisverycorrosiveandcanbeharmfulifthefumesarebreathedin,ortheproductgetsontoyourskinorinyoureyes.ThisiscausticsodaandIbuythisthrougheBayandhaveitdeliveredin1Kgpouches.Itneedstobestoredinanairtightcontainerinadryenvironmenttokeepitfromgettingdampasthisisapotentialfirehazardasifitgetscontaminatedbuymoistureachemicalreactionstartswhichgeneratesheat.Soifyougowiththecausticsodamethodyouneedtotakeadequatesafetyprecautions.WiththeJaguarImainlyusedthecausticsodamethodtoremovethepaintbutonecastingIputinthepaintstrippertoshowthatmethod.</p>\r\n<p>Withthecausticsodaplacethecastingsinajarwithenoughroomtocoverwithjustboiledwatersothatitdoesnotoverflowwhenthecausticsodacrystalsareaddedslowly,Iusealonghandleteaspoonandadd2-3teaspoonsofthesodauntilithasagoodfizz.Thenleaveforabout15minutesbutthelongerthebetter,Isometimesdothisandleaveovernightandthisgivesagreatresult.Remembertoweargloveswhendoingthistopreventgettingthecausticonyourhands.</p>\r\n<p>Picture002<br/>\r\n<ahref=\"https://hackerpublicradio.org/eps/hpr3109/img_002.jpg\"><imgsrc=\"https://hackerpublicradio.org/eps/hpr3109/img_002_thumbnail.jpg\"alt=\"Picture 002\"/></a></p>\r\n<p>Picture003<br/>\r\n<ahref=\"https://hackerpublicradio.org/eps/hpr3109/img_003.jpg\"><imgsrc=\"https://hackerpublicradio.org/eps/hpr3109/img_003_thumbnail.jpg\"alt=\"Picture 003\"/></a></p>\r\n<p>Picture004<br/>\r\n<ahref=\"https://hackerpublicradio.org/eps/hpr3
(3403,'2021-08-18','Forth on microcontrollers',1341,'A little more about forth and a couple of chapters in the novel of my life','<ul>\r\n<li><p>microlisp<br />\r\nlisp on avr microcontrollers (and others)<br />\r\n<a href=\"https://www.ulisp.com/\" class=\"uri\">https://www.ulisp.com/</a></p></li>\r\n<li><p>ben eater<br />\r\n<a href=\"https://eater.net/\" class=\"uri\">https://eater.net/</a></p></li>\r\n<li><p>computer on breadboards<br />\r\n<a href=\"https://6502.org/\" class=\"uri\">https://6502.org/</a></p></li>\r\n<li><p>forth on avr microcontrollers</p>\r\n<ul>\r\n<li>eforth <a href=\"https://forth.org/eforth.html\" class=\"uri\">https://forth.org/eforth.html</a></li>\r\n<li>amforth <a href=\"https://amforth.sourceforge.net/\" class=\"uri\">https://amforth.sourceforge.net/</a></li>\r\n<li>flash forth <a href=\"https://www.flashforth.com/\" class=\"uri\">https://www.flashforth.com/</a></li>\r\n</ul></li>\r\n<li><p>incantations</p></li>\r\n</ul>\r\n<pre><code> sudo avrdude -c usbtiny -p m328p -e -U flash:w:uno.hex:i -U eeprom:w:uno.eep.hex:i\r\n sudo avrdude -c usbtiny -p m328p -e -U flash:w:uno.hex:i -U eeprom:w:uno.eep.hex:i\r\n sudo avrdude -P usbtiny -p m328p -e -U efuse:w:0x05:m -U hfuse:w:0xD9:m -U lfuse:w:0xFF:m</code></pre>',326,0,0,'CC-BY-SA','programming, history, arduino',0,0,1),
(3112,'2020-07-07','finishing the frame on the long wheelbase recumbent',529,'a narrated slideshow of the next steps in building a bespoke recumbent bicycle','<ul>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=1282\">hpr 1282</a> john kulps efforts</li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2869\">hpr 2869</a> part one of my build</li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2875\">hpr 2875</a> part two</li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2962\">hpr 2962</a> part three</li>\r\n</ul>\r\n<!-- - -->\r\n<ul>\r\n<li>recycled recumbent can be found at:<br />\r\n<a href=\"https://sites.google.com/site/recycledrecumbents/home\" class=\"uri\">https://sites.google.com/site/recycledrecumbents/home</a></li>\r\n</ul>\r\n<p>Rear triangle in jig<br />\r\n<img src=\"https://hackerpublicradio.org/eps/hpr3112/img_000.jpg\" alt=\"Rear triangle in jig\" /></p>\r\n<p>Close up<br />\r\n<img src=\"https://hackerpublicradio.org/eps/hpr3112/img_001.jpg\" alt=\"Close up\" /></p>\r\n<p>View from the front<br />\r\n<img src=\"https://hackerpublicradio.org/eps/hpr3112/img_002.jpg\" alt=\"View from the front\" /></p>\r\n<p>Jig ready for bending<br />\r\n<img src=\"https://hackerpublicradio.org/eps/hpr3112/img_003.jpg\" alt=\"Jig ready for bending\" /></p>\r\n<p>Bending process complete<br />\r\n<img src=\"https://hackerpublicradio.org/eps/hpr3112/img_004.jpg\" alt=\"Bending process complete\" /></p>\r\n<p>Jigging up rear triangle onto frame<br />\r\n<img src=\"https://hackerpublicradio.org/eps/hpr3112/img_005.jpg\" alt=\"Jigging up rear triangle onto frame\" /></p>\r\n<p>Rear triangle brazed to frame<br />\r\n<img src=\"https://hackerpublicradio.org/eps/hpr3112/img_006.jpg\" alt=\"Rear triangle brazed to frame\" /></p>\r\n<p>Making emt bottom rails<br />\r\n<img src=\"https://hackerpublicradio.org/eps/hpr3112/img_007.jpg\" alt=\"Making emt bottom rails\" /></p>\r\n<p>Prying cuts open<br />\r\n<img src=\"https://hackerpublicradio.org/eps/hpr3112/img_008.jpg\" alt=\"Prying cuts open\" /></p>\r\n<p>Finished and ready to fit in frame<br />\r\n<img src=\"https://hackerpublicradio.org/eps/hpr3112/img_009.jpg\" alt=\"Finished and ready to fit in frame\" /></p>\r\n<p>Emt bending tool<br />\r\n<img src=\"https://hackerpublicradio.org/eps/hpr3112/img_010.jpg\" alt=\"Emt bending tool\" /></p>\r\n<p>Bottom rails ready for brazing<br />\r\n<img src=\"https://hackerpublicradio.org/eps/hpr3112/img_011.jpg\" alt=\"Bottom rails ready for brazing\" /></p>\r\n<!-- picture01-rear-triangle-in-jig.jpg -->\r\n<!-- Rear triangle in jig -->\r\n<!-- picture02-triangle-close-up.jpg -->\r\n<!-- Close up -->\r\n<!-- picture03-triangle-front-view.jpg -->\r\n<!-- View from the front -->\r\n<!-- picture04-bending-jig.jpg -->\r\n<!-- Jig ready for bendoing -->\r\n<!-- picture05-triangle-bend-complete.jpg -->\r\n<!-- Bending process complete -->\r\n<!-- picture06-rear-triangle-on-frame.jpg -->\r\n<!-- Jigging up rear triangle onto frame -->\r\n<!-- picture07-rear-triangle-brazed.jpg -->\r\n<!-- Rear triangle brazed to frame -->\r\n<!-- picture08-emt-opening.jpg -->\r\n<!-- Making emt bottom rails -->\r\n<!-- picture09-prying-open.jpg -->\r\n<!-- Prying cuts open -->\r\n<!-- picture10-say-ahh.jpg -->\r\n<!-- Finished and ready to fit in frame -->\r\n<!-- picture11-bending-tool.jpg -->\r\n<!-- Emt bending tool -->\r\n<!-- picture12-bottom-rails-ready-to-braze.jpg -->\r\n<!-- Bottom rails ready for brazing -->\r\n',326,115,0,'CC-BY-SA','bicycle, recumbent',0,0,1),
(3130,'2020-07-31','More Quick Tips',667,'This time tips onNvidia ffmpeg transcoding Fallout Perks Late to Movies,Shared 2FA,Time to leave app','<ol type=\"1\">\r\n<li>I talk about using Nvidia to quickly transcode</li>\r\n<li>Go over fallout 76 perks</li>\r\n<li>Show up to movies 20min late to miss th BS</li>\r\n<li>Shared 2FA because everybody uses SMS for some reason even tho the feds say now not to ... it took us 10 years to get here lol</li>\r\n<li>Time to leave app ! never be late to anything again... LOL .. you wish !</li>\r\n</ol>\r\n<p>-rmccurdy.com</p>\r\n',36,0,1,'CC-BY-SA','Nvidia ffmpeg transcoding,Fallout Perks,Late to Movies,Shared 2FA,Time to leave app',0,0,1),
(3135,'2020-08-07','Quick Tips for May 20 20',977,'BlueTooth,Carseats,tweezers,waffles ','<ol type=\"1\">\r\n<li>Talk about Bluetooth...</li>\r\n<li>We can put a man on the moon but we can\'tmakeacarseatthatdoesn\'t make me want to murder people when I try to move it ...</li>\r\n<li>Sharpen those tweezers!</li>\r\n<li>Waffffffffelz! YUM!</li>\r\n</ol>',36,0,1,'CC-BY-SA','BlueTooth,Carseats,tweezers,waffles ',0,0,1),
(3140,'2020-08-14','GIMP: Selection Tools',962,'The key to using GIMP effectively is to select the area you want to work on.','<p>Selection Tools define the area that other tools will work within. For example, if you want to add color to an image, you probably want to add it to a specific area, not to the entire image. Selection Tools help you to pick the area precisely, and are useful for photo retouching purposes.</p>\r\n<h2 id=\"links\">Links:</h2>\r\n<ul>\r\n<li><a href=\"https://docs.gimp.org/2.8/en/\">https://docs.gimp.org/2.8/en/</a></li>\r\n<li><a href=\"https://www.ahuka.com/gimp/tools-selection/\">https://www.ahuka.com/gimp/tools-selection/</a></li>\r\n</ul>\r\n',198,113,0,'CC-BY-SA','GIMP, images, photos, graphics, selection',0,0,1),
(3150,'2020-08-28','GIMP: Paint Tools',1097,'With Paint Tools you begin to operate on the image.','<p>Paint Tools are where you begin to add things to an image. You can add a large variety of things depending on the tool, from thin lines to broad strokes, to gradients, and so on.</p>\r\n<h2 id=\"links\">Links:</h2>\r\n<ul>\r\n<li><a href=\"https://docs.gimp.org/2.8/en/\">https://docs.gimp.org/2.8/en/</a></li>\r\n<li><a href=\"https://www.ahuka.com/gimp/paint-tools/\">https://www.ahuka.com/gimp/paint-tools/</a></li>\r\n</ul>\r\n',198,113,0,'CC-BY-SA','GIMP, images, photos, graphics, paint, draw',0,0,1),
(3160,'2020-09-11','GIMP: Transform Tools',992,'With Transform Tools you can stretch, move, and crop the image.','<p>Transform Tools are where you start to manipulate an image. You can move it around, stretch it, rotate it, crop it, and so on. This is the third of the four groups of tools we will look at for GIMP.</p>\r\n<h2 id=\"links\">Links:</h2>\r\n<ul>\r\n<li><a href=\"https://docs.gimp.org/2.8/en/\" class=\"uri\">https://docs.gimp.org/2.8/en/</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Transformation_matrix\" class=\"uri\">https://en.wikipedia.org/wiki/Transformation_matrix</a></li>\r\n<li><a href=\"https://www.ahuka.com/gimp/transform-tools/\" class=\"uri\">https://www.ahuka.com/gimp/transform-tools/</a></li>\r\n</ul>\r\n',198,113,0,'CC-BY-SA','GIMP, images, photos, graphics, transform',0,0,1),
(3113,'2020-07-08','OpenJDK 15 - Unsafe Garbage',893,'We take a quick look at what is coming in JDK 15','<p><a href=\"https://youtu.be/7duUZYvNFWw\">Youtube: OpenJDK 15 - Unsafe Garbage</a></p>\r\n<p><a href=\"https://openjdk.java.net/jeps/339\">339: Edwards-Curve Digital Signature Algorithm (EdDSA)</a></p>\r\n<p><a href=\"https://openjdk.java.net/jeps/360\">360: Sealed Classes (Preview)</a></p>\r\n<p><a href=\"https://openjdk.java.net/jeps/371\">371: Hidden Classes</a></p>\r\n<p><a href=\"https://openjdk.java.net/jeps/372\">372: Remove the Nashorn JavaScript Engine</a></p>\r\n<p><a href=\"https://openjdk.java.net/jeps/373\">373: Reimplement the Legacy DatagramSocket API</a></p>\r\n<p><a href=\"https://openjdk.java.net/jeps/374\">374: Disable and Deprecate Biased Locking</a></p>\r\n<p><a href=\"https://openjdk.java.net/jeps/375\">375: Pattern Matching for instanceof (Second Preview)</a></p>\r\n<p><a href=\"https://openjdk.java.net/jeps/377\">377: ZGC: A Scalable Low-Latency Garbage Collector</a></p>\r\n<p><a href=\"https://openjdk.java.net/jeps/378\">378: Text Blocks</a></p>\r\n<p><a href=\"https://openjdk.java.net/jeps/379\">379: Shenandoah: A Low-Pause-Time Garbage Collector</a></p>\r\n<p><a href=\"https://openjdk.java.net/jeps/381\">381: Remove the Solaris and SPARC Ports</a></p>\r\n<p><a href=\"https://openjdk.java.net/jeps/383\">383: Foreign-Memory Access API (Second Incubator)</a></p>\r\n<p><a href=\"https://openjdk.java.net/jeps/384\">384: Records (Second Preview)</a></p>\r\n<p><a href=\"https://openjdk.java.net/jeps/385\">385: Deprecate RMI Activation for Removal</a></p>\r\n',382,0,0,'CC-BY-SA','java, news',0,0,1),
(3118,'2020-07-15','Linux Inlaws S01E10 The Python Bumper Part 1',5436,'A discussion of Python questions and their answers (part 1). Plus news on Brad and Alia','<ul>\r\n <li>Linux 5.8RC1: <a href=\"https://www.phoronix.com/scan.php?page=news_item&px=Linux-5.8-rc1-Released\" target=_blank>https://www.phoronix.com/scan.php?page=news_item&px=Linux-5.8-rc1-Release\r\nd</a></li>\r\n <li>Stackless Python: <a href=\"https://github.com/stackless-dev/stackless/wiki\" target=_blank>https://github.com/stackless-dev/stackless/wiki</a></li>\r\n <li>Python 3 documentation: <a href=\"https://docs.python.org/3\" target=_blank>https://docs.python.org/3</a></li>\r\n <li>Guido van Rossum: <a href=\"https://gvanrossum.github.io\" target=_blank>https://gvanrossum.github.io</a></li>\r\n <li>Python Enhancement Proposals (PEPs): <a href=\"https://www.python.org/dev/peps\" target=_blank>https://www.python.org/dev/peps</a></li>\r\n <li>PEP 404: <a href=\"https://www.python.org/dev/peps/pep-0404\" target=_blank>https://www.python.org/dev/peps/pep-0404</a></li>\r\n <li>PEP 572: <a href=\"https://www.python.org/dev/peps/pep-0572\" target=_blank>https://www.python.org/dev/peps/pep-0572</a></li>\r\n <li>Brad & Alia: <a href=\"https://www.gala.de/stars/news/l_a__news/brad-pitt--ist-er-mit-dieser-schauspielerin-zusammen--22244236.html\" target=_blank>https://www.gala.de/stars/news/l_a__news\r\n/brad-pitt--ist-er-mit-dieser-schauspielerin-zusammen--22244236.html</a></li>\r\n</ul>',384,111,1,'CC-BY-SA','Python, PEP, Linux, Alia Shawkat, Brad Pitt, Stackless Python',0,0,1),
(3117,'2020-07-14','The joy of retro computing',1914,'Knightwise talks about the old computers in his attic and how it is a loverly geek getaway','<p>Knightwise talks about his collection of old macs and pc\'sandhowheusesthemasalittle\"getaway\"oftherushofmoderndaylife.Showrecordedinthecar,excusetheroadnoise.</p>',111,0,0,'CC-BY-SA','Retrocomputer',0,0,1),
(3123,'2020-07-22','Arduino controlled Christmas lights',170,'Controlling Christmas LED lights with an Arduino','<ol type=\"1\">\r\n<li><p>Inspired by an Instructable project</p>\r\n<p><a href=\"https://www.instructables.com/id/LED-VU-Meter-With-Arduino-UNO\">https://www.instructables.com/id/LED-VU-Meter-With-Arduino-UNO</a></p></li>\r\n<li><p>Started the project with Arduino Uno.</p>\r\n<ul>\r\n<li>Found that power it with the barrel plug made audio input stable</li>\r\n<li>Tested this theory by using USB power</li>\r\n<li>Suspect this was due to grounding not being as good with the USB</li>\r\n<li>This caused LED\'stolightevenwithoutanaudioinput</li>\r\n<li>EndedupusingangenericArduinoNanotocontroltheproject</li>\r\n</ul></li>\r\n<li><p>ModifiedanaudiomicpreamplifierfromAmazontoconditiontheoutputfromthelaptopmusicsource</p></li>\r\n<li><p>RantheoutputfromthistoA0ontheArduino</p></li>\r\n<li><p>Splitthesignalouttoanexternalspeaker</p></li>\r\n<li><p>UseddigitaloutputslistedinthesketchtopowertheLEDindicators</p>\r\n<ul>\r\n<li>Forreference,asketchistheprogramthattheArduinorunsthroughaloop.</li>\r\n</ul></li>\r\n<li><p>Usedpins10to12asAnalogWritepintoprovidethepowertothesolidstaterelays.</p></li>\r\n<li><p>Usedadremeltoseparatethepowertothehotsideofthetwopoweroutlets</p>\r\n<ul>\r\n<li>UsedthreeoftheoutletstopowerthreestringsofChristmastreeLEDlights.</li>\r\n<li>UsedtheotheroutlettopowertheArduino</li>\r\n</ul></li>\r\n<li><h4id=\"bonus\">Bonus</h4>\r\n<ul>\r\n<li>Usingtheseparticularsolidstaterelays,thereisstilla10Vacoutputin<em>off</em>state.Itactuallyworkedforgood,asthelightsareatanicebrightnesswithoutamusicinput.</li>\r\n<li>KindlyleaveanoteinthecommentsifthisiscommontoSolidStaterelays.</li>\r\n</ul></li>\r\n</ol>\r\n<h3id=\"links\">Links:</h3>\r\n<h4id=\"gy-max4466-electret-microphone-amplifier\">GY-MAX4466ElectretMicrophoneAmplifier</h4>\r\n<p><ahref=\"https://www.amazon.com/gp/product/B07C3HXPJ9/ref=ppx_yo_dt_b_search_asin_title?ie=UTF8&psc=1\">https://www.amazon.com/gp/product/B07C3HXPJ9/ref=ppx_yo_dt_b_search_asin_title?ie=UTF8&psc=1</a></p>\r\n<h4id=\"solid-state-relay-on-ebay\">SolidStaterelayonEbay</h4>\r\n<p><ahref=\"https://www.ebay.com/itm/25A-40A-SSR-25DA-SSR-40DA-250V-Solid-State-Relay-Module-Alloy-Heat-Sink/401478280169?hash=item5d79f863e9:g:dkwAAOSwiqFaX3f8\">https://www.ebay.com/itm/25A-40A-SSR-25DA-SSR-40DA-250V-Solid-State-Relay-Module-Alloy-Heat-Sink/401478280169?hash=item5d79f863e9:g:dkwAAOSwiqFaX3f8</a></p>\r\n<h4id=\"elegoo-for-arduino-nano-v3.0\">ELEGOOforArduinoNanoV3.0</h4>\r\n<p><ahref=\"https://www.amazon.com/gp/product/B0713XK923/ref=ppx_yo_dt_b_search_asin_title?ie=UTF8&psc=1\">https://www.amazon.com/gp/product/B0713XK923/ref=ppx_yo_dt_b_search_asin_title?ie=UTF8&psc=1</a></p>\r\n<h4id=\"analogwrite\">AnalogWrite</h4>\r\n<p><ahref=\"https://www.arduino.cc/en/pmwiki.php?n=Reference/AnalogWrite\">https://www.arduino.cc/en/pmwiki.php?n=Reference/AnalogWrite</a></p>\r\n<p><ahref=\"https://www.arduino.cc/en/Tutorial/AnalogInOutSerial\">https://www.arduino.cc/en/Tutorial/AnalogInOutSerial</a></p>\r\n<h3id=\"my-video\">Myvideo</h3>\r\n<p><ahref=\"https://archive.org/details/vid-20191217-192821-no-audio\">Sound\r\nReactiveChristmaslightsonArchive.org</a></p>\r\n<p><imgsrc=\"https://ia801506.us.archive.org/34/items/screenshot-20200630-014101/Screenshot_20200630-014101.png\"style=\"width:200px;\"/></p>\r\n<p><strong>Edit:</strong></p>\r\n<p>HereisthesongImeanttoadd,toseeifitmatchesmyvideoofthelights.</p>\r\n<p>ItistheTransSiberianOrchestra,CaroloftheBells.</p>\r\n<p><ahref=\"https://m.youtube.com/watch?v=sCabI3MdV9g\"target=\"_blank\">https://m.youtube.com/watch?v=sCabI3MdV9g</a></p>\r\n',318,91,0,'CC-BY-SA','Arduino,Christmas,lights,Solidstaterelays',0,0,1),
(3170,'2020-09-25','GIMP: Color Tools',1199,'With Color Tools you can adjust the colors and brightness of an image.','<p>Color Tools are where you can adjust the colors and brightness of an image.You can change the color balance, adjust individual colors or transparency without affecting other colors, and so on. This is the fourth of the four general groups of tools we will look at for GIMP. There will also be some miscellaneous tools.</p>\r\n<h2 id=\"links\">Links:</h2>\r\n<ul>\r\n<li><a href=\"https://docs.gimp.org/2.8/en/\" class=\"uri\">https://docs.gimp.org/2.8/en/</a></li>\r\n<li><a href=\"https://osdn.net/projects/separate-plus/\" class=\"uri\">https://osdn.net/projects/separate-plus/</a></li>\r\n<li><a href=\"https://learn.leighcotnoir.com/artspeak/elements-color/hue-value-saturation/\" class=\"uri\">https://learn.leighcotnoir.com/artspeak/elements-color/hue-value-saturation/</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Complementary_colors\" class=\"uri\">https://en.wikipedia.org/wiki/Complementary_colors</a></li>\r\n<li><a href=\"https://www.ahuka.com/gimp/transform-tools/\" class=\"uri\">https://www.ahuka.com/gimp/transform-tools/</a></li>\r\n</ul>\r\n',198,113,0,'CC-BY-SA','GIMP, images, photos, graphics, color',0,0,1),
(3180,'2020-10-09','GIMP: Miscellaneous Tools',803,'These few remaining tools are important, but don\'tfitneatlyintoonecategory.','<p>TheMiscellaneoustoolsdoanumberofusefulthingswithoutfittingneatlyintoacategory.ThePathstooltakesSelectionsupanotchandalsoletsyouaddinterestingeffects.Zoomisoneyouwoulduseeveryday,andMeasureishandyinsomesituations.Finally,GEGLOperationsarethefutureofallGIMPdevelopment</p>\r\n<h2id=\"links\">Links:</h2>\r\n<ul>\r\n<li><ahref=\"https://docs.gimp.org/2.8/en/\"class=\"uri\">https://docs.gimp.org/2.8/en/</a></li>\r\n<li><ahref=\"https://en.wikipedia.org/wiki/B%C3%A9zier_curve\"class=\"uri\">https://en.wikipedia.org/wiki/B%C3%A9zier_curve</a></li>\r\n<li><ahref=\"https://en.wikipedia.org/wiki/Font_hinting\"class=\"uri\">https://en.wikipedia.org/wiki/Font_hinting</a></li>\r\n<li><ahref=\"https://www.webopedia.com/TERM/A/antialiasing.html\"class=\"uri\">https://www.webopedia.com/TERM/A/antialiasing.html</a></li>\r\n<li><ahref=\"https://docs.gimp.org/2.8/en/gimp-tool-gegl.html\"class=\"uri\">https://docs.gimp.org/2.8/en/gimp-tool-gegl.html</a></li>\r\n<li><ahref=\"https://docs.gimp.org/2.10/en/gimp-tool-gegl.html\"class=\"uri\">https://docs.gimp.org/2.10/en/gimp-tool-gegl.html</a></li>\r\n<li><ahref=\"https://www.youtube.com/watch?v=aEsqVMCgpJ8\"class=\"uri\">https://www.youtube.com/watch?v=aEsqVMCgpJ8</a></li>\r\n<li><ahref=\"https://www.patreon.com/m/649544/posts\"class=\"uri\">https://www.patreon.com/m/649544/posts</a></li>\r\n<li><ahref=\"https://www.ahuka.com/gimp/miscellaneous-tools/\"class=\"uri\">https://www.ahuka.com/gimp/miscellaneous-tools/</a></li>\r\n</ul>\r\n',198,113,0,'CC-BY-SA','GIMP,images,photos,graphics,paths,zoom,GEGL',0,0,1),
(3124,'2020-07-23','Matchbox Restoration Part 5',310,'In this the 5th in the series Tony discusses the painting process on the castings of the MK10 Jaguar','<h2 id=\"hpr-matchbox-show-episode-5\">HPR Matchbox show Episode 5</h2>\r\n<p>Good day to all in HPR land, this is Tony Hughes coming to you again from Blackpool in the UK. To recap this is the 5th in a series of shows about my hobby of restoring Matchbox and other Die cast models. In the last show I went through the process I use to remove the paint and prepare the casting for repainting and reassembly. In this episode we will look at the painting of the castings and \'Spoiler\' what to do if things go wrong.</p>\r\n<p>After polishing and before painting I degrease the casting in some alcohol. I use a cheap own brand nail polish remover from the Co-Op but there are many ways of doing this and as many products on the market, so use what you have to hand. Even a good clean in hot soapy water, dry with a lint free cloth and then a wipe over with alcohol wipes works well. Remember to wear gloves when handling the casting after this process as the grease from your hands can undo all your hard work.</p>\r\n<p>So the first thing to say is that I am still in the early stages of learning this hobby and use what are referred to as \'Rattle\' cans in this community, it just means spray can painting rather than the use of an Air Brush, which I will be moving onto at some point so I can mix my own paint colours and not just those available in a spray can.</p>\r\n<p>So far I have been painting the casting outside during a warm dry day with little or no wind, or in a sheltered spot behind the garage if the wind is a little strong. I have now set up a small portable spray booth in the garage for this so will be able to paint in all conditions weather wise, which will make life easier.</p>\r\n<p>Image 001<br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3124/img_000.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3124/img_000_thumbnail.jpg\" alt=\"Image 001\" /></a></p>\r\n<p>So back to the casting, I use a Hemostat Clamp to hold the casting on this model it is attached to the post that holds the model together as this will not be seen when reassembled, I used a grey primer, spraying light coats all over the model until it is completely covered in the primer. Priming helps smooth out any small imperfections for the final paint coat, and as the casting is over 50 years old, it also lays down a consistent base colour and ensures that the colour coat should be the same all over when final paint is applied. As you can see in the picture it also shows up the casting lines and if desired these can be filed away prior to final painting, as this is a restoration I left this casting as original as possible, and left these in.</p>\r\n<p>Image 002<br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3124/img_001.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3124/img_001_thumbnail.jpg\" alt=\"Image 002\" /></a></p>\r\n<p>Image 003<br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3124/img_002.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3124/img_002_thumbnail.jpg\" alt=\"Image 003\" /></a></p>\r\n<p>After leaving the casting to dry for about an hour I came back with the colour coat, the original model was a metallic brown, but the nearest match I was able to find in the local pound shops is a metallic gold. Not perfect but the final results look good, but a little lighter than the original paint. I applied the paint in smooth fine strokes, getting what is called a tack coat of the paint all over the model casting to start, then applying another coat (the wet coat) all over until there is no sign of the primer and all looks smooth but with no runs in the paint finish. The balance needs to be just right with not too little or too much paint, but with practice you get there in the end. Unforseeably on this occasion there was a reaction with the primer on the rear of the model which caused bubbling of the paint.</p>\r\n<p>Image 004<br />\r\n<a href=\"https://
(3121,'2020-07-20','Opposing Views on Tattoos',1866,'Windigo and Mrs. Honeyhume discuss their views on tattoos','<p>\r\nNote: Phone recording came with a little bit of a hiss. Sorry about that!\r\n</p>\r\n<p>\r\nI discuss the subject of tattoos with my partner of fifteen years, Mrs. Honeyhume. While we agree on many subjects, tattoos are not one of them.\r\n</p>\r\n<p>\r\nShe enjoys and appreciates tattoos, seeing them as a permanent form of art that you can display on your own body. She has several of her own. I do not mind if other people tattoo themselves, but I am very opposed to getting them myself.\r\n</p>\r\n<p>\r\nWe discuss cultural influences of tattooing, some different methods used to tattoo skin, and many hypothetical situations to try to pin down the source of my opposition to getting one.\r\n</p>\r\n',196,0,1,'CC-BY-SA','tattoos',0,0,1),
(3126,'2020-07-27','Metrics part II',1967,'The metric of a 2D curved surface','<p>In this show I continue from where I left off in my last show (<a href=\"https://hackerpublicradio.org/eps.php?id=3101\">3101</a>) and talk about the geometry of curved 2D surfaces such as that of a sphere.</p>\r\n<p>Using the Earth\'ssurfaceasanexamplewecanusefamiliartheco-ordinatesoflongitudeandlatitude,illustratedonthisdiagram:</p>\r\n<imgalt=\"Sphere with latitude and longitude\"src=\"https://hackerpublicradio.org/eps/hpr3126/FedStats_Lat_long.png\">\r\n\r\n<p><em>Source:Publicdomain,<ahref=\"https://commons.wikimedia.org/wiki/File:FedStats_Lat_long.png\">Wikimediacommons</a></em></p>\r\n<p>Ontheleftweseecirclesofconstantlatitude.Thelargestofthesecirclesisatlatitude0°andiscalledthe<strong>equator</strong>.ItscircumferenceisequaltothatoftheEarthandsoitisanexampleofa<strong>greatcircle</strong>.</p>\r\n<p>Ontherightweseelinesofconstantlongitude.Theserunfrompoletopoleandareperpendiculartotheequator.Eachoftheselieonagreatcircle(infacttheyarehalfagreatcircleeach).</p>\r\n<p>Greatcirclesonthesurfaceofasphereareanalogoustostraightlinesonaflat2Dsurface.Theyofferawaytoconnectanytwopointswiththeshortestdistance.Linesin2Dorgreatcirclesonasphereareexamplesofwhatiscalleda<strong>geodesic</strong>.Inphysics,particlesthatarenotsubjecttoanyforceswillfollowgeodesics.</p>\r\n<p>InEinstein\'s General Theory of Relativity, the presence of mass or energy will alter the shape of spacetime and that will determine the metric. From the metric you can derive the geodesics and from that you can predict the motion of objects with no forces acting on them. In this way you can do away with the approximation that is Newton\'sgravitationalforceandreplaceitbyadescriptionthatonlyinvolvesthecurvatureofspacetime.Ionlytouchonthisinthisshowbutwilllikelyreturntoitinfutureshows.</p>\r\n<p>Herearetheequationsdiscussedinthisshowandthepreviousone:</p>\r\n<imgalt=\"Sphere with latitude and longitude\"src=\"https://hackerpublicradio.org/eps/hpr3126/metric_equations.png\">\r\n\r\n',268,0,0,'CC-BY-SA','maths,relativity,physics,earth',0,0,1),
(3122,'2020-07-21','Devuan review - and commentary',2086,'Devuan Review plus I talk about race','<p>\r\nFrom <a href=\"https://en.wikipedia.org/wiki/Devuan\">Wikipedia</a>, the free encyclopedia\r\n</p>\r\n<p>\r\n<b><a href=\"https://devuan.org/\">Devuan</a></b> is a fork Debian that uses sysvinit or OpenRC instead of systemd, which is the default in newer Debian releases. The Devuan development team aim to maintain compatibility with other init systems in the future and not detach Linux from other Unix systems.\r\n</p>\r\n<p>\r\n<small>[Edit: Ken 2020-07-21]</small>\r\n</p>\r\n<p>\r\nA significant portion of this show relates to the U.S Supreme Court decision in the case of <a href=\"https://www.supremecourt.gov/opinions/19pdf/18-9526_9okb.pdf\">McGIRT v. OKLAHOMA</a>, and speculation as to possible ramifications.\r\n</p>\r\n\r\n',377,0,0,'CC-BY-SA','Devuan, Debian, sysvinit, OpenRC, systemd',0,0,1),
(3190,'2020-10-23','GIMP Brushes',1219,'Paint tools, and particularly the Paintbrush Tool, require the use of brushes.','<p>Brushes are a key part of using Paint tools, and in particular the Paintbrush Tool. And in this episode we look at how to work with, edit, download, and save different brushes. We look at the Brush Dialog, and examine the different settings that make them easier to work with.</p>\r\n<p>Links:</p>\r\n<ul>\r\n<li><a href=\"https://docs.gimp.org/2.8/en/\" class=\"uri\">https://docs.gimp.org/2.8/en/</a></li>\r\n<li><a href=\"https://www.ahuka.com/gimp/paint-tools/\" class=\"uri\">https://www.ahuka.com/gimp/paint-tools/</a></li>\r\n<li><a href=\"https://franz.com/support/documentation/current/doc/cg/cg-pixmaps.htm\" class=\"uri\">https://franz.com/support/documentation/current/doc/cg/cg-pixmaps.htm</a></li>\r\n<li><a href=\"https://ergodic.ugr.es/cphys_pedro/unix/athena5.html\" class=\"uri\">https://ergodic.ugr.es/cphys_pedro/unix/athena5.html</a></li>\r\n<li><a href=\"https://conceptartempire.com/gimp-brushes/\" class=\"uri\">https://conceptartempire.com/gimp-brushes/</a></li>\r\n<li><a href=\"https://opensource.com/article/17/10/7-must-have-gimp-brushes\" class=\"uri\">https://opensource.com/article/17/10/7-must-have-gimp-brushes</a></li>\r\n<li><a href=\"https://logosbynick.com/free-download-gimp-brushes/\" class=\"uri\">https://logosbynick.com/free-download-gimp-brushes/</a></li>\r\n<li><a href=\"https://daviesmediadesign.com/the-best-free-brushes-for-gimp-in-2020/\" class=\"uri\">https://daviesmediadesign.com/the-best-free-brushes-for-gimp-in-2020/</a></li>\r\n<li><a href=\"https://www.makeuseof.com/tag/install-gimp-brushes/\" class=\"uri\">https://www.makeuseof.com/tag/install-gimp-brushes/</a></li>\r\n<li><a href=\"https://www.deviantart.com/\" class=\"uri\">https://www.deviantart.com/</a></li>\r\n<li><a href=\"https://www.ahuka.com/gimp/brushes/\" class=\"uri\">https://www.ahuka.com/gimp/brushes/</a></li>\r\n</ul>\r\n',198,113,0,'CC-BY-SA','GIMP, images, photos, graphics, brushes',0,0,1),
(3129,'2020-07-30','Followup on HPR3122',2157,'Followup on HPR3122 and *MORE* - percent *MORE* undescribed','https://www.youtube.com/watch?v=OFWCbGzxofU',377,0,0,'CC-BY-SA','Followups MORE',0,0,1),
(3127,'2020-07-28','HPR AudioBook Club 20 - Quarter Share',9131,'The HPR Audiobook Club reviews the audiobook Quarter Share by Nathan Lowell','<h1 id=\"in-this-episode-the-hpr-audiobook-club-discusses-the-audiobook-quarter-share-by-nathan-lowell\">In this episode the HPR Audiobook Club discusses the audiobook <a href=\"https://scribl.com/books/P2A75/quarter-share\">Quarter Share</a> by Nathan Lowell</h1>\r\n<hr />\r\n<h1 id=\"non-spoiler-thoughts\">Non-Spoiler Thoughts</h1>\r\n<hr />\r\n<ul>\r\n<li>This may be Pokey\'salltimefavoriteaudiobook.</li>\r\n<li>Thisbooktakesthe\'fish out of water\" trope and turns it on it head to a certain extent.</li>\r\n<li>Is Klaatu really Bilbo Baggins?</li>\r\n<li>Ishmael Wang is kinda our hero.</li>\r\n<li>So Traveller is a huge influence on these books.</li>\r\n<li>You know you want to deep dive on the lore of this universe. <a href=\"https://solarclipper.com/\">Go ahead</a>.</li>\r\n<li>Buy more Nathan Lowell books.</li>\r\n<li>WWID, What Would Ishmael Do</li>\r\n<li>Excellent recording, despite equipment of dubious quality.</li>\r\n<li>Solar Clipper Universe vs. StarDrifter Universe, and how we are fantastically lucky to have both.</li>\r\n</ul>\r\n<h1 id=\"beverage-reviews\">Beverage Reviews</h1>\r\n<hr />\r\n<p>As usual, the HPR AudioBook Club took some time to review the beverages that each of us were drinking during the episode</p>\r\n<ul>\r\n<li><strong>Thaj:</strong> Grapefruit Juice, simple, delicious.</li>\r\n<li><strong>x1101:</strong> Shipyards Signature Series IPA</li>\r\n<li><strong>pokey:</strong> I like Roma Sambuka in my coffee. It\'smuggyheretoday,soI\'m happy to discover that it\'sjustasgoodinicecoffee.RomaSambukadoesnotseemtohaveawebsite.Thetrick,imho,istomakeyourcoffeeasyounormallywould,thenaddthebooze.Don\'t adjust for the booze, other than using a bigger glass.</li>\r\n<li><strong>FiftyOneFifty:</strong> <a href=\"https://olesmoky.com/pages/distillery\">Ole Smokey Tennessee Moonshine</a></li>\r\n</ul>\r\n<h1 id=\"things-we-talked-about\">Things We talked about</h1>\r\n<hr />\r\n<ul>\r\n<li>We definitely can\'tkeepthesebooksstraight.Justreadthemall.You\'ll thank us.</li>\r\n<li>Pokey found a plot bullet, maybe. Thaj may disagree.</li>\r\n<li>All the characters are there for a reason.</li>\r\n<li>Nathan\'sreadingvoiceisperfectforthisseries.</li>\r\n<li>Wormholes,wormholes,wormholes.</li>\r\n<li>Wediscussthedetailsofhowtousethetechnologyfromthisseriestoflyintoasystem.</li>\r\n<li>Pokeywishespromotionsintherealworldworkedtheywaytheyworkontheship.</li>\r\n<li>FindthePodiobookEastereggs.</li>\r\n</ul>\r\n<h1id=\"our-next-audiobook\">OurNextAudiobook</h1>\r\n<hr/>\r\n<p><ahref=\"https://scribl.com/books/P98FB/the-terrible-business-of-salmon-and-dusk\">TheTerribleBusinessofSalmon&Dusk</a></p>\r\n<h1id=\"the-next-audiobook-club-recording\">TheNextAudiobookClubRecording</h1>\r\n<hr/>\r\n<p>Rightnowweareworkingthroughabacklogofolderepisodethathavealreadybeenrecorded.Oncethatendswefullyanticipaterecordingnewepisodeswithlistenerparticipation.</p>\r\n<h1id=\"further-recommendations\">FurtherRecommendations</h1>\r\n<hr/>\r\n<ul>\r\n<li>Daredevil</li>\r\n<li>TheDCEU</li>\r\n<li>WetalkaboutapictureIcannolongerfindalinkfor.</li>\r\n<li>Pokeygetsanew<ahref=\"https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Fi.ytimg.com%2Fvi%2FMey_Q4ZhvD4%2Fmaxresdefault.jpg&f=1&nofb=1\">motorcycle</a>.</li>\r\n<li>FiftyOneFiftytalksaboutactualcomputerstuff.</li>\r\n<li>Windowsprobs...</li>\r\n<li>WebBrowserseditorializingtheInternet.</li>\r\n<li>IsFlashdeadyet?</li>\r\n</ul>\r\n<h1id=\"feedback\">Feedback</h1>\r\n<hr/>\r\n<p>ThankyouverymuchforlisteningtothisepisodeoftheHPRAudioBookClub.Wehadagreattimerecordingthisshow,andwehopeyouenjoyeditaswell.Wealsohopeyou\'ll consider joining us next time we record a new episode. Please leave a few words in the episode\'scomments
(3132,'2020-08-04','Keeping track of where I am',1362,'How I keep track of where I am','<p>This episode covers how I keep track of what I\'mlisteningto</p>\r\n<p>IalmostneverproducedthispodcastasIdiscoveredpartwaythroughthatIhadcovereditinmyshow\"Describing how I listen to podcasts PART 2\"(HPR2889).I\'m conscious I have a tendency to repeat myself in real life, I think this is because I have such a terrible memory. Despite this I decided to continue with the episode but will go into subject in a bit more detail.</p>\r\n<p>These ideas slowly evolved over time and I think some of them may now be redundant. I think I need to do some tidying.</p>\r\n<p>As I\'vepreviouslymentionIusedcordlessheadphonestolistentomypodcastsandaudiobooks.TheheadphonescomewithbasetransmitterwhichwasoriginallypluggedintomyoldCompaqhomeserver.ThisserverwasgenerallyturnedonwhenIcamehomefromworkandturnedoffbeforegoingtobed.EachnightIhadtorememberwhichtrackIwasonandwhereaboutinthetrack.Ioftenforgotandhadtotryandfindtheplaceagain.Thisquicklybecameatiresometask.</p>\r\n<p>MyfirstsolutionwastousesomebashKungFujiggerypokerytocreatelistoffileswhichIplacedineachpodcastfolder.IntheprocessIlearnedabitaboutusingbashcommands.</p>\r\n<p>Commandusedtocreateindex</p>\r\n<pre><code>id3v2-l*.mp3|grep'TIT2' | cut -c44- >> readme.txt\r\nid3v2 -l *.mp3 | grep 'TIT2' | cut -c44- | egrep 'HPR[01][9][7-9]' >> readme.txt\r\nid3v2 -l *.mp3 | grep 'TIT2' | cut -c44- | egrep 'HPR[1-9]' |less >> readme.txt\r\n========================================================\r\n========================================================</code></pre>\r\n<p>Example output</p>\r\n<pre><code>epr0006.mp3 - dosman complete\r\nhpr0010.mp3 - linux boot process, part 1 complete\r\nhpr0012.mp3 - zen virtulization complete\r\nhpr0018.mp3 - book review complete</code></pre>\r\n<p>The downside of this was that at the end of each night I had to remember to update my file lists recording what I had listened to and what position I was in within the track. From time to time I had to update this list by appending the latest episodes sitting on my server using the previous id3v2 command.</p>\r\n<p>As you can imagine this took up a fair amount of time and became very tiresome, I would sometimes forget to do it this would cause me a headache next time I started listening to my podcasts.</p>\r\n<p>My next solution involved creating a bash script that attempted to persuade my music player moc to find the track I was previously listening to.</p>\r\n<p>The script sometimes worked but it was a bit flaky and didn\'t always work.</p>\r\n<p>My final solution is in multiple parts</p>\r\n<p>The 1st part consists of a bash script and a log file, it\'s a handy way of checking the last podcast episode and last position, this information is recorded to the log file when the front end of moc is exited by hitting Q. Of course this doesn\'t work if mocp closes for any other reason ie if I forgot to hit Q or my Pi crashed.</p>\r\n<p>First script</p>\r\n<pre><code>~/scripts/podcasts\r\n\r\nquick lash up of script created 29/12/12 (DD/MM/YY)\r\nCreated to keep track of last position of listened podcast\r\n\r\nScript displays last 4 lines of logfile "podcasts.txt"\r\nThe four lines consist of a Dashed line separator, the last recorded Track\r\nTitle, last recorded Filename and the last recorded track position.\r\nThe script then pauses and displays a message saying\r\npress any key to continue.\r\nRuns mocp\r\nWhen the frontend of mocp exits\r\nThe script gets the current track filename\r\nIf the result is empty ie no filename then\r\n exit with error saying (moc was not playing anything)\r\nif not empty\r\n append a dashed line separator, the current track title, the current\r\n filename, the current track position to logfile it then
(3149,'2020-08-27','HPR AudioBook Club 21 - The Terrible Business of Salmon and Dusk',6342,'The HPR Audiobook Club reviews the audiobook The Terrible Business of Salmon and Dusk by Myke Bartle','<h1 id=\"in-this-episode-the-hpr-audiobook-club-discusses-the-audiobook-the-terrible-business-of-salmon--dusk-by-myke-bartlett\">In this episode the HPR Audiobook Club discusses the audiobook <a href=\"https://scribl.com/books/P98FB/the-terrible-business-of-salmon-and-dusk\">The Terrible Business of Salmon & Dusk</a> by Myke Bartlett</h1>\r\n<hr />\r\n<h1 id=\"non-spoiler-thoughts\">Non-Spoiler Thoughts</h1>\r\n<hr />\r\n<ul>\r\n<li>The terrible business of trying to listen to this book (technical difficulties abound)</li>\r\n<li>We talk about the audio players we tried to get around the technical difficulties.</li>\r\n<li>This book is a weird world.</li>\r\n<li>The reading performance is great, and the audio quality is good (minus technical difficulties).</li>\r\n<li>The is a clear distinction between characters by the reader using voice and accents.</li>\r\n<li>This pushes the definition of \"magical realism\". Perhaps \"surrealistic\" is a better description.</li>\r\n<li>The world is slightly more interesting than the characters.</li>\r\n</ul>\r\n<h1 id=\"beverage-reviews\">Beverage Reviews</h1>\r\n<hr />\r\n<p>As usual, the HPR AudioBook Club took some time to review the beverages that each of us were drinking during the episode</p>\r\n<ul>\r\n<li><strong>Thaj:</strong> Water and <a href=\"https://f-droid.org/en/packages/de.ph1b.audiobook/\">Material Player which is now called Voice</a></li>\r\n<li><strong>x1101:</strong> <a href=\"https://www.blacksheepbrewery.com/our-beers/monty-python/holy-grail/\">Monty Python\'sHoly<s>Gr</s>ail-BlackKnight\'s Reserve</a></li>\r\n<li><strong>pokey:</strong> <a href=\"https://longtrail.com/age-verification?destination=beers/double-bag%C2%AE\">Long Trail Double Bag Ale</a> and <a href=\"https://racewithrusty.com/\">The Rusty Wallace Formula Experience</a></li>\r\n</ul>\r\n<h1 id=\"things-we-talked-about\">Things We talked about</h1>\r\n<hr />\r\n<ul>\r\n<li>Why are two sticks of chalk important?</li>\r\n<li>Does this end by not ending?</li>\r\n<li>Thaj thinks this is trying too hard to be clever. Both and Thaj and x1101 think Tincture does weird better.</li>\r\n<li>Is the fallen a metaphor for depression?</li>\r\n<li>What is going on with The Albion?</li>\r\n<li>\"There are a <em>LOT</em> of things that can use a little more explanation.\"</li>\r\n<li>Thaj thinks <a href=\"https://en.wikipedia.org/wiki/The_Rainbow_Thief\">The Rainbow Thief</a> and <a href=\"https://en.wikipedia.org/wiki/Adjustment_Team\">Adjustment Team</a> may be inspirations for this story. Pokey raises with Sherlock Holmes and Doctor Who.</li>\r\n<li>Also <a href=\"https://en.wikipedia.org/wiki/Kato_(The_Green_Hornet)\">Kato</a> from The Green Hornet...</li>\r\n<li>We disagree about how the time travel was done.</li>\r\n<li>Nero is the character we all felt the easiest to follow.</li>\r\n</ul>\r\n<h1 id=\"our-next-audiobook\">Our Next Audiobook</h1>\r\n<hr />\r\n<p><a href=\"https://scribl.com/books/P4C82/murder-at-avedon-hill\">Murder at Avedon Hill</a> by P.G. Holyfield</p>\r\n<h1 id=\"the-next-audiobook-club-recording\">The Next Audiobook Club Recording</h1>\r\n<hr />\r\n<p>Right now we are working through a backlog of older episode that have already been recorded. Once that ends we fully anticipate recording new epsiodes with listener participation.</p>\r\n<h1 id=\"further-recommendations\">Further Recommendations</h1>\r\n<hr />\r\n<ul>\r\n<li>Pokey goes to the races.</li>\r\n<li>Sometimes it\'sjusteasiertonukeandpave.</li>\r\n<li>New(Old)phones.</li>\r\n<li>AndroidFileExplorers</li>\r\n<li>AudioBookPlayerLink:<ahref=\"https://material-player.en.uptodown.com/android\">https://material-player.en.uptodown.com/android</a></li>\r\n<li>F-Droidlink:AudiobookplayernowrenamedVoice<ahref=\"https://f-droid.org/en/packages/de.ph1b.audiobook/\">https://f-droid.org/en/packages/de.ph1b.audiobook/<
(3133,'2020-08-05','Quick tip - Using MPV with Youtube links',124,'I give a quick tip on shortcut keys for watching Youtube or other video sites in MPV','<h3 id=\"idea\">Idea:</h3>\r\n<p>Quickly copy a Youtube or other video site, and open in the MPV media player.</p>\r\n<h4 id=\"plugins\">Plugins:</h4>\r\n<p>Vim Vixen for Firefox<br />\r\n<a href=\"https://addons.mozilla.org/en-US/firefox/addon/vim-vixen\" class=\"uri\">https://addons.mozilla.org/en-US/firefox/addon/vim-vixen</a></p>\r\n<p>Surfingkeys for Chrome/Chromium browser<br />\r\n<a href=\"https://chrome.google.com/webstore/detail/surfingkeys/gfbliohnnapiefjpjlpjnehglfpaknnc?hl=en-US\" class=\"uri\">https://chrome.google.com/webstore/detail/surfingkeys/gfbliohnnapiefjpjlpjnehglfpaknnc?hl=en-US</a></p>\r\n<h4 id=\"script\">Script:</h4>\r\n<pre><code>#!/bin/bash\r\n## mpvurl\r\n\r\nurl=`xsel -o -b`\r\necho $url\r\nmpv $url</code></pre>\r\n<p>Rename <code>/usr/bin/vlc</code> to <code>/usr/bin/vlc.old</code></p>\r\n<p>Copy script to <code>/usr/bin/vlc</code> and <code>chmod +x /usr/bin/vlc</code></p>\r\n<h4 id=\"how-to-use\">How to use:</h4>\r\n<p>Vim Vixen copy is \'y\' Surfingkeys copy is \'yy\'</p>\r\n<p>Shortcut to open copied video url is Shift-Mod-p, with Mod being the windows key</p>\r\n<p>Tested with Gnome3, Xfce and i3</p>\r\n<p>In i3, press Mod+v then Mod+s.</p>\r\n<p>Any video played this way will be stacked under Firefox/Chromium for the rest of your session.</p>\r\n<h4 id=\"config\">Config:</h4>\r\n<p>In ~/.config/i3/config</p>\r\n<pre><code>#Paste url into mpv player\r\nbindsym $mod+Shift+p exec vlc</code></pre>\r\n<h3 id=\"example-screenshots\">Example screenshots:</h3>\r\n<p>Example of stacked Firefox/MPV layout<br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3133/img_001.png\"><img src=\"https://hackerpublicradio.org/eps/hpr3133/img_001_thumbnail.png\" alt=\"Example of stacked Firefox/MPV layout\" /></a></p>\r\n<p>For Gnome3 the setting can be reached with Mod (Windows key) and Shortcuts<br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3133/img_002.png\"><img src=\"https://hackerpublicradio.org/eps/hpr3133/img_002_thumbnail.png\" alt=\"For Gnome3 the setting can be reached with Mod (Windows key) and Shortcuts\" /></a></p>\r\n<p>And the Default Applications need to be changed<br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3133/img_003.png\"><img src=\"https://hackerpublicradio.org/eps/hpr3133/img_003_thumbnail.png\" alt=\"And the Default Applications need to be changed\" /></a></p>\r\n<p>The setting for Shortcuts in Xfce looks like this<br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3133/img_004.png\"><img src=\"https://hackerpublicradio.org/eps/hpr3133/img_004_thumbnail.png\" alt=\"The setting for Shortcuts in Xfce looks like this\" /></a></p>\r\n',318,0,0,'CC-BY-SA','Video, media, bash, i3, Gnome3, Xfce',0,0,1),
(3416,'2021-09-06','HPR Community News for August 2021',5765,'Ken\'snotavailablesoMrXjoinsDavetotalkabouttheshowsandcommentsinAugust','<style>\ntabletd.shrink{\nwhite-space:nowrap\n}\n</style>\n\n<h2>Newhosts</h2>\n<p>\nTherewerenonewhoststhismonth.\n</p>\n\n<h2>LastMonth\'s Shows</h2>\n<table id=\"t01\">\n<tr>\n<th>Id</th>\n<th>Day</th>\n<th>Date</th>\n<th>Title</th>\n<th>Host</th>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3391\" target=\"_blank\">3391</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2021-08-02</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3391\" target=\"_blank\">HPR Community News for July 2021</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0159.html\" target=\"_blank\">HPR Volunteers</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3392\" target=\"_blank\">3392</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2021-08-03</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3392\" target=\"_blank\">Structured error reporting</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0364.html\" target=\"_blank\">Tuula</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3393\" target=\"_blank\">3393</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2021-08-04</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3393\" target=\"_blank\">We need to talk about XML</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0078.html\" target=\"_blank\">klaatu</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3394\" target=\"_blank\">3394</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2021-08-05</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3394\" target=\"_blank\">Be an XML star with xmlstarlet</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0078.html\" target=\"_blank\">klaatu</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3395\" target=\"_blank\">3395</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2021-08-06</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3395\" target=\"_blank\">Hacking Stories with Reacted: part 1</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0036.html\" target=\"_blank\">operat0r</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3396\" target=\"_blank\">3396</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2021-08-09</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3396\" target=\"_blank\">Card roles in Magic the Gathering</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0078.html\" target=\"_blank\">klaatu</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3397\" target=\"_blank\">3397</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2021-08-10</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3397\" target=\"_blank\">What is a PineTime</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0382.html\" target=\"_blank\">Daniel Persson</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3398\" target=\"_blank\">3398</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2021-08-11</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3398\" target=\"_blank\">Anacron</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0078.html\" target=\"_blank\">klaatu</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3399\" target=\"_blank\">3399</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2021-08-12</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3399\" target=\"_blank\">Linux Inlaws S01E36: Open Source Licenses</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0384.html\" target=\"_blank\">monochromec</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://
(3436,'2021-10-04','HPR Community News for September 2021',3268,'HPR Volunteers talk about shows released and comments posted in September 2021','<style>\ntable td.shrink {\n white-space:nowrap\n}\n</style>\n\n<h2>New hosts</h2>\n<p>\nWelcome to our new hosts: <br />\n\n <a href=\"https://hackerpublicradio.org/correspondents/0395.html\" target=\"_blank\">CoGo</a>, \n <a href=\"https://hackerpublicradio.org/correspondents/0396.html\" target=\"_blank\">BlacKernel</a>.\n</p>\n\n<h2>Last Month\'sShows</h2>\n<tableid=\"t01\">\n<tr>\n<th>Id</th>\n<th>Day</th>\n<th>Date</th>\n<th>Title</th>\n<th>Host</th>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3413\"target=\"_blank\">3413</a></strong></td>\n<td>Wed</td>\n<tdclass=\"shrink\">2021-09-01</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3413\"target=\"_blank\">Bashsnippet-usingcoprocwithSQLite</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0225.html\"target=\"_blank\">DaveMorriss</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3414\"target=\"_blank\">3414</a></strong></td>\n<td>Thu</td>\n<tdclass=\"shrink\">2021-09-02</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3414\"target=\"_blank\">CriticalThinkingmaymakeYouCriticaloftheCovidCrisis</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0395.html\"target=\"_blank\">CoGo</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3415\"target=\"_blank\">3415</a></strong></td>\n<td>Fri</td>\n<tdclass=\"shrink\">2021-09-03</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3415\"target=\"_blank\">HackingStorieswithReacted:part3</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0036.html\"target=\"_blank\">operat0r</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3416\"target=\"_blank\">3416</a></strong></td>\n<td>Mon</td>\n<tdclass=\"shrink\">2021-09-06</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3416\"target=\"_blank\">HPRCommunityNewsforAugust2021</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0159.html\"target=\"_blank\">HPRVolunteers</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3417\"target=\"_blank\">3417</a></strong></td>\n<td>Tue</td>\n<tdclass=\"shrink\">2021-09-07</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3417\"target=\"_blank\">Cephclusterhardware</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0382.html\"target=\"_blank\">DanielPersson</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3418\"target=\"_blank\">3418</a></strong></td>\n<td>Wed</td>\n<tdclass=\"shrink\">2021-09-08</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3418\"target=\"_blank\">MygEeekyExperiment-Part2</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0152.html\"target=\"_blank\">ClaudioMiranda</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3419\"target=\"_blank\">3419</a></strong></td>\n<td>Thu</td>\n<tdclass=\"shrink\">2021-09-09</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3419\"target=\"_blank\">LinuxInlawsS01E38:Tinykernels</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0384.html\"target=\"_blank\">monochromec</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3420\"target=\"_blank\">3420</a></strong></td>\n<td>Fri</td>\n<tdclass=\"shrink\">2021-09-10</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3420\"target=\"_blank\">NormalLayerModes:Erase,Merge,andSplit</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0198.html\"target=\"_blank\">Ahuka</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3421\"target=\"_blank\">3421</a></strong></td>\n<td>Mon</td>\n<tdclass=\"shrin
(3134,'2020-08-06','Tomorrowland 2020',584,'Explaining the experience of the first virtual music festival','<p>The music festival Tomorrowland was made virtual this year.</p>\r\n<p>Usually, they have 200k visitors over two weekends on a small area of 128 football (soccer) fields. This year they digitally did it all, which was engaging and fun. I\'veneverattended,butIlovedthisyear,whereIcouldbeapartoftheexperience.</p>\r\n<p>Thisrecordingwasmadeat01.00AMrightafterthefestivalhadended,soIstillhadthehype,totallysoberbuteuphoric.</p>\r\n<ul>\r\n<li><p>KatyPerry<br/>\r\n<ahref=\"https://www.youtube.com/watch?v=i65puYqFh6Q\"class=\"uri\">https://www.youtube.com/watch?v=i65puYqFh6Q</a></p></li>\r\n<li><p>DavidGuetta<br/>\r\n<ahref=\"https://www.youtube.com/watch?v=xs7eqBkQCYM\"class=\"uri\">https://www.youtube.com/watch?v=xs7eqBkQCYM</a></p></li>\r\n</ul>\r\n',382,0,0,'CC-BY-SA','music,dance,house,festival,tomorrowland',0,0,1),
(3136,'2020-08-10','Matchbox Restoration Part 6',286,'Matchbox Cars, Diecast Models, Restoration, Reassembly of the model','<p>Good day to all in HPR land, this is Tony Hughes coming to you again from Blackpool in the UK. To recap this is the 6th in a series of shows about my hobby of restoring Matchbox and other Die cast models. In the last show I went through the process I use to paint and prepare the casting for reassembly. In this episode I will discuss how I put back the wheels onto the base and reassemble the final model, before revealing in the show note pictures how the model came out.</p>\r\n<p>So before putting back the plastic wheels onto the axles I polished the axles in my drill bit using a little bit of fine wet and dry emery paper.</p>\r\n<p>Picture 001<br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3136/img_001.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3136/img_001_thumbnail.jpg\" alt=\"Picture 001\" /></a></p>\r\n<p>After selecting the best 4 of the plastic tyres from the models we originally dismantled I washed these in a little soapy water and after drying they these were fit for putting back on the restored model. The cleaned up axle is assembled on the base with the first tyre in place with the large dome end of the axle sat on a nail punch held in a vice. The second tyre is then placed on the axle and holding this all in place a small hammer is used to peen over the end of the axle by hitting it gently so the end is peened over but the axle does not bend. It is possible to do this stage in a drill press using another nail punch in the drill chuck, but I do not have a drill press at the moment, so have to do this the old school way, with a bit of brute force and ignorance.</p>\r\n<p>Picture 002<br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3136/img_002.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3136/img_002_thumbnail.jpg\" alt=\"Picture 002\" /></a></p>\r\n<p>So we now have all the parts ready for reassembly. The base has the axles and wheels back on, the screen has been polished and the plastic seating given a clean in soapy water and dried, and the body is repainted and ready to go.</p>\r\n<p>Picture 003<br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3136/img_003.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3136/img_003_thumbnail.jpg\" alt=\"Picture 003\" /></a></p>\r\n<p>So being careful not to damage the paint work the casting is placed with the base side up and the window unit is placed into it.</p>\r\n<p>Picture 004<br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3136/img_004.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3136/img_004_thumbnail.jpg\" alt=\"Picture 004\" /></a></p>\r\n<p>Followed by the plastic interior, the eagle eyed among you will notice a colour change to the body work as I forgot to take a picture of this stage on the gold model. You have to ensure that the tab with the tow hitch (yes Matchbox put a tow hitch on a posh car) is fully over the retaining post or the base will not seat properly.</p>\r\n<p>Picture 005<br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3136/img_005.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3136/img_005_thumbnail.jpg\" alt=\"Picture 005\" /></a></p>\r\n<p>The base is then placed back on the model by sliding it over the tab at the front and clicking it down over the rivet post.</p>\r\n<p>Picture 006<br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3136/img_006.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3136/img_006_thumbnail.jpg\" alt=\"Picture 006\" /></a></p>\r\n<p>I then used some \'5secondFix\' UV glue to glue around the post to hold it in place. You can also drill out the post with a 1.5mm drill and using an M2 tap then use a small M2 screw to hold the base in place, but in this case I was happy with the glue as it was for display and will not be handled frequently enough to require the more secure retention of a screw. With these small models there is a risk of damaging the post while drilling and tapping them so it is personal pre
(3137,'2020-08-11','Coronavirus Update 2020-07-30',1364,'Where we are with this pandemic, and how should we respond?','<p>This is an update to my earlier shows to pull together what we know about the Coronavirus on this date, and what measures we can take. It focuses on the lack of solid information at this point and suggests a prudent course to stay safe. <a href=\"https://www.palain.com/health-topics/coronavirus-update-20200730/\" class=\"uri\">https://www.palain.com/health-topics/coronavirus-update-20200730/</a></p>\r\n<ul>\r\n<li><a href=\"https://jamanetwork.com/journals/jamacardiology/fullarticle/2768916\" class=\"uri\">https://jamanetwork.com/journals/jamacardiology/fullarticle/2768916</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Severe_acute_respiratory_syndrome\" class=\"uri\">https://en.wikipedia.org/wiki/Severe_acute_respiratory_syndrome</a></li>\r\n<li><a href=\"https://www.axios.com/hydroxychloroquine-coronavirus-scott-gottlieb-trump-a7b60575-91db-4239-8c86-59b993c55358.html\" class=\"uri\">https://www.axios.com/hydroxychloroquine-coronavirus-scott-gottlieb-trump-a7b60575-91db-4239-8c86-59b993c55358.html</a></li>\r\n<li><a href=\"https://www.sciencenews.org/article/remdesivir-covid-19-coronavirus-pandemic-gilead\" class=\"uri\">https://www.sciencenews.org/article/remdesivir-covid-19-coronavirus-pandemic-gilead</a></li>\r\n<li><a href=\"https://www.nejm.org/doi/full/10.1056/NEJMoa2021436\" class=\"uri\">https://www.nejm.org/doi/full/10.1056/NEJMoa2021436</a></li>\r\n<li><a href=\"https://news.yale.edu/2020/07/27/yale-lead-trial-potential-covid-19-treatment\" class=\"uri\">https://news.yale.edu/2020/07/27/yale-lead-trial-potential-covid-19-treatment</a></li>\r\n<li><a href=\"https://www.nature.com/articles/s41586-020-2577-1_reference.pdf\" class=\"uri\">https://www.nature.com/articles/s41586-020-2577-1_reference.pdf</a></li>\r\n<li><a href=\"https://news.yale.edu/2020/07/27/yale-lead-trial-potential-covid-19-treatment\" class=\"uri\">https://news.yale.edu/2020/07/27/yale-lead-trial-potential-covid-19-treatment</a></li>\r\n<li><a href=\"https://pubs.acs.org/doi/10.1021/acs.nanolett.0c02278\" class=\"uri\">https://pubs.acs.org/doi/10.1021/acs.nanolett.0c02278</a></li>\r\n<li><a href=\"https://helix.northwestern.edu/article/thalidomide-tragedy-lessons-drug-safety-and-regulation\" class=\"uri\">https://helix.northwestern.edu/article/thalidomide-tragedy-lessons-drug-safety-and-regulation</a></li>\r\n<li><a href=\"https://www.washingtonpost.com/health/7-in-10-americans-would-be-likely-to-get-a-coronavirus-vaccine-a-post-abc-poll-finds/2020/06/01/4d1f8f68-a429-11ea-bb20-ebf0921f3bbd_story.html\" class=\"uri\">https://www.washingtonpost.com/health/7-in-10-americans-would-be-likely-to-get-a-coronavirus-vaccine-a-post-abc-poll-finds/2020/06/01/4d1f8f68-a429-11ea-bb20-ebf0921f3bbd_story.html</a></li>\r\n<li><a href=\"https://nymag.com/intelligencer/2020/07/heres-the-latest-good-and-bad-news-about-covid-19.html\" class=\"uri\">https://nymag.com/intelligencer/2020/07/heres-the-latest-good-and-bad-news-about-covid-19.html</a></li>\r\n<li><a href=\"https://www.cdc.gov/coronavirus/2019-ncov/index.html\" class=\"uri\">https://www.cdc.gov/coronavirus/2019-ncov/index.html</a></li>\r\n<li><a href=\"https://curiositystream.com/\" class=\"uri\">https://curiositystream.com/</a></li>\r\n<li><a href=\"https://www.nature.com/nature/articles?type=nature-podcast\" class=\"uri\">https://www.nature.com/nature/articles?type=nature-podcast</a></li>\r\n<li><a href=\"https://www.youtube.com/user/thehealthcaretriage\" class=\"uri\">https://www.youtube.com/user/thehealthcaretriage</a></li>\r\n<li><a href=\"https://www.palain.com/health-topics/the-hierarchy-of-evidence/\" class=\"uri\">https://www.palain.com/health-topics/the-hierarchy-of-evidence/</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2870\" class=\"uri\">https://hackerpublicradio.org/eps.php?id=2870</a></li>\r\n<li><a href=\"https://www.youtube.com/scishow\" class=\"uri\">https://www.youtube.com/scishow</a></li>\r\n<li><a href=\"https://www.youtube.com/p
(3138,'2020-08-12','Linux Inlaws S01E12: Reminiscing in FLOSS Weekly',5664,'An interview with Randal Schwartz of FLOSS Weekly fame','<ul>\r\n<li>FLOSS Weekly: <a href=\"https://twit.tv/shows/floss-weekly\" target=\"_blank\">https://twit.tv/shows/floss-weekly</a></li>\r\n<li>Kernel patches for Google Futex enhancements: <a href=\"https://lore.kernel.org/lkml/20200722234538.166697-1-posk@posk.io\" target=\"_blank\">https://lore.kernel.org/lkml/20200722234538.166697-1-posk@posk.io</a></li>\r\n<li>Google presentation on Futexes: <a href=\"ttp://pdxplumbers.osuosl.org/2013/ocw//system/presentations/1653/original/LPC%20-%20User%20Threading.pdf\" target=\"_blank\">https://pdxplumbers.osuosl.org/2013/ocw//system/presentations/1653/original/LPC%20-%20User%20Threading.pdf</a></li>\r\n<li>Fuchsia Futexes: <a href=\"https://fuchsia.dev/fuchsia-src/reference/kernel_objects/futex\" target=\"_blank\">https://fuchsia.dev/fuchsia-src/reference/kernel_objects/futex</a></li>\r\n<li>The show where Simon Phipps flips: <a href=\"https://twit.tv/shows/floss-weekly/episodes/521\" target=\"_blank\">https://twit.tv/shows/floss-weekly/episodes/521</a></li>\r\n<li>Perl 6 / Raku: <a href=\"https://raku.org\" target=\"_blank\">https://raku.org</a></li>\r\n<li>Flutter: <a href=\"https://flutter.dev\" target=\"_blank\">https://flutter.dev</a></li>\r\n<li>Dart: <a href=\"https://dart.dev\" target=\"_blank\">https://dart.dev</a></li>\r\n<li>Mouse door opener day: <a href=\"https://www.wdrmaus.de/extras/tueren_auf.php5\" target=\"_blank\">https://www.wdrmaus.de/extras/tueren_auf.php5</a></li>\r\n<li>Grumpy old coders: <a href=\"https://soundcloud.com/user-498377588/grumpy-old-coders-ep-1-fast-change\" target=\"_blank\">https://soundcloud.com/user-498377588/grumpy-old-coders-ep-1-fast-change</a></li>\r\n</ul>\r\n\r\n',384,111,1,'CC-BY-SA','Linux inlaws, communism, free and open source software, FLOSS Weekly, Perl, ship cruises',0,0,1),
(3200,'2020-11-06','Better Social Media 17 - OcapPub',1125,'How using Object Capabilities within ActivityPub could solve some problems with social media.','<p>Social media has some problems, and even federated media is not immune to them. OcapPub proposes to help reduce some problems by moving away from a fundamentally broken model revolving around identity and access to a better model involving objects and capabilities. This could help reduce to problems of identity theft, and help against web site problems like clickjacking and Cross-Site Request Forgery. It is a proposal being worked on, not a finished technology, but it is promising.</p>\r\n<p>Links:</p>\r\n<ul>\r\n<li><a href=\"https://gitlab.com/spritely/ocappub/blob/master/README.org\" class=\"uri\">https://gitlab.com/spritely/ocappub/blob/master/README.org</a></li>\r\n<li><a href=\"https://hacks.mozilla.org/2018/11/decentralizing-social-interactions-with-activitypub/\" class=\"uri\">https://hacks.mozilla.org/2018/11/decentralizing-social-interactions-with-activitypub/</a></li>\r\n<li><a href=\"https://www.w3.org/TR/activitypub/\" class=\"uri\">https://www.w3.org/TR/activitypub/</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Actor_model#Fundamental_concepts\" class=\"uri\">https://en.wikipedia.org/wiki/Actor_model#Fundamental_concepts</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Gamergate_controversy\" class=\"uri\">https://en.wikipedia.org/wiki/Gamergate_controversy</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Speakers%27_Corner\" class=\"uri\">https://en.wikipedia.org/wiki/Speakers%27_Corner</a></li>\r\n<li><a href=\"https://waterken.sourceforge.net/aclsdont/current.pdf\" class=\"uri\">https://waterken.sourceforge.net/aclsdont/current.pdf</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Principle_of_least_privilege\" class=\"uri\">https://en.wikipedia.org/wiki/Principle_of_least_privilege</a></li>\r\n<li><a href=\"https://www.zwilnik.com/better-social-media/ocappub/\" class=\"uri\">https://www.zwilnik.com/better-social-media/ocappub/</a></li>\r\n</ul>\r\n',198,108,0,'CC-BY-SA','social media, alternative, Fediverse, ActivityPub, OcapPub',0,0,1),
(3139,'2020-08-13','MIDI Sysex',1238,'Klaatu talks about Sysex functions in MIDI','<p>\r\nThe MIDI spec is available at <a href=\"https://www.midi.org\" target=\"_blank\">MIDI.org</a>\r\n</p>\r\n\r\n<p>\r\nSysex commands are listed at <a href=\"https://www.midi.org/specifications-old/item/table-4-universal-system-exclusive-messages\" target=\"_blank\">midi.org/specifications-old/item/table-4-universal-system-exclusive-messages</a>\r\n</p>\r\n',78,0,0,'CC-BY-SA','midi,music,synth',0,0,1),
(3141,'2020-08-17','Lessons learnt from Magic the Gathering game design',2269,'Lessons learnt from Magic the Gathering game design','<p>\r\nObservations and musings about game design, seen through the lens of MTG.\r\n</p>\r\n',78,95,0,'CC-BY-SA','magic, mtg',0,0,1),
(3142,'2020-08-18','tcsh',1719,'Klaatu talks about tcsh','<p>\r\nTcsh is a shell. It was popular once, I think. Anyway, I talk about why I sometimes use it, fondly, sometimes.\r\n</p>',78,0,0,'CC-BY-SA','shell,csh,bash,tcsh',0,0,1),
(3210,'2020-11-20','GIMP: Patterns and Gradients',1337,'Patterns and Gradients are useful for drawing with more than just color.','<p>Patterns and Gradients let you create images that go beyond simple colors and let you create more interesting images. And using them also means we begin to see how to combine a variety of tools, like paint tools, selection tools, and brushes, to create the effects we want in our images.</p>\r\n<h2 id=\"links\">Links:</h2>\r\n<ul>\r\n<li><a href=\"https://docs.gimp.org/2.8/en/\" class=\"uri\">https://docs.gimp.org/2.8/en/</a></li>\r\n<li><a href=\"https://www.ahuka.com/gimp/paint-tools/\" class=\"uri\">https://www.ahuka.com/gimp/paint-tools/</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=3150\" class=\"uri\">https://hackerpublicradio.org/eps.php?id=3150</a></li>\r\n<li><a href=\"https://www.ahuka.com/gimp/miscellaneous-tools/\" class=\"uri\">https://www.ahuka.com/gimp/miscellaneous-tools/</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=3180\" class=\"uri\">https://hackerpublicradio.org/eps.php?id=3180</a></li>\r\n<li><a href=\"https://www.ahuka.com/gimp/patterns-and-gradients/\" class=\"uri\">https://www.ahuka.com/gimp/patterns-and-gradients/</a></li>\r\n</ul>',198,113,0,'CC-BY-SA','GIMP, images, photos, graphics, patterns, gradients',0,0,1),
(3220,'2020-12-04','PixelFed',1183,'A look at a federated alternative to Instagram.','<p>Maybe you want to share some photos with your family and friends. You could use Instagram, but that is part of the Surveillance Capitalist media environment. Fortunately, there is a privacy-respecting federated alternative called PixelFed. This episode is an introduction to that platform.</p>\r\n<h2 id=\"links\">Links:</h2>\r\n<ul>\r\n<li><a href=\"https://en.wikipedia.org/wiki/ActivityPub\" class=\"uri\">https://en.wikipedia.org/wiki/ActivityPub</a></li>\r\n<li><a href=\"https://www.w3.org/TR/activitypub/\" class=\"uri\">https://www.w3.org/TR/activitypub/</a></li>\r\n<li><a href=\"https://www.digikam.org/\" class=\"uri\">https://www.digikam.org/</a></li>\r\n<li><a href=\"https://www.gimp.org/\" class=\"uri\">https://www.gimp.org/</a></li>\r\n<li><a href=\"https://docs.pixelfed.org/installing-pixelfed/\" class=\"uri\">https://docs.pixelfed.org/installing-pixelfed/</a></li>\r\n<li><a href=\"https://the-federation.info/\" class=\"uri\">https://the-federation.info/</a></li>\r\n<li><a href=\"https://the-federation.info/pixelfed\" class=\"uri\">https://the-federation.info/pixelfed</a></li>\r\n<li><a href=\"https://mastodon.social/@pixelfed/103122742969957333\" class=\"uri\">https://mastodon.social/@pixelfed/103122742969957333</a></li>\r\n<li><a href=\"https://www.zwilnik.com/better-social-media/pixelfed/\" class=\"uri\">https://www.zwilnik.com/better-social-media/pixelfed/</a></li>\r\n</ul>\r\n',198,108,0,'CC-BY-SA','social media, alternative, Fediverse, ActivityPub, PixelFed, photo sharing',0,0,1),
(3143,'2020-08-19','LibreOffice 7.0 Released!',927,'LibreOffice releases a new major update, LibreOffice 7.0','<p>LibreOffice is the premiere open source office suite, and with the major release of 7.0 continues to move forward. In this episode I look at some of the major features of this upgrade and why it matters.</p>\r\n<h2 id=\"links\">Links</h2>\r\n<ul>\r\n<li><a href=\"https://blog.documentfoundation.org/blog/2020/08/05/announcement-of-libreoffice-7-0/\" class=\"uri\">https://blog.documentfoundation.org/blog/2020/08/05/announcement-of-libreoffice-7-0/</a></li>\r\n<li><a href=\"https://blog.documentfoundation.org/blog/2020/01/21/odf-1-3-approved-as-oasis-committee-specification/\" class=\"uri\">https://blog.documentfoundation.org/blog/2020/01/21/odf-1-3-approved-as-oasis-committee-specification/</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/OASIS_(organization)\" class=\"uri\">https://en.wikipedia.org/wiki/OASIS_(organization)</a></li>\r\n<li><a href=\"https://skia.org/\" class=\"uri\">https://skia.org/</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Vulkan_(API)\" class=\"uri\">https://en.wikipedia.org/wiki/Vulkan_(API)</a></li>\r\n<li><a href=\"https://www.documentfoundation.org/governance/advisory-board/\" class=\"uri\">https://www.documentfoundation.org/governance/advisory-board/</a></li>\r\n<li><a href=\"https://www.redhat.com/en\" class=\"uri\">https://www.redhat.com/en</a></li>\r\n<li><a href=\"https://www.collaboraoffice.com/\" class=\"uri\">https://www.collaboraoffice.com/</a></li>\r\n<li><a href=\"https://www.cib.de/en/home.html\" class=\"uri\">https://www.cib.de/en/home.html</a></li>\r\n<li><a href=\"https://www.ahuka.com/libreoffice-7-0-released/\" class=\"uri\">https://www.ahuka.com/libreoffice-7-0-released/</a></li>\r\n</ul>\r\n',198,70,0,'CC-BY-SA','LibreOffice, new release',0,0,1),
(3230,'2020-12-18','Introduction to Layers',1258,'Layers are the most important concept in using GIMP','<p>Layers are the feature that does most of the heavy lifting in GIMP. In this episode we begin looking at them with an introduction, but we\'llgodeeper!</p>\r\n<h2id=\"links\">Links:</h2>\r\n<ul>\r\n<li><ahref=\"https://docs.gimp.org/2.8/en/\"class=\"uri\">https://docs.gimp.org/2.8/en/</a></li>\r\n<li><ahref=\"https://www.animationconnection.com/about-the-art/original-production-cels\"class=\"uri\">https://www.animationconnection.com/about-the-art/original-production-cels</a></li>\r\n<li><ahref=\"https://en.wikipedia.org/wiki/XCF_(file_format)\"class=\"uri\">https://en.wikipedia.org/wiki/XCF_(file_format)</a></li>\r\n<li><ahref=\"https://www.webopedia.com/TERM/A/alpha_channel.html\"class=\"uri\">https://www.webopedia.com/TERM/A/alpha_channel.html</a></li>\r\n<li><ahref=\"https://www.ahuka.com/gimp/introduction-to-layers/\"class=\"uri\">https://www.ahuka.com/gimp/introduction-to-layers/</a></li>\r\n</ul>\r\n',198,113,0,'CC-BY-SA','GIMP,images,photos,graphics,layers',0,0,1),
(3146,'2020-08-24','Help Me Help you with HPR eps!',358,'What should I do and how should I do it ?','<p>A show about shows ?</p>',36,0,0,'CC-BY-SA','podcasting, hpr',0,0,1),
(3155,'2020-09-04','LastPass Security Dashboard',680,'A recent update to LastPass added a Security Dashboard','<p>LastPass is one of the password managers I use (along with Keepass), and recently they added a Security Dashboard feature to the product. I take a look at this dashboard and review some of the features.</p>\r\n<h2 id=\"links\">Links:</h2>\r\n<ul>\r\n<li><a href=\"https://blog.lastpass.com/2020/08/new-lastpass-security-dashboard-and-dark-web-monitoring-now-available/\" class=\"uri\">https://blog.lastpass.com/2020/08/new-lastpass-security-dashboard-and-dark-web-monitoring-now-available/</a></li>\r\n<li><a href=\"https://www.pcmag.com/picks/the-best-password-managers\" class=\"uri\">https://www.pcmag.com/picks/the-best-password-managers</a></li>\r\n<li><a href=\"https://www.cnet.com/how-to/best-password-manager-to-use-for-2020-1password-last-password-more-compared/\" class=\"uri\">https://www.cnet.com/how-to/best-password-manager-to-use-for-2020-1password-last-password-more-compared/</a></li>\r\n<li><a href=\"https://www.tomsguide.com/us/best-password-managers,review-3785.html\" class=\"uri\">https://www.tomsguide.com/us/best-password-managers,review-3785.html</a></li>\r\n<li><a href=\"https://www.wired.com/story/best-password-managers/\" class=\"uri\">https://www.wired.com/story/best-password-managers/</a></li>\r\n<li><a href=\"https://www.zwilnik.com/security-and-privacy/hashing-passwords-and-certificates/passwords-entropy-and-good-password-practices/\" class=\"uri\">https://www.zwilnik.com/security-and-privacy/hashing-passwords-and-certificates/passwords-entropy-and-good-password-practices/</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=1620\" class=\"uri\">https://hackerpublicradio.org/eps.php?id=1620</a></li>\r\n<li><a href=\"https://support.logmeininc.com/lastpass/help/what-is-the-security-score-in-my-security-dashboard\" class=\"uri\">https://support.logmeininc.com/lastpass/help/what-is-the-security-score-in-my-security-dashboard</a></li>\r\n<li><a href=\"https://www.sans.org/security-awareness-training/blog/time-password-expiration-die\" class=\"uri\">https://www.sans.org/security-awareness-training/blog/time-password-expiration-die</a></li>\r\n<li><a href=\"https://haveibeenpwned.com/\" class=\"uri\">https://haveibeenpwned.com/</a></li>\r\n<li><a href=\"https://www.enzoic.com/\" class=\"uri\">https://www.enzoic.com/</a></li>\r\n<li><a href=\"https://www.zwilnik.com/the-lastpass-security-dashboard/\" class=\"uri\">https://www.zwilnik.com/the-lastpass-security-dashboard/</a></li>\r\n</ul>\r\n',198,74,0,'CC-BY-SA','LastPass, passwords, security, monitoring',0,0,1),
(3144,'2020-08-20','Pentesting: Insecure Object Reference',726,'How an insecure object reference lead to a covid-related databreach','<p>Insecure object reference is a very common bug in online applications which most of the time leads to significant data breaches. In this episode I talk about one such vulnerability I discovered recently in a covid-related application.</p>',387,74,0,'CC-BY-SA','pentesting,security,hacking',0,0,1),
(3145,'2020-08-21','A light bulb moment, part 1',649,'Finding the working voltage of a bulb','<p>This show came about because of an email from Dave Morriss on the 4th March 2020</p>\r\n<p>The upshot of it was that Dave came into possession of an illuminated lantern that he wanted to use. He had a problem however as the lantern in question was sealed and he didn\'tknowtheworkingvoltageofthebulbwithin.Heaskedmeiftherewasawayofworkingitout.</p>\r\n<p>WellfirstofallbeforeIgoanyfurtherIshouldprobablysayI\'m not a bulb expert, however I set about doing a little investigating. What I was about to discover is that calculating this is not as straightforward as you might think.</p>\r\n<p>One thing you might think to do is to use a meter to measure the resistance of the bulb. Even doing this however is fraught with difficulty because measuring the resistance of a cold bulb not at working temperature will give a misleading answer. This is because the resistance of a standard bulb changes with temperature.</p>\r\n<p>I can demonstrate this by measuring the resistance of two light bulbs I have lying around the house.</p>\r\n<p>One is a clear traditional Bayonet tungsten filament house bulb rated at 40W. I live in the UK so its operating voltage is 240V I used my trusty Fluke 77 Digital Ohmmeter but any meter capable of measuring resistance will do. This bulb at room temperature measured a resistance of 108 ohms</p>\r\n<p>The other bulb was a Halogen E14 screw in bulb rated at 28W and its operating voltage like the previous bulb was 240V. Its measured resistance at room temperature was 144 ohms)</p>\r\n<p>Diagrams Created using LibreOffice Draw \"Version: 6.0.7.3\"</p>\r\n<p>Formulae<br />\r\n<img src=\"https://hackerpublicradio.org/eps/hpr3145/img_001.png\" alt=\"Formulae\" /></p>\r\n<p><strong>Calculations For (tungsten filament bulb)</strong></p>\r\n<pre><code>V/R = I (Amps)\r\nso 240V / 108 ohms = 2.2 Amps\r\n\r\nV x I = P (Watts)\r\nso 240V x 2.2 Amps = 528W</code></pre>\r\n<p><strong>Calculations For (halogen bulb)</strong></p>\r\n<pre><code>V/R = 240V / 144 ohms = 1.7 Amps (halogen)\r\n\r\nV x I = W\r\nso 240V x 1.7 Amps = 408W</code></pre>\r\n<p>As per usual I used google and come up with somebody asking the same sort of question at <a href=\"https://www.candlepowerforums.com/vb/showthread.php?64832-How-to-identify-voltage-of-an-unmarked-bulb\" class=\"uri\">https://www.candlepowerforums.com/vb/showthread.php?64832-How-to-identify-voltage-of-an-unmarked-bulb</a> yes it seems like there a forum for just about anything you can think of.</p>\r\n<p>One person on the forum made the point that there really isn\'tsuchathingasaworkingvoltageitjustdependsonhowlongyouwantthebulbtolast.ForthisreasonIalwaysturndownthebrightnessonanycarIownthathisdimmabledashboardlightschangingthesebulbscanbearealpainandorcanbeexpensive.</p>\r\n<p>Sometimesthestatedworkingvoltageforabulbcanbemisleadingforexampleacarbulbwilloftenstateaworkingvoltageof12Vbutislikelytoberunningatahighervoltagewhentheengineisrunningduetotheoperationofcarsalternator.</p>\r\n<p>Anotherpersonsuggestedtryingtoestimatethelengthofthefilamentandusingthistodeterminetheworkingvoltage.</p>\r\n<p>Yetsomebodyelsesuggestedjustusingavariablesupplyandtojustslowlyincreasethevoltageuntilareasonableamountoflightisgenerated.Thismightbequitesimpleifit\'s a low voltage bulb and you could even use some batteries lying around connecting them in series adding one battery at a time until the required brightness is achieved.</p>\r\n<p>It isn\'tsosimpleifbulbrequiresahighervoltage.</p>\r\n<p>IntheendIjustpassedthisinformationontoDavewishinghimluckinhispathtodiscoveringtheoptimalworkingvoltageforhislantern.</p>\r\n<p>FeelfreetowriteacommentifanyofyououttherehaveanyotherideaonfindingtheworkingvoltageofabulbthiswayitcanbesharedwiththerestofusduringtheCommunityNe
(3148,'2020-08-26','Why Open Source matters (to me)',1612,'I go briefly into my own history that has lead me to choose open source software exclusively.','<p>My original website: <a href=\"https://psquirk.tripod.com\" class=\"uri\">https://psquirk.tripod.com</a></p>',383,0,0,'CC-BY-SA','history,open source,matters,vic 20,amiga,commodore',0,0,1),
(3151,'2020-08-31','How I listen to podcasts',393,'This is a reply to MrX episode on how to listen to podcasts','<p>In this episode I talk about the program I use to listen to podcasts.</p>\r\n<p>BeyondPod which has a smart play feature where you can decide how to listen, in what order and how much of each podcast.</p>',382,0,0,'CC-BY-SA','podcast,software,android',0,0,1),
(3152,'2020-09-01','My Pocket Knives',870,'I talk a little about some pocket knives I often carry','<h2 id=\"introduction\">Introduction</h2>\r\n<p>As a boy I was allowed to have a penknife from about the age of 10. Since then I have tended to carry pocket knives with me on a regular basis.</p>\r\n<p>I have three knives that often travel with me, though two might have become illegal in the UK in the recent past because they lock.</p>\r\n<p>The knives are:</p>\r\n<ul>\r\n<li>Victorinox <em>Huntsman</em></li>\r\n<li>Durol locking knife</li>\r\n<li>Roxon KS-S501</li>\r\n</ul>\r\n<h2 id=\"long-notes\">Long notes</h2>\r\n<p>I have provided detailed notes as usual for this episode, and these can be <a href=\"https://hackerpublicradio.org/eps/hpr3152/full_shownotes.html\">viewed here</a>.</p>\r\n<h2 id=\"links\">Links</h2>\r\n<ul>\r\n<li>Victorinox\r\n<ul>\r\n<li><a href=\"https://www.victorinox.com/uk/en\">Victorinox website</a> (UK)</li>\r\n<li><a href=\"https://www.victorinox.com/uk/en/Products/Swiss-Army-Knives/Medium-Pocket-Knives/Huntsman/p/1.3713\">Victorinox <em>Huntsman</em></a> (UK)</li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Swiss_Army_knife\">Wikipedia: Swiss Army knife</a></li>\r\n</ul></li>\r\n<li>Durol\r\n<ul>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Thiers,_Puy-de-D%C3%B4me\">Wikipedia: Thiers, Puy-de-Dôme</a></li>\r\n<li><a href=\"https://www.lecouteau.info/couteliers-fabricants-de-thiers/durol/\">Coutellerie & Couteaux - Durol</a> (<em>in French</em>)</li>\r\n</ul></li>\r\n<li>ROXON\r\n<ul>\r\n<li><a href=\"https://roxontool.com/col.jsp?id=111\">KS-S501</a></li>\r\n</ul></li>\r\n</ul>\r\n',225,0,1,'CC-BY-SA','knife,pocket knife,penknife,Victorinox,Durol,Roxon',0,0,1),
(3153,'2020-09-02','Fixing eBooks with Calibre and pdfcrop',308,'Ken uses Calibre to convert a epub to PDF then uses pdfcrop to trim the margins','<pre>\r\npdfcrop --margins \'-4-4-4-5\' --clip input.pdf output.pdf\r\n</pre>\r\n\r\n<p>\r\ncalibre is a powerful and easy to use e-book manager. Users say it’s outstanding and a must-have. It’ll allow you to do nearly everything and it takes things a step beyond normal e-book software. It’s also completely free and open source and great for both casual users and computer experts. \r\n</p>\r\n<p>\r\nPDFCrop is a Perl script that crops the white margins of PDF pages and rescales them to fit a standard size sheet of paper. It makes the printed pages far more attractive to read! \r\n</p>\r\n<h3>Links</h3>\r\n<ul>\r\n<li><a href=\"https://calibre-ebook.com/\">https://calibre-ebook.com/</a></li>\r\n<li><a href=\"https://pdfcrop.sourceforge.net/\">https://pdfcrop.sourceforge.net/</a></li>\r\n</ul>',30,0,0,'CC-BY-SA','calibre,pdfcrop,epub,pdf',0,0,1),
(3154,'2020-09-03','Make NextCloud your next cloud',771,'I go into my reasons for using NextCloud, what it is, and why you might want it.','<p>My federated address is @paul@cloud.pquirk.com</p>',383,0,0,'CC-BY-SA','Raspberry Pi,NextCloud,federated',0,0,1),
(3157,'2020-09-08','Compost',2583,'How and why to compost','<p>\r\n How to compost food scraps to produce nutrient-rich soil. It's natural!\r\n</p>',78,93,0,'CC-BY-SA','food, rubbish, landfill, gardening',0,0,1),
(3159,'2020-09-10','Vivaldi - The Four Seasons',2703,'All four movements of Vivaldi\'sFourSeasons,celebratingtheCreativeCommonslicense','<p>\r\nAntonioVivaldicomposedTheFourSeasons(\'Le quattro stagioni\'initsoriginalItalian)in1723.Itisasetof4violinconcertosthatproposeanearlyformofdescriptivemusic:forexample,Wintermakesprominentuseofpizzicatonotesinhighregisters,whereasSummerevokesastorminitsfinalmovement.TheworkwasfirstpresentedaspartofOp.8,beinglatercataloguedasRV269,315,293&297.TheFourSeasonsremainverypopulartothisday,someofitsconcertosspawningagreatnumberofderivativeworks,whereasthousandsofrecordingsoftheoriginalpieceshavebeenmade.ItisstilldebatedifVivaldiwrotethisconcertostoaccompanyfoursonnetsthatmayhavebeenwrittenbyhimself.<br/>\r\nFrom<ahref=\"https://musopen.org/music/14910-the-four-seasons-op-8/\">VivaldiTheFourSeasons,Op.8</a>\r\n</p>\r\n\r\n<p>\r\n<ahref=\"https://musopen.org/music/performer/the-modena-chamber-orchestra/\">TheModenaChamberOrchestraMusic</a>\r\n</p>',383,22,0,'CC-BY-SA','Vivaldi,fourseasons,creativecommons',0,0,1),
(3158,'2020-09-09','Fingerprint access control? LOL... ',1201,'A story about pentesting physical security','<p>Hello everyone, my name is Cedric and I\'mhereagainwithanotherstoryonpentestingandsecurity,straightfromthetrenches.</p>\r\n<p>TodayI\'m going to share a story with you about an assignment we did some time ago for a large entertainment company. Our client, like many entertainment companies, produces a lot of intellectual property. So, one of their biggest concerns is that someone might physically break into their premises and steal some of these designs and products. They had already taken some precautions, like installing intrusion detection alarms and access controls on all doors etc\'TheaccesscontrolstheyinstalledevenhadadualfunctionandcouldbeusedbothasanRFIDreaderandasafingerprintreader.So,theywerealreadytryingtheirbesttosecuretheiron-siteintellectualproperty.Andthat\'s also the reason why they hired me and my team: they wanted to check if their investment in security was actually worth its money so far.</p>\r\n<p>We proposed a plan to hack them, in any way our devious minds could possibly think of. Everything was on the table: We could try and hack ourselves in. We could social engineer ourselves in, basically by manipulating people and abusing their trust and confidence. We could do all of that, and we would, eventually. But first, the grand opening of this show, would be an attempt to physically break into their premises at night. And yes, that was as much fun as it sounds ;-)</p>\r\n<p>Our approach was basically the same as that of a professional burglar: we\'dstartwithaweekofpreparationandscopingtheplace.</p>\r\n<p>Sohowdoyoudothis?Well,weknewtheaddressofcoursesofirstwecheckedouttheplaceonGoogleMaps.Andwewereprettylucky:Googlehadjustrecentlyupdatedtheirimageryoftheareawhichmeantwehadrecentmapstoworkwithandtheentirethingcouldbeviewedin3Dwithafairamountofdetail.That\'s pretty much as perfect as it comes when you\'replanningtodoamajorheistonaplaceinthephysicalworldoutthere:-)So,westartedwithscoutingtheareafrombehindourlaptops.Wesawwherealltheentrancestothebuildingwere.Wealsosawthatonthefrontsidethebuildingjustgaveaccesstothestreet,whileonthebacksideofthepremisetherewasapublicpark.Thislookedverypromisingasapotentialentrypoint,soournextstepwouldbetoactuallyphysicallygothereandscoutthearea.</p>\r\n<p>So,firstwewentthereduringdaylighthoursandjusttookadrivearoundtheblockusingarentalcar.We\'d look for entrances to the building, camera\'sguardingtheseandthegeneralviewofthearea,basicthings…Wedidn\'t spot any cameras on the outside of the building. So we figured it would be pretty safe to take a walk and scout the area by foot. There was foot traffic but not too much, so we wouldn\'tdrawanyattentionbyjustcasuallywalkingaroundandhavingacloserlook.</p>\r\n<p>Themainentrancetothebuildingwasinaquietstreetwhichledtoasmallsquarewhereafewkidswereplaying,andontheothersidetherewasastreetwithsomeshopsandafewrestaurants.Theentrancetoourclientsbuildinghadagatethroughwhichwecouldseeaquietcourtyardandthegenerallayoutofthebuilding.Thefirstthingthatdrewourattentionwasanaccesscontroldeviceguardingtheentrance,itwasafingerprintreaderandithadabrandnameSupremaprintedonit.Straightacrossthecourtyardwecouldseethetreesoftheneighboringpark.Therewasarooftopterraceonthefirstfloorwhichgaveaccesstotheofficesofourclient.Wealsonoticedthewallthatseparatedthisterracefromtheparkanditwashuge,atleast6meters.</p>\r\n<p>Wecouldn\'t hang around for too long of course so we decided to continue our walk to the second entrance we spotted just around the corner. We could recognise its anonymous door next to a restaurant because it was guarded by the same Suprema
(3161,'2020-09-14','How I manage podcast listening',1192,'Another reply to MrX\'sepisodeonhowhelistenstopodcasts','<h2id=\"introduction\">Introduction</h2>\r\n<p>Ihavespokeninthepastaboutthe<ahref=\"https://hackerpublicradio.org/eps.php?id=2211\"title=\"My podcast workflow\">podcastmanagementsystem</a>Ihavecreated,buthavenevergoneintomuchdetailabouthowImanagetheplayingofepisodes.</p>\r\n<p>Promptedby<ahref=\"https://hackerpublicradio.org/correspondents/0201.html\">MrX’s</a><ahref=\"https://hackerpublicradio.org/eps.php?id=3132\"title=\"Keeping track of where I am\">HPRepisodehpr3132,“KeepingtrackofwhereIam”</a>Iwilldescribeitnow.</p>\r\n<h2id=\"long-notes\">Longnotes</h2>\r\n<p>Followthislinkto<ahref=\"https://hackerpublicradio.org/eps/hpr3161/full_shownotes.html\">readthedetailednotes</a>associatedwiththisepisode.</p>\r\n<h2id=\"links\">Links</h2>\r\n<ul>\r\n<li><ahref=\"https://www.rockbox.org/\">Rockbox-analternativeoperatingsystemforcertainmusicplayers</a></li>\r\n<li><ahref=\"https://www.figlet.org/\">figlet-aprogramformakinglargelettersoutofordinarytext</a></li>\r\n</ul>\r\n<ul>\r\n<li>HPRlinks:\r\n<ul>\r\n<li><ahref=\"https://hackerpublicradio.org/eps.php?id=1656\">hpr1656::Myaudioplayercollection</a></li>\r\n<li><ahref=\"https://hackerpublicradio.org/eps.php?id=1992\">hpr1992::HowI’mhandlingmypodcast-subscriptionsand-listening</a></li>\r\n<li><ahref=\"https://hackerpublicradio.org/eps.php?id=2211\">hpr2211::Mypodcastworkflow</a></li>\r\n<li><ahref=\"https://hackerpublicradio.org/eps.php?id=3132\">hpr3132::KeepingtrackofwhereIam</a></li>\r\n</ul></li>\r\n</ul>',225,0,1,'CC-BY-SA','podcast,software,mp3player,database',0,0,1),
(3165,'2020-09-18','Spanish Tools Continued',830,'Part two of how I am using a variety of tools to learn Spanish','<p>I decided to use my time spent in relative isolation to do something productive and learn another language. I picked Spanish because I am hoping to visit Mexico and other Latin American countries whenever the plague lifts. I decided to document this for anyone who wants to know what options I found and how they have worked for me so far. This is the second part of my tools exploration.</p>\r\n<ul>\r\n<li><a href=\"https://www.youtube.com/channel/UC3iaeeUxWOgUXFK6kfIp_Ig\" class=\"uri\">https://www.youtube.com/channel/UC3iaeeUxWOgUXFK6kfIp_Ig</a></li>\r\n<li><a href=\"https://www.alllanguageresources.com/spanish/\" class=\"uri\">https://www.alllanguageresources.com/spanish/</a></li>\r\n<li><a href=\"https://www.youtube.com/watch?v=hyLl_0d0EBw&list=PLTpetkN815Qyuc2RbC1kxxMQvxjQ3RnYG\" class=\"uri\">https://www.youtube.com/watch?v=hyLl_0d0EBw&list=PLTpetkN815Qyuc2RbC1kxxMQvxjQ3RnYG</a></li>\r\n<li><a href=\"https://www.youtube.com/watch?v=QWEXFfqwh7w&list=PL80Flen6gkH_9j4OxsDucs9mbKjl5ccvU\" class=\"uri\">https://www.youtube.com/watch?v=QWEXFfqwh7w&list=PL80Flen6gkH_9j4OxsDucs9mbKjl5ccvU</a></li>\r\n<li><a href=\"https://radiolingua.com/category/coffee-break-spanish/\" class=\"uri\">https://radiolingua.com/category/coffee-break-spanish/</a></li>\r\n<li><a href=\"https://www.fluentu.com/blog/spanish/coffee-break-spanish-review/\" class=\"uri\">https://www.fluentu.com/blog/spanish/coffee-break-spanish-review/</a></li>\r\n<li><a href=\"https://www.alllanguageresources.com/coffee-break-spanish/\" class=\"uri\">https://www.alllanguageresources.com/coffee-break-spanish/</a></li>\r\n<li><a href=\"https://spanishlandschool.com/best-spanish-podcasts/\" class=\"uri\">https://spanishlandschool.com/best-spanish-podcasts/</a></li>\r\n<li><a href=\"https://podcast.duolingo.com/spanish\" class=\"uri\">https://podcast.duolingo.com/spanish</a></li>\r\n<li><a href=\"https://www.alllanguageresources.com/spanish-podcasts/\" class=\"uri\">https://www.alllanguageresources.com/spanish-podcasts/</a></li>\r\n<li><a href=\"https://mashable.com/2017/12/07/duolingo-launches-spanish-podcast/\" class=\"uri\">https://mashable.com/2017/12/07/duolingo-launches-spanish-podcast/</a></li>\r\n<li><a href=\"https://www.thoughtco.com/best-podcasts-for-learning-spanish-4705414\" class=\"uri\">https://www.thoughtco.com/best-podcasts-for-learning-spanish-4705414</a></li>\r\n<li><a href=\"https://www.babbel.com/en/magazine/babbels-spanish-podcasts\" class=\"uri\">https://www.babbel.com/en/magazine/babbels-spanish-podcasts</a></li>\r\n<li><a href=\"https://www.podparadise.com/Podcast/Reviews/1485542323\" class=\"uri\">https://www.podparadise.com/Podcast/Reviews/1485542323</a></li>\r\n<li><a href=\"https://chartable.com/podcasts/a-zero-to-a-hero-learn-spanish\" class=\"uri\">https://chartable.com/podcasts/a-zero-to-a-hero-learn-spanish</a></li>\r\n<li><a href=\"https://www.boulderspanish.com/top-10-podcasts-for-spanish-learners/\" class=\"uri\">https://www.boulderspanish.com/top-10-podcasts-for-spanish-learners/</a></li>\r\n<li><a href=\"https://www.spanishpod101.com/helpcenter/getstarted/itunesfeeds\" class=\"uri\">https://www.spanishpod101.com/helpcenter/getstarted/itunesfeeds</a></li>\r\n<li><a href=\"https://www.fluentin3months.com/spanishpod101-review/\" class=\"uri\">https://www.fluentin3months.com/spanishpod101-review/</a></li>\r\n<li><a href=\"https://www.alllanguageresources.com/spanishpod101/\" class=\"uri\">https://www.alllanguageresources.com/spanishpod101/</a></li>\r\n<li><a href=\"https://actualfluency.com/spanishpod101-review/\" class=\"uri\">https://actualfluency.com/spanishpod101-review/</a></li>\r\n<li><a href=\"https://www.notesinspanish.com/\" class=\"uri\">https://www.notesinspanish.com/</a></li>\r\n<li><a href=\"https://www.fluentu.com/blog/spanish/spanish-podcasts/\" class=\"uri\">https://www.fluentu.com/blog/spanish/spanish-podcasts/</a></li>\r\n<li><a href=\"https://coffeeshopspanish.com/blog/2016/09/23/top-7-s
(3175,'2020-10-02','International Keyboard',681,'How I learned to implement a keyboard that lets me type in Spanish','<p>I decided to use my time spent in relative isolation to do something productive and learn another language. I picked Spanish because I am hoping to visit Mexico and other Latin American countries whenever the plague lifts. I decided to document this for anyone who wants to know what options I found and how they have worked for me so far. This is the third part where I explain how I implemented the US International Keyboard on a variety of platforms. This lets me type characters that Spanish uses which do not appear on a standard US English keyboard. And best of all, it a purely free software fix.</p>\r\n<ul>\r\n<li><a href=\"https://en.wikipedia.org/wiki/British_and_American_keyboards#/media/File:KB_US-International.svg\" class=\"uri\">https://en.wikipedia.org/wiki/British_and_American_keyboards#/media/File:KB_US-International.svg</a></li>\r\n<li><a href=\"https://www.palain.com/international-keyboard/\" class=\"uri\">https://www.palain.com/international-keyboard/</a></li>\r\n</ul>\r\n',198,116,0,'CC-BY-SA','Spanish, Language learning, typing foreign characters',0,0,1),
(3456,'2021-11-01','HPR Community News for October 2021',4849,'HPR Volunteers talk about shows released and comments posted in October 2021','<style>\ntable td.shrink {\n white-space:nowrap\n}\n</style>\n\n<h2>New hosts</h2>\n<p>\nWelcome to our new host: <br />\n\n <a href=\"https://hackerpublicradio.org/correspondents/0397.html\" target=\"_blank\">hakerdefo</a>.\n</p>\n\n<h2>Last Month\'sShows</h2>\n<tableid=\"t01\">\n<tr>\n<th>Id</th>\n<th>Day</th>\n<th>Date</th>\n<th>Title</th>\n<th>Host</th>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3435\"target=\"_blank\">3435</a></strong></td>\n<td>Fri</td>\n<tdclass=\"shrink\">2021-10-01</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3435\"target=\"_blank\">HackingStorieswithReacted:part5</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0036.html\"target=\"_blank\">operat0r</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3436\"target=\"_blank\">3436</a></strong></td>\n<td>Mon</td>\n<tdclass=\"shrink\">2021-10-04</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3436\"target=\"_blank\">HPRCommunityNewsforSeptember2021</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0159.html\"target=\"_blank\">HPRVolunteers</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3437\"target=\"_blank\">3437</a></strong></td>\n<td>Tue</td>\n<tdclass=\"shrink\">2021-10-05</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3437\"target=\"_blank\">TheHTMLdocumentformat</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0382.html\"target=\"_blank\">DanielPersson</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3438\"target=\"_blank\">3438</a></strong></td>\n<td>Wed</td>\n<tdclass=\"shrink\">2021-10-06</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3438\"target=\"_blank\">TenprivacyfriendlyGooglesearchalternatives.</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0397.html\"target=\"_blank\">hakerdefo</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3439\"target=\"_blank\">3439</a></strong></td>\n<td>Thu</td>\n<tdclass=\"shrink\">2021-10-07</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3439\"target=\"_blank\">LinuxInlawsS01E40:TheOnewiththeBSDs</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0384.html\"target=\"_blank\">monochromec</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3440\"target=\"_blank\">3440</a></strong></td>\n<td>Fri</td>\n<tdclass=\"shrink\">2021-10-08</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3440\"target=\"_blank\">LightenLayerModes</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0198.html\"target=\"_blank\">Ahuka</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3441\"target=\"_blank\">3441</a></strong></td>\n<td>Mon</td>\n<tdclass=\"shrink\">2021-10-11</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3441\"target=\"_blank\">MurphyWorkBench</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0036.html\"target=\"_blank\">operat0r</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3442\"target=\"_blank\">3442</a></strong></td>\n<td>Tue</td>\n<tdclass=\"shrink\">2021-10-12</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3442\"target=\"_blank\">Whatisthisthingcalledscience</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0078.html\"target=\"_blank\">klaatu</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3443\"target=\"_blank\">3443</a></strong></td>\n<td>Wed</td>\n<tdclass=\"shrink\">2021-10-13</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3443\"target=\"_blank\">Neutonbatteryreplacement</a></td>\n<td><ahref=\"h
(3481,'2021-12-06','HPR Community News for November 2021',5638,'HPR Volunteers talk about shows released and comments posted in November 2021','<style>\ntable td.shrink {\n white-space:nowrap\n}\n</style>\n\n<h2>New hosts</h2>\n<p>\nWelcome to our new hosts: <br />\n\n <a href=\"https://hackerpublicradio.org/correspondents/0398.html\" target=\"_blank\">one_of_spoons</a>, \n <a href=\"https://hackerpublicradio.org/correspondents/0399.html\" target=\"_blank\">dnt</a>.\n</p>\n\n<h2>Last Month\'sShows</h2>\n<tableid=\"t01\">\n<tr>\n<th>Id</th>\n<th>Day</th>\n<th>Date</th>\n<th>Title</th>\n<th>Host</th>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3456\"target=\"_blank\">3456</a></strong></td>\n<td>Mon</td>\n<tdclass=\"shrink\">2021-11-01</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3456\"target=\"_blank\">HPRCommunityNewsforOctober2021</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0159.html\"target=\"_blank\">HPRVolunteers</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3457\"target=\"_blank\">3457</a></strong></td>\n<td>Tue</td>\n<tdclass=\"shrink\">2021-11-02</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3457\"target=\"_blank\">Tables</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0078.html\"target=\"_blank\">klaatu</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3458\"target=\"_blank\">3458</a></strong></td>\n<td>Wed</td>\n<tdclass=\"shrink\">2021-11-03</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3458\"target=\"_blank\">LivingintheTerminal2:TheObligatorySequel</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0396.html\"target=\"_blank\">BlacKernel</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3459\"target=\"_blank\">3459</a></strong></td>\n<td>Thu</td>\n<tdclass=\"shrink\">2021-11-04</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3459\"target=\"_blank\">LinuxInlawsS01E42:TheOpenSourceInitiative</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0384.html\"target=\"_blank\">monochromec</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3460\"target=\"_blank\">3460</a></strong></td>\n<td>Fri</td>\n<tdclass=\"shrink\">2021-11-05</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3460\"target=\"_blank\">DodgeandBurn</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0198.html\"target=\"_blank\">Ahuka</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3461\"target=\"_blank\">3461</a></strong></td>\n<td>Mon</td>\n<tdclass=\"shrink\">2021-11-08</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3461\"target=\"_blank\">ChangestoHPRBranding</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0159.html\"target=\"_blank\">HPRVolunteers</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3462\"target=\"_blank\">3462</a></strong></td>\n<td>Tue</td>\n<tdclass=\"shrink\">2021-11-09</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3462\"target=\"_blank\">Metalmarbles.</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0398.html\"target=\"_blank\">one_of_spoons</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3463\"target=\"_blank\">3463</a></strong></td>\n<td>Wed</td>\n<tdclass=\"shrink\">2021-11-10</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3463\"target=\"_blank\">Clonezilla:Abackupstory</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0293.html\"target=\"_blank\">Rho`n</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3464\"target=\"_blank\">3464</a></strong></td>\n<td>Thu</td>\n<tdclass=\"shrink\">2021-11-11</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3464\"targ
(3162,'2020-09-15','Introduction to Ansible',2674,'Klaatu demonstrates some Ansible tricks, and how Ansible can be a better choice than scripting.','<p>\r\nIntroduction to Ansible.\r\n</p>',78,0,0,'CC-BY-SA','ansible,sysadmin',0,0,1),
(3163,'2020-09-16','Linux Inlaws S01E13: The road to communism and freedom',3855,'Our old heroes discuss their legacy and how they arrived at open source software and communism','<ul>\r\n<li>brytlyt: <a href=https://www.brytlyt.com target=_blank>https://www.brytlyt.com</a></li>\r\n<li>OS/2: <a href=https://en.wikipedia.org/wiki/OS/2 target=_blank>https://en.wikipedia.org/wiki/OS/2</a></li>\r\n<li>CCP/M: <a href=https://en.wikipedia.org/wiki/Multiuser_DOS#CCP/M-86 target=_blank>https://en.wikipedia.org/wiki/Multiuser_DOS#CCP/M-86</a></li>\r\n<li>Communism and open source: <a href=https://medium.com/@diego.graziano/open-source-the-communism-of-knowledge-fe76334b9b10 target=_blank>https://medium.com/@diego.graziano/open-source-the-communism-of-knowledge-fe76334b9b10</a></li>\r\n<li>Why Emacs is better than vi (aka The Church of Emacs): <a href=https://www.gnu.org/fun/jokes/gospel.html target=_blank>https://www.gnu.org/fun/jokes/gospel.html</a></li>\r\n<li>(Open)VMS: <a href=https://en.wikipedia.org/wiki/OpenVMS target=_blank>https://en.wikipedia.org/wiki/OpenVMS</a></li>\r\n<li>Mach: <a href=\"https://en.wikipedia.org/wiki/Mach_(kernel)\" target=_blank>https://en.wikipedia.org/wiki/Mach_(kernel)</a></li>\r\n<li>Dave Cutler: <a href=\"https://en.wikipedia.org/wiki/Dave_Cutler\" target=_blank>https://en.wikipedia.org/wiki/Dave_Cutler</a></li>\r\n<li>The ultimate remedy for insomnia: <a href=https://www.routledge.com/Advances-in-Object-Oriented-Metalevel-Architectures-and-Reflection/Zimmermann/p/book/9780849326639 target=_blank>https://www.routledge.com/Advances-in-Object-Oriented-Metalevel-Architectures-and-Reflection/Zimmermann/p/book/9780849326639</a></li>\r\n<li>Randal\'sdeparturefromFLOSSWeekly:<ahref=https://twit.tv/posts/inside-twit/doc-searls-new-host-floss-weeklytarget=_blank>https://twit.tv/posts/inside-twit/doc-searls-new-host-floss-weekly</a></li>\r\n<li>TheRustFoundation:<ahref=https://blog.rust-lang.org/2020/08/18/laying-the-foundation-for-rusts-future.htmltarget=_blank>https://blog.rust-lang.org/2020/08/18/laying-the-foundation-for-rusts-future.html</a></li>\r\n</ul>',384,111,1,'CC-BY-SA','opensource,communism,escortservices,freedom,Mach,VMS,accounts',0,0,1),
(3166,'2020-09-21','Using Ansible to mirror a Git repo',1580,'Klaatu uses Ansible to mirror a Git repo on two separate Git hosts','<p>\r\nI came up with a way to easily clone a repo living on Github and mirror it, with all the latest commits, on another Git host. You can schedule Ansible to run periodically to ensure your mirror stays updated.\r\n</p>\r\n\r\n<p>\r\nThis is <a href=\"https://github.com/dwayne-lee/mirrored_repos\" target=\"_blank\">Dwayne Lee's improved implementation based on my original script</a>.\r\n</p>',78,0,0,'CC-BY-SA','ansible,sysadmin,git',0,0,1),
(3169,'2020-09-24','Ludwig van Beethoven with a hint of Chopin',2518,'A fine treat to satisfy your earholes.','<p>All music in this episode is freely available from musopen.org.</p>\r\n\r\n<h3>Links</h3>\r\n\r\n<ul>\r\n<li><a href=\"https://musopen.org/music/2547-piano-sonata-no-14-in-c-sharp-minor-moonlight-sonata-op-27-no-2/\">Beethoven Piano Sonata no. 14 in C-sharp minor \'MoonlightSonata\', Op. 27 no. 2</a></li>\r\n<li><a href=\"https://musopen.org/music/2567-symphony-no-5-in-c-minor-op-67/\">Beethoven Symphony no. 5 in C minor, Op. 67</a></li>\r\n<li><a href=\"https://musopen.org/music/612-fantaisie-impromptu-op-66/\">Chopin Fantaisie - Impromptu, Op. 66</a></li>\r\n<li><a href=\"https://musopen.org/music/33-piano-sonata-no-8-in-c-minor-pathetique-op-13/\">Beethoven Piano Sonata no. 8 in C minor \'Pathetique\', Op. 13</a></li>\r\n<li><a href=\"https://musopen.org/music/46-piano-sonata-no-21-in-c-major-waldstein-op-53/\">Beethoven Piano Sonata no. 21 in C major \'Waldstein\', Op. 53</a></li>\r\n</ul>\r\n',383,22,0,'CC-BY-SA','Ludwig Van Beethoven,Fredrick Chopin,classical,energetic,music,public domain',0,0,1),
(3167,'2020-09-22','A ramble with the Pentland Squires (part 1)',2547,'MrX and Dave Morriss chat from opposite sides of the Pentland Hills, Edinburgh','<h2 id=\"introduction\">Introduction</h2>\r\n<p>Once again the two HPR hosts based in Edinburgh got together over Mumble to have a chat during the COVID-19 pandemic.</p>\r\n<ul>\r\n<li><a href=\"https://hackerpublicradio.org/correspondents/0201.html\">MrX</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/correspondents/0225.html\">Dave Morriss</a></li>\r\n</ul>\r\n<p>We recorded this conversation in the evening of Sunday 23<sup>rd</sup> August 2020.</p>\r\n<p>The audio was quite long when we’d finished, so we decided to cut it into two similar-length pieces and the remainder is released as a second episode.</p>\r\n<h3 id=\"show-title\">Show title</h3>\r\n<p>Although a explaining a joke can often destroy it, it’s probably worth saying that the title of this show was derived from the name of a variety of potato, <em>Pentland Squire</em>, and the fact that the two participants were separated by the Pentland Hills in Edinburgh! <code>\"</code>Where was the joke?<code>\"</code> you ask…</p>\r\n<h2 id=\"notes\">Notes</h2>\r\n<p>Some of the topics we discussed:</p>\r\n<ul>\r\n<li>Our positions relative to the Pentland Hills: MrX is to the East and Dave is to the West of the area, which is to the south of Edinburgh, about 6 or 7 miles out.\r\n<ul>\r\n<li><a href=\"https://www.pentlandhills.org/\">Pentland Hills Regional Park</a></li>\r\n</ul></li>\r\n</ul>\r\n<ul>\r\n<li>The state of COVID-19 and the lockdown in Scotland\r\n<ul>\r\n<li><a href=\"https://www.travellingtabby.com/scotland-coronavirus-tracker/\">Scotland Coronavirus Tracker</a></li>\r\n<li><a href=\"https://coronavirus.data.gov.uk/\">Coronavirus (COVID-19) in the UK</a> - no longer offering a simple CSV download as it originally did, but now has a detailed API.</li>\r\n</ul></li>\r\n</ul>\r\n<ul>\r\n<li>Processing HPR shownotes:\r\n<ul>\r\n<li>Experiences:\r\n<ul>\r\n<li>HTML, preferred but needs to be high quality</li>\r\n<li>Markdown, if well formatted this is the easiest to deal with</li>\r\n<li>Plain text, gets converted to Markdown by volunteers</li>\r\n</ul></li>\r\n<li><a href=\"https://github.com/retext-project/retext\">ReText, an editor for Markdown and reStructuredText markup languages</a></li>\r\n</ul></li>\r\n</ul>\r\n<ul>\r\n<li>Glasgow Podcrawl\r\n<ul>\r\n<li>A virtual meeting this year over Jitsi</li>\r\n<li>Some people joined from very far away such as <a href=\"https://hackerpublicradio.org/correspondents/0078.html\">Klaatu</a> in New Zealand</li>\r\n</ul></li>\r\n</ul>\r\n<ul>\r\n<li>Scripts written in recent times:\r\n<ul>\r\n<li>MrX: finding the duration of a video with <a href=\"https://ffmpeg.org/ffprobe-all.html\"><code>ffprobe</code></a>.</li>\r\n<li>Dave: choosing a meal from a list in a database to cook for the family</li>\r\n</ul></li>\r\n</ul>\r\n<ul>\r\n<li>Vegetarianism\r\n<ul>\r\n<li>MrX’s experiences</li>\r\n<li>Dave often makes a <a href=\"https://en.wikipedia.org/wiki/Nut_roast\"><em>Nut Roast</em></a> for Christmas dinner</li>\r\n</ul></li>\r\n</ul>\r\n',225,0,1,'CC-BY-SA','COVID-19,physical isolation,discussion',0,0,1),
(3168,'2020-09-23','FreeBSD Jails and iocage',531,'Use iocage to manage freebsd jails','<h2 id=\"freebsd-jails-with-iocage\">FreeBSD Jails with iocage</h2>\r\n<h3 id=\"introduction\">Introduction</h3>\r\n<p>FreeBSD jails allow users to run multiple, isolated instances of FreeBSD on a single server. Iocage simplifies the management of FreeBSD Jails.</p>\r\n<p><a href=\"https://en.wikipedia.org/wiki/OS-level_virtualization\">https://en.wikipedia.org/wiki/OS-level_virtualization</a></p>\r\n<p>The jails will be configured to bind to an IP address on the jail host\'sinternalnetwork.ThehostOSwillpasstrafficfromtheexternalnetworktothejail.</p>\r\n<p>ThejailswillbemanagedwithIocage.IocageusesZFSpropertiestostoreconfigurationdataforeachjail,soaZFSfilesystemisrequired.</p>\r\n<h3id=\"network-setup\">Networksetup</h3>\r\n<p>Thesestepswill:</p>\r\n<ol>\r\n<li>Setuptheinternalnetwork.</li>\r\n<li>Enablethe<strong>pf</strong>packetfilter</li>\r\n<li>Configurepfpassinternettraffictoandfromthejail.</li>\r\n</ol>\r\n<p>PFisfullfeaturedfirewall,andcandomorethanjustpasstraffictoaninternalnetwork.RefertothePFdocumentationforadditionalconfigurationoptions.</p>\r\n<h4id=\"run-the-following-to-configure-the-internal-network-and-enable-pf\">Runthefollowingtoconfiguretheinternalnetworkandenablepf.</h4>\r\n<pre><code>sysrccloned_interfaces+="lo1"\r\nsysrcifconfig_lo1="inet192.0.2.1/24"\r\nsysrcpf_enable="YES"\r\n</code></pre>\r\n<h4id=\"put-the-following-in-etcpfconf\">Putthefollowingin<code>/etc/pf.conf</code></h4>\r\n<pre><code># Variables\r\n# ext_if should be set to the hosts external NIC\r\next_if = "vtnet0"\r\njail_if = "lo1"\r\njail_net = $jail_if:network\r\n\r\n# NAT allows the jails to access the external network\r\nnat on $ext_if from $jail_net to any -> ($ext_if)\r\n\r\n# Redirect traffic on port 80 to the web server jail\r\n# Add similar rules for additional jails\r\nrdr pass on $ext_if inet proto tcp to port 80 -> 192.0.2.10\r\n</code></pre>\r\n<p><em>Reboot</em> to activate the network changes</p>\r\n<h3 id=\"zfs\">ZFS</h3>\r\n<p>The best way to use ZFS on a VPS is to attach block storage as a new disk.</p>\r\n<p>If block storage is not available, you can optionally use a file as the ZFS device.</p>\r\n<h4 id=\"enable-and-start-zfs\">Enable and start ZFS.</h4>\r\n<pre><code>sysrc zfs_enable="YES"\r\nservice zfs start\r\n</code></pre>\r\n<h4 id=\"zfs-using-block-storage\">ZFS using Block storage</h4>\r\n<p>List the available disks. If you are using a VPS, the block store will probably be the second disk.</p>\r\n<pre><code>geom disk list\r\n</code></pre>\r\n<p>Create a ZFS pool named jailstore.</p>\r\n<pre><code>zpool create jailstore /dev/vtbd1\r\n</code></pre>\r\n<h4 id=\"zfs-using-a-file\">ZFS using a file</h4>\r\n<p>Create the ZFS file.</p>\r\n<pre><code>dd if=/dev/zero of=/zfsfile bs=1M count=4096\r\n</code></pre>\r\n<p>Create a ZFS pool named jailstore.</p>\r\n<pre><code>zpool create jailstore /zfsfile\r\n</code></pre>\r\n<h3 id=\"install-iocage\">Install iocage</h3>\r\n<pre><code>pkg install py36-iocage\r\n</code></pre>\r\n<h3 id=\"using-iocage\">Using iocage</h3>\r\n<pre><code>iocage activate jailstore\r\niocage fetch\r\n\r\niocage create -n www ip4_addr="lo1|192.0.2.10/24" -r 11.1-RELEASE\r\niocage start www\r\niocage console www\r\n</code></pre>\r\n<p>Once you have a shell <strong>inside the jail</strong>, install and start Apache.</p>\r\n<pre><code>pkg install apache24\r\nsysrc apache24_enable="yes"\r\nservice apache24 start\r\n</code></pre>\r\n<p>Port 80 on the jail will now be accessible on the hosts IP address.</p>\r\n<h3 id=\"multiple-jails\">Multiple jails.</h3>\r\n<p>Additional jails can be installed using the example above.</p>\r\n<ol>\r\n<li>Install the new jail with the <code>iocage create</code> command , but use a different IP address</li>\r\n<li>Expose the new jail to the network by adding additional rules to pf.conf.</li>
(3172,'2020-09-29','A ramble with the Pentland Squires (part 2)',2983,'Second half of the chat between MrX and Dave Morriss','<p>The two HPR hosts based in Edinburgh got together over Mumble on the evening of Sunday 23<sup>rd</sup> August 2020 to have a chat during the COVID-19 pandemic.</p>\r\n<ul>\r\n<li><a href=\"https://hackerpublicradio.org/correspondents/0201.html\">MrX</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/correspondents/0225.html\">Dave Morriss</a></li>\r\n</ul>\r\n<p>This is the second half of the conversation. For the first part see <a href=\"https://hackerpublicradio.org/eps.php?id=3167\">HPR show 3167</a>.</p>\r\n<h2 id=\"notes\">Notes</h2>\r\n<p>Some of the topics we discussed:</p>\r\n<ul>\r\n<li>Listening to podcasts\r\n<ul>\r\n<li>MrX’s recent show <a href=\"https://hackerpublicradio.org/eps.php?id=3132\"><em>Keeping track of where I am</em></a></li>\r\n<li>Using phone-based apps like <a href=\"https://antennapod.org/\">Antennapod</a></li>\r\n<li><a href=\"https://www.rockbox.org/\">Rockbox (free music player firmware)</a> on Sansa Fuze, Sansa Clip, Clip+, Clip Zip, etc</li>\r\n</ul></li>\r\n</ul>\r\n<ul>\r\n<li>Mobile phones and tablets\r\n<ul>\r\n<li>MrX likes his <a href=\"https://www.nokia.com/phones/en_gb/nokia-5310\">Nokia 5310</a></li>\r\n<li>Dave is interested in the <a href=\"https://www.pine64.org/pinephone/\">PinePhone</a></li>\r\n<li>MrX has a Samsung Galaxy tablet (and did an HPR episode about it: <a href=\"https://hackerpublicradio.org/eps.php?id=3030\">hpr3030 :: My new Samsung tablet</a>)</li>\r\n<li><em>Smart</em> devices want to make you a <em>victim</em>!</li>\r\n</ul></li>\r\n</ul>\r\n<ul>\r\n<li>Digital data versus pieces of paper\r\n<ul>\r\n<li>Dave is using a Google spreadsheet shopping list which he can share with his kids who are shopping for him</li>\r\n<li>There’s still a desire to keep things on paper though</li>\r\n<li>The tendency to hoard bits of paper</li>\r\n</ul></li>\r\n</ul>\r\n<ul>\r\n<li>Using Windows\r\n<ul>\r\n<li>Multiple (virtual) desktops on Windows 10, a counter-intuitive design</li>\r\n<li>Outlook as a mail client (with Exchange) is very poor compared to open source options</li>\r\n</ul></li>\r\n</ul>\r\n<ul>\r\n<li>3D printing\r\n<ul>\r\n<li><a href=\"https://www.openscad.org/\">OpenSCAD: <em>The Programmers Solid 3D CAD Modeller</em></a></li>\r\n<li>A <a href=\"https://en.wikipedia.org/wiki/Slicer_(3D_printing)\">Slicer</a>: software for converting a 3D model into instructions for a 3D printer in the form of <a href=\"https://en.wikipedia.org/wiki/G-code\">G-code</a>.</li>\r\n</ul></li>\r\n</ul>\r\n<ul>\r\n<li>The current pandemic\r\n<ul>\r\n<li>Lockdown controls exposure to the virus and limits cases</li>\r\n<li>Fewer cases means the health service can cope better</li>\r\n<li><em>Sheltering</em> keeps vulnerable people safe until a vaccine is available</li>\r\n<li><em>Herd Immunity</em> is when the majority of people are immune to the virus and don’t transmit it to vulnerable people</li>\r\n<li>Long-term effects of COVID-19</li>\r\n<li>Asymptomatic carriers of the virus</li>\r\n</ul></li>\r\n</ul>\r\n<ul>\r\n<li>HPR listening and contributing in the time of COVID\r\n<ul>\r\n<li>Current times tend to make it harder to keep up to date with shows</li>\r\n<li>It’s also harder to make time to make contributions at the moment</li>\r\n<li>Issues with motivation</li>\r\n</ul></li>\r\n</ul>\r\n<ul>\r\n<li>Miscellaneous\r\n<ul>\r\n<li>MrX’s car needing attention due to rust</li>\r\n<li>Dave’s anecdote of his neighbour losing power late one night</li>\r\n</ul></li>\r\n</ul>\r\n',225,0,1,'CC-BY-SA','COVID-19,physical isolation,discussion',0,0,1),
(3240,'2021-01-01','Linux Under Attack',978,'A look at how malware is now targeting Linux, especially servers','<p>At one time most malware targeted Windows because it was the most popular OS, but as Linux has risen in popularity, particularly in the data center, it has become a target. We look at some of the recent attacks on Linux, and note some common features of the attacks. This then suggests some ways we can protect ourselves</p>\r\n<h2 id=\"links\">Links:</h2>\r\n<ul>\r\n<li><a href=\"https://build5nines.com/linux-is-most-used-os-in-microsoft-azure-over-50-percent-fo-vm-cores/\" class=\"uri\">https://build5nines.com/linux-is-most-used-os-in-microsoft-azure-over-50-percent-fo-vm-cores/</a></li>\r\n<li><a href=\"https://w3techs.com/technologies/comparison/os-linux,os-windows\" class=\"uri\">https://w3techs.com/technologies/comparison/os-linux,os-windows</a></li>\r\n<li><a href=\"https://gs.statcounter.com/os-market-share\" class=\"uri\">https://gs.statcounter.com/os-market-share</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Chrome_OS\" class=\"uri\">https://en.wikipedia.org/wiki/Chrome_OS</a></li>\r\n<li><a href=\"https://www.zdnet.com/article/this-surprise-linux-malware-warning-shows-that-hackers-are-changing-their-targets/\" class=\"uri\">https://www.zdnet.com/article/this-surprise-linux-malware-warning-shows-that-hackers-are-changing-their-targets/</a></li>\r\n<li><a href=\"https://www.zwilnik.com/security-and-privacy/ssh-and-tunneling/ssh-introduction/\" class=\"uri\">https://www.zwilnik.com/security-and-privacy/ssh-and-tunneling/ssh-introduction/</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=1850\" class=\"uri\">https://hackerpublicradio.org/eps.php?id=1850</a></li>\r\n<li><a href=\"https://www.bleepingcomputer.com/news/security/russian-hacker-pleads-guilty-for-role-in-infamous-linux-ebury-malware/\" class=\"uri\">https://www.bleepingcomputer.com/news/security/russian-hacker-pleads-guilty-for-role-in-infamous-linux-ebury-malware/</a></li>\r\n<li><a href=\"https://www.theregister.com/2016/09/02/alleged_linux_hacker_arrested/\" class=\"uri\">https://www.theregister.com/2016/09/02/alleged_linux_hacker_arrested/</a></li>\r\n<li><a href=\"https://www.helpnetsecurity.com/2018/12/07/linux-backdoors-openssh/\" class=\"uri\">https://www.helpnetsecurity.com/2018/12/07/linux-backdoors-openssh/</a></li>\r\n<li><a href=\"https://www.welivesecurity.com/wp-content/uploads/2018/12/ESET-The_Dark_Side_of_the_ForSSHe.pdf\" class=\"uri\">https://www.welivesecurity.com/wp-content/uploads/2018/12/ESET-The_Dark_Side_of_the_ForSSHe.pdf</a></li>\r\n<li><a href=\"https://www.helpnetsecurity.com/2018/12/07/linux-backdoors-openssh/\" class=\"uri\">https://www.helpnetsecurity.com/2018/12/07/linux-backdoors-openssh/</a></li>\r\n<li><a href=\"https://www.nsa.gov/news-features/press-room/Article/2311407/nsa-and-fbi-expose-russian-previously-undisclosed-malware-drovorub-in-cybersecu/\" class=\"uri\">https://www.nsa.gov/news-features/press-room/Article/2311407/nsa-and-fbi-expose-russian-previously-undisclosed-malware-drovorub-in-cybersecu/</a></li>\r\n<li><a href=\"https://www.zdnet.com/article/fbi-and-nsa-expose-new-linux-malware-drovorub-used-by-russian-state-hackers/\" class=\"uri\">https://www.zdnet.com/article/fbi-and-nsa-expose-new-linux-malware-drovorub-used-by-russian-state-hackers/</a></li>\r\n<li><a href=\"https://www.bleepingcomputer.com/news/security/lucifer-cryptomining-ddos-malware-now-targets-linux-systems/\" class=\"uri\">https://www.bleepingcomputer.com/news/security/lucifer-cryptomining-ddos-malware-now-targets-linux-systems/</a></li>\r\n<li><a href=\"https://www.bleepingcomputer.com/news/security/lemon-duck-cryptominer-malware-now-targets-linux-devices/\" class=\"uri\">https://www.bleepingcomputer.com/news/security/lemon-duck-cryptominer-malware-now-targets-linux-devices/</a></li>\r\n<li><a href=\"https://www.bleepingcomputer.com/news/security/fritzfrog-malware-attacks-linux-servers-over-ssh-to-mine-monero/\" class=\"uri\">https://www.bleepingcomputer.com/news/security/fritzfrog-malware-attacks
(3174,'2020-10-01','Linux Inlaws S01E14: The big programming language panel',3174,'Our heroes host an eclectic panel of experts discussion C(++), Python and Rust. ','<br/>Shownotes:<br/>\r\n<ul>\r\n<li>Bottlerocket: <a href=\"https://aws.amazon.com/about-aws/whats-new/2020/08/announcing-general-availability-of-bottlerocket\" target=\"_blank\">https://aws.amazon.com/about-aws/whats-new/2020/08/announcing-general-availability-of-bottlerocket</a></li>\r\n<li>Windows as a rolling release: <a href=\"https://ubuntupodcast.org/2020/08/27/s13e23-horseshoe\" target=\"_blank\">https://ubuntupodcast.org/2020/08/27/s13e23-horseshoe</a></li>\r\n<li>LPC Rust in kernel: <a href=\"https://program.linuxplumbersconf.org/event/7/contributions/804/attachments/641/1168/barriers-to-in-tree-rust.pdf\" target=\"_blank\">https://program.linuxplumbersconf.org/event/7/contributions/804/attachments/641/1168/barriers-to-in-tree-rust.pdf</a></li>\r\n<li>Redox OS: <a href=\"https://www.redox-os.org\" target=\"_blank\">https://www.redox-os.org</a></li>\r\n<li>FC33: <a href=\"https://fedoramagazine.org/btrfs-coming-to-fedora-33\" target=\"_blank\">https://fedoramagazine.org/btrfs-coming-to-fedora-33</a></li>\r\n<li>Linux kernel history report: <a href=\"https://www.linuxfoundation.org/resources/publications/2020-kernel-history-report\" target=\"_blank\">https://www.linuxfoundation.org/resources/publications/2020-kernel-history-report</a></li>\r\n<li>Thunderbird 78 with OpenPGP: <a href=\"https://wiki.mozilla.org/Thunderbird:OpenPGP:2020\" target=\"_blank\">https://wiki.mozilla.org/Thunderbird:OpenPGP:2020</a></li>\r\n<li>Python Software Foundation: <a href=\"https://www.python.org/psf\" target=\"_blank\">https://www.python.org/psf</a></li>\r\n<li>Rust project website: <a href=\"https://www.rust-lang.org\" target=\"_blank\">https://www.rust-lang.org</a></li>\r\n<li>ISO C working group: <a href=\"https://www.open-std.org/jtc1/sc22/wg14\" target=\"_blank\">https://www.open-std.org/jtc1/sc22/wg14</a></li>\r\n<li>ISO C++ standard: <a href=\"https://isocpp.org\" target=\"_blank\">https://isocpp.org</a></li>\r\n<li>Rust @ Microsoft: <a href=\"https://www.youtube.com/watch?v=NQBVUjdkLAA\" target=\"_blank\">https://www.youtube.com/watch?v=NQBVUjdkLAA</a></li>\r\n<li>Rainbow escort: <a href=\"https://www.etsy.com/de/market/rainbow_escort_card\" target=\"_blank\">https://www.etsy.com/de/market/rainbow_escort_card</a></li>\r\n</ul>\r\n',384,111,1,'CC-BY-SA','C++, Python, Rust, Rainbow Escorts, Halloween',0,0,1),
(3185,'2020-10-16','Pandemics In History',1062,'Infectious disease is one of the most important factors influencing human history','<p>This is a look at how infectious diseases have changed the course of human history. It is admittedly a bit Euro- or Western-centric since that is what I know best. But I think the point of its importance applies more broadly.</p>\r\n<ul>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Plague_of_Athens\" class=\"uri\">https://en.wikipedia.org/wiki/Plague_of_Athens</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Antonine_Plague\" class=\"uri\">https://en.wikipedia.org/wiki/Antonine_Plague</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Plague_of_Cyprian\" class=\"uri\">https://en.wikipedia.org/wiki/Plague_of_Cyprian</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Crisis_of_the_Third_Century\" class=\"uri\">https://en.wikipedia.org/wiki/Crisis_of_the_Third_Century</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Plague_of_Justinian\" class=\"uri\">https://en.wikipedia.org/wiki/Plague_of_Justinian</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Black_Death\" class=\"uri\">https://en.wikipedia.org/wiki/Black_Death</a></li>\r\n<li><a href=\"https://www.amazon.com/1491-Revelations-Americas-Before-Columbus/dp/1400032059\" class=\"uri\">https://www.amazon.com/1491-Revelations-Americas-Before-Columbus/dp/1400032059</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/0\" class=\"uri\">https://en.wikipedia.org/wiki/0</a></li>\r\n<li><a href=\"https://www.pri.org/stories/2019-01-31/european-colonization-americas-killed-10-percent-world-population-and-caused\" class=\"uri\">https://www.pri.org/stories/2019-01-31/european-colonization-americas-killed-10-percent-world-population-and-caused</a></li>\r\n<li><a href=\"https://www.amazon.com/Guns-Germs-Steel-Fates-Societies/dp/0393317552\" class=\"uri\">https://www.amazon.com/Guns-Germs-Steel-Fates-Societies/dp/0393317552</a></li>\r\n<li><a href=\"https://www.scientificamerican.com/article/mass-deaths-in-americas-start-new-co2-epoch/\" class=\"uri\">https://www.scientificamerican.com/article/mass-deaths-in-americas-start-new-co2-epoch/</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Cocoliztli_epidemics\" class=\"uri\">https://en.wikipedia.org/wiki/Cocoliztli_epidemics</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Spanish_flu\" class=\"uri\">https://en.wikipedia.org/wiki/Spanish_flu</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Cytokine_storm\" class=\"uri\">https://en.wikipedia.org/wiki/Cytokine_storm</a></li>\r\n<li><a href=\"https://dc.gov/measles/downloads/MeaslesDataAndStatsSlideSet.pdf\" class=\"uri\">https://dc.gov/measles/downloads/MeaslesDataAndStatsSlideSet.pdf</a></li>\r\n<li><a href=\"https://www.palain.com/health-topics/pandemics-in-history/\" class=\"uri\">https://www.palain.com/health-topics/pandemics-in-history/</a></li>\r\n</ul>\r\n',198,100,0,'CC-BY-SA','Health, Infectious Disease, History, Pandemics',0,0,1),
(3171,'2020-09-28','A Week On Soylent',735,'Lostnbronx tries eating nothing but Soylent, so you don\'thaveto.','<p>Ibought-andate-ajarofSoylent,whichisapowderedfoodreplacementproduct.Thesearemythoughts.</p>\r\n<ul>\r\n<li><p>CompanyWebsite:<br/>\r\n<ahref=\"https://soylent.com/\"class=\"uri\">https://soylent.com/</a></p></li>\r\n<li><p>WikipediaArticle:<br/>\r\n<ahref=\"https://en.wikipedia.org/wiki/Soylent_(meal_replacement)\"class=\"uri\">https://en.wikipedia.org/wiki/Soylent_(meal_replacement)</a></p></li>\r\n</ul>',107,0,0,'CC-BY-SA','soylent,food,health,diet,lostnbronx',0,0,1),
(3173,'2020-09-30','Manage your Raspberry Pi fleet with Ansible',1209,'A solution to the problem of updating difficult-to-reach Raspberry Pis in the enterprise.','<p>\r\nThis is the final show in the miniseries on how to manage your RaspberryPis with ansible. The goal is to produce a common base Raspberry Pi OS image that doesn\'tchangeoftenbut,onceit\'s installed, can automatically be customized, maintained, and managed remotely.\r\n</p>\r\n<p>\r\nWe will create the base image using the <a href=\"https://github.com/kenfallon/fix-ssh-on-pi\">script fix-ssh-on-pi<a/> which is available on GitHub. \r\n</p>\r\n<p>\r\nThen we will identify the hosts on the network with tips from <a href=\"https://hackerpublicradio.org/correspondents/0036.html\">operat0r</a> in show <a href=\"https://hackerpublicradio.org/eps.php?id=3090\">hpr3090 :: Locating Computers on a Enterprise Network</a>, or for simpler networks from my own show <a href=\"https://hackerpublicradio.org/eps.php?id=3052\">hpr3052 :: Locating computers on a network</a>.\r\n</p>\r\n<p>\r\nFinally we will provision the devices using tips from <a href=\"https://hackerpublicradio.org/eps.php?id=3080\">hpr3080 :: Ansible ping</a>, and <a href=\"https://hackerpublicradio.org/eps.php?id=3162\">hpr3162 :: Introduction to Ansible </a>\r\n</p>\r\n<p>\r\nThis show has been been simultaneously published as an <a href=\"https://opensource.com/article/20/9/raspberry-pi-ansible\">article on opensource.com</a>.\r\n</p>\r\n\r\n<h3>Links</h3>\r\n<ul>\r\n<li><a href=\"https://hackerpublicradio.org/correspondents/0036.html\">https://hackerpublicradio.org/correspondents/0036.html</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/correspondents/0078.html\">https://hackerpublicradio.org/correspondents/0078.html</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2356\">https://hackerpublicradio.org/eps.php?id=2356</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=3052\">https://hackerpublicradio.org/eps.php?id=3052</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=3080\">https://hackerpublicradio.org/eps.php?id=3080</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=3090\">https://hackerpublicradio.org/eps.php?id=3090</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=3162\">https://hackerpublicradio.org/eps.php?id=3162</a></li>\r\n<li><a href=\"https://man7.org/linux/man-pages/man8/losetup.8.html\">https://man7.org/linux/man-pages/man8/losetup.8.html</a></li>\r\n<li><a href=\"https://docs.ansible.com/ansible/latest/installation_guide/intro_installation.html\">https://docs.ansible.com/ansible/latest/installation_guide/intro_installation.html</a></li>\r\n<li><a href=\"https://docs.ansible.com/ansible/latest/modules/apt_module.html\">https://docs.ansible.com/ansible/latest/modules/apt_module.html</a></li>\r\n<li><a href=\"https://docs.ansible.com/ansible/latest/user_guide/intro_inventory.html\">https://docs.ansible.com/ansible/latest/user_guide/intro_inventory.html</a></li>\r\n<li><a href=\"https://docs.ansible.com/ansible/latest/user_guide/playbooks_intro.html\">https://docs.ansible.com/ansible/latest/user_guide/playbooks_intro.html</a></li>\r\n<li><a href=\"https://docs.ansible.com/ansible/latest/user_guide/playbooks_reuse_roles.html\">https://docs.ansible.com/ansible/latest/user_guide/playbooks_reuse_roles.html</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Ansible_%28software%29%23Design_goals\">https://en.wikipedia.org/wiki/Ansible_%28software%29%23Design_goals</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Comparison_of_open-source_configuration_management_software\">https://en.wikipedia.org/wiki/Comparison_of_open-source_configuration_management_software</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/DevOps\">https://en.wikipedia.org/wiki/DevOps</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Domain_Name_System\">https://en.wikipedia.org/wiki/Domain_Name_System</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Dynamic_Host_Configuration_Protocol\">https://e
(3250,'2021-01-15','GIMP: Getting Started With Layers',952,'Mastering the basic tools of Layers in GIMP','<p>Layers are the feature that does most of the heavy lifting in GIMP. After our previous introduction, we start to get hands-on with the controls that let us work with Layers</p>\r\n<h2 id=\"links\">Links:</h2>\r\n<ul>\r\n<li><a href=\"https://docs.gimp.org/2.10/en/\" class=\"uri\">https://docs.gimp.org/2.10/en/</a></li>\r\n<li><a href=\"https://www.ahuka.com/gimp/getting-started-with-layers/\" class=\"uri\">https://www.ahuka.com/gimp/getting-started-with-layers/</a></li>\r\n</ul>\r\n',198,113,0,'CC-BY-SA','GIMP, images, photos, graphics, layers',0,0,1),
(3260,'2021-01-29','Free, Public Domain and Creative Commons Assets',1289,'Using images and fonts that are not restricted','<p>In preparation for doing some sample exercises I wanted to first explain about how you can use images and fonts that are not restricted or are available under license terms that are not too restrictive. Any image that is intended for public display or for commercial purposes could be liable for copyright infringement if care is not taken. Fortunately, there are many resources available that you can use, and we look at some of the better ones.</p>\r\n<h2 id=\"links\">Links:</h2>\r\n<ul>\r\n<li><a href=\"https://docs.gimp.org/2.10/en/\" class=\"uri\">https://docs.gimp.org/2.10/en/</a></li>\r\n<li><a href=\"https://creativecommons.org/\" class=\"uri\">https://creativecommons.org/</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Wikipedia:Public_domain_image_resources\" class=\"uri\">https://en.wikipedia.org/wiki/Wikipedia:Public_domain_image_resources</a></li>\r\n<li><a href=\"https://ccsearch.creativecommons.org/\" class=\"uri\">https://ccsearch.creativecommons.org/</a></li>\r\n<li><a href=\"https://ccsearch.creativecommons.org/search-help\" class=\"uri\">https://ccsearch.creativecommons.org/search-help</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Category:Public_domain_typefaces\" class=\"uri\">https://en.wikipedia.org/wiki/Category:Public_domain_typefaces</a></li>\r\n<li><a href=\"https://www.booksofm.com/2008/08/public-domain-font.html\" class=\"uri\">https://www.booksofm.com/2008/08/public-domain-font.html</a></li>\r\n<li><a href=\"https://www.1001fonts.com/licenses/ffc.html\" class=\"uri\">https://www.1001fonts.com/licenses/ffc.html</a></li>\r\n<li><a href=\"https://www.dafont.com/\" class=\"uri\">https://www.dafont.com/</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/SIL_Open_Font_License\" class=\"uri\">https://en.wikipedia.org/wiki/SIL_Open_Font_License</a></li>\r\n<li><a href=\"https://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&id=OFL\" class=\"uri\">https://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&id=OFL</a></li>\r\n<li><a href=\"https://linuxconfig.org/how-to-install-fonts-on-ubuntu-20-04-focal-fossa-linux\" class=\"uri\">https://linuxconfig.org/how-to-install-fonts-on-ubuntu-20-04-focal-fossa-linux</a></li>\r\n<li><a href=\"https://www.ahuka.com/gimp/free-public-domain-and-cc-assets/\" class=\"uri\">https://www.ahuka.com/gimp/free-public-domain-and-cc-assets/</a></li>\r\n</ul>',198,113,0,'CC-BY-SA','Public Domain, Creative Commons, copyright, images, fonts',0,0,1),
(3177,'2020-10-06','Zero cost VPN',407,'OpenVPN on a Free Tier VPS for securing phone trafic ','<p>A basic overview of the VPN I use</p>\r\n<ul>\r\n<li>Linux on a free/low cost VPS</li>\r\n<li>Helper script install OpenVPN and generate client config file</li>\r\n<li>Transfer client config file to mobile device</li>\r\n<li>Install OpenVPN client on Mobile Device and import the config</li>\r\n</ul>\r\n<p>There are a few options for the Linux server. Free tier cloud providers</p>\r\n<ul>\r\n<li>AWS</li>\r\n<li>Google</li>\r\n<li>Azure</li>\r\n</ul>\r\n<p>VPS with Free credits ($20-$100) for new accounts I\'vegottendiscountcodesfrompodcasts</p>\r\n<ul>\r\n<li>DigitalOcean</li>\r\n<li>Linode</li>\r\n</ul>\r\n<p>VPSrequirementsforrunningaOpenVPNserverareprettyarebasic</p>\r\n<ul>\r\n<li>InternetaccessibleIPaddress</li>\r\n<li>AverageNetworkspeed</li>\r\n<li>rootshellaccess</li>\r\n</ul>\r\n<p>TheopenvpninstallerisonGitHub.<ahref=\"https://github.com/angristan/openvpn-install\">https://github.com/angristan/openvpn-install</a></p>\r\n<p>Ontheserverasroot,run</p>\r\n<pre><code>gitclonehttps://github.com/angristan/openvpn-install.git\r\n/openvpn-install/openvpn-install.sh\r\n</code></pre>\r\n',342,0,0,'CC-BY-SA','VPN,OpenVPN',0,0,1),
(3270,'2021-02-12','An Example of Using Layers',900,'Creating a new header image for my WordPress site using Layers in GIMP','<p>There is a point where you need to stop being abstract and start demonstrating what you are talking about, so I thought this was a good opportunity to put some things into practice by creating an image. I chose to do a header image for my site Ahuka Communications that would more accurately reflect the content. This lets us use freely licensed images, an OFL-licensed font, layers, and various tools. Note that you can download all of this stuff from my site.</p>\r\n<h2 id=\"links\">Links:</h2>\r\n<ul>\r\n<li><a href=\"https://docs.gimp.org/2.10/en/\" class=\"uri\">https://docs.gimp.org/2.10/en/</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Wikipedia:Public_domain_image_resources\" class=\"uri\">https://en.wikipedia.org/wiki/Wikipedia:Public_domain_image_resources</a></li>\r\n<li><a href=\"https://www.clker.com/\" class=\"uri\">https://www.clker.com/</a></li>\r\n<li><a href=\"https://www.clker.com/clipart-1895.html\" class=\"uri\">https://www.clker.com/clipart-1895.html</a></li>\r\n<li><a href=\"https://www.clker.com/clipart-29779.html\" class=\"uri\">https://www.clker.com/clipart-29779.html</a></li>\r\n<li><a href=\"https://www.clker.com/clipart-x-office-spreadsheet.html\" class=\"uri\">https://www.clker.com/clipart-x-office-spreadsheet.html</a></li>\r\n<li><a href=\"https://www.clipartspy.com/\" class=\"uri\">https://www.clipartspy.com/</a></li>\r\n<li><a href=\"https://www.needpix.com/\" class=\"uri\">https://www.needpix.com/</a></li>\r\n<li><a href=\"https://www.needpix.com/photo/96030/file-type-ods-spreadsheet-open-document-spreadsheet-file-open-office\" class=\"uri\">https://www.needpix.com/photo/96030/file-type-ods-spreadsheet-open-document-spreadsheet-file-open-office</a></li>\r\n<li><a href=\"https://www.needpix.com/photo/28685/presentation-people-meeting-office-corporate-seminar-training-professional-businesspeople\" class=\"uri\">https://www.needpix.com/photo/28685/presentation-people-meeting-office-corporate-seminar-training-professional-businesspeople</a></li>\r\n<li><a href=\"https://www.needpix.com/photo/1321215/abstract-background-business-cloud-concept-graphic-group-illustration-office\" class=\"uri\">https://www.needpix.com/photo/1321215/abstract-background-business-cloud-concept-graphic-group-illustration-office</a></li>\r\n<li><a href=\"https://fontlibrary.org/\" class=\"uri\">https://fontlibrary.org/</a></li>\r\n<li><a href=\"https://www.ahuka.com/wp-content/uploads/2020/09/Header.zip\" class=\"uri\">https://www.ahuka.com/wp-content/uploads/2020/09/Header.zip</a></li>\r\n<li><a href=\"https://www.ahuka.com/gimp/an-example-of-using-layers/\" class=\"uri\">https://www.ahuka.com/gimp/an-example-of-using-layers/</a></li>\r\n</ul>\r\n',198,113,0,'CC-BY-SA','GIMP, Layers, WordPress',0,0,1),
(3178,'2020-10-07','Finishing the Recumbent Bicycle',259,'While channeling Stephen Hawking, Brian in Ohio describes finishing and riding the bike','<h2 id=\"websites\">Websites:</h2>\r\n<ul>\r\n<li>recycled recumbent: <a href=\"https://sites.google.com/site/recycledrecumbents/home\" class=\"uri\">https://sites.google.com/site/recycledrecumbents/home</a></li>\r\n<li>cj hoyle milk crate tutorial: <a href=\"https://youtu.be/MvBx_74FzUk\" class=\"uri\">https://youtu.be/MvBx_74FzUk</a></li>\r\n</ul>\r\n<h2 id=\"gallery\">Gallery:</h2>\r\n<p><em>1 - Bending Tools</em><br />\r\n<img src=\"https://hackerpublicradio.org/eps/hpr3178/img_001.jpg\" alt=\"1 - Bending Tools\" /></p>\r\n<p>This is how I clamped up the conduit bending tool in the trusty workmate. In this configuration you can bend the tube to specific angles and make sure the bends stay in plane. The goal here is to create two side rails that are identical. The seat webbing is sewn on to these rails.</p>\r\n<p><em>2 - Needed weights</em><br />\r\n<img src=\"https://hackerpublicradio.org/eps/hpr3178/img_002.jpg\" alt=\"2 - Needed weights\" /></p>\r\n<p>This photo shows some more of how the bending jig was set up. Those are counter weights needed to keep the jig on the ground while the tube is being bent.</p>\r\n<p><em>3 - Seat rail plans</em><br />\r\n<img src=\"https://hackerpublicradio.org/eps/hpr3178/img_003.jpg\" alt=\"3 - Seat rail plans\" /></p>\r\n<p>Mr. Carson provides pdf files that you can print out to be used as templates to match your bends.</p>\r\n<p><em>4 - Marking tubes</em><br />\r\n<img src=\"https://hackerpublicradio.org/eps/hpr3178/img_004.jpg\" alt=\"4 - Marking tubes\" /></p>\r\n<p><em>5 - Sighting down tube</em><br />\r\n<img src=\"https://hackerpublicradio.org/eps/hpr3178/img_005.jpg\" alt=\"5 - Sighting down tube\" /></p>\r\n<p><em>6 - Using marks</em><br />\r\n<img src=\"https://hackerpublicradio.org/eps/hpr3178/img_006.jpg\" alt=\"6 - Using marks\" /></p>\r\n<p><em>7 - Help with angles</em><br />\r\n<img src=\"https://hackerpublicradio.org/eps/hpr3178/img_007.jpg\" alt=\"7 - Help with angles\" /></p>\r\n<p><em>8 - Matching to plans</em><br />\r\n<img src=\"https://hackerpublicradio.org/eps/hpr3178/img_008.jpg\" alt=\"8 - Matching to plans\" /></p>\r\n<p>Pictures 4-8 show the layout of the tubes and how the marks are used to ensure you make mirror image rails for the seat.</p>\r\n<p><em>9 - Matching sides</em><br />\r\n<img src=\"https://hackerpublicradio.org/eps/hpr3178/img_009.jpg\" alt=\"9 - Matching sides\" /></p>\r\n<p><em>10 - Seat backs</em><br />\r\n<img src=\"https://hackerpublicradio.org/eps/hpr3178/img_010.jpg\" alt=\"10 - Seat backs\" /></p>\r\n<p><em>11 - Drilling fish mouths</em><br />\r\n<img src=\"https://hackerpublicradio.org/eps/hpr3178/img_011.jpg\" alt=\"11 - Drilling fish mouths\" /></p>\r\n<p><em>12 - Seat backs ready for trimming</em><br />\r\n<img src=\"https://hackerpublicradio.org/eps/hpr3178/img_012.jpg\" alt=\"12 - Seat backs ready for trimming\" /></p>\r\n<p><em>13 - Finished seat backs</em><br />\r\n<img src=\"https://hackerpublicradio.org/eps/hpr3178/img_013.jpg\" alt=\"13 - Finished seat backs\" /></p>\r\n<p><em>14 - Jigging up</em><br />\r\n<img src=\"https://hackerpublicradio.org/eps/hpr3178/img_014.jpg\" alt=\"14 - Jigging up\" /></p>\r\n<p>Pictures 9-14 outline the steps in fabricating the seat backs. The seat backs tie the rails together and are where the clamps that connect the seat to the frame grab the seat. This part of the construction can be overwhelming if you don\'ttakeitonestepatatime.Ihadtoconstantlyremindmyselfthatbuildingthebikewasnotaracebutajourney,takeyourtimeandenjoyeachlittlemilestone.Thelastpictureistheseatframejiggedupandreadyforbrazing.</p>\r\n<p><em>15-Seatstayone</em><br/>\r\n<imgsrc=\"https://hackerpublicradio.org/eps/hpr3178/img_015.jpg\"alt=\"15 - Seat stay one\"/></p>\r\n<p><em>16-Seatstaytwo</em><br/>\r\n<imgsrc=\"https://hackerpublicradio.org/eps/hpr3178/img_016.jpg\"alt=\"16 - Seat stay two\"/></p>\r\n<p>Theseatstaywa
(3179,'2020-10-08','MakeMKV to back up media, and a Question',404,'Describing two ways to install MakeMKV DVD/Blu-ray backup program on Fedora 32','<p>Installed Fedora 32 on a spare laptop</p>\r\n<h5 id=\"quick-tip\">Quick tip</h5>\r\n<p>To ignore the handle switch on the laptop triggering a power off:</p>\r\n<p>Put <code>HandleLidSwitch=ignore</code> in <code>/etc/systemd/logind.conf</code></p>\r\n<h4 id=\"install-makemkv-from-source\">Install MakeMKV from source</h4>\r\n<pre><code>dnf install https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm https://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm\r\n\r\ndnf install zlib-devel openssl-devel expat-devel ffmpeg ffmpeg-devel qt5-qtbase-devel\r\nmkdir git/makemkv.source\r\n\r\ncd makemkv.source\r\nwget https://www.makemkv.com/download/makemkv-oss-1.15.2.tar.gz\r\nwget https://www.makemkv.com/download/makemkv-bin-1.15.2.tar.gz\r\n\r\ntar xpf makemkv-oss-1.15.2.tar.gz\r\ntar xpf makemkv-bin-1.15.2.tar.gz\r\n\r\ncd makemkv-oss-1.15.2/\r\n./configure\r\nmake\r\nsudo make install\r\n\r\ncd ../makemkv-bin-1.15.2/\r\nmake\r\nsudo make install</code></pre>\r\n<h4 id=\"install-makemkv-from-flathub\">Install MakeMKV from flathub</h4>\r\n<pre><code>flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo\r\nflatpak install flathub com.makemkv.MakeMKV</code></pre>\r\n<h4 id=\"install-ccextractor\">Install ccextractor</h4>\r\n<pre><code>dnf install libtesseract-dev autoconf sysconftool\r\n\r\ngit clone https://github.com/CCExtractor/ccextractor.git\r\ncd ccextractor/linux/\r\n./build</code></pre>\r\n<h4 id=\"enable-expert-mode\">Enable expert mode</h4>\r\n<p><br />\r\n<img src=\"https://hackerpublicradio.org/eps/hpr3179/img_001.png\" /></p>\r\n<h4 id=\"provide-path-to-the-ccextractor-binary\">Provide path to the ccextractor binary</h4>\r\n<p><br />\r\n<img src=\"https://hackerpublicradio.org/eps/hpr3179/img_002.png\" /></p>\r\n<h4 id=\"re-encoding-mkv-file\">Re-encoding MKV file</h4>\r\n<pre><code>ffmpeg -i $1 -b:a 128k -b:v 2000k -vcodec mpeg4 -acodec aac "encoded"/"`basename -s .mkv $1`-_2000k_aac.mkv"</code></pre>\r\n<h4 id=\"updated-registration-key-good-for-2-months\">Updated registration key (Good for 2 months?)</h4>\r\n<p><a href=\"https://www.makemkv.com/forum/viewtopic.php?t=1053\">Updated registration key for MakeMKV</a></p>\r\n<h4 id=\"makemkv-registration-code-update-script-untested\">MakeMKV registration code update script (Untested)</h4>\r\n<p><a href=\"https://github.com/AyrA/MakeMKV\">Github link to MakeMKV registration update script</a></p>\r\n<h4 id=\"other-links\">Other links</h4>\r\n<p><a href=\"https://linuxconfig.org/how-to-install-makemkv-on-fedora-linux\">How to install MakeMKV on Fedora Linux</a> <br> <a href=\"https://www.makemkv.com/forum/viewtopic.php?f=3&t=224&sid=4e978698972df3de5f4e055c39370e03\">Forum post for MakeMKV on Linux</a></p>\r\n<h4 id=\"how-to-playrip-blu-ray-discs-on-mplayer-command-line\">How to play/rip Blu-ray discs on Mplayer command line</h4>\r\n<p>For DVD\'s</p>\r\n<pre><code>mplayerdvd:///_/dvd/mount/dir_</code></pre>\r\n<p>ForBlu-raydiscs<br>Downloadkeydb.cfgandplaceitin<code>~/.config/aacs/</code><br><ahref=\"https://fvonline-db.bplaced.net/\">Linktokeydb.cfg</a></p>\r\n<pre><code>mplayerbr:///_/bluray/mount/dir_\r\nie.mplayerbr:////dev/sr0<br></code></pre>\r\n<p>notethe3forwardslashesbeforetheblockdevice,asthediskwillnotbereadotherwise</p>\r\n<p>Ripping:</p>\r\n<pre><code>mplayerbr:////dev/sr0-alangen-dumpstream-dumpfile$movie.mpg</code></pre>\r\n<p>Encoding:</p>\r\n<pre><code>mkdirencoded\r\nffmpeg-i$1-map0:0-map0:1-b:a128k-b:v2000k-vcodecmpeg4"encoded"/"`basename-s.mpg$1`.mkv"</code></pre>\r\n<h4id=\"questions-for-the-community\">QuestionsfortheCommunity:</h4>\r\n<p>IsitantiquatedtowanttoripBlu-ray/DVDdiskstoaserver?</p>\r\n<p>Isthereabetterwaytoaccomplishthis,ratherthanusing
(3182,'2020-10-13','Yo-ho-ho, and a bottle of Cholecalciferol',4763,'From Scotland, two HPR hosts chew the fat','<h2 id=\"introduction\">Introduction</h2>\r\n<p>Two HPR hosts from Scotland get together over Mumble one more time to chat about all manner of stuff.</p>\r\n<ul>\r\n<li><a href=\"https://hackerpublicradio.org/correspondents/0268.html\">Andrew Conway</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/correspondents/0225.html\">Dave Morriss</a></li>\r\n</ul>\r\n<p>We recorded on Saturday 19<sup>th</sup> September 2020, which was <a href=\"https://en.wikipedia.org/wiki/International_Talk_Like_a_Pirate_Day\"><em>International Talk Like A Pirate Day</em></a>, we but managed to avoid any utterances of <em>ARRRR!</em>, and the use of marlinspikes, fids or belaying pins. Also, no timbers were shivered and no mainbraces spliced (not while recording anyway).</p>\r\n<h2 id=\"notes\">Notes</h2>\r\n<p>Some of the topics we discussed:</p>\r\n<ul>\r\n<li>COVID-19:\r\n<ul>\r\n<li>The increase in COVID-19 cases in Scotland, particularly Glasgow\r\n<ul>\r\n<li>Movement in Glasgow is more restricted than in Edinburgh at time of recording</li>\r\n</ul></li>\r\n<li>The <a href=\"https://www.kcl.ac.uk/news/new-symptom-tracking-app-aims-to-slow-spread-of-coronavirus\">KCL COVID tracker</a>, described further in an <a href=\"https://www.kcl.ac.uk/news/spotlight/spotlight-on-covid-tracking-the-symptoms\">article with more details</a>\r\n<ul>\r\n<li>Andrew is using this</li>\r\n</ul></li>\r\n<li>Is Glasgow the most infected city in the UK?</li>\r\n<li><a href=\"https://www.microbe.tv/twiv/\">This week in Virology podcast</a> discussing easing of lock down and return of children to school, both likely to increase infections.</li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Vitamin_D\">Vitamin D</a> (D<sub>3</sub> in particular<a href=\"#fn1\" class=\"footnote-ref\" id=\"fnref1\" role=\"doc-noteref\"><sup>1</sup></a>) seems to have a beneficial effect in COVID-19 cases. Having an optimal level of the vitamin seems to help ameliorate the COVID-19 effects, whereas being deficient can apparently result in more severe effects. See the study in the <a href=\"https://t.co/oXb0fr5NyE?amp=1\"><em>Journal of Steroid Biochemistry and Molecular Biology</em></a></li>\r\n<li>Long-term immunity and t-cells: <a href=\"https://www.nature.com/articles/s41586-020-2550-z\">see the Nature paper mentioned in the episode</a></li>\r\n<li>The virus is called <code>SARS-CoV-2</code><a href=\"#fn2\" class=\"footnote-ref\" id=\"fnref2\" role=\"doc-noteref\"><sup>2</sup></a> (as opposed to <code>SARS-CoV-1</code>, the previous <em>SARS</em> coronavirus). The disease is called <code>COVID-19</code><a href=\"#fn3\" class=\"footnote-ref\" id=\"fnref3\" role=\"doc-noteref\"><sup>3</sup></a>.</li>\r\n<li>Speculations heard:\r\n<ul>\r\n<li>Whether having had the <a href=\"https://en.wikipedia.org/wiki/BCG_vaccine\">BCG immunisation</a> against tuberculosis helps protect from COVID-19.</li>\r\n<li>Whether exposure to other (milder) corona viruses can provide immunity to <code>SARS-CoV-2</code>.</li>\r\n</ul></li>\r\n<li>The puzzling case of Sweden and COVID-19</li>\r\n<li>Have there been randomised controlled trials of the effectiveness of the masks in common use?<a href=\"#fn4\" class=\"footnote-ref\" id=\"fnref4\" role=\"doc-noteref\"><sup>4</sup></a></li>\r\n</ul></li>\r\n</ul>\r\n<ul>\r\n<li>What we’re doing in lockdown:\r\n<ul>\r\n<li>Dave: cooking for the family 2 nights a week; shopping “<em>by proxy</em>”; not going to the gym yet</li>\r\n<li>Andrew: exercising at home; tried the gym a couple of times but was put off by overcrowding; working on the BBC Micro (check HPR show <a href=\"https://hackerpublicradio.org/eps.php?id=2731\"><em>hpr2731 :: My 8 bit Christmas</em></a>)</li>\r\n</ul></li>\r\n</ul>\r\n<ul>\r\n<li><a href=\"https://en.wikipedia.org/wiki/BBC_Micro\">BBC Micro</a>:\r\n<ul>\r\n<li>A 32KiB 8-bit computer based around the 6502 CPU, made by <a href=\"https://en.wikipedia.org/wiki/Acorn_Computers\">Acorn Computers Ltd.</a></li>\r\n<li>Ga
(3181,'2020-10-12','RealVNC cloud offering',262,'JWP emails in a show about using VNC while out and about','<p>\r\nJust a short podcast about RealVNC cloud offering.\r\nAn interesting VNC option if you want to connect on the road or the at\r\nthe coffee shop to a server back home without putting holes in your router.\r\n</p>\r\n<p>\r\n<a href=\"https://www.realvnc.com/en/news/what-vnc-cloud/\">https://www.realvnc.com/en/news/what-vnc-cloud/</a>\r\n</p>',129,0,1,'CC-BY-SA','realvnc, remote computing',0,0,1),
(3184,'2020-10-15','Linux Inlaws S01E15: IT Security and stick insects',3368,'How to secure photos of your stick insect collection and more ','<p>In this episode Martin discovers that protecting pictures of stick insects (rated XXX or not)\r\non USB sticks (pun intended) can be an ardous endeavour indeed. Never mind eventually turning\r\nthis into a business including web servers, shared file spaces and password storage. Additional\r\nbonus: the lovely Emma from Rainbow Escorts makes another cameo apperance supported by some Irish, um, students.</p>\r\n<h3>Shownotes:</h3>\r\n<ul>\r\n<li>Linux Unified Key Setup (LUKS): <a href=\"https://gitlab.com/cryptsetup/cryptsetup/blob/master/README.md\" target=\"_blank\">https://gitlab.com/cryptsetup/cryptsetup/blob/master/README.md</a></li>\r\n<li>EncFS: <a href=\"https://vgough.github.io/encfs\" target=\"_blank\">https://vgough.github.io/encfs</a></li>\r\n<li>EcryptFS: <a href=\"https://www.ecryptfs.org\" target=\"_blank\">https://www.ecryptfs.org</a></li>\r\n<li>Keepass: <a href=\"https://keepass.info/\" target=\"_blank\">https://keepass.info/</a></li>\r\n<li>Snort: <a href=\"https://www.snort.org\" target=\"_blank\">https://www.snort.org</a></li>\r\n<li>Fail2ban: <a href=\"https://www.fail2ban.org/wiki/index.php/Main_Page\" target=\"_blank\">https://www.fail2ban.org/wiki/index.php/Main_Page</a></li>\r\n<li>PSAD: <a href=\"https://cipherdyne.org/psad\" target=\"_blank\">https://cipherdyne.org/psad</a></li>\r\n<li>Nextcloud: <a href=\"https://nextcloud.com\" target=\"_blank\">https://nextcloud.com</a></li>\r\n<li>Tor: <a href=\"https://torproject.org\" target=\"_blank\">https://torproject.org</a></li>\r\n<li>OPENVPN: <a href=\"https://openvpn.net\" target=\"_blank\">https://openvpn.net</a></li>\r\n<li>WireGuard: <a href=\"https://www.wireguard.com\" target=\"_blank\">https://www.wireguard.com</a></li>\r\n<li>boringtun: <a href=\"https://github.com/cloudflare/boringtun\" target=\"_blank\">https://github.com/cloudflare/boringtun</a></li>\r\n<li>DistroWatch: <a href=\"https://distrowatch.com\" target=\"_blank\">https://distrowatch.com</a></li>\r\n</ul>',384,111,0,'CC-BY-SA','IT Security, stick insects, Rainbow Escorts, Grumpy Old Coders',0,0,1),
(3186,'2020-10-19','A light bulb moment, part 2',450,'The history of lighting','<p><u><strong>A very brief history of lighting </strong></u></p>\r\n<p>Natural light first came from fire</p>\r\n<p>Then using oil and fat with a wick</p>\r\n<p>Early candles used animal fat this smelled awful and tended to spit</p>\r\n<p>Some parts of world used whole animals as candles</p>\r\n<p>These early candles gave so little light that people generally just went to bed at sunset</p>\r\n<p>Electric lighting started first by Humphry Davy in the early 1800’s using an arc, this was developed into commercial lighting in the 1840s</p>\r\n<p>Arc lighting needed a complex mechanism to gradually push the contacts together as they burnt away</p>\r\n<p>Gas lighting started around the 1850s this was improved in the 1870 with the advent of the Gas mantel.</p>\r\n<p>Thomas Edison develop the electric light bulb in 1879 using a carbon filament. It took a great deal of effort to convince people to use it because gas lighting was so well established and worked well.</p>\r\n<p>Many houses in Britain didn\'tinstallelectriclightinguntilthe1930s</p>\r\n<p>Finallyelectricitywonasitcouldbeusedforsomanyotherthings.</p>\r\n<p><u><strong>Thetungstenfilamentbulb</strong></u></p>\r\n<p>Thefilamentwithinthebulbismadeupofatungstencoiledcoilwire.Thisisdonebecausethemorecompactlyafilamentcanbewoundthelessheatislosttothesurroundingsandthebrighterthebulbwillglow.</p>\r\n<p><u><strong>Thetungstenhalogenbulb</strong></u></p>\r\n<p>Thenextprogressionwastungstenhalogenbulb,thesebulbsaremoreefficientandgiveouttwiceasmuchlightasordinarybulbsandusuallylasttwiceaslong.</p>\r\n<p>Allfilamentlightswastealotofenergyproducingheat.Anordinarylightbulbonlygivesout10%ofitsenergyaslight,therestiswastedasheat.</p>\r\n<p><u><strong>Fluorescentneonlights</strong></u></p>\r\n<p>Fluorescentneonlightswereinventedin1905byaFrenchmancalledGeorgeClaude.ThesewereusedforadvertisingmainlyinAmerica.</p>\r\n<p><u><strong>Fluorescentstriplight</strong></u></p>\r\n<p>Thefirstfluorescentlightwasintroducedin1939itusesthesameprincipleastheneonlightbutincorporatesafilamentatbothends.Itisfilledwithargonandmercuryvapour.Itmainlygivesoffultravioletlightthetubeiscoatedontheinsidewithchemicalstoconverttheoutputtomostlyvisiblelightusingapropertycalledfluorescence.</p>\r\n<p>Fluorescenttubesarefourtimesasefficientasnormalincandescentlightbulbsandruncool.</p>\r\n<p>Thefirstenergyefficientlightbulbswerejustfluorescentlightsfoldedintoacompactbulbshape.</p>\r\n<p><u><strong>Sodiumlights</strong></u></p>\r\n<p>Sodiumlightsusedmainlyinstreetlightingaretwiceasefficientagainasfluorescentbulbstheygiveoffaratherhorribleorangecolour.</p>\r\n<p>Thefirstcommercialhigh-pressuresodiumlampswereavailablein1965fromcompaniesintheUnitedStates,theUnitedKingdom,andtheNetherlands;atintroductiona400wattlampwouldproducearound100lumensperwatt<ahref=\"https://en.wikipedia.org/wiki/Sodium-vapor_lamp\"class=\"uri\">https://en.wikipedia.org/wiki/Sodium-vapor_lamp</a></p>\r\n<p>ThenextbigdevelopmentwasLEDlightingwhichI\'ll cover in my next episode.</p>\r\n',201,0,0,'CC-BY-SA','Hardware, electrical',0,0,1),
(3187,'2020-10-20','Ansible for Dynamic Host Configuration Protocol',518,'How I use ansible to configure my OpenBSD router','<h1 id=\"ansible-dhcpd-and-dns\">Ansible DHCPD and DNS</h1>\r\n<h2 id=\"using-ansible-to-configure-dhcpd-and-nds-on-openbsd\">Using Ansible to configure DHCPD and NDS on OpenBSD</h2>\r\n<ul>\r\n<li>Host data is stored in csv files</li>\r\n<li>Ansible templates to create config files</li>\r\n<li>Restart services</li>\r\n</ul>\r\n<h2 id=\"hostname-setup.yml\">hostname-setup.yml</h2>\r\n<pre><code>---\r\n- hosts: localhost\r\n tasks:\r\n - name: read subnet 10\r\n read_csv:\r\n path: 10.csv\r\n fieldnames: mac,ip,hostname\r\n register: subnet_10\r\n - name: read subnet 11\r\n read_csv:\r\n path: 11.csv\r\n fieldnames: mac,ip,hostname\r\n register: subnet_11\r\n - name: read static\r\n read_csv:\r\n path: static.csv\r\n fieldnames: hostname,ip\r\n register: static_ip\r\n\r\n - name: write dhcp file\r\n template:\r\n src: dhcpd.conf.j2\r\n dest: /etc/dhcpd.conf\r\n validate: dhcpd -nc %s\r\n - name: write local.lan zone file\r\n template:\r\n src: local.lan.zone.j2\r\n dest: /var/nsd/zones/master/local.lan\r\n owner: root\r\n group: _nsd\r\n validate: nsd-checkzone local.lan %s\r\n - name: nsd_conf\r\n copy:\r\n src: nsd.conf\r\n dest: /var/nsd/etc/nsd.conf\r\n owner: root\r\n group: _nsd\r\n validate: nsd-checkconf %s\r\n - name: restart nsd\r\n service:\r\n name: nsd\r\n state: restarted\r\n - name: restart dhcpd\r\n service:\r\n name: dhcpd\r\n state: restarted\r\n - name: restart unbound\r\n service:\r\n name: unbound\r\n state: restarted</code></pre>\r\n<h2 id=\"csv\">10.csv</h2>\r\n<pre><code>b8:27:eb:8b:7a:6d,192.168.10.100,pi3a\r\nb8:27:eb:ef:f2:d4,192.168.10.101,pi3b\r\n28:10:7b:25:d5:60,192.168.10.79,ipcam3\r\n28:10:7b:0c:fa:7b,192.168.10.80,ipcam1\r\nf0:7d:68:0b:ca:56,192.168.10.81,ipcam2</code></pre>\r\n<h2 id=\"static.csv\">static.csv</h2>\r\n<pre><code>tplink,192.168.10.2\r\ngate,192.168.10.10\r\nwww,192.168.10.10\r\nfox,192.168.10.17</code></pre>\r\n<h2 id=\"dhcpd.conf.j2\">dhcpd.conf.j2</h2>\r\n<pre><code>option domain-name "local.lan";\r\noption domain-name-servers 192.168.10.10;\r\n\r\nsubnet 192.168.10.0 netmask 255.255.255.0 {\r\n option routers 192.168.10.10;\r\n range 192.168.10.161 192.168.10.179;\r\n {% for host in subnet_10.list %}\r\n host static-client { hardware ethernet {{ host.mac }};fixed-address {{ host.ip }};} #{{ host.hostname }}\r\n {% endfor %}\r\n}\r\n\r\nsubnet 192.168.11.0 netmask 255.255.255.0 {\r\n option routers 192.168.11.10;\r\n range 192.168.11.72 192.168.11.127;\r\n{% for host in subnet_11.list %}\r\nhost static-client { hardware ethernet {{ host.mac }};fixed-address {{ host.ip }};} #{{ host.hostname }}\r\n{% endfor %}\r\n}\r\n</code></pre>\r\n<h3 id=\"rendered-dhcp-entires\">Rendered DHCP entires</h3>\r\n<pre><code>host static-client { hardware ethernet b8:27:eb:de:2f:38;fixed-address 192.168.10.45;} #pi3a\r\nhost static-client { hardware ethernet 28:10:7b:25:d5:60;fixed-address 192.168.10.79;} #ipcam3\r\nhost static-client { hardware ethernet 28:10:7b:0c:fa:7b;fixed-address 192.168.10.80;} #ipcam1\r\n</code></pre>\r\n<h2 id=\"local.lan.zone.j2\">local.lan.zone.j2</h2>\r\n<pre><code>$TTL 3600\r\nlocal.lan. IN SOA a.root-servers.net. root. (\r\n 2016092901 ; Serial\r\n 3H ; refresh after 3 hours\r\n 1H ; retry after 1 hour\r\n 1W ; expire after 1 week\r\n 1D) ; minimum TTL of 1 day\r\n\r\nIN NS gate.\r\n\r\nIN MX 50 gate.local.lan.\r\n\r\nlocal.lan. IN A 192.168.10.10\r\n\r\n{% for host in static_ip.list%}\r\n{{ host.hostname }} IN A {{ host.ip }}\r\n{% endfor %}\r\n\r\n{% for host in subnet_10.list%}\r\n{{ host.hostname }} IN A {{ host.ip }}\r\n{% endfor %}\r\n\r\n{% for host in subnet_11.list%}\r\n{{ host.ho
(3191,'2020-10-26','Swedish Corona Experience',969,'I will cover my experience of the Corona virus','<p>Swedish Health Authority Recommendation</p>\r\n<ul>\r\n<li>If sick stay at home.</li>\r\n<li>If you have symptoms take a test.</li>\r\n<li>Wash at least 20 seconds use alcohol with atleast 60% alcohol content.</li>\r\n<li>Don\'ttouchyourfacewithunwashedhands.</li>\r\n<li>Keepdistancearmlength(or2m).</li>\r\n<li>Don\'t gather in large companies.</li>\r\n<li>Avoid public transport, try walking or biking when possible.\r\n<ul>\r\n<li>If required go with public transport book a ticket or go when others don\'t.</li>\r\n</ul></li>\r\n<li>Ifpossibleworkfromhome.</li>\r\n</ul>\r\n<p><ahref=\"https://www.folkhalsomyndigheten.se/smittskydd-beredskap/utbrott/aktuella-utbrott/covid-19/\"class=\"uri\">https://www.folkhalsomyndigheten.se/smittskydd-beredskap/utbrott/aktuella-utbrott/covid-19/</a></p>\r\n',382,100,0,'CC-BY-SA','corona,sweden',0,0,1),
(3280,'2021-02-26','What We Need For the ActivityPub Network',1026,'This keynote address looks at where federated social media can go if we make it work. ','<p>Federated social media can open up some wonderful possibilities but we need to make it happen. In this opening keynote address Evan Prodromou, who arguably started it all off, shows that he has thought long and deeply about this, and gives us his vision for where we can take it. <a href=\"https://www.zwilnik.com/better-social-media/activitypub-conference-2020/activitypub-2020-evan-prodromou/\" class=\"uri\">https://www.zwilnik.com/better-social-media/activitypub-conference-2020/activitypub-2020-evan-prodromou/</a></p>\r\n<h2 id=\"links\">Links:</h2>\r\n<ul>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Evan_Prodromou\" class=\"uri\">https://en.wikipedia.org/wiki/Evan_Prodromou</a></li>\r\n<li><a href=\"https://www.w3.org/community/fedsocweb/\" class=\"uri\">https://www.w3.org/community/fedsocweb/</a></li>\r\n<li><a href=\"https://www.w3.org/wiki/Socialwg\" class=\"uri\">https://www.w3.org/wiki/Socialwg</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/ActivityPub\" class=\"uri\">https://en.wikipedia.org/wiki/ActivityPub</a></li>\r\n<li><a href=\"https://conf.tube/videos/watch/c79457a9-aae5-47dd-8731-617e6b09fe06\" class=\"uri\">https://conf.tube/videos/watch/c79457a9-aae5-47dd-8731-617e6b09fe06</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Yo_(app)\" class=\"uri\">https://en.wikipedia.org/wiki/Yo_(app)</a></li>\r\n<li><a href=\"https://www.zwilnik.com/better-social-media/activitypub-conference-2020/activitypub-2020-evan-prodromou/\" class=\"uri\">https://www.zwilnik.com/better-social-media/activitypub-conference-2020/activitypub-2020-evan-prodromou/</a></li>\r\n</ul>',198,108,0,'CC-BY-SA','social media, alternative, Fediverse, ActivityPub',0,0,1),
(3194,'2020-10-29','Linux Inlaws S01E16: The count and the questions',4061,'Linux Inlaws S01E16: This is Linux Inlaws, a series on free and open source software, black humour a','<ul>\r\n<li>Halloween: <a href=\"https://en.wikipedia.org/wiki/Halloween\" target=\"_blank\">https://en.wikipedia.org/wiki/Halloween</a></li>\r\n<li>Ancient vampire folklore: <a href=\"https://en.wikipedia.org/wiki/Vampire_folklore_by_region#Mesopotamia\" target=\"_blank\">https://en.wikipedia.org/wiki/Vampire_folklore_by_region#Mesopotamia</a></li>\r\n<li>Blade franchise: <a href=\"https://en.wikipedia.org/wiki/Blade_(franchise)\" target=\"_blank\">https://en.wikipedia.org/wiki/Blade_(franchise)</a></li>\r\n<li>Judas history: <a href=\"https://authorlyngibson.wordpress.com/2013/08/05/the-legend-of-judas-iscariot-vampire\" target=\"_blank\">https://authorlyngibson.wordpress.com/2013/08/05/the-legend-of-judas-iscariot-vampire</a></li>\r\n<li>Vulcans & Romulans: <a href=\"https://memory-alpha.fandom.com/wiki/Vulcan-Romulan_history\" target=\"_blank\">https://memory-alpha.fandom.com/wiki/Vulcan-Romulan_history</a></li>\r\n<li>The Fly: <a href=\"https://www.imdb.com/title/tt0091064\" target=\"_blank\">https://www.imdb.com/title/tt0091064</a></li>\r\n<li>PETA: <a href=\"https://www.peta.org\" target=\"_blank\">https://www.peta.org</a></li>\r\n<li>Oracle vs. Google: <a href=\"https://techcrunch.com/2020/10/06/standing-by-developers-through-google-v-oracle\" target=\"_blank\">https://techcrunch.com/2020/10/06/standing-by-developers-through-google-v-oracle</a></li>\r\n</ul>',384,111,1,'CC-BY-SA','Count, questions, vlad, legends, Halloween',0,0,1),
(3192,'2020-10-27','A light bulb moment, part 3',777,'The LED revolution','<p><strong><u>LED History</u></strong></p>\r\n<p>The history of the LED revolution is both long and complex but I\'lldomybesttocoverit.PleaseforgivemeifImispronouncesomeofthematerialsandprocessesI\'m not a lighting expert as I stated right back at the beginning of this series.</p>\r\n<p>The following excerpts are from Wikipedia; the link will be in the show notes, <a href=\"https://en.wikipedia.org/wiki/Light-emitting_diode\">https://en.wikipedia.org/wiki/Light-emitting_diode</a></p>\r\n<p>The LED or Light Emitting Diode first appeared as a practical electronic component in 1962, the earliest LEDs emitted low-intensity infrared light.[7] Infrared LEDs are used in remote-control circuits, such as those used with a wide variety of consumer electronics. The first visible-light LEDs were of low intensity and limited to red. Modern LEDs are available across the visible, ultraviolet, and infrared wavelengths, with high light output. A great deal of development and refinement was required to get to this point.</p>\r\n<p>The first commercial visible-wavelength LEDs were commonly used as replacements for incandescent and neon indicator lamps, and in seven-segment displays,[31] first in expensive equipment such as laboratory and electronics test equipment, then later in such appliances as calculators, TVs, radios, telephones, as well as watches (see list of signal uses). Until 1968, visible and infrared LEDs were extremely costly, in the order of US$200 per unit, and so had little practical use.[32]</p>\r\n<p>In 1968 Monsanto was the first organization to mass-produce visible LEDs, these were red LEDs suitable for indicators.[32]</p>\r\n<p>In February 1969, Hewlett-Packard introduced the HP Model 5082-7000 Numeric Indicator, the first LED device to use integrated circuit (integrated LED circuit) technology.[33] It was the first intelligent LED display, and was a revolution in digital display technology, replacing the Nixie tube and becoming the basis for later LED displays.[36]</p>\r\n<p>The early red LEDs were bright enough only for use as indicators, as the light output was not enough to illuminate an area. Readouts in calculators were so small that plastic lenses were built over each digit to make them legible. Later, other colors became widely available and appeared in appliances and equipment.</p>\r\n<p>The first blue-violet LED using magnesium-doped gallium nitride was made at Stanford University in 1972 by Herb Maruska and Wally Rhines</p>\r\n<p>In 1973 Pankove and Ed Miller demonstrated the first blue electroluminescence from zinc-doped gallium nitride, though the subsequent device Pankove and Miller built, the first actual gallium nitride light-emitting diode, emitted green light.[49][50]</p>\r\n<p>Today, magnesium-doping of gallium nitride remains the basis for all commercial blue LEDs and laser diodes. In the early 1970s, these devices were too dim for practical use, and research into gallium nitride devices slowed.</p>\r\n<p>In 1993, high-brightness blue LEDs were demonstrated by Shuji Nakamura of Nichia Corporation using a gallium nitride growth process.[56][57][58] In parallel, Isamu Akasaki and Hiroshi Amano in Nagoya were working on developing the important GaN deposition on sapphire substrates and the demonstration of p-type doping of GaN. This new development revolutionized LED lighting, making high-power blue light sources practical, leading to the development of technologies like Blu-ray[citation needed].</p>\r\n<p>In 1995, Alberto Barbieri at the Cardiff University Laboratory (GB) investigated the efficiency and reliability of high-brightness LEDs and demonstrated a \"transparent contact\" LED using indium tin oxide (ITO) on (AlGaInP/GaAs).</p>\r\n<p>In 2001[62] and 2002,[63] processes for growing gallium nitride (GaN) LEDs on silicon were successfully demonstrated.</p>\r\n<p>In January 2012, Osram demonstrated high-power InGaN LEDs grown on silicon substrates commercially,[64] and GaN-on-silicon LEDs are in producti
(3188,'2020-10-21','Thrift store quick fix',67,'Fixing up a dog coat for the cool weather.','<h3 id=\"thrift-store-quick-fix-for-a-dog-coat.\">Thrift store quick fix for a dog coat.</h3>\r\n<ol type=\"1\">\r\n<li>Ripped out stitches on defective velcro.</li>\r\n</ol>\r\n<p><small><em>Picture 1</em></small><br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3188/img_001.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3188/img_001_thumbnail.jpg\" alt=\"Picture 1\" /></a></p>\r\n<ol start=\"2\" type=\"1\">\r\n<li>Re-stitched with the flat surface facing up.</li>\r\n</ol>\r\n<p><small><em>Picture 2</em></small><br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3188/img_002.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3188/img_002_thumbnail.jpg\" alt=\"Picture 2\" /></a></p>\r\n<p><small><em>Picture 3</em></small><br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3188/img_003.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3188/img_003_thumbnail.jpg\" alt=\"Picture 3\" /></a></p>\r\n<ol start=\"3\" type=\"1\">\r\n<li>Hot-glued replacement velcro.</li>\r\n</ol>\r\n<p><small><em>Picture 4</em></small><br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3188/img_004.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3188/img_004_thumbnail.jpg\" alt=\"Picture 4\" /></a></p>\r\n<ol start=\"4\" type=\"1\">\r\n<li>Profit</li>\r\n</ol>\r\n<p><small><em>Picture 5</em></small><br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3188/img_005.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3188/img_005_thumbnail.jpg\" alt=\"Picture 5\" /></a></p>\r\n',318,0,0,'CC-BY-SA','sewing',0,0,1),
(3189,'2020-10-22','How the Dutch dig Graves',163,'Ken explains how they dig graves when the ground is essentially sand','<p>\r\nOn a lock down walk in the local grave yard, Ken and his Wife stumble upon a new grave. As the soil is mostly sand, the graves need to be shored up to prevent collapse.\r\n</p>\r\n<p>\r\n<img src=\"https://hackerpublicradio.org/eps/hpr3189/1.jpg\" />\r\n</p>\r\n<p>\r\n<img src=\"https://hackerpublicradio.org/eps/hpr3189/2.jpg\" />\r\n</p>\r\n<p>\r\n<img src=\"https://hackerpublicradio.org/eps/hpr3189/3.jpg\" />\r\n</p>',30,0,1,'CC-BY-SA','graves, sand, How Holland Works, Dutch, Netherlands',0,0,1),
(3193,'2020-10-28','Meet Antithesis',1946,'Meet my new computer, a Pinebook Pro, as I explain my rationale, unbox it, and set it up.','<p>In this episode Paul discusses his thoughts in ordering a Pinebook Pro. During the episode he does an unboxing, and then comes back after a week of use to let us know how it preforms in practice.<br />\r\n\r\nYou can get one yourself here: <a href=\"https://www.pine64.org/\" class=\"uri\">https://www.pine64.org/</a></p>\r\n',383,57,0,'CC-BY-SA','Pinebook,Pro,64,unboxing',0,0,1),
(3198,'2020-11-04','Income Life insurance and then Chopin',1381,'I talk about my thoughts on Income Life insurance, and then we listen to some Chopin','<p><code>@paul@cloud.pquirk.com</code></p>',383,0,0,'CC-BY-SA','Income,life,insurance,investment,investing,Chopin',0,0,1),
(3195,'2020-10-30','For your Consideration - the ideal Ham Radio setup',3470,'Introducing a new podcast to me, with a special guest with an interest in amateur radio.','<ol type=\"1\">\r\n<li><p>Host Noah Cheliah</p></li>\r\n<li><p>Plenty of Linux security and IP cameras talk</p></li>\r\n<li><p>Focus on Free Software and related news</p></li>\r\n<li><p>Noah brings on a guest, who describe his ideal Ham Radio setup, which includes use of Software Defined radio.</p>\r\n<p><a href=\"https://en.wikipedia.org/wiki/Software-defined_radio\" class=\"uri\">https://en.wikipedia.org/wiki/Software-defined_radio</a></p></li>\r\n<li><p>Guest talking about Ham Radio starts at 00:25:42</p>\r\n<p><a href=\"https://podcast.asknoahshow.com/200\" class=\"uri\">https://podcast.asknoahshow.com/200</a></p></li>\r\n</ol>\r\n',318,75,0,'CC-BY-NC-ND','linux, security, amateur radio',0,0,1),
(3197,'2020-11-03','Pens, pencils, paper and ink - 3',1420,'Looking at another batch of writing equipment','<h2 id=\"introduction\">Introduction</h2>\r\n<p>This is the third in a short series about pens, pencils, writing paper and ink.</p>\r\n<p>In this episode I look at two Chinese fountain pens, a mechanical pencil, a gel pen, some inks and some paper.</p>\r\n<h2 id=\"long-notes\">Long notes</h2>\r\n<p>The <a href=\"https://hackerpublicradio.org/eps/hpr3197/full_shownotes.html\">main notes for this episode, including pictures, can be viewed here</a>.</p>\r\n<h2 id=\"links\">Links</h2>\r\n<ul>\r\n<li>Pen & Pencil Brands:\r\n<ul>\r\n<li>Jinhao\r\n<ul>\r\n<li><a href=\"https://qiangu.bjsx12.host.35.com/en/indexen.asp\">Website</a></li>\r\n<li><a href=\"https://stationery.wiki/Jinhao\">Stationery Wiki</a></li>\r\n</ul></li>\r\n<li>Pentel\r\n<ul>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Pentel\">Wikipedia page</a></li>\r\n</ul></li>\r\n</ul></li>\r\n</ul>\r\n<ul>\r\n<li>Mechanical Pencil:\r\n<ul>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Mechanical_pencil\">Wikipedia page</a></li>\r\n</ul></li>\r\n</ul>\r\n<ul>\r\n<li>Inks:\r\n<ul>\r\n<li><a href=\"https://www.jherbin.com/index.html\">J.Herbin</a></li>\r\n<li><a href=\"https://www.jetpens.com/J.-Herbin-Bleu-Pervenche-Ink-Periwinkle-Blue-30-ml-Bottle/pd/3768\">Jet Pens, Bleu Pervenche Ink, 30ml</a></li>\r\n<li><a href=\"https://www.diamineinks.co.uk/\">Diamine Inks</a></li>\r\n</ul></li>\r\n</ul>\r\n<ul>\r\n<li>Paper:\r\n<ul>\r\n<li><a href=\"https://www.clairefontaine.com/\">Clairefontaine</a></li>\r\n<li>Oxford:\r\n<ul>\r\n<li><a href=\"https://www.my-oxford.com/gb-en/oxford-campus-notebooks/oxford-campus-refill-pads\">Oxford Campus Refills</a></li>\r\n<li><a href=\"https://www.my-oxford.com/int-en/oxford-black-n-red\">Oxford Black N’ Red</a></li>\r\n</ul></li>\r\n</ul></li>\r\n</ul>\r\n<ul>\r\n<li>HPR links:\r\n<ul>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=1941\">hpr1941 :: What’s in my case</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2061\">hpr2061 :: Handwriting</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=2273\">hpr2273 :: Fountain Pens</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=3063\">hpr3063 :: Pens, pencils, paper and ink - 1</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=3092\">hpr3092 :: Pens, pencils, paper and ink - 2</a></li>\r\n</ul></li>\r\n</ul>\r\n',225,112,1,'CC-BY-SA','fountain pen,gel pen,mechanical pencil,ink,paper',0,0,1),
(3201,'2020-11-09','A small intro to 3D printing',688,'Everything a newbie needs to know to start 3D printing','<ul>\r\n<li>My Ender 3 printer from Creality</li>\r\n<li>Cura, open source from Ultimaker, <a href=\"https://ultimaker.com/nl/software/ultimaker-cura\" class=\"uri\">https://ultimaker.com/nl/software/ultimaker-cura</a></li>\r\n<li>Octoprint, <a href=\"https://octoprint.org/\" class=\"uri\">https://octoprint.org/</a></li>\r\n</ul>',369,0,0,'CC-BY-SA','3D printing',0,0,1),
(3203,'2020-11-11','The Paul Quirk show: Retro Computing',1838,'I discuss the hobby of retro computing in this episode.','<p>Some links of interest for the listener:</p>\r\n<ul>\r\n<li>Amiga emulation: <a href=\"https://fs-uae.net/\" class=\"uri\">https://fs-uae.net/</a></li>\r\n<li>Commodore 8 bit emulation: <a href=\"https://vice-emu.sourceforge.io/\" class=\"uri\">https://vice-emu.sourceforge.io/</a></li>\r\n<li>Atari emulation: <a href=\"https://hatari.tuxfamily.org/\" class=\"uri\">https://hatari.tuxfamily.org/</a></li>\r\n<li>Apple II emulation: <a href=\"https://apple2games.com/wiki/Apple_2_Emulators\" class=\"uri\">https://apple2games.com/wiki/Apple_2_Emulators</a></li>\r\n<li>A site for the Color Computer: <a href=\"https://cocoquest.com/\" class=\"uri\">https://cocoquest.com/</a></li>\r\n</ul>',383,0,0,'CC-BY-SA','retro,computing,Paul Quirk show,Commodore 64,Commodore 128,Vic 20,Apple II,coco,8-bit,PET,Atari',0,0,1),
(3199,'2020-11-05','Bad Audio Weed Eater Bugs Sprinkler and Bubbles !',1516,'Pushing the definition of \"Audible\" to the limit, join us for some home repair tips','<p>\r\nJoin us for some home repairs, picking up tips and tricks on the way. Sorry for the bad audio.\r\n</p>\r\n<ul>\r\n<li>Bad Audio</li>\r\n<li>Weedeater Bugs</li>\r\n<li>Sprinkler</li>\r\n<li>Bubbles</li>\r\n</ul>',36,0,1,'CC-BY-SA','home improvement,home repair,outdoors,outside ',0,0,1),
(3202,'2020-11-10','A big Question',1118,'In his first show, Padraig asks a big life question. Well ok more like an undead question.','<p>\r\nIn his first show - recorded on Halloween night, Padraig asks a big life question. Well ok more like an undead question. Which is better a Lich, or a Vampire.\r\n</p>\r\n<ul>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Lich_(Dungeons_%26_Dragons)\">https://en.wikipedia.org/wiki/Lich_(Dungeons_%26_Dragons)</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Vampire_(Dungeons_%26_Dragons)\">https://en.wikipedia.org/wiki/Vampire_(Dungeons_%26_Dragons)</a></li>\r\n</ul>',388,95,0,'CC-BY-SA','DND, Vampires, Lich, Undead, Halloween',0,0,1),
(3205,'2020-11-13','Backups of your Backups of Backups',3205,'Do you have backups of your backups? Well you better! Listen to this rant','This is a general discussion about backups and cloud storage. ',36,0,1,'CC-BY-SA','backups,cloud,spideroak,backup,cloud backup,cloud backups',0,0,1),
(3211,'2020-11-23','Chainsaws',1098,'Info about chainsaws and what I know so far!','In this episode operat0r shares his experiences with chainsaws.',36,0,1,'CC-BY-SA','outdoors,outdoor,outside,mechanic,small engine repair,repair,home,home repair,chainsaws',0,0,1),
(3214,'2020-11-26','Rant about websites',1880,'I go over history of websites and the complex nature of security in complex websites','<p>In this show I go over history of websites and the complex nature of security in complex websites</p>',36,0,1,'CC-BY-SA','internet,security,history,html',0,0,1),
(3225,'2020-12-11','Grill repair',1027,'I go over some grill tips/repair','<p>A few quick tips on how to extend the life of grills.</p>',36,0,1,'CC-BY-SA','outdoor,outdoors,repair,home repair,grills',0,0,1),
(3235,'2020-12-25','Soldering Tips',487,'What little I know about the topic you will learn','<p>\r\nA follow up show in the vein of <a href=\"https://hackerpublicradio.org/eps.php?id=3016\">hpr3016 :: Nixie tube clock and friends!</a>. Also be sure to remove batteries from electronics in storage.</p>',36,103,1,'CC-BY-SA','Solder,Soldering,Electronics',0,0,1),
(3245,'2021-01-08','ELECTRICITY',1843,'I talk about tips on ELECTRICITY','<p>An adhoc show in traffic, about how sockets and 3 way switches work.</p>',36,0,1,'CC-BY-SA','ELECTRICITY',0,0,1),
(3216,'2020-11-30','Buying a second home in France',952,'Steps I have taken up to now for buying a second home in another country','<p><a href=\"https://www.funda.nl/\">funda.nl</a></p>\r\n<ul>\r\n<li><p>Do geo query on <a href=\"https://overpass-turbo.eu/\">overpass-turbo.eu</a></p></li>\r\n<li><p>Find query to query villages here: <a href=\"https://wiki.openstreetmap.org/wiki/Overpass_API/Overpass_API_by_Example\" class=\"uri\">https://wiki.openstreetmap.org/wiki/Overpass_API/Overpass_API_by_Example</a></p></li>\r\n<li><p>The box on the right is the viewport that you will get data from.</p></li>\r\n<li><p>Used python to convert xml file to Postgres sql table</p></li>\r\n<li><p>Run query for all < my_max_inhabitants</p></li>\r\n<li><p>Run script to query and save to csv</p></li>\r\n<li><p>Import csv into LibreOffice spreadsheet.</p></li>\r\n<li><p>Use global search & replace to make cells with google maps url clickable.</p></li>\r\n<li><p>Nice podcast of French women about buying a house in France<br />\r\n<a href=\"https://joinusinfrance.com/episode/buying-a-house-in-france-episode-239/\" class=\"uri\">https://joinusinfrance.com/episode/buying-a-house-in-france-episode-239/</a></p></li>\r\n</ul>',369,0,0,'CC-BY-SA','second-house,france',0,0,1),
(3204,'2020-11-12','Getting Started in 3D Printing',960,'Thaj gives his opinions and recommendations on how to get started in 3D printing','<p>Getting started in 3D printing</p>\r\n<ul>\r\n<li><p><a href=\"https://top3dshop.com/blog/fff-vs-fdm-difference-and-best-printers\">The FFF vs. FDM Debate</a></p></li>\r\n<li><p><a href=\"https://www.creality.com/goods-detail/ender-3-3d-printer\">Creality Ender 3</a></p></li>\r\n<li><p><a href=\"https://www.reprap.org/wiki/RepRap\">Where to go once you decide you need another 3D printer</a></p></li>\r\n</ul>',270,0,1,'CC-BY-SA','3D Printing',0,0,1),
(3206,'2020-11-16','Dungeons and Dragons for the blind',3511,'I discuss some easy workarounds to make tabletop RPGs easy for both sighted and non-sighted players','<p>Dungeons and Dragons, and most tabletop roleplaying games, are ideal platforms for players with low or no vision. However, because most players are sighted, you have to work-around some assumptions made by the rulebooks.</p>\r\n\r\n<p>I [currently] have vision, but I have played with a blind player before, and I\'veplayedasaDungeonMasterwithnomaterialsonhand.Inthisepisode,IdiscusssomeeasyworkaroundstomaketabletopRPGseasyforbothsightedandnon-sightedplayers.\r\n</p>\r\n\r\n<p>Thereareaudiobookversionsoftherulebooksavailableat<ahref=\"https://listenrpg.com\">https://listenrpg.com</a>.</p>\r\n\r\n<p>TheofficialD&Ddigitalplatformis<ahref=\"https://www.dndbeyond.com/\"target=\"_blank\">dndbeyond.com</a>,anditisaccessibletoblindplayersusingascreenreader.</p>\r\n\r\n<p>WizardsoftheCoastpublishesthebasicrulesunderthe<ahref=\"https://www.opengamingfoundation.org/licenses.html\"target=\"_blank\">OpenGameLicense(OGL)</a>.Asaservicetomyplayers,Imaintain<ahref=\"https://notabug.org/notklaatu/5srdnd.git\">aversionofthisdocumentinplaintext,withthird-partyOGLadditions</a>.Itmayormaynotbeusefulforscreenreaders,dependingonyourworkflow.</p>',78,95,0,'CC-BY-SA','dnd,blind,inclusive,5e,tabletop,rpg',0,0,1),
(3217,'2020-12-01','Sump Minion',1106,'My first Internet of Things device, without using python','\r\n<p>1 <b>introduction</b></p>\r\n<p>1.1 back in Ohio using my regular voice<br />\r\n1.2 espeak is no worse than operat0rs audio and we all love his shows.</p>\r\n<p>2 <b>the problem</b></p>\r\n<p>2.1 where i live the water table is high and basement flooding is a problem <a href=\"https://en.wikipedia.org/wiki/Great_Black_Swamp\" class=\"uri\">https://en.wikipedia.org/wiki/Great_Black_Swamp</a><br />\r\n2.2 to counteract the water table problem houses have sumps in the basement</p>\r\n<p><em>sump closet</em><br />\r\n<img src=\"https://hackerpublicradio.org/eps/hpr3217/img_001.jpg\" alt=\"sump closet\" /></p>\r\n<p><em>sump close up</em><br />\r\n<img src=\"https://hackerpublicradio.org/eps/hpr3217/img_002.jpg\" alt=\"sump close up\" /></p>\r\n<p>2.2.1 sumps consist of a basin where outside water is collected<br />\r\n2.2.2 a pump, usually electric, that drains the sump<br />\r\n2.2.3 also a good sump system will have some type of backup pump</p>\r\n<p>2.3 the \'real\' problem happens when the sump pump(s) fail<br />\r\n2.3.1 primary pumps fail in many ways, mechanical motor failures, floats sticking electrical outage<br />\r\n2.3.2 secondary pumps also fail battery problems, mechanical problems<br />\r\n2.3.3 i wanted a notification system that would let me know that the water level in my sump was rising. i wanted it set so that if the water level hits where the secondary system kicks in i would get some ind of notification. i wanted a system that would not use python or some kind of \'homespy\' system available from some friendly corporation.</p>\r\n<p>3 <b>the solution</b></p>\r\n<p>3.1 a raspberrry pi, a simple transistor circuit, a c library that allows access to the pi\'sgpio\'s, mutt mail client, some bash scripting and a cron job</p>\r\n<p>\r\nThe probe is meerly 2 wires on the end of a pvc pipe. one wire is higher up on the pipe than the other when both wires are submerged, the circuit is complete. the wires are just some old stuff from a stripped out ethernet cable. you could easily cascade anumber of these circuits and provide a water level meter something like this,<br />\r\n\r\n<img src=\"https://www.homemade-circuits.com/wp-content/uploads/2019/06/water-level.jpg\" alt=\"water level meter\" /><br />\r\n, instead of running leds, you\'dhookeachendtoagpiopinonthepie.\r\n</p>\r\n<p>\r\nInpicture2,thecloseupyoucanseetheprobeitsthesmallpvcpipewiththebluewiresrunningalongtheside.Iattachedtheendofthewirestothepipebystrippingtheendsandwrappingthemaroundasmall1/2\" self tapping screw. then I screwed one in towards the bottom and on higher up. the one higer up determines when the water alarm goes off. \r\n</p>\r\n\r\n\r\n<p>4 <b>implementation</b></p>\r\n<p>4.1 raspberry pi 3b+<br />\r\n4.1.1 install slackware<br />\r\n<a href=\"https://sarpi.fatdog.eu/\" class=\"uri\">https://sarpi.fatdog.eu/</a><br />\r\nslackware-arm<br />\r\n<a href=\"https://arm.slackware.com/\" class=\"uri\">https://arm.slackware.com/</a><br />\r\npodcast<br />\r\n<a href=\"https://shows.acast.com/slackchat\" class=\"uri\">https://shows.acast.com/slackchat</a><br />\r\n4.1.2 access to gpio\'s<br />\r\n4.1.2.1 initially sysfs, its deprecated<br />\r\n<a href=\"https://www.kernel.org/doc/Documentation/ABI/obsolete/sysfs-gpio\" class=\"uri\">https://www.kernel.org/doc/Documentation/ABI/obsolete/sysfs-gpio</a><br />\r\n4.1.2.2 i was unable to get libgpio to compile<br />\r\n4.1.2.3 other solutions python. wiringpi, project dead<br />\r\n4.1.2.4 a library pigpiod<br />\r\n<a href=\"https://abyz.me.uk/rpi/pigpio/pigpiod.html\" class=\"uri\">https://abyz.me.uk/rpi/pigpio/pigpiod.html</a><br />\r\n4.1.2.5 slackbuilds pigpiod<br />\r\n<a href=\"https://slackbuilds.org/\" class=\"uri\">https://slackbuilds.org/</a><br />\r\n4.1.3 the circuit<br />\r\n4.1.3.1 a rework of a forrest mims water alarm circuit<br />\r\n<a href=\"https://en.wikipedia.org/wiki/Forrest_Mims\" class=\"uri\">https://en.wikipedi
(3226,'2020-12-14','Using taskwarrior to structurize your work',970,'How using taskwarrior can help you to structure your work','<ul>\r\n<li><a href=\"https://taskwarrior.org/\">taskwarrior.org</a>\r\n<ul>\r\n<li>Taskwarrior is Free and Open Source Software that manages your TODO list from the command line. It is flexible, fast, and unobtrusive. It does its job then gets out of your way.</li>\r\n</ul></li>\r\n</ul>\r\n<!-- x -->\r\n<ul>\r\n<li><a href=\"https://timewarrior.net/\">timewarrior.net</a>\r\n<ul>\r\n<li>Timewarrior is Free and Open Source Software that tracks time from the command line.</li>\r\n</ul></li>\r\n</ul>\r\n<!-- x -->\r\n<ul>\r\n<li><a href=\"https://medium.com/@jrisch/tracking-time-with-taskwarrior-and-timewarrior-6759f3542276\">Article on the Medium website</a>\r\n<ul>\r\n<li><em>Tracking time on the command line with Taskwarrior and Timewarrior</em></li>\r\n</ul></li>\r\n</ul>',369,0,0,'CC-BY-SA','command-line,taskwarrior,timewarrior,todo-list',0,0,1),
(3215,'2020-11-27','Why I Gave Away a 3-D Printer',442,'I briefly had a 3-D printer and gave it away. This is why.','<p>Ken Fallon asked for shows abut 3-D printers and I told him I had given mine away. So of course he asked for a show about why I had done that. This is that show.</p>\r\n<ul>\r\n<li><a href=\"https://olfconference.org/\" class=\"uri\">https://olfconference.org/</a></li>\r\n<li><a href=\"https://2021.penguicon.org/\" class=\"uri\">https://2021.penguicon.org/</a></li>\r\n<li><a href=\"https://canonical.com/\" class=\"uri\">https://canonical.com/</a></li>\r\n<li><a href=\"https://www.vmware.com/\" class=\"uri\">https://www.vmware.com/</a></li>\r\n<li><a href=\"https://www.redhat.com/en/authors/joe-brockmeier\" class=\"uri\">https://www.redhat.com/en/authors/joe-brockmeier</a></li>\r\n<li><a href=\"https://enablingthefuture.org/\" class=\"uri\">https://enablingthefuture.org/</a></li>\r\n<li><a href=\"https://www.zwilnik.com/why-i-gave-away-a-3-d-printer/\" class=\"uri\">https://www.zwilnik.com/why-i-gave-away-a-3-d-printer/</a></li>\r\n</ul>',198,0,0,'CC-BY-SA','3D Printers, prosthetics',0,0,1),
(3209,'2020-11-19','Linux Inlaws S01E17: Nextcloud',4189,'Chat with Frank Karlitschek about Nextcloud and forking your company','<ul>\r\n<li>Nextcloud: <a href=\"https://nextcloud.com\" target=\"_blank\">https://nextcloud.com</a></li>\r\n<li>PHP: <a href=\"https://www.php.net\" target=\"_blank\">https://www.php.net</a></li>\r\n</ul>',384,111,1,'CC-BY-SA','Nextcloud, PHP, Golang, forking a company, technical debt',0,0,1),
(3207,'2020-11-17','Fireside chat with E Nigma',3799,'Ken talks to the original HPR and Today with a Techie Admin.','<p>In this rambling episode, we talk to <a href=\"https://hackerpublicradio.org/correspondents/0039.html\">Enigma</a> about the old days of HPR. He helped out with Today With A Techie and <a href=\"https://hackerpublicradio.org/correspondents/0001.html\">Droops</a> asked him if he would like lead the project. After 300 episodes he, <a href=\"https://www.urbandictionary.com/define.php?term=Dual_Parallel\">Dual Parallel</a>, <a href=\"https://hackerpublicradio.org/correspondents/0001.html\">Droops</a>, and <a href=\"https://en.wikipedia.org/wiki/StankDawg\">StankDawg</a> decided to pivot and rebrand as Hacker Public Radio. A nod to <a href=\"https://en.wikipedia.org/wiki/NPR\">National Public Radio</a>.</p>\r\n\r\n<h3>Links</h3>\r\n<ul>\r\n<li><a href=\"https://oldskoolphreak.com/radio.html\">https://oldskoolphreak.com/radio.html</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/twat.html\">https://hackerpublicradio.org/twat.html</a></li>\r\n<li><a href=\"https://www.binrev.com/forums/\">https://www.binrev.com/forums/</a></li>\r\n<li><a href=\"https://lottalinuxlinks.com/\">https://lottalinuxlinks.com/</a></li>\r\n<li><a href=\"https://archive.org/details/Linux_Reality_Podcast_Archive_DVD\">https://archive.org/details/Linux_Reality_Podcast_Archive_DVD</a></li>\r\n<li><a href=\"https://archive.org/details/BRRseason1\">https://archive.org/details/BRRseason1</a></li>\r\n<li><a href=\"https://archive.org/details/BRRseason2\">https://archive.org/details/BRRseason2</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/correspondents/0039.html\">Enigma https://hackerpublicradio.org/correspondents/0039.html</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Digital_DawgPound\">https://en.wikipedia.org/wiki/Digital_DawgPound</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Infonomicon\">https://en.wikipedia.org/wiki/Infonomicon</a></li>\r\n<li><a href=\"https://www.urbandictionary.com/define.php?term=Dual_Parallel\">https://www.urbandictionary.com/define.php?term=Dual_Parallel</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/StankDawg\">https://en.wikipedia.org/wiki/StankDawg</a></li>\r\n</ul>',30,0,1,'CC-BY-SA','HPR, TWAT, DDP, Infonomicon, Binrev, RFA',0,0,1),
(3208,'2020-11-18','The Paul Quirk show: Wacom with Pinebook, and thoughts on the DMCA takedown',1120,'I got a Wacom tablet to use with my Pinebook, and then share my thoughts on the recent DMCA takedown','<ul>\r\n<li><p>My fediverse address: <span class=\"citation\" data-cites=\"paul\">@paul</span><span class=\"citation\" data-cites=\"cloud.pquirk.com\">@cloud.pquirk.com</span></p></li>\r\n<li><p>See my first Wacom doodle here: <a href=\"https://cloud.pquirk.com/index.php/s/CAnAwwD6S6AczC6\" class=\"uri\">https://cloud.pquirk.com/index.php/s/CAnAwwD6S6AczC6</a></p></li>\r\n<li><p><a href=\"https://en.wikipedia.org/wiki/Citizens_United_v._Federal_Election_Commission\" class=\"uri\">https://en.wikipedia.org/wiki/Citizens_United_v._Federal_Election_Commission</a></p></li>\r\n<li><p><a href=\"https://www.canlii.org/en/ca/scc/doc/2000/2000scc57/2000scc57.html\" class=\"uri\">https://www.canlii.org/en/ca/scc/doc/2000/2000scc57/2000scc57.html</a></p></li>\r\n</ul>',383,0,0,'CC-BY-SA','Pinebook,Pro,Wacom,tablet,DMCA,takedown,Youtube,Canadian,Canada,Music',0,0,1),
(3212,'2020-11-24','A Pi Model 3B as your daily driver? You must be joking.',755,'Beeza\'slaptopisawaybeingfixed.CanhemanageforafewdaysusingjusthisRaspberryPi3B?','<p>MyDelllaptophadtogoawaytohaveanewcoolingfanfitted.I\'ve got 3 other laptops to call upon, but instead I decided to conduct an experiment I\'vetheorisedaboutforages.CouldaRaspberryPi3Bserveasmydailydriver?</p>\r\n<p>Thisideagoesbacksomewayandsincethen,ofcourse,themuchmorepowerfulmodel4hasbeenreleased.However,theremustbethousandsof3Bsouttheredoingnothing,soperhapstheycouldhaveanewleaseoflifeprovidingbasicbrowsingandinternetcapabilitiestopeoplewhomightotherwisenotbeinapositiontobuyacomputer.</p>\r\n<p>Hardware:RaspberryPiModel3B<br/>\r\nOS:RaspberryPiOS(currentversionasof31stOctober2020)<br/>\r\nMicroSD:SanDisk16GB</p>\r\n<p>ADDITIONALSOFTWAREINSTALLED</p>\r\n<ul>\r\n<li>AudioEditor:mhWaveEdit1.4.23</li>\r\n<li>AudioFormatConverter:SoundConverter2.1.3</li>\r\n<li>ImageEditor:GIMP2.10</li>\r\n</ul>\r\n',246,0,0,'CC-BY-SA','RaspberryPi,SoftwareReview',0,0,1),
(3213,'2020-11-25','Electrical Safety',1835,'I discuss why and how I stay safe when working with electricity, with some ear candy at the end.','<ul>\r\n<li>Circuit breaker failures:\r\n<ul>\r\n<li><a href=\"https://www.youtube.com/watch?v=0Xov-nXpBmM\" class=\"uri\">Breaker Panel Explosion</a></li>\r\n<li><a href=\"https://www.youtube.com/watch?v=PN7qtQVJXXM\" class=\"uri\">DB-25 Circuit Breaker Blows Up</a></li>\r\n</ul></li>\r\n<li>Electrical socket failures:\r\n<ul>\r\n<li><a href=\"https://www.youtube.com/watch?v=Kzv1Qn1pPpc\" class=\"uri\">Multiple socket outlet catching fire</a></li>\r\n<li><a href=\"https://www.youtube.com/watch?v=nPhgQpRFe5A\" class=\"uri\">Loose wires cause fires.</a></li>\r\n</ul></li>\r\n</ul>\r\n<p>Please be safe!</p>',383,0,0,'CC-BY-SA','Electrical,safety,code,electricity,electrocution',0,0,1),
(3218,'2020-12-02','An introduction to Darktable',1574,'A brief introduction to RAW photography, the Darktable application, and then sheep may safely graze','<ul>\r\n<li><a href=\"https://darktable.org/\" class=\"uri\">https://darktable.org/</a></li>\r\n<li><a href=\"https://musopen.org/music/3446-the-lively-hunt-is-all-my-hearts-desire-bwv-208/\" class=\"uri\">https://musopen.org/music/3446-the-lively-hunt-is-all-my-hearts-desire-bwv-208/</a></li>\r\n</ul>\r\n<pre><code>@paul@cloud.pquirk.com\r\n@quirk@mastodon.social</code></pre>',383,0,0,'CC-BY-SA','darktable,RAW,photo,photography,editing',0,0,1),
(3219,'2020-12-03','Linux Inlaws S01E18: Voice Recognition and Text to Speech',4603,'How to place fake prank calls into podcasts and what does TTS have to do with this','<p>\r\nIn this episode, Chris is harassed by quite a few artificial nuisance callers, among\r\ndrug lords, Irish nurses and some random Linux Inlaws Chief Financial Officer. Based\r\non these examples, our two heroes discuss the history and current state of text-to-\r\nspeech (TTS) and voice recognition. We attempted to use voice recognition software in order\r\nto produce a <a href=\"https://linuxinlaws.eu/S01E18_trans.txt\" target=\"_blank\">transcript of the show</a>.\r\n</p>\r\n<br/>Shownotes:<br/>\r\n<ul>\r\n<li>Wavenet: <a href=\"https://deepmind.com/blog/article/wavenet-generative-model-raw-audio\" target=\"_blank\">https://deepmind.com/blog/article/wavenet-generative-model-raw-audio</a></li>\r\n<li>Tacotron: <a href=\"https://ai.googleblog.com/2017/12/tacotron-2-generating-human-like-speech.html\" target=\"_blank\">https://ai.googleblog.com/2017/12/tacotron-2-generating-human-like-speech.html</a></li>\r\n<li>DeepSpeech: <a href=\"https://github.com/mozilla/DeepSpeech\" target=\"_blank\">https://github.com/mozilla/DeepSpeech</a></li>\r\n<li>Lyrebird / Welcome.AI: <a href=\"https://www.welcome.ai/lyrebird\" target=\"_blank\">https://www.welcome.ai/lyrebird</a></li>\r\n<li>Nvidia Tacotron 2: <a href=\"https://github.com/NVIDIA/tacotron2\" target=\"_blank\">https://github.com/NVIDIA/tacotron2</a></li>\r\n<li>Tensorflow: <a href=\"https://www.tensorflow.org\" target=\"_blank\">https://www.tensorflow.org</a></li>\r\n<li>PyTorch: <a href=\"https://pytorch.org\" target=\"_blank\">https://pytorch.org</a></li>\r\n<li>Melspectrograms: <a href=\"https://medium.com/analytics-vidhya/understanding-the-mel-spectrogram-fca2afa2ce53\" target=\"_blank\">https://medium.com/analytics-vidhya/understanding-the-mel-spectrogram-fca2afa2ce53</a></li>\r\n<li>GRAPHCORE: <a href=\"https://www.graphcore.ai\" target=\"_blank\">https://www.graphcore.ai</a></li>\r\n<li>FGPA: <a href=\"https://en.wikipedia.org/wiki/Field-programmable_gate_array\" target=\"_blank\">https://en.wikipedia.org/wiki/Field-programmable_gate_array</a></li>\r\n<li>IBM ROMP: <a href=\"https://en.wikipedia.org/wiki/IBM_ROMP\" target=\"_blank\">https://en.wikipedia.org/wiki/IBM_ROMP</a></li>\r\n<li>Google\'sTTS:<ahref=\"https://cloud.google.com/text-to-speech\"target=\"_blank\">https://cloud.google.com/text-to-speech</a></li>\r\n<li>AppleM1:<ahref=\"https://www.gsmarena.com/the_apple_m1_is_the_first_armbased_chipset_for_macs_with_the_fastest_cpu_cores_and_top_igpu-news-46222.php\"target=\"_blank\">https://www.gsmarena.com/the_apple_m1_is_the_first_armbased_chipset_for_macs_with_the_fastest_cpu_cores_and_top_igpu-news-46222.php</a></li>\r\n<li>SecureEnclaves:<ahref=\"https://support.apple.com/guide/security/secure-enclave-overview-sec59b0b31ff/web\"target=\"_blank\">https://support.apple.com/guide/security/secure-enclave-overview-sec59b0b31ff/web</a></li>\r\n<li>OSDU:<ahref=\"https://www.opengroup.org/osdu/forum-homepage\"target=\"_blank\">https://www.opengroup.org/osdu/forum-homepage</a></li>\r\n<li>JackKerouac\'s On the Road: <a href=\"https://en.wikipedia.org/wiki/On_the_Road\" target=\"_blank\">https://en.wikipedia.org/wiki/On_the_Road</a></li>\r\n</ul>\r\n',384,111,1,'CC-BY-SA','voice recognition, text to speech, wavenet, tacotron 2, DeepSpeech, Lyrebird',0,0,1),
(3222,'2020-12-08','Musings about writing a book about the Odoo software suite',1616,'How I started writing again after 20 years and this time about the Odoo software','<p>In this podcast I describe how I met another Dutch guy at the Ubucon 2018 conference in Spain. And how he asked me to write another book, this time about Odoo. How I learned how the Odoo ecosystem works, with the Odoo S.A. company and the Odoo Community Association (OCA).</p>\r\n<p>At the end I had a finished book.</p>\r\n<p>You can find the book here: <a href=\"https://www.lulu.com/en/en/shop/jeroen-baten/jumpstart-your-business-with-odoo-12-ennl/paperback/product-1wkzmj52.html\" class=\"uri\">https://www.lulu.com/en/en/shop/jeroen-baten/jumpstart-your-business-with-odoo-12-ennl/paperback/product-1wkzmj52.html</a></p>\r\n<p>If you have questions or comments, please leave a comment at the HPR site.</p>\r\n<p>Warm regards, Jeroen Baten</p>\r\n',369,0,0,'CC-BY-SA','odoo, writing, book',0,0,1),
(3223,'2020-12-09','My COVID year summary',1090,'I summarize what I\'vebeendoingforthelastyear','<h1id=\"links\">Links</h1>\r\n<ul>\r\n<li><ahref=\"https://www.cdc.gov/coronavirus/2019-ncov/lab/reporting-lab-data.html\">https://www.cdc.gov/coronavirus/2019-ncov/lab/reporting-lab-data.html</a></li>\r\n<li><ahref=\"https://coronavirus.jhu.edu/map.html\">https://coronavirus.jhu.edu/map.html</a></li>\r\n<li><ahref=\"https://www.fda.gov/emergency-preparedness-and-response/mcm-legal-regulatory-and-policy-framework/emergency-use-authorization#covid19euas\">https://www.fda.gov/emergency-preparedness-and-response/mcm-legal-regulatory-and-policy-framework/emergency-use-authorization#covid19euas</a></li>\r\n</ul>',300,100,0,'CC-BY-SA','covid,healthcare,coronavirus,laboratory',0,0,1),
(3224,'2020-12-10','Adventures in Retrocomputing with the Mac Plus',1479,'I talk more about my hobby with retrocomputing, and then Greensleeves.','<h2 id=\"links\">Links</h2>\r\n<ul>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Macintosh_Plus\" class=\"uri\">https://en.wikipedia.org/wiki/Macintosh_Plus</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Zip_drive\" class=\"uri\">https://en.wikipedia.org/wiki/Zip_drive</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Steve_Jobs\" class=\"uri\">https://en.wikipedia.org/wiki/Steve_Jobs</a></li>\r\n<li><a href=\"https://www.applegazette.com/ipod/steve-jobs-and-minimalism/\" class=\"uri\">https://www.applegazette.com/ipod/steve-jobs-and-minimalism/</a></li>\r\n</ul>',383,71,0,'CC-BY-SA','Mac,Plus,Iomega,zip,drive,OS,7.5.5,6.0.8,retro,computing',0,0,1),
(3501,'2022-01-03','HPR Community News for December 2021',4324,'HPR Volunteers talk about shows released and comments posted in December 2021','<style>\ntable td.shrink {\n white-space:nowrap\n}\n</style>\n\n<h2>New hosts</h2>\n<p>\nWelcome to our new host: <br />\n\n <a href=\"https://hackerpublicradio.org/correspondents/0401.html\" target=\"_blank\">Mechatroniac</a>.\n</p>\n\n<h2>Last Month\'sShows</h2>\n<tableid=\"t01\">\n<tr>\n<th>Id</th>\n<th>Day</th>\n<th>Date</th>\n<th>Title</th>\n<th>Host</th>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3478\"target=\"_blank\">3478</a></strong></td>\n<td>Wed</td>\n<tdclass=\"shrink\">2021-12-01</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3478\"target=\"_blank\">AudioWiringHackonaClassroomPodium</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0238.html\"target=\"_blank\">JonKulp</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3479\"target=\"_blank\">3479</a></strong></td>\n<td>Thu</td>\n<tdclass=\"shrink\">2021-12-02</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3479\"target=\"_blank\">LinuxInlawsS01E49:VersionControlSystemsandwhybother</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0384.html\"target=\"_blank\">monochromec</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3480\"target=\"_blank\">3480</a></strong></td>\n<td>Fri</td>\n<tdclass=\"shrink\">2021-12-03</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3480\"target=\"_blank\">DarkenLayerModes</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0198.html\"target=\"_blank\">Ahuka</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3481\"target=\"_blank\">3481</a></strong></td>\n<td>Mon</td>\n<tdclass=\"shrink\">2021-12-06</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3481\"target=\"_blank\">HPRCommunityNewsforNovember2021</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0159.html\"target=\"_blank\">HPRVolunteers</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3482\"target=\"_blank\">3482</a></strong></td>\n<td>Tue</td>\n<tdclass=\"shrink\">2021-12-07</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3482\"target=\"_blank\">IntroductiontoPostApocalypticRoboticsMetaTechnology</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0401.html\"target=\"_blank\">Mechatroniac</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3483\"target=\"_blank\">3483</a></strong></td>\n<td>Wed</td>\n<tdclass=\"shrink\">2021-12-08</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3483\"target=\"_blank\">Pinephone64review</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0115.html\"target=\"_blank\">sigflup</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3484\"target=\"_blank\">3484</a></strong></td>\n<td>Thu</td>\n<tdclass=\"shrink\">2021-12-09</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3484\"target=\"_blank\">MyvimsetupwithGnuPG</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0318.html\"target=\"_blank\">Archer72</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3485\"target=\"_blank\">3485</a></strong></td>\n<td>Fri</td>\n<tdclass=\"shrink\">2021-12-10</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3485\"target=\"_blank\">50yearssincethe1stEditionofUnixwaspublished</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0030.html\"target=\"_blank\">KenFallon</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3486\"target=\"_blank\">3486</a></strong></td>\n<td>Mon</td>\n<tdclass=\"shrink\">2021-12-13</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3486\"target=\"_blank\">U
(3526,'2022-02-07','HPR Community News for January 2022',2626,'HPR Volunteers talk about shows released and comments posted in January 2022','<style>\ntable td.shrink {\n white-space:nowrap\n}\np#ignore, li#ignore {\n background-color: lightgreen;\n color:maroon;\n}\ndiv#highlight {\n border-style: solid;\n border-color: red;\n padding-right: 20px;\n padding-left: 20px;\n}\nhr.thin {\n border: 0;\n height: 0;\n border-top: 1px solid rgba(0, 0, 0, 0.1);\n border-bottom: 1px solid rgba(255, 255, 255, 0.3);\n}\n</style>\n\n<h2>New hosts</h2>\n<p>\nThere were no new hosts this month.\n</p>\n\n<h2>Last Month\'sShows</h2>\n<tableid=\"t01\">\n<tr>\n<th>Id</th>\n<th>Day</th>\n<th>Date</th>\n<th>Title</th>\n<th>Host</th>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3501\"target=\"_blank\">3501</a></strong></td>\n<td>Mon</td>\n<tdclass=\"shrink\">2022-01-03</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3501\"target=\"_blank\">HPRCommunityNewsforDecember2021</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0159.html\"target=\"_blank\">HPRVolunteers</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3502\"target=\"_blank\">3502</a></strong></td>\n<td>Tue</td>\n<tdclass=\"shrink\">2022-01-04</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3502\"target=\"_blank\">NewyearGreetingsandashortreviewofmynewJunoPC</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0338.html\"target=\"_blank\">TonyHughesAKATonyH1212</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3503\"target=\"_blank\">3503</a></strong></td>\n<td>Wed</td>\n<tdclass=\"shrink\">2022-01-05</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3503\"target=\"_blank\">ConfiguringMumble</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0030.html\"target=\"_blank\">KenFallon</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3504\"target=\"_blank\">3504</a></strong></td>\n<td>Thu</td>\n<tdclass=\"shrink\">2022-01-06</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3504\"target=\"_blank\">JamesWebbSpaceTelescope</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0225.html\"target=\"_blank\">DaveMorriss</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3505\"target=\"_blank\">3505</a></strong></td>\n<td>Fri</td>\n<tdclass=\"shrink\">2022-01-07</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3505\"target=\"_blank\">ADXwithHotelBravo9HotelNovemberTango</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0288.html\"target=\"_blank\">beni</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3506\"target=\"_blank\">3506</a></strong></td>\n<td>Mon</td>\n<tdclass=\"shrink\">2022-01-10</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3506\"target=\"_blank\">HPRCONTEST202201</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0036.html\"target=\"_blank\">operat0r</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3507\"target=\"_blank\">3507</a></strong></td>\n<td>Tue</td>\n<tdclass=\"shrink\">2022-01-11</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3507\"target=\"_blank\">USBTurntablefixandsoundjourney</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0318.html\"target=\"_blank\">Archer72</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3508\"target=\"_blank\">3508</a></strong></td>\n<td>Wed</td>\n<tdclass=\"shrink\">2022-01-12</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3508\"target=\"_blank\">DifferencesbetweenC# and Haskell</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0364.html\" target=\"_blank\">Tuula</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hacke
(3227,'2020-12-15','Fresh water Aquarium Basics',1589,'Enigma discusses the high level basics of getting into the aquarium hobby','<p>Enigma discusses the high level basics of getting into the aquarium hobby and what to consider when purchasing your first aquarium.</p>\r\n<h2>Links:</h2>\r\n<ul>\r\n<li><a href=\"https://www.amazon.com/API-FRESHWATER-800-Test-Freshwater-Aquarium/dp/B000255NCI/ref=asc_df_B000255NCI/?tag=hyprod-20&linkCode=df0&hvadid=198072615033&hvpos=&hvnetw=g&hvrand=14659243461056273975&hvpone=&hvptwo=&hvqmt=&hvdev=c&hvdvcmdl=&hvlocint=&hvlocphy=9012091&hvtargid=pla-348697791053&psc=1\"> API Test kit </a></li>\r\n<li><a href=https://www.walmart.com/ip/Aqua-Culture-10-Gallon-Aquarium-Starter-Kit-With-LED-Lighting/35326017?wmlspartner=wlpa&selectedSellerId=0&wl13=941&&adid=22222222253447309554&wl0=&wl1=g&wl2=c&wl3=469838565059&wl4=aud-1025747331336:pla-319527574754&wl5=9012091&wl6=&wl7=&wl8=&wl9=pla&wl10=8175035&wl11=local&wl12=35326017&wl13=941&veh=sem&wl18=showcase&gclid=Cj0KCQiAkuP9BRCkARIsAKGLE8WOkLhoN56nLuuG29VXdC1NFBMNnhKdRM8lJs-vvP0qnrJYUDVuLNYaAja9EALw_wcB\"> 10 Gallon (38 liter) starter kit </a></li>\r\n</ul>',39,0,1,'CC-BY-SA','Aquariums',0,0,1),
(3229,'2020-12-17','Linux Inlaws S01E19: Redis',4418,'Our two chaps interview Itamar Haber of Redis fame','<p>In this episode our two heroes interview Itamar Haber, community liaison for Redis, a popular open-source\r\nin-memory NoSQL database. Technology prevails in this episode; communism, free love and drugs\r\ntake a backseat (but only for the moment! :-). The trio discuss the legacy of redis, bemoan their old age\r\nand reveal why Itamar initially wanted to be a mermaid. Listen to the episode\r\nfor more shocking epiphanies!</p>\r\n<br/>Shownotes:<br/>\r\n<ul>\r\n<li>Kaypro: <a href=\"https://en.wikipedia.org/wiki/Kaypro\" target=\"_blank\">https://en.wikipedia.org/wiki/Kaypro</a></li>\r\n<li>Salvatore Sanfilippo: <a href=\"https://github.com/antirez\" target=\"_blank\">https://github.com/antirez</a></li>\r\n<li>redis: <a href=\"https://github.com/redis/redis\" target=\"_blank\">https://github.com/redis/redis</a></li>\r\n<li>Redis Labs: <a href=\"https://redislabs.com\" target=\"_blank\">https://redislabs.com</a></li>\r\n<li>Redis Streams: <a href=\"https://redis.io/topics/streams-intro\" target=\"_blank\">https://redis.io/topics/streams-intro</a></li>\r\n<li>Redis Modules: <a href=\"https://redis.io/modules\" target=\"_blank\">https://redis.io/modules</a></li>\r\n<li>Windows: <a href=\"https://bugs.launchpad.net/ubuntu/+bug/1\" target=\"_blank\">https://bugs.launchpad.net/ubuntu/+bug/1</a></li>\r\n<li>WSL 2: <a href=\"https://en.wikipedia.org/wiki/Windows_Subsystem_for_Linux#WSL_2\" target=\"_blank\">https://en.wikipedia.org/wiki/Windows_Subsystem_for_Linux#WSL_2</a></li>\r\n<li>On the Bro\'d:<ahref=\"https://www.mikelacher.com/work/on-the-brod\"target=\"_blank\">https://www.mikelacher.com/work/on-the-brod</a></li>\r\n</ul>\r\n\r\n\r\n',384,111,1,'CC-BY-SA','Redis,mermaids,communism,Israel',0,0,1),
(3239,'2020-12-31','New Community Project Proposal',516,'Enigma discusses a project proposal called Hacker exchange','<p>Enigma discusses a project proposal called Hacker exchange, a proposed content sharing site that would aggregate audio/video and text based tutorials.</p>\r\n<p>Come chat about this project on <code>irc.freenode.net #hackerexchange</code></p>',39,0,1,'CC-BY-SA','hpr, community_projects, ddp, binrev',0,0,1),
(3228,'2020-12-16','YAML basics',2027,'Learn about sequence and mapping in YAML','<p>YAML has two data elements that serve as building blocks for complex data structures: sequences and mappings.</p>\r\n\r\n<h2>Sequence</h2>\r\n\r\n<p>This is a sequence:</p>\r\n\r\n<pre><code>\r\n---\r\n- Emperor\r\n- Gentoo\r\n- Little Blue\r\n</code></pre>\r\n\r\n<h2>Mapping</h2>\r\n\r\n<p>\r\nThis is a mapping:\r\n</p>\r\n\r\n<pre><code>\r\n---\r\nPenguin: Emperor\r\n</code></pre>\r\n\r\n<p>\r\nIn this case, <strong>Penguin</strong> is a <em>key</em> and <strong>Emperor</strong> is a <em>value</em>. This is often called a "key and value pair", but in YAML it's just called a mapping.\r\n</p>\r\n\r\n<h2>Combining data blocks</h2>\r\n\r\n<p>\r\nYou can embed these data types into one another. Here is a mapping that has a sequence as its value:\r\n</p>\r\n\r\n<pre><code>\r\n---\r\nPenguin:\r\n - Emperor\r\n - Gentoo\r\n - Little Blue\r\n</code></pre>\r\n\r\n<p>\r\nHere is a sequence of mappings:\r\n</p>\r\n\r\n<pre><code>\r\n---\r\n- Penguin: Emperor\r\n- Penguin: Gentoo\r\n- Penguin: Little Blue\r\n</code></pre>\r\n\r\n<h2>yamllint</h2>\r\n\r\n<p>Use yamllint to detect errors in your YAML. To install:\r\n</p>\r\n\r\n<pre>\r\n<code>\r\n$ pip install yamllint\r\n</code></pre>\r\n\r\n<p>Run it:\r\n</p>\r\n\r\n<pre>\r\n<code>\r\n$ yamllint good.yaml\r\n$ yamllint bad.yaml\r\nbad.yaml\r\n 1:1 warning missing document start \"---\" (document-start)\r\n 4:14 error no new line character at the end of file (new-line-at-end-of-file)\r\n</code></pre>\r\n\r\n<h2>yaml2json</h2>\r\n\r\n<p>\r\nSometimes it's useful to convert your YAML to JSON so you can view the data structure in a different way. There are probably dozens of YAML-to-JSON converters out there, but here's the one I use: <a href=\"https://gitlab.com/slackermedia/yaml2json.git\" target=\"_blank\">https://gitlab.com/slackermedia/yaml2json.git</a>\r\n</p>\r\n\r\n<p>\r\nRun it:\r\n</p>\r\n\r\n<pre><code>\r\n$ cat example.yaml\r\n---\r\npenguins:\r\n - Gentoo\r\n - Little Blue\r\n - Rockhopper\r\ndragons:\r\n - black\r\n - white\r\n - red\r\n$ ~/bin/yaml2json.py example.yaml\r\n{\"penguins\": [\"Gentoo\", \"Little Blue\", \"Rockhopper\"], \"dragons\": [\"black\", \"white\", \"red\"]}\r\n</code></pre>\r\n\r\n<h2>YAML police</h2>\r\n\r\n<p>There are no YAML police. As long as yamllint finds no errors, your YAML is valid and can be parsed by any one of the dozens of YAML libraries out there. However, these YAML libraries aren't magical, so you must understand the internal logic of your own YAML data. Keep that in mind when devising a scheme for the data you\'rerecording.\r\n</p>\r\n\r\n<p>YAMLisagreatmethodforcreatingconfigurationfiles,orstoringsimpledatastructures,andit\'s essential for Ansible playbooks.</p>\r\n\r\n<p>\r\nEnjoy!\r\n</p>\r\n\r\n',78,25,0,'CC-BY-SA','yaml,data,parse,lint,json',0,0,1),
(3231,'2020-12-21','USB Key',120,'Turn a Thumb drive into a Key to lock/unlock your linux machine.','<p>Script and instruction at<br />\r\n<a href=\"https://james.toebesacademy.com/USBKey.html\" class=\"uri\">https://james.toebesacademy.com/USBKey.html</a></p>\r\n<ul>\r\n<li>Combo of\r\n<ul>\r\n<li>Perl for Installation,</li>\r\n<li><code>ssh-keygen</code> for key exchange.</li>\r\n<li><code>udev</code> for actions</li>\r\n<li><code>bash</code> for locking/unlocking/key checking.</li>\r\n</ul></li>\r\n</ul>\r\n<!-- . -->\r\n<ul>\r\n<li><code>udev</code> add/remove/change events\r\n<ul>\r\n<li>add event does not allow access to drive</li>\r\n<li>change event was not allowing unlock.</li>\r\n</ul></li>\r\n</ul>\r\n<p>Compromise was <em>unlock</em>, then <em>lock</em> if key check fails.</p>\r\n',273,74,0,'CC-BY-SA','security, usb',0,0,1),
(3232,'2020-12-22','Nextcloud',1279,'Nextcloud is easy. You should try it.','<p>I've been running NextCloud since it was OwnCloud. In this episode, I encourage other people to install and run NextCloud. It\'sagreatwaytogetoutoftheGoogleecosystem,anditdoesn\'t require much to set up or maintain.</p>\r\n\r\n<p>\r\nHere\'sthescriptIusetoupdateoneoftheNextcloudinstancesImaintain,runningonadirt-cheapVPSslicefromBlueHostersomething:</p>\r\n\r\n<pre><code>\r\n#/test/before/using/bash\r\n# GNU All-Permissive License\r\n# Copying and distribution of this file, with or without modification,\r\n# are permitted in any medium without royalty provided the copyright\r\n# notice and this notice are preserved. This file is offered as-is,\r\n# without any warranty.\r\n\r\nif [ \"${1}\" == \"--help\" ]; then\r\n echo \"usage:\"\r\n echo \"$0 https://path-to-nextcloud.bz2\"\r\n echo \"WARNING: You MUST put your Nextcloud instance into maintenance mode first\"\r\n exit\r\nfi\r\n\r\nset -e\r\n\r\n# get rid of the old Nextcloud tarball from the last time you upgraded\r\ntrash nextcloud*bz2 || true\r\n\r\n# get rid of old backups as long as they are empty of actual data\r\n[[ -e cloud/data ]] && trash cloud-deleteme\r\n\r\n#download the source tarball\r\nwget \"${1}\"\r\n\r\n#rename old cloud\r\nmv nextcloud cloud-deleteme\r\n\r\n# untar source\r\n# grab your data from old cloud\r\ntar xvf nextcloud*bz2 && mv cloud-deleteme/data/ nextcloud/\r\n\r\n# copy your config\r\ncp cloud-deleteme/config/config.php nextcloud/config/\r\n\r\n# enter the cloud\r\npushd nextcloud\r\n\r\n# perform upgrade\r\nphp ./occ upgrade\r\n\r\n# leave the cloud\r\npopd\r\n</code></pre>\r\n\r\n<p>\r\nDon\'t use my upgrade script blindly, and please do test first. It works for my setup, but has been tested ONLY on my setup. Also, it doesn\'t put your Nextcloud instance into maintenance mode (probably because I wrote it before I knew Awk...), so you must do that manually.\r\n</p>\r\n\r\n<p>\r\nHappy hacking!\r\n</p>\r\n',78,74,0,'CC-BY-SA','cloud,nextcloud,owncloud,server',0,0,1),
(3233,'2020-12-23','HPR RPG Club reviews Shadowrun 5e',3245,'Cyberpunk + Magic and a fistful of D6','<p>Beni, McNalu, Klaatu, and Philip review the Fifth Edition of the Shadowrun roleplaying game.\r\n</p>\r\n\r\n<p>For more information about Shadowrun, go to <a href=\"https://www.shadowruntabletop.com/\" target=\"_blank\">ShadowrunTabletop.com</a>.\r\n</p>\r\n\r\n<p>\r\nQuickstart rules are <a href=\"https://www.drivethrurpg.com/product/116662/Shadowrun-Fifth-Edition-QuickStart-Rules?affiliate_id=845571\" target=\"_blank\">available for $0 from drivethrurpg.com</a> (this is Klaatu's affiliate link, granting him some n% of the $0 sale)\r\n</p>\r\n\r\n<p>Finally, you can find lots of great Shadowrun fiction on <a href=\"https://www.drivethrurpg.com/browse.php?affiliate_id=845571?filters=0_0_1700_44501_0\" target=\"_blank\">drivethrurpg.com</a> in EPUB format.\r\n</p>\r\n\r\n',78,95,0,'CC-BY-SA','rpg,cyberpunk,HPR RPG Club',0,0,1),
(3243,'2021-01-06','Pictor - free and open radio astronomy',2854,'Discussion with the people that created the Pictor radio telescope.','<p>In this show I talk with Apostolos and Vasilis who I met at FOSDEM 2020 about the <a href=\"https://pictortelescope.com/\">Pictor radio telescope</a> which they created and now maintain. Using free and open source software and hardware they have made a radio telescope that anyone can operate via a simple web page and which can return results to you within a minute or two. In fact you\'llhearmegetexcitedduringtheshowwhenIrealisethisandsubmitanobservationrequest,theresultsofwhichcamebackimmediatelyandwhichyoucanseebelow.</p>\r\n<p>TodatePictorhasperformed3,500observationsfromover700usersfromallaroundtheworld.Additionally,thePICTORwebplatformisnowequippedwitha3.2mantenna,whichisabout4timesmoresensitivethantheprevious1.5mantenna,souserscanobservetheradioskyforfreewithanevenmoresensitiveinstrument.</p>\r\n<p>Ontopofthat,after204hoursofintegrationtimeandover3TBofdata,theyhaveproducedaNorthernSkyHydrogen(HI)SurveyproducedwiththePICTORRadioTelescope.Thiseffortactuallymarkstheveryfirstradio-imageobtainedinGreece,shownhere:</p>\r\n<p><em>Pictorallskyimagesofhydrogeninourgalaxy</em><br/>\r\n<ahref=\"https://hackerpublicradio.org/eps/hpr3243/img_001.png\"><imgsrc=\"https://hackerpublicradio.org/eps/hpr3243/img_001_thumbnail.png\"alt=\"Pictor all sky images of hydrogen in our galaxy\"/></a></p>\r\n<p>HerearetheresultsoftheobservationIperformedduringtheshow.ThebodyoftheemailpictorsentbacktomeconfirmstheobservationIrequested:</p>\r\n<pre><code>YourobservationhasbeencarriedoutbyPICTORsuccessfully!\r\nObservationname:mcnalufirsttry\r\nObservationdatetime:2020-12-0812:40:09(UTC+2)\r\nCenterfrequency:1420000000.0Hz\r\nBandwidth:2400000Hz\r\nSamplerate:2400000samples/sec\r\nNumberofchannels:2048\r\nNumberofbins:100\r\nObservationduration:10sec\r\nObservationID:82937104\r\nYourobservation's averaged spectrum, dynamic spectrum (waterfall) and Power vs Time plot are attached in this email as an image.\r\n</code></pre>\r\n<p>And this is the plot attached to that email:</p>\r\n<p><em>Graphs showing raw and corrected radio spectra for mcnalu\'s observation request</em><br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3243/img_002.png\"><img src=\"https://hackerpublicradio.org/eps/hpr3243/img_002_thumbnail.png\" alt=\"Graphs showing raw and corrected radio spectra for mcnalu's observation request\" /></a></p>\r\n<p>Please do have a go at using Pictor and let us know how you got on by recording an HPR show.</p>\r\n',268,0,0,'CC-BY-SA','science,astronomy,hardware,radio,data',0,0,1),
(3546,'2022-03-07','HPR Community News for February 2022',3665,'Dave, Roan and Ken talk about shows released and comments posted in February 2022','<style>\ntable td.shrink {\n white-space:nowrap\n}\n</style>\n\n<h2>New hosts</h2>\n<p>\nWelcome to our new host: <br />\n\n <a href=\"https://hackerpublicradio.org/correspondents/0402.html\" target=\"_blank\">takov751</a>.\n</p>\n\n<h2>Last Month\'sShows</h2>\n<tableid=\"t01\">\n<tr>\n<th>Id</th>\n<th>Day</th>\n<th>Date</th>\n<th>Title</th>\n<th>Host</th>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3522\"target=\"_blank\">3522</a></strong></td>\n<td>Tue</td>\n<tdclass=\"shrink\">2022-02-01</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3522\"target=\"_blank\">SetupyourRobotBuildingLabandbuilda$0RobotPlatform</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0401.html\"target=\"_blank\">Mechatroniac</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3523\"target=\"_blank\">3523</a></strong></td>\n<td>Wed</td>\n<tdclass=\"shrink\">2022-02-02</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3523\"target=\"_blank\">TheComposekey</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0399.html\"target=\"_blank\">dnt</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3524\"target=\"_blank\">3524</a></strong></td>\n<td>Thu</td>\n<tdclass=\"shrink\">2022-02-03</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3524\"target=\"_blank\">WheelsAddendum-HowtoReliablyAttachWheelstoPARRobotPlatform</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0401.html\"target=\"_blank\">Mechatroniac</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3525\"target=\"_blank\">3525</a></strong></td>\n<td>Fri</td>\n<tdclass=\"shrink\">2022-02-04</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3525\"target=\"_blank\">BattlingwithEnglish-part4</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0225.html\"target=\"_blank\">DaveMorriss</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3526\"target=\"_blank\">3526</a></strong></td>\n<td>Mon</td>\n<tdclass=\"shrink\">2022-02-07</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3526\"target=\"_blank\">HPRCommunityNewsforJanuary2022</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0159.html\"target=\"_blank\">HPRVolunteers</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3527\"target=\"_blank\">3527</a></strong></td>\n<td>Tue</td>\n<tdclass=\"shrink\">2022-02-08</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3527\"target=\"_blank\">MygEeekyExperiment-Part3</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0152.html\"target=\"_blank\">ClaudioMiranda</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3528\"target=\"_blank\">3528</a></strong></td>\n<td>Wed</td>\n<tdclass=\"shrink\">2022-02-09</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3528\"target=\"_blank\">Slackwareonanetbook</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0318.html\"target=\"_blank\">Archer72</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3529\"target=\"_blank\">3529</a></strong></td>\n<td>Thu</td>\n<tdclass=\"shrink\">2022-02-10</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3529\"target=\"_blank\">LinuxInlawsS01E48:YearTwooftheFiveYearPlan</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0384.html\"target=\"_blank\">monochromec</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3530\"target=\"_blank\">3530</a></strong></td>\n<td>Fri</td>\n<tdclass=\"shrink\">2022-02-11</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3530\
(3234,'2020-12-24','Apple products I have owned',1397,'I talk about Apple products that I have owned over the years','<ul>\r\n<li>30\" Apple Cinema Display 2560x1600</li>\r\n<li>160 GB iPod Classic</li>\r\n<li>IPad 3</li>\r\n<li>Mac Pro 1.1</li>\r\n<li>iPhone 4s</li>\r\n</ul>',297,0,0,'CC-BY-SA','apple, technology, Mac, OS X,iOS',0,0,1),
(3242,'2021-01-05','The eternal battle over how to run your chromebook is about to begin',8865,'Squirrel VS ALIEN Chromebook discussions','<p>As usual, I have botched up the show notes where they make absolutely no sense and I fully expect the ENTIRE HUMAN COMMUNITY from HPR to attack me endlessly over my incompetence. They just keep forgetting that I\'masquirrelwholivesinamagicalforrestandnotahumanbeingandthereforedoesterribleshownotes,</p>\r\n<p>ThereweresomanyissuesbroughtupaboutchromebooksandchromiumOSthatIcouldnotprepareadetailedlistofthemall.</p>\r\n<p>ThisENTIREconversationwasderivedfromtheworkfoundonGNUWORLDORDERepisode383forwhichyouwillfindhisshownotesAS:::<ahref=\"https://gnuworldorder.info/\"class=\"uri\">https://gnuworldorder.info/</a>\"Linux, Flatpaks, Android apps, and ChromiumOS on a Lenovo Chromebook.\"</p>\r\n<p>Now,ifyoudon\'t like my show notes and you do like this aliens show notes, then may I suggest your anti-squirrel and you need to be sent to a de-programming camp for rehabilitation.</p>\r\n<p>Remember, squirrels represent planet earth.</p>\r\n',377,0,1,'CC-BY-SA','chromebooks,chromiumOS,Opensource,Freesoftware,cloud computing',0,0,1),
(3236,'2020-12-28','The State of Linux Audio Apps in 2020',3101,'Patrick Davila and Claudio Miranda discuss the current state of Linux Audio Application in 2020','<p>Pat and Claudio discuss the current state of Linux audio applications in 2020. The primary focus is applications to create music. We discuss Linux sound servers (Pulse, ALSA and Jack). Software synthesizers available in Linux. Midi, sequencers and drum machines. Digital Audio Workstation applications. Impulse Responses for guitar and bass speaker emulation. Commercial vendors that support the Linux platform. Music equipment vendors that use Linux as the basis of their products.</p>\r\n\r\n<p>\r\n<br>\r\nThis page has been around for years. Some links might be stale or dead.<br>\r\n<a href=\"https://linux-sound.org/\" target=\"_blank\">https://linux-sound.org/</a><br>\r\n<br>\r\nSome of the sound fonts I\'veused:<br>\r\n<ahref=\"https://midkar.com/soundfonts/\"target=\"_blank\">https://midkar.com/soundfonts/</a><br>\r\n<ahref=\"https://www.pvv.org/~hammer\"target=\"_blank\">https://www.pvv.org/~hammer</a><br>\r\n<ahref=\"https://www.michaelpichermusic.com/sample-libraries\"target=\"_blank\">https://www.michaelpichermusic.com/sample-libraries</a><br>\r\n<br>\r\nMIDI/Musicsoftwarediscussed:<br>\r\nJACK(JACKAudioConnectionKit)<br>\r\n<ahref=\"https://jackaudio.org/\"target=\"_blank\">https://jackaudio.org/</a><br>\r\nQtractor<br>\r\n<ahref=\"https://qtractor.sourceforge.io/\"target=\"_blank\">https://qtractor.sourceforge.io/</a><br>\r\nArdour<br>\r\n<ahref=\"https://ardour.org/\"target=\"_blank\">https://ardour.org/</a><br>\r\nReaper<br>\r\n<ahref=\"https://www.reaper.fm/index.php\"target=\"_blank\">https://www.reaper.fm/index.php</a><br>\r\nCarla<br>\r\n<ahref=\"https://kx.studio/Applications:Carla\"target=\"_blank\">https://kx.studio/Applications:Carla</a><br>\r\nDualityBass<br>\r\n<ahref=\"https://audio-assault.com/duality.php\"target=\"_blank\">https://audio-assault.com/duality.php</a><br>\r\n<br>\r\nMySoundcloudpage.<br>\r\n<ahref=\"https://www.soundcloud.com/claudiom72\"target=\"_blank\">https://www.soundcloud.com/claudiom72</a><br>\r\n<br>\r\nOpensourcesynthesizers:<br>\r\n<ahref=\"https://www.moddevices.com/\"target=\"_blank\">https://www.moddevices.com/</a><br>\r\n<ahref=\"https://www.linuxsynths.com/\"target=\"_blank\">https://www.linuxsynths.com/</a><br>\r\n<ahref=\"https://en.wikipedia.org/wiki/Korg_OASYS\"target=\"_blank\">https://en.wikipedia.org/wiki/Korg_OASYS</a>(FinallyfoundthathardwareLinux-basedsynth.)<br>\r\n<ahref=\"https://synthesia.sourceforge.net/\"target=\"_blank\">https://synthesia.sourceforge.net/</a><br>\r\n<ahref=\"https://zynthian.org/\"target=\"_blank\">https://zynthian.org/</a>(Don\'t remember if this was mentioned, but here it is. :-p)<br>\r\n<br>\r\nPipewire<br>\r\n<a href=\"https://pipewire.org/\" target=\"_blank\">https://pipewire.org/</a><br>\r\n<br>\r\nunfa<br>\r\n<a href=\"https://www.youtube.com/channel/UCAYKj_peyESIMDp5LtHlH2A\" target=\"_blank\">https://www.youtube.com/channel/UCAYKj_peyESIMDp5LtHlH2A</a>\r\n</p>',11,0,0,'CC-BY-SA','Audio, music, recording, DAW, Ardour, Jack, Pulse, ALSA, Hydrogen, Odin2, Qtractor, Carla, VST',0,0,1),
(3238,'2020-12-30','Linux Inlaws S01E20: The Xmas and New Year Special',5978,'An episode on the past, present and future not just on FOSS - all will be explained','<ul>\r\n<li>LinuxOne: <a href=\"https://developer.ibm.com/components/ibm-linuxone/gettingstarted\" target=\"_blank\">https://developer.ibm.com/components/ibm-linuxone/gettingstarted</a></li>\r\n<li>IBM quantum computing: <a href=\"https://www.ibm.com/quantum-computing\" target=\"_blank\">https://www.ibm.com/quantum-computing</a></li>\r\n<li>redis on LinuxOne(in German): <a href=\"https://chemnitzer.linux-tage.de/2019/en/programm/beitrag/206\" target=\"_blank\">https://chemnitzer.linux-tage.de/2019/en/programm/beitrag/206</a></li>\r\n<li>Ask IBM: <a href=\"https://www.ibm.com/blogs/cloud-computing/2015/01/13/hello-watson-ask-anything\" target=\"_blank\">https://www.ibm.com/blogs/cloud-computing/2015/01/13/hello-watson-ask-anything</a></li>\r\n<li>Jeff Bezo\'srealname:<ahref=\"https://en.wikipedia.org/wiki/Jeff_Bezos\"target=\"_blank\">https://en.wikipedia.org/wiki/Jeff_Bezos</a></li>\r\n<li>JeffBezo\'s divorce: <a href=\"https://www.bloomberg.com/news/articles/2019-07-05/bezos-split-finalizes-as-38-billion-amazon-stake-transfer-looms\" target=\"_blank\">https://www.bloomberg.com/news/articles/2019-07-05/bezos-split-finalizes-as-38-billion-amazon-stake-transfer-looms</a></li>\r\n<li>French protests: <a href=\"https://www.politico.eu/article/spotlight-falls-on-amazon-as-french-businesses-are-restricted-by-lockdown-rules/\" target=\"_blank\">https://www.politico.eu/article/spotlight-falls-on-amazon-as-french-businesses-are-restricted-by-lockdown-rules/</a></li>\r\n<li>2001: A Space Odyssee: <a href=\"https://www.imdb.com/title/tt0062622\" target=\"_blank\">https://www.imdb.com/title/tt0062622</a></li>\r\n<li>OpenAI: <a href=\"https://openai.com\" target=\"_blank\">https://openai.com</a></li>\r\n<li>GPT3: <a href=\"https://en.wikipedia.org/wiki/GPT-3\" target=\"_blank\">https://en.wikipedia.org/wiki/GPT-3</a></li>\r\n<li>ARM Jazelle: <a href=\"https://en.wikipedia.org/wiki/Jazelle\" target=\"_blank\">https://en.wikipedia.org/wiki/Jazelle</a></li>\r\n<li>ARM ThumbEE: <a href=\"https://en.wikipedia.org/wiki/ARM_architecture#Thumb_Execution_Environment_(ThumbEE)\" target=\"_blank\">https://en.wikipedia.org/wiki/ARM_architecture#Thumb_Execution_Environment_(ThumbEE)</a></li>\r\n<li>TIOBE programming language index: <a href=\"https://www.tiobe.com/tiobe-index\" target=\"_blank\">https://www.tiobe.com/tiobe-index</a></li>\r\n<li>Commons Clause and Redis Source Available License: <a href=\"https://redislabs.com/blog/redis-labs-modules-license-changes\" target=\"_blank\">https://redislabs.com/blog/redis-labs-modules-license-changes</a></li>\r\n</ul>\r\n',384,111,1,'CC-BY-SA','past, present, future, artificial intelligence, b-sides, ibm, microsoft, you fill in the rest',0,0,1),
(3237,'2020-12-29','Cloning a Hard Drive with Clonezilla',1057,'I had some hard drive failures recently and am getting back to the habit of cloning for backups.','<p>I sneak back into the HPR community with an episode about cloning the hard drive on my laptop for a backup after some recent catastrophic drive failures.</p>\r\n\r\n<h2>Links</h2>\r\n\r\n<ul>\r\n <li><a href=\"https://clonezilla.org/\">Clonezilla</a>: The Free and Open Source Software for Disk Imaging and Cloning</li>\r\n <li><a href=\"https://smile.amazon.com/s?k=hard+drive+adapter+cable+to+usb&crid=3MFREZT2Q9UY9&sprefix=hard+drive+ada%2Caps%2C198&ref=nb_sb_ss_ts-a-p_2_14\">Hard drive adapters at Amazon</a></li>\r\n</ul>\r\n\r\n<h2>Credits</h2>\r\n\r\n<ul>\r\n <li>Music bumpers are from Kimiko Ishizaka\'s<em>LibreArtofFugue</em>:<ahref=\"https://www.opengoldbergvariations.org/\">https://music.kimiko-piano.com/album/j-s-bach-the-art-of-the-fugue-kunst-der-fuge-bwv-1080</a>,usedbypermissionoftheir<ahref=\"https://creativecommons.org/publicdomain/zero/1.0/\">CC01.0Universal(CC01.0)PublicDomainDedicationlicense</a>.</li>\r\n</ul>\r\n',238,0,0,'CC-BY-SA','clonezilla,backups,harddrives,cloning',0,0,1),
(3244,'2021-01-07','Interview with Anco Scholte ter Horst CEO of Freedom Internet',4223,'Could there be an ISP that wants free and open internet, for privacy, security and quality ?','<p>\r\nIn this interview with Anco Scholte ter Horst, CEO Freedom Internet, we discuss the history of Internet in the Netherlands. How inspired by the work as XS4All, a new ISP was founded with privacy, security and quality at its core.\r\n</p>\r\n<p>\r\nFrom: <a href=\"https://en.wikipedia.org/wiki/XS4ALL\">https://en.wikipedia.org/wiki/XS4ALL</a>\r\n</p>\r\n<p>\r\nXS4ALL was sold to KPN in December 1998, but remained an independent subsidiary. In January 2019, KPN announced that it would eventually phase out the XS4ALL brand and continue operations under the KPN brand. A petition and a special action commission was started to try to revert this decision, the petition has been signed over 50,000 times, signatories include ex-board members and founders of XS4ALL. In November 2019 the committee launched a new company named Freedom Internet, meant to serve as an ideological successor to XS4ALL, and supported by a crowdfunding action that raised 2.5 million euro. Freedom Internet initially offers e-mail hosting, and is meant to roll out its first DSL connections in early 2020.\r\n</p>\r\n<ul>\r\n<li><a href=\"https://www.linkedin.com/in/anco-scholte-ter-horst-5309171/\">https://www.linkedin.com/in/anco-scholte-ter-horst-5309171/</a></li>\r\n<li><a href=\"https://opennebula.io/\">https://opennebula.io/</a></li>\r\n<li><a href=\"https://internet.nl/\">https://internet.nl/</a></li>\r\n<li><a href=\"https://nl.wikipedia.org/wiki/Freedom_Internet\">https://nl.wikipedia.org/wiki/Freedom_Internet</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/XS4ALL\">https://en.wikipedia.org/wiki/XS4ALL</a></li>\r\n<li><a href=\"https://www.bit.nl/\">https://www.bit.nl/</a></li>\r\n</ul>\r\n',30,78,0,'CC-BY-SA','Freedom.nl,xs4all,ISP,crowdfunding',0,0,1),
(3275,'2021-02-19','D1 Mini Close Lid to Scan',430,'Use a Wemos to monitor if the lid is open or closed on a network scanner.','<h1 id=\"wemos-close-to-scan\">wemos-close-to-scan</h1>\r\n<p>Use a Wemos to monitor if the lid is open or closed on a network scanner.</p>\r\n<ul>\r\n<li><a href=\"https://github.com/kenfallon/wemos-close-to-scan\">https://github.com/kenfallon/wemos-close-to-scan</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=3275\">https://hackerpublicradio.org/eps.php?id=3275</a></li>\r\n</ul>\r\n<h2 id=\"history\">History</h2>\r\n<p>In episode <a href=\"https://hackerpublicradio.org/eps.php?id=2430\">hpr2430 :: Scanning books</a>, I had a bash file trigger a network scan. This required two steps, one to close the lid and the next to press a key for <a href=\"scantoimage.bash\">scantoimage.bash</a> to trigger the next page of the scan.</p>\r\n<p>In the intervening time I looked at several solutions to improve this situation.</p>\r\n<p>The most obvious step was to put a magnetic switch on the scanner lid so that a device could detect the lid been closed.</p>\r\n<p>I tried a Raspberry PI but my scanner drivers are only available for Intel and not Arm. Then then accessing the pi using Remote GPIO, but it got very complex to setup and run.</p>\r\n<p>Inspired by <a href=\"https://hackerpublicradio.org/eps.php?id=3077\">hpr3077 :: Video conference Push to Talk</a> Hosted by DanNixon on 2020-05-19, I tried using an arduino talking over serial to a Intel Compute Stick. But that was very flakey.</p>\r\n<h2 id=\"hardware\">Hardware</h2>\r\n<p>Finally I settled on using a <a href=\"https://www.wemos.cc/en/latest/d1/d1_mini.html\">Clone of LOLIN D1 mini</a>, and some Reed Contacts.</p>\r\n<ul>\r\n<li><a href=\"https://www.amazon.co.uk/gp/product/B071S8MWTY\">Makerfire D1 Mini NodeMcu 4M Bytes Lua WIFI Development Board Base on ESP8266 ESP-12F N Compatible NodeMcu Arduino</a></li>\r\n<li><a href=\"https://www.digikey.com/en/products/detail/zf-electronics/MP201801/361987\">https://www.digikey.com/en/products/detail/zf-electronics/MP201801/361987</a></li>\r\n<li><a href=\"https://switches-sensors.zf.com/us/product/magnetic-position-sensor-mp2018/\">https://switches-sensors.zf.com/us/product/magnetic-position-sensor-mp2018/</a></li>\r\n<li><a href=\"https://www.conrad.nl/p/zf-mp201801-reedcontact-1x-no-175-vdc-175-vac-500-ma-10-w-276124\">ZF MP201801 Reedcontact 1x NO 175 V/DC, 175 V/AC 500 mA 10 W</a></li>\r\n<li><a href=\"https://www.conrad.nl/p/zf-as201801-bedienmagneet-voor-reedcontact-276116\">ZF AS201801 Bedienmagneet voor reedcontact</a><br /></li>\r\n</ul>\r\n<h2 id=\"wiring\">Wiring</h2>\r\n<p>Wire one end of the reed contact to 3.3v, and the other end to ground via a 10K resistor.</p>\r\n<p>Have a sensor wire go from the 10K resistor to pin D5 on the D1 Mini.</p>\r\n<p><img src=\"eps/hpr3275/circuitdiagram.png\" title=\"Circuit Diagram\" alt=\"circuitdiagram\" /></p>\r\n<p><img src=\"eps/hpr3275/breadboard.png\" title=\"Breadboard\" alt=\"breadboard\" /></p>\r\n<p><img src=\"eps/hpr3275/photo.png\" title=\"Photo\" alt=\"photo\" /></p>\r\n<h2 id=\"code\">Code</h2>\r\n<h3 id=\"d1-mini\">D1 Mini</h3>\r\n<p>See <a href=\"eps/hpr3275/wemos-close-to-scan.ino\">wemos-close-to-scan.ino</a></p>\r\n<h3 id=\"laptop\">Laptop</h3>\r\n<p>See <a href=\"eps/hpr3275/wemos-scantoimage.bash\">wemos-scantoimage.bash</a></p>\r\n<h1 id=\"operation\">Operation</h1>\r\n<ol>\r\n<li>Plug in D1 Mini and monitor the serial port to get its IP Address.</li>\r\n<li>Change the <code>server=\"YOUR-WEMOS-IP-ADDRESS\"</code> in <a href=\"eps/hpr3275/wemos-scantoimage.bash\">wemos-scantoimage.bash</a> to the ip address.</li>\r\n<li>Change the <code>image_path=\"/PATH/TO/YOUR/SCANS/\"</code> in <a href=\"eps/hpr3275/wemos-scantoimage.bash\">wemos-scantoimage.bash</a> to where your want the files saved.</li>\r\n<li>Close scanner and scan.</li>\r\n</ol>\r\n',30,57,0,'CC-BY-SA','Wemos, D1 Mini, network scan',0,0,1),
(3289,'2021-03-11','NextCloud the hard way',1933,'A private NextCloud instance on a Pi 4x8, with lets encrypt and wireguard vpn access','<h1 id=\"nextcloud\">NextCloud</h1>\r\n<p>I want to install NextCloud for my family, but <strong>only</strong> for my family. This means making things hard for myself by installing it behind my firewall with a private nat ipaddress. That presented problems with getting a valid <a href=\"https://letsencrypt.org/\">Let\'sencrypt</a>cert.</p>\r\n<p>Itallnowworks,andthankstotimttmyIwasabletogettheWireGuardVPNinstalledandworking.</p>\r\n<h2id=\"pi-4\">Pi4</h2>\r\n<p>GetaPi,andaSSD,enableit.Youshouldreview<ahref=\"https://jamesachambers.com/raspberry-pi-4-usb-boot-config-guide-for-ssd-flash-drives/\">RaspberryPi4USBBootConfigGuideforSSD/FlashDrives</a>,forissueswithSSDdrivesandtheRaspberryPi.</p>\r\n<p>YoucaninstallRaspbianasnormal.Ialreadycoveredthisin<ahref=\"https://hackerpublicradio.org/eps.php?id=2356\">hpr2356::SafelyenablingsshinthedefaultRaspbianImage</a>,and<ahref=\"https://github.com/kenfallon/fix-ssh-on-pi\">SafelyenablingsshinthedefaultRaspberryPiOS(previouslycalledRaspbian)Image</a>.</p>\r\n<p>Andthenfollowtheinstructionsin<ahref=\"https://www.tomshardware.com/how-to/boot-raspberry-pi-4-usb\">HowtoBootRaspberryPi4FromaUSBSSDorFlashDrive</a>.</p>\r\n<h2id=\"next-cloud\">NextCloud</h2>\r\n<p>InstallApache,MariaDB,andPHP</p>\r\n<ul>\r\n<li><ahref=\"https://www.techrepublic.com/article/how-to-install-nextcloud-20-on-ubuntu-server-20-04/\">HowtoinstallNextcloud20onUbuntuServer20.04</a></li>\r\n<li><ahref=\"https://docs.nextcloud.com/server/20/admin_manual/installation/source_installation.html\">NextCloud-Installationandserverconfiguration-InstallationonLinux</a></li>\r\n<li><ahref=\"https://nextcloud.com/install/#instructions-server\">DownloadNextCloud</a></li>\r\n</ul>\r\n<pre><code># diff /etc/apache2/apache2.conf /etc/apache2/apache2.conf.orig\r\n171,172c171,172\r\n< Options FollowSymLinks\r\n< AllowOverride All\r\n---\r\n> Options Indexes FollowSymLinks\r\n> AllowOverride None</code></pre>\r\n<h3 id=\"install-phpmyadmin\">Install PHPMyAdmin</h3>\r\n<ul>\r\n<li><a href=\"https://pimylifeup.com/raspberry-pi-phpmyadmin/\">How to Install PHPMyAdmin on the Raspberry Pi</a></li>\r\n</ul>\r\n<h3 id=\"required-changes-to-nextcloud-config.\">Required Changes to nextcloud config.</h3>\r\n<pre><code>root@nextcloud:~# diff /root/nextcloud-config.php.orig /var/www/html/nextcloud/config/config.php \r\n> 1 => 'nextcloud',\r\n> 2 => '192.168.123.123',\r\n> 3 => 'nextcloud.example.com',\r\n> 'memcache.local' => '\\OC\\Memcache\\APCu',</code></pre>\r\n<pre><code># diff /etc/apache2/sites-available/000-default.conf.orig /etc/apache2/sites-enabled/000-default.conf\r\n28a29,32\r\n> RewriteEngine On\r\n> RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R=301,L]\r\n> Redirect 301 /.well-known/carddav /var/www/html/nextcloud/remote.php/dav\r\n> Redirect 301 /.well-known/caldav /var/www/html/nextcloud/remote.php/dav</code></pre>\r\n<h3 id=\"required-changes-to-php.ini-config.\">Required Changes to <code>php.ini</code> config.</h3>\r\n<pre><code>root@nextcloud:~# diff /etc/php/7.3/apache2/php.ini.orig /etc/php/7.3/apache2/php.ini\r\n401c401\r\n< memory_limit = 128M\r\n---\r\n> memory_limit = 2000M\r\n689c689\r\n< post_max_size = 8M\r\n---\r\n> post_max_size = 2048M\r\n841c841\r\n< upload_max_filesize = 2M\r\n---\r\n> upload_max_filesize = 2048M</code></pre>\r\n<h3 id=\"upgrade\">Upgrade</h3>\r\n<p>You can upgrade using the procedure described by <a href=\"https://hackerpublicradio.org/correspondents/0078.html\">klaatu</a> in <a href=\"https://hackerpublicradio.org/eps.php?id=3232\">hpr3232 :: Nextcloud</a>, or as admin via the UI <code>https://nextcloud.example.com/nextcloud/index.php/settings/user</code>, Ad
(3246,'2021-01-11','LXCast: freeing the Fairphone 3 (and many other phones) ',1744,'We look at how to get a free smartphone operating system on the Fairphone 3 (and many other phones),','<ul>\r\n<li><p>My review on the FP3 when it came out<br />\r\n<a href=\"https://lxcast.net/lxcast-2-fairphone-3-fair-but-not-free-yet/\" class=\"uri\">https://lxcast.net/lxcast-2-fairphone-3-fair-but-not-free-yet/</a></p></li>\r\n<li><p>Two solutions for a free OS:</p>\r\n<ol type=\"1\">\r\n<li><p>lineage OS - free android with the Gapps removed<br />\r\n<a href=\"https://download.lineageos.org/FP3\" class=\"uri\">https://download.lineageos.org/FP3</a></p></li>\r\n<li><p>the /e/ project !! A \"de-googled\" operating system - actually a fork of lineage OS - this is what I\'mgoingtotalkabouthere.<br/>\r\n<ahref=\"https://e.foundation/about-e/\"class=\"uri\">https://e.foundation/about-e/</a></p></li>\r\n</ol></li>\r\n<li><p>TheresearchpaperonGoogleDataCollectionbyProfessorDouglasC.Schmidt,VanderbiltUniversity(2018)-learnhowandhowoftennormalAndroidphonessendyourdatatoGoogleservers.<br/>\r\n<ahref=\"https://digitalcontentnext.org/blog/2018/08/21/google-data-collection-research/\"class=\"uri\">https://digitalcontentnext.org/blog/2018/08/21/google-data-collection-research/</a></p></li>\r\n<li><p>Anotherbackgroundarticleontracking(inGerman)basedonresearchfromaNorwegianjournalist:<br/>\r\n<ahref=\"https://www.golem.de/news/datenschutz-wie-ich-die-ueberwacher-in-meinem-smartphone-aufspuerte-2012-152829-2.html\"class=\"uri\">https://www.golem.de/news/datenschutz-wie-ich-die-ueberwacher-in-meinem-smartphone-aufspuerte-2012-152829-2.html</a></p></li>\r\n<li><p>MicroGservices,areplacementforGoogle\'s libraries on /e/ with purely open-source implementations.</p></li>\r\n<li><p>The man behind the /e/ project: Gael Duval, pioneer of Open Source, Mandrake, Ulteo...<br />\r\n<a href=\"https://www.indidea.org/gael/blog/about-gael-duval/\" class=\"uri\">https://www.indidea.org/gael/blog/about-gael-duval/</a></p></li>\r\n<li><p>His article outlining his vision for /e/ : <a href=\"https://gael-duval.medium.com/e-os-redefines-the-mobile-operating-system-paradigm-for-a-more-sustainable-world-4e929b1010c\" class=\"uri\">https://gael-duval.medium.com/e-os-redefines-the-mobile-operating-system-paradigm-for-a-more-sustainable-world-4e929b1010c</a></p></li>\r\n<li><p>You can buy a FP3 and an FP3 + with /e/ pre-installed here !!<br />\r\n<a href=\"https://esolutions.shop/de/\" class=\"uri\">https://esolutions.shop/de/</a></p></li>\r\n<li><p>Installing on your phone: over 110 devices supported: from Asus to Google, to Oneplus and Xiaomi<br />\r\n<a href=\"https://doc.e.foundation/devices/\" class=\"uri\">https://doc.e.foundation/devices/</a></p></li>\r\n</ul>\r\n<h3 id=\"how-to-install-it-on-the-fp3\">How to install it on the FP3</h3>\r\n<ul>\r\n<li><p>Install /e/ on FairPhone FP3 - FP3 | /e/ documentation</p></li>\r\n<li><p>Privacy ratings of apps: <a href=\"https://exodus-privacy.eu\" class=\"uri\">https://exodus-privacy.eu</a></p></li>\r\n<li><p>Alternative launchers:</p>\r\n<ul>\r\n<li>KISS launcher</li>\r\n<li>Simple launcher</li>\r\n</ul></li>\r\n<li><p>I recommended you add these apps:</p>\r\n<ul>\r\n<li>Antennapod - podcast client</li>\r\n<li>FairEmail or simple email</li>\r\n<li>Fennec (Firefox)</li>\r\n<li>Signal</li>\r\n<li>newpipe for watching youtube without being tracked</li>\r\n</ul></li>\r\n<li><p>Backup via adb is apparently broken | Not the fault of /e/!!</p></li>\r\n<li><p>You cannot simply flash a new recovery, such as TWRP, to flash images or backup, instead, you can use this method<br />\r\n<a href=\"https://twrp.me/fairphone/fairphone3.html\" class=\"uri\">https://twrp.me/fairphone/fairphone3.html</a></p></li>\r\n<li><p>Donate or become a member to keep the project going:<br />\r\n<a href=\"https://e.foundation/donate-2/\" class=\"uri\">https://e.foundation/donate-2/</a></p></li>\r\n</ul>\r\n<p>Feel free to add any comments below!</p>\r\n<p>Theme Music: Jazzhar, \"Room with a View\" CC
(3247,'2021-01-12','Saturday Morning Automotive Routine',1110,'I have developed a relaxing 10-step routine for keeping your car in running condition.','<p>The top ten are:</p>\r\n<ol type=\"1\">\r\n<li>Gas</li>\r\n<li>Tires</li>\r\n<li>Battery</li>\r\n<li>Hoses/Belts</li>\r\n<li>Fluids</li>\r\n<li>External</li>\r\n<li>Review dates</li>\r\n<li>Schedule replacement parts</li>\r\n<li>Clean up</li>\r\n<li>Choose for car wash</li>\r\n</ol>\r\n<!-- . -->\r\n<ol start=\"11\" type=\"1\">\r\n<li>A treat!</li>\r\n</ol>\r\n<p>Blog site: <a href=\"https://biblicaltrumpets.org\" class=\"uri\">https://biblicaltrumpets.org</a></p>\r\n',389,0,0,'CC-BY-SA','system,lifehack,automotive,routine maintenance',0,0,1),
(3255,'2021-01-22','garage door part 2',574,'tis teh season COUGH COUGH','<p>garage door part 2<br />\r\ntis teh season COUGH COUGH</p>',36,0,1,'CC-BY-SA','garage door,diy,home,repair',0,0,1),
(3290,'2021-03-12','GIMP: More on Layer Tools and Techniques',887,'Using some additional tools for for working with Layers in GIMP','<p>When working with layers you often need to use additional tools and techniques to get the results you want. We cover several of the most often used ones in this tutorial, including Transparency, Opacity, Layer Groups, and Linking Layers. You will use these frequently in working with Layers.</p>\r\n<h3 id=\"links\">Links:</h3>\r\n<ul>\r\n<li><a href=\"https://docs.gimp.org/2.10/en/\" class=\"uri\">https://docs.gimp.org/2.10/en/</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Wikipedia:Public_domain_image_resources\" class=\"uri\">https://en.wikipedia.org/wiki/Wikipedia:Public_domain_image_resources</a></li>\r\n<li><a href=\"https://imageric.com/\" class=\"uri\">https://imageric.com/</a></li>\r\n<li><a href=\"https://imageric.com/photos/free/detail/13392-daughter-happy-together-family-mother-smiling-child-people-group-love\" class=\"uri\">https://imageric.com/photos/free/detail/13392-daughter-happy-together-family-mother-smiling-child-people-group-love</a></li>\r\n<li><a href=\"https://imageric.com/photos/free/detail/13400-flower-arrangement-bouquet-arrangement-rose-decoration-flower-roses\" class=\"uri\">https://imageric.com/photos/free/detail/13400-flower-arrangement-bouquet-arrangement-rose-decoration-flower-roses</a></li>\r\n<li><a href=\"https://www.ahuka.com/gimp/more-on-layer-tools-and-techniques/\" class=\"uri\">https://www.ahuka.com/gimp/more-on-layer-tools-and-techniques/</a></li>\r\n</ul>\r\n',198,113,0,'CC-BY-SA','GIMP, Layers',0,0,1),
(3300,'2021-03-26','YouTube Channels for Learning Spanish, Part 1',984,'My reviews of some YouTube channels offering free Spanish language lessons.','<p>As I have been learning Spanish I have been making use of a variety of tools and aids. One of the best is YouTube, where there is a wealth of free stuff. Of course, Spanish is not the only language with good resources here, but it is the one I am studying right now. But if you are interested in learning another language, or improving your knowledge of one, you should take a look.</p>\r\n<h3 id=\"links\">Links:</h3>\r\n<ul>\r\n<li><a href=\"https://www.youtube.com/channel/UC_GFwrcNlXh92xA8iKFT2WA\" class=\"uri\">https://www.youtube.com/channel/UC_GFwrcNlXh92xA8iKFT2WA</a></li>\r\n<li><a href=\"https://thelanguagetutor.co/\" class=\"uri\">https://thelanguagetutor.co/</a></li>\r\n<li><a href=\"https://www.youtube.com/watch?v=hyLl_0d0EBw&list=PLTpetkN815Qyuc2RbC1kxxMQvxjQ3RnYG\" class=\"uri\">https://www.youtube.com/watch?v=hyLl_0d0EBw&list=PLTpetkN815Qyuc2RbC1kxxMQvxjQ3RnYG</a></li>\r\n<li><a href=\"https://www.youtube.com/watch?v=I8hFdZEPqdM\" class=\"uri\">https://www.youtube.com/watch?v=I8hFdZEPqdM</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Common_European_Framework_of_Reference_for_Languages\" class=\"uri\">https://en.wikipedia.org/wiki/Common_European_Framework_of_Reference_for_Languages</a></li>\r\n<li><a href=\"https://www.youtube.com/c/Professorjason/featured\" class=\"uri\">https://www.youtube.com/c/Professorjason/featured</a></li>\r\n<li><a href=\"https://www.youtube.com/channel/UC67BDv__7er_ZaYKqhOSOFQ\" class=\"uri\">https://www.youtube.com/channel/UC67BDv__7er_ZaYKqhOSOFQ</a></li>\r\n<li><a href=\"https://www.youtube.com/user/culturealley\" class=\"uri\">https://www.youtube.com/user/culturealley</a></li>\r\n<li><a href=\"https://www.youtube.com/channel/UC9yudInUYzMh9H4gJs4DrHg\" class=\"uri\">https://www.youtube.com/channel/UC9yudInUYzMh9H4gJs4DrHg</a></li>\r\n<li><a href=\"https://www.youtube.com/channel/UCozZrWPuoNRLl5ArOyJ57sQ\" class=\"uri\">https://www.youtube.com/channel/UCozZrWPuoNRLl5ArOyJ57sQ</a></li>\r\n<li><a href=\"https://www.palain.com/spanish/youtube-channels-for-learning-spanish/\" class=\"uri\">https://www.palain.com/spanish/youtube-channels-for-learning-spanish/</a></li>\r\n</ul>\r\n',198,116,0,'CC-BY-SA','Spanish, Language learning, YouTube',0,0,1),
(3310,'2021-04-09','Layer Masks',970,'We begin our look at a key tool in GIMP, Layer Masks','<p>One of the key tools in GIMP is Layer Masks, which allow you to make selected parts of a layer transparent, so that lower layers can come through. This is a way to get the same kinds of effects you would get with physical transparency sheets or animation gels.</p>\r\n<h3 id=\"links\">Links:</h3>\r\n<ul>\r\n<li><a href=\"https://docs.gimp.org/2.10/en/\" class=\"uri\">https://docs.gimp.org/2.10/en/</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Wikipedia:Public_domain_image_resources\" class=\"uri\">https://en.wikipedia.org/wiki/Wikipedia:Public_domain_image_resources</a></li>\r\n<li><a href=\"https://snappygoat.com/\" class=\"uri\">https://snappygoat.com/</a></li>\r\n<li><a href=\"https://snappygoat.com/s/?q=flowerscloseup#eda72d0e7eedc238eed8f7acffc515dba94ce64c,1,342\" class=\"uri\">https://snappygoat.com/s/?q=flowerscloseup#eda72d0e7eedc238eed8f7acffc515dba94ce64c,1,342</a></li>\r\n<li><a href=\"https://www.gimp.org/docs/userfaq.html#when-will-gimp-support-any-kind-of-non-destructive-editing-like-adjustment-layers-layer-filters-andor-full-blown-node-based-editing\" class=\"uri\">https://www.gimp.org/docs/userfaq.html#when-will-gimp-support-any-kind-of-non-destructive-editing-like-adjustment-layers-layer-filters-andor-full-blown-node-based-editing</a></li>\r\n<li><a href=\"https://www.ahuka.com/gimp/layer-masks/\" class=\"uri\">https://www.ahuka.com/gimp/layer-masks/</a></li>\r\n</ul>\r\n',198,113,0,'CC-BY-SA','GIMP, Layers, Layer Masks',0,0,1),
(3320,'2021-04-23','YouTube Channels for Learning Spanish, Part 2',873,'My reviews of some YouTube channels offering free Spanish language lessons.','<p>As I have been learning Spanish I have been making use of a variety of tools and aids. One of the best is YouTube, where there is a wealth of free stuff. Of course, Spanish is not the only language with good resources here, but it is the one I am studying right now. But if you are interested in learning another language, or improving your knowledge of one, you should take a look. This is the second part covering some additional channels</p>\r\n<h3 id=\"links\">Links:</h3>\r\n<ul>\r\n<li><a href=\"https://www.youtube.com/channel/UCmSElpplqOqmAHi1N0z42AQ\" class=\"uri\">https://www.youtube.com/channel/UCmSElpplqOqmAHi1N0z42AQ</a></li>\r\n<li><a href=\"https://www.youtube.com/channel/UCydVvh3Wg4VPvllLHFoe5_A\" class=\"uri\">https://www.youtube.com/channel/UCydVvh3Wg4VPvllLHFoe5_A</a></li>\r\n<li><a href=\"https://www.youtube.com/channel/UCouyFdE9-Lrjo3M_2idKq1A\" class=\"uri\">https://www.youtube.com/channel/UCouyFdE9-Lrjo3M_2idKq1A</a></li>\r\n<li><a href=\"https://algworld.com/\" class=\"uri\">https://algworld.com/</a></li>\r\n<li><a href=\"https://www.teachingenglish.org.uk/article/comprehensible-input\" class=\"uri\">https://www.teachingenglish.org.uk/article/comprehensible-input</a></li>\r\n<li><a href=\"https://www.youtube.com/channel/UCIdFcLCIJQ_YMrormG_nU8w\" class=\"uri\">https://www.youtube.com/channel/UCIdFcLCIJQ_YMrormG_nU8w</a></li>\r\n<li><a href=\"https://www.youtube.com/channel/UCfG2VhlQgy5bHGmkpeKcjVA\" class=\"uri\">https://www.youtube.com/channel/UCfG2VhlQgy5bHGmkpeKcjVA</a></li>\r\n<li><a href=\"https://www.youtube.com/channel/UCrMqdq1osi5ECCBkia2jsNw\" class=\"uri\">https://www.youtube.com/channel/UCrMqdq1osi5ECCBkia2jsNw</a></li>\r\n<li><a href=\"https://www.youtube.com/channel/UCAg2CRWxgDZPFricsDv6EOA\" class=\"uri\">https://www.youtube.com/channel/UCAg2CRWxgDZPFricsDv6EOA</a></li>\r\n<li><a href=\"https://www.palain.com/spanish/youtube-channels-for-learning-spanish-part-2/\" class=\"uri\">https://www.palain.com/spanish/youtube-channels-for-learning-spanish-part-2/</a></li>\r\n</ul>\r\n',198,116,0,'CC-BY-SA','Spanish, Language learning, YouTube',0,0,1),
(3330,'2021-05-07','A Layer Mask Project',934,'We apply our knowledge of Layer Masks to create a project.','<p>This tutorial has us applying our knowledge of Layer Masks in combination with some other tools to make an image. We start with a photograph, and transform it into something very different, as a way to practice our GIMP skills.</p>\r\n<h3 id=\"links\">Links:</h3>\r\n<ul>\r\n<li><a href=\"https://docs.gimp.org/2.10/en/\" class=\"uri\">https://docs.gimp.org/2.10/en/</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Wikipedia:Public_domain_image_resources\" class=\"uri\">https://en.wikipedia.org/wiki/Wikipedia:Public_domain_image_resources</a></li>\r\n<li><a href=\"https://www.youtube.com/channel/UCnSAUHBwdAEPWeeIs8LTViA\" class=\"uri\">https://www.youtube.com/channel/UCnSAUHBwdAEPWeeIs8LTViA</a></li>\r\n<li><a href=\"https://digitalmedia.fws.gov/\" class=\"uri\">https://digitalmedia.fws.gov/</a></li>\r\n<li><a href=\"https://digitalmedia.fws.gov/digital/collection/natdiglib/id/14486/rec/210\" class=\"uri\">https://digitalmedia.fws.gov/digital/collection/natdiglib/id/14486/rec/210</a></li>\r\n<li><a href=\"https://www.ahuka.com/gimp/a-layer-mask-project/\" class=\"uri\">https://www.ahuka.com/gimp/a-layer-mask-project/</a></li>\r\n</ul>\r\n',198,113,0,'CC-BY-SA','GIMP, Layers, Layer Masks',0,0,1),
(3340,'2021-05-21','Hacked?',603,'People commonly say that their own, or someone else\'s,Facebookhasbeenhacked.','<p>AssomeonewhohasreasonstobeonFacebook,Ihavegottenusedtoseeingpeoplewarnthattheiraccountwashacked,andweshouldnotacceptfriendrequestsfromthem.ItissocommonthatyouwouldwonderifFacebookhadnosecurityatall.Butthetruthissomethingdifferent,andworthknowingabout.</p>\r\n<h3id=\"links\">Links:</h3>\r\n<ul>\r\n<li><ahref=\"https://www.ricksdailytips.com/beware-duplicate-friend-requests/\"class=\"uri\">https://www.ricksdailytips.com/beware-duplicate-friend-requests/</a></li>\r\n<li><ahref=\"https://www.zwilnik.com/hacked/\"class=\"uri\">https://www.zwilnik.com/hacked/</a></li>\r\n</ul>\r\n',198,74,0,'CC-BY-SA','Facebook,scams',0,0,1),
(3249,'2021-01-14','Linux Inlaws S01E21: The Big Linux Inlaws Peep Show',3165,'The two chaps go the full monty and reveal it all','<ul>\r\n<li>Rust for the Linux kernel: <a href=\"https://github.com/Rust-for-Linux/linux\" target=\"_blank\">https://github.com/Rust-for-Linux/linux</a></li>\r\n<li>Linus opinion on C++ in the Linux kernel: <a href=\"https://lkml.org/lkml/2004/1/20/20\" target=\"_blank\">https://lkml.org/lkml/2004/1/20/20</a></li>\r\n<li>gdb: <a href=\"https://www.gnu.org/software/gdb\" target=\"_blank\">https://www.gnu.org/software/gdb</a></li>\r\n<li>lldb: <a href=\"https://lldb.llvm.org\" target=\"_blank\">https://lldb.llvm.org</a></li>\r\n<li>Novell\'sNetware:<ahref=\"https://en.wikipedia.org/wiki/NetWare\"target=\"_blank\">https://en.wikipedia.org/wiki/NetWare</a></li>\r\n<li>strace:<ahref=\"https://strace.io\"target=\"_blank\">https://strace.io</a></li>\r\n<li>ltrace:<ahref=\"https://www.ltrace.org\"target=\"_blank\">https://www.ltrace.org</a></li>\r\n<li>DTrace:<ahref=\"https://dtrace.org/blogs/about\"target=\"_blank\">https://dtrace.org/blogs/about</a></li>\r\n<li>ptrace:<ahref=\"https://en.wikipedia.org/wiki/Ptrace#Linux\"target=\"_blank\">https://en.wikipedia.org/wiki/Ptrace#Linux</a></li>\r\n<li>Capabilities: <a href=\"https://wiki.archlinux.org/index.php/capabilities\" target=\"_blank\">https://wiki.archlinux.org/index.php/capabilities</a></li>\r\n<li>Extended attributes: <a href=\"https://en.wikipedia.org/wiki/Extended_file_attributes#Linux\" target=\"_blank\">https://en.wikipedia.org/wiki/Extended_file_attributes#L\r\ninux</a></li>\r\n<li>eBPF: <a href=\"https://ebpf.io\" target=\"_blank\">https://ebpf.io</a></li>\r\n<li>BCC: <a href=\"https://github.com/iovisor/bcc\" target=\"_blank\">https://github.com/iovisor/bcc</a></li>\r\n<li>BCC toolchain: <a href=\"https://iovisor.github.io/bcc\" target=\"_blank\">https://iovisor.github.io/bcc</a></li>\r\n<li>Linux kernel tracing: <a href=\"https://www.kernel.org/doc/html/latest/trace/index.html\" target=\"_blank\">https://www.kernel.org/doc/html/latest/trace/index.html</a></li>\r\n<li>Cathy O\'Neil\'s Weapons of Math Destruction: <a href=\"https://en.wikipedia.org/wiki/Weapons_of_Math_Destruction\" target=\"_blank\">https://en.wikipedia.org/wiki/Weapon\r\ns_of_Math_Destruction</a></li>\r\n<li>Audacity: <a href=\"https://manual.audacityteam.org\" target=\"_blank\">https://manual.audacityteam.org</a></li>\r\n<li>Jitsi (Meet): <a href=\"https://github.com/jitsi/jitsi-meet\" target=\"_blank\">https://github.com/jitsi/jitsi-meet</a></li>\r\n</ul>\r\n',384,111,1,'CC-BY-SA','Nudity, tracing, debugging, extended berkeley packet filter, weapons of math destruction',0,0,1),
(3251,'2021-01-18','Opposing Views on Alcohol',1840,'Windigo and Mrs. Honeyhume discuss their views on alcohol','<p>I discuss the subject of alcohol with my partner of sixteen years, Mrs. Honeyhume. While we agree on many subjects, alcohol is not one of them.</p>\r\n<p>She believes alcohol is an important experience, one to be shared with friends, and I dislike nearly everything about it.</p>\r\n<p>We discuss what we like/dislike about alcohol, our histories with it, and present our personal anecdotal evidence.</p>',196,0,1,'CC-BY-SA','alcohol',0,0,1),
(3350,'2021-06-04','Blending Layers',1321,'GIMP has a number of ways you can blend layers together','<p>This tutorial begins our discussion of how you can blend entire layers in GIMP, starting with changing the opacity of layers, then moving into Layer Modes, which use mathematical functions to allow more complex combinations to achieve certain effects. We discuss the mathematics as a background to more discussion in subsequent tutorials of the specific Layer Modes.</p>\r\n<h3 id=\"links\">Links:</h3>\r\n<ul>\r\n<li><a href=\"https://docs.gimp.org/2.10/en/\" class=\"uri\">https://docs.gimp.org/2.10/en/</a></li>\r\n<li><a href=\"https://www.thefamousartists.com/\" class=\"uri\">https://www.thefamousartists.com/</a></li>\r\n<li><a href=\"https://www.thefamousartists.com/jeong-seon/geumgang-jeondo\" class=\"uri\">https://www.thefamousartists.com/jeong-seon/geumgang-jeondo</a></li>\r\n<li><a href=\"https://www.youtube.com/watch?v=17Iivi0tmug\" class=\"uri\">https://www.youtube.com/watch?v=17Iivi0tmug</a></li>\r\n<li><a href=\"https://www.youtube.com/watch?v=J9YyQpJa-ns\" class=\"uri\">https://www.youtube.com/watch?v=J9YyQpJa-ns</a></li>\r\n<li><a href=\"https://ninedegreesbelow.com/photography/gimp-lch-blend-modes.html\" class=\"uri\">https://ninedegreesbelow.com/photography/gimp-lch-blend-modes.html</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Blend_modes\" class=\"uri\">https://en.wikipedia.org/wiki/Blend_modes</a></li>\r\n<li><a href=\"https://search.creativecommons.org/\" class=\"uri\">https://search.creativecommons.org/</a></li>\r\n<li><a href=\"https://search.creativecommons.org/photos/d3067227-9d89-46e6-b5ba-3910432e2a9f\" class=\"uri\">https://search.creativecommons.org/photos/d3067227-9d89-46e6-b5ba-3910432e2a9f</a></li>\r\n<li><a href=\"https://search.creativecommons.org/photos/84314932-0a0a-4824-a1a9-fbb3196bfc4c\" class=\"uri\">https://search.creativecommons.org/photos/84314932-0a0a-4824-a1a9-fbb3196bfc4c</a></li>\r\n<li><a href=\"https://www.ahuka.com/gimp/blending-layers/\" class=\"uri\">https://www.ahuka.com/gimp/blending-layers/</a></li>\r\n</ul>\r\n',198,113,0,'CC-BY-SA','GIMP, Layers, Layer Modes, Opacity',0,0,1),
(3360,'2021-06-18','Android Malware Alert',665,'A look at some security issues in Android','<p>A type of malware nicknamed Joker has been infecting Android devices. In this episode we dig a little deeper into what this is and how it works.</p>\r\n<h3 id=\"links\">Links:</h3>\r\n<ul>\r\n<li><a href=\"https://stackoverflow.com/questions/7750448/what-are-dex-files-in-android#7750547\" class=\"uri\">https://stackoverflow.com/questions/7750448/what-are-dex-files-in-android#7750547</a></li>\r\n<li><a href=\"https://www.zscaler.com/blogs/security-research/joker-playing-hide-and-seek-google-play\" class=\"uri\">https://www.zscaler.com/blogs/security-research/joker-playing-hide-and-seek-google-play</a></li>\r\n<li><a href=\"https://blog.sucuri.net/2020/08/string-concatenation-obfuscation-techniques.html\" class=\"uri\">https://blog.sucuri.net/2020/08/string-concatenation-obfuscation-techniques.html</a></li>\r\n<li><a href=\"https://www.anquanke.com/post/id/211978\" class=\"uri\">https://www.anquanke.com/post/id/211978</a></li>\r\n<li><a href=\"https://www.zscaler.com/blogs/security-research/joker-playing-hide-and-seek-google-play\" class=\"uri\">https://www.zscaler.com/blogs/security-research/joker-playing-hide-and-seek-google-play</a></li>\r\n<li><a href=\"https://www.techrepublic.com/article/how-to-manage-app-permissions-in-android-11\" class=\"uri\">https://www.techrepublic.com/article/how-to-manage-app-permissions-in-android-11</a></li>\r\n<li><a href=\"https://arstechnica.com/information-technology/2020/09/joker-the-malware-that-signs-you-up-for-pricey-services-floods-android-markets/\" class=\"uri\">https://arstechnica.com/information-technology/2020/09/joker-the-malware-that-signs-you-up-for-pricey-services-floods-android-markets/</a></li>\r\n<li><a href=\"https://www.zwilnik.com/android-malware-alert\" class=\"uri\">https://www.zwilnik.com/android-malware-alert</a></li>\r\n</ul>\r\n',198,74,0,'CC-BY-SA','Android, malware',0,0,1),
(3370,'2021-07-02','More Free Images?',869,'We look at some more free photo sites to see if they are really free','<p>This tutorial adds to our discussion of freely usable photos by looking at a list compiled on the blog of a marketing site Twenty Over Ten. They gave us their top 15 sites, but can I recommend them unreservedly? Not necessarily, you have to dig into each one of them to get to the truth.</p>\r\n<h3 id=\"links\">Links:</h3>\r\n<ul>\r\n<li><a href=\"https://blog.twentyoverten.com/10-best-sites-for-free-stock-photos/\" class=\"uri\">https://blog.twentyoverten.com/10-best-sites-for-free-stock-photos/</a></li>\r\n<li><a href=\"https://unsplash.com/\" class=\"uri\">https://unsplash.com/</a></li>\r\n<li><a href=\"https://unsplash.com/license\" class=\"uri\">https://unsplash.com/license</a></li>\r\n<li><a href=\"https://pixabay.com/\" class=\"uri\">https://pixabay.com/</a></li>\r\n<li><a href=\"https://www.pexels.com/\" class=\"uri\">https://www.pexels.com/</a></li>\r\n<li><a href=\"https://kaboompics.com/\" class=\"uri\">https://kaboompics.com/</a></li>\r\n<li><a href=\"https://shutteroo.com/\" class=\"uri\">https://shutteroo.com/</a></li>\r\n<li><a href=\"https://negativespace.co/\" class=\"uri\">https://negativespace.co/</a></li>\r\n<li><a href=\"https://fancycrave.com/\" class=\"uri\">https://fancycrave.com/</a></li>\r\n<li><a href=\"https://burst.shopify.com/\" class=\"uri\">https://burst.shopify.com/</a></li>\r\n<li><a href=\"https://burst.shopify.com/licenses/shopify-some-rights-reserved\" class=\"uri\">https://burst.shopify.com/licenses/shopify-some-rights-reserved</a></li>\r\n<li><a href=\"https://picjumbo.com/\" class=\"uri\">https://picjumbo.com/</a></li>\r\n<li><a href=\"https://freerangestock.com/#\" class=\"uri\">https://freerangestock.com/#</a></li>\r\n<li><a href=\"https://www.equalicense.com\" class=\"uri\">https://www.equalicense.com</a></li>\r\n<li><a href=\"https://libreshot.com/\" class=\"uri\">https://libreshot.com/</a></li>\r\n<li><a href=\"https://libreshot.com/license-information/\" class=\"uri\">https://libreshot.com/license-information/</a></li>\r\n<li><a href=\"https://www.nappy.co/\" class=\"uri\">https://www.nappy.co/</a></li>\r\n<li><a href=\"https://www.nappy.co/license\" class=\"uri\">https://www.nappy.co/license</a></li>\r\n<li><a href=\"https://stocksnap.io/\" class=\"uri\">https://stocksnap.io/</a></li>\r\n<li><a href=\"https://stocksnap.io/license\" class=\"uri\">https://stocksnap.io/license</a></li>\r\n<li><a href=\"https://www.splitshire.com/\" class=\"uri\">https://www.splitshire.com/</a></li>\r\n<li><a href=\"https://www.lifeofpix.com/\" class=\"uri\">https://www.lifeofpix.com/</a></li>\r\n<li><a href=\"https://www.ahuka.com/gimp/more-free-image-sites/\" class=\"uri\">https://www.ahuka.com/gimp/more-free-image-sites/</a></li>\r\n</ul>\r\n',198,113,0,'CC-BY-SA','Stock Photos, Creative Commons, Free Photos',0,0,1),
(3380,'2021-07-16','Building a Better Goodreads with ActivityPub',698,'This episode looks at the popular application Goodreads to see if it can be done better.','<p>Federated social media can open up some wonderful possibilities to reimagine some of the social apps we already use and find ways to do them better. In this episode I want to highlight a talk that aimed at such a reimagining involving an app I already use, Goodreads. My main use of it is to manage my book library, but it also involves a social aspect where you can be friends with people and share book reviews, recommendations, and so on. So seeing how this can be done differently with ActivityPub was very interesting to me.</p>\r\n<h3 id=\"links\">Links:</h3>\r\n<ul>\r\n<li><a href=\"https://conf.tube/videos/watch/c42604a8-d71d-4bd0-8081-d2c77210f206\" class=\"uri\">https://conf.tube/videos/watch/c42604a8-d71d-4bd0-8081-d2c77210f206</a></li>\r\n<li><a href=\"https://www.goodreads.com/\" class=\"uri\">https://www.goodreads.com/</a></li>\r\n<li><a href=\"https://www.palain.com/im-learning-spanish/\" class=\"uri\">https://www.palain.com/im-learning-spanish/</a></li>\r\n<li><a href=\"https://learnawesome.org/\" class=\"uri\">https://learnawesome.org/</a></li>\r\n<li><a href=\"https://github.com/learn-awesome\" class=\"uri\">https://github.com/learn-awesome</a></li>\r\n<li><a href=\"https://www.zwilnik.com/better-social-media/activitypub-conference-2020/activitypub-conference-2020-nilesh-trivedi/\" class=\"uri\">https://www.zwilnik.com/better-social-media/activitypub-conference-2020/activitypub-conference-2020-nilesh-trivedi/</a></li>\r\n</ul>\r\n',198,108,0,'CC-BY-SA','social media, alternative, Fediverse, ActivityPub, Goodreads, library',0,0,1),
(3248,'2021-01-13','SARS-CoV-2 detection by PCR explanation',1464,'This episode summarizes the process to detect the virus that causes COVID-19 by PCR','<h2 id=\"basic-process\">Basic Process</h2>\r\n<ol>\r\n<li>Sample Collection</li>\r\n<li>Sample Transportation</li>\r\n<li>Nucleic Acid extraction and Purification</li>\r\n<li>Amplification and Detection</li>\r\n</ol>\r\n<h2 id=\"links\">Links</h2>\r\n<ul>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Polymerase_chain_reaction\">https://en.wikipedia.org/wiki/Polymerase_chain_reaction</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Coronavirus\">https://en.wikipedia.org/wiki/Coronavirus</a></li>\r\n<li><a href=\"https://www.k-state.edu/hermanlab/protocols/StandardPCRConditions.html\">https://www.k-state.edu/hermanlab/protocols/StandardPCRConditions.html</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/RNA\">https://en.wikipedia.org/wiki/RNA</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/DNA\">https://en.wikipedia.org/wiki/DNA</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Thermus_aquaticus\">https://en.wikipedia.org/wiki/Thermus_aquaticus</a></li>\r\n</ul>\r\n',300,100,0,'CC-BY-SA','PCR,COVID019',0,0,1),
(3252,'2021-01-19','Simple JSON querying tool (also YAML, and to a lesser extent XML)',1137,'crvs talks about jq, yq and xq','<h1 id=\"json\">JSON</h1>\r\n<p>Json is a cool little data serialization language, that allows you to easily and clearly demarcate blocks of data by nesting data structures such as lists (enclosed by square brackets) and key-value pairs or \"dictionaries\" (enclosed by curly braces). So that in the end you get something that looks like this</p>\r\n<pre><code>{\r\n"first list" : [ "element1", "element2", {"element3" : "is another k-v pair", "but contains" : ["a" , "list", "of", "words"]}] ,\r\n"this value is a string" : "1" ,\r\n"and this is a number" : 23 ,\r\n"and floating point" : 1.413\r\n}</code></pre>\r\n<p>Aside from:</p>\r\n<ul>\r\n<li>Lists are enclosed in [] and each element is separated by ,</li>\r\n<li>Key-value pair lists are enclosed in {} and have the key and value separated by : and each pair is separated by ,</li>\r\n<li>Keys have to strings quoted with double quotes</li>\r\n<li>Numbers may be left unquoted (but just in value fields)</li>\r\n</ul>\r\n<p>There are no restrictions to what you can do with JSON. Given how explicit the syntax is then, it makes for very easy parsing, and there are plenty of good parser out there. <a href=\"https://stedolan.github.io/jq/\">My favourite JSON parser is jq(1)</a>.</p>\r\n<p>A canonical representation of the JSON example above can easily be obtained with jq by simply calling <code>jq \'\' file.json</code> (or piping the file through stdin, or even putting the contents properly quoted as the second argument).</p>\r\n<pre><code>{\r\n "first list": [\r\n "element1",\r\n "element2",\r\n {\r\n "element3": "is another k-v pair",\r\n "but contains": [\r\n "a",\r\n "list",\r\n "of",\r\n "words"\r\n ]\r\n }\r\n ],\r\n "this value is a string": "1",\r\n "and this is a number": 23,\r\n "and floating point": 1.413\r\n}</code></pre>\r\n<p>You can also use jq in a shell script to obtain, for example the second element of the first list:</p>\r\n<pre><code>$ jq '."first list"[1]' example.json\r\n"element2"</code></pre>\r\n<p>So to get the value associated to a key you use the notation <code>.key</code> and to get the k-th element you use the notation <code>[k-1]</code>. To remove the quotes on the string you can use the <code>-r</code> flag which stands for raw output.</p>\r\n<p><code>jq(1)</code> also gives you a few more functionalities that can be useful like getting the number of elements in a list with the length function.</p>\r\n<pre><code>$ jq 'length' example.json\r\n3\r\n$ jq '."first list"[2]."but contains" | length'\r\n4</code></pre>\r\n<p>Another useful feature is getting the list of keys from a key-value pair list which can be done with the function <code>keys</code></p>\r\n<pre><code>$ jq '."first list"[2] | keys[]' example.json\r\n"but contains",\r\n"element3"</code></pre>\r\n<p>The query language is much much more flexible than this, but for most cases this should be enough for simple configuration querying.</p>\r\n<h1 id=\"yaml-and-xml\">YAML and XML??</h1>\r\n<p><a href=\"https://pypi.org/project/yq/\">The yq project</a> allows one to use the exact same syntax as jq to query, and emit (and therefore also transcode) yaml and XML, extending the usefulness of the query language.</p>\r\n<p>So for example looking at the previous file through <code>yq</code> gives:</p>\r\n<pre><code>$ yq -y '' example.json\r\nfirst list:\r\n - element1\r\n - element2\r\n - element3: is another k-v pair\r\n but contains:\r\n - a\r\n - list\r\n - of\r\n - words\r\nthis value is a string: '1&
(3253,'2021-01-20','Pandas Intro',1241,'Enigma introduces one of his favorite python modules pandas','<p>\r\nWelcome to another episode of HPR I\'myourhostEnigmaandtodaywearegoingtobetalking\r\naboutoneofmyfavoritepythonmodulesPandas<br>\r\nThiswillbethefirstepisodeinaseriesI\'m naming: For The Love of Python. <br>\r\n<br>\r\nFirst we need to get the module <br>\r\npip or pip3 install pandas <br>\r\nThis will install numpy as well <br>\r\nPandas uses an object called a dataframe which is a two-dimensional data structure, <br>\r\ni.e., data is aligned in a tabular fashion in rows and columns. Think of a spreadsheet type object in memory\r\n<br> <br>\r\nToday we are going to talk about: <br>\r\n<b>1) Importing data from various sources</b><br>\r\nCsv, excel, sql. More advance topics like Json covered in another episode. <br>\r\ndf = pd.read_csv(\'filename\') <br>\r\n<br>\r\n<b>2) Accessing data by column names or positionally </b> <br>\r\nprint(df.head(5)) # print all columns only first 5 rows <br>\r\nprint(df.tail(5)) # print all columns only last 5 rows <br>\r\nprint(df.shape) # print number of rows and columns in dataframe <br>\r\nprint(df.columns) print column names <br>\r\nprint(df[0:1].head(5)) print first two columns first 5 values by column position <br>\r\nprint(df[\'field1].head(5))printsamecolumnfirstfivevaluesbycolumnname<br>\r\n<br>\r\n<b>3)Settingcolumntypes.</b><br>\r\ndf[\'FieldName\']=df[\'FieldName\'].astype(int)# sets column as interger <br>\r\ndf[\'FieldName\'] = df[\'FieldName\'].astype(str) # sets column to string <br>\r\ndf[\'DateColumn\'] = pd.to_datetime(df[\'DateColumn\']) # sets column to Datetime <br>\r\n<br>\r\n<br>\r\n<b>4) Some basic filtering/manipulation of data. </b><br>\r\nSplits string at the @ for one split next two lines create 2 columns that use the pieces. <br>\r\nnew = df2[\"Email\"].str.split(\"@\", n = 1, expand = True) <br>\r\ndf2[\"user\"]= new[0] <br>\r\ndf2[\"domain\"]= new[1] <br>\r\n<br>\r\ndf[\'col\'] = df[\'Office\'].str[:3] # creates a new column grabing the first 3 positions of Office column <br>\r\ndf = df[df[\'FieldName\'] != 0] # Only keep rows that have a FieldName value not equal to zero <br>\r\n<br>\r\nSee example code that you can run at: <br>\r\n<a href = \'https://github.com/eth0enigma/PandasExample\'> Pandas Working example </a>\r\n</p>',39,38,0,'CC-BY-SA','python, data analytics, data science',0,0,1),
(3256,'2021-01-25','Update, MS Teams, Covid 19, Raspberry PI 400 Raspberry PI 4 8GB Centos',539,'Hey guys just a short update, whats going with Centos? Raspberry PI 400 Good buy','<p>Hey guys I have been doing a lot of MS Teams it works on Linux not so I can have 365 on my ubuntu browser and MS teams installed. (Work complete from a linux box) (It\'sgreat)TheRaspberryPI400isagreatboxyoushouldgetit.AlsoIthoughttheRaspberry48GBtobeverysolid.</p>\r\n',129,0,0,'CC-BY-SA','Centos,Oraclelinux,MSTeams,Covid,Raspberry,PI400',0,0,1),
(3257,'2021-01-26','Lack of diversity in Linux and other open source communities',714,'I consider some reasons that there is a lack of diversity when it comes to open source communities. ','<ol type=\"1\">\r\n<li>Why is there a lack of diverse voices and faces in the world of Linux and open source</li>\r\n<li>Free software but it\'snotmadeavailabletotheverypeoplewhocouldreallybenefitfromit</li>\r\n<li>LackoftraininginschoolswhenitcomestoLinuxandotheropensourcesoftware</li>\r\n</ol>',297,0,0,'CC-BY-SA','linux,race,podcast',0,0,1),
(3259,'2021-01-28','Nextcloud - The easy way',482,'Self hosting a Nextcloud instance.','<p><a href=\"https://peyanski.com/personal-cloud-from-home-nextcloud-on-raspberry-pi/#Nextcloud_initial_setup\" class=\"uri\">https://peyanski.com/personal-cloud-from-home-nextcloud-on-raspberry-pi/#Nextcloud_initial_setup</a></p>\r\n<pre><code>sudo apt-get update && sudo apt-get upgrade -y</code></pre>\r\n<p>Start the Nextcloud on Raspberry Pi installation with the following script.</p>\r\n<pre><code>curl -sSL https://raw.githubusercontent.com/nextcloud/nextcloudpi/master/install.sh | sudo bash</code></pre>\r\n<p>Github script content</p>\r\n<p><a href=\"https://raw.githubusercontent.com/nextcloud/nextcloudpi/master/install.sh\" class=\"uri\">https://raw.githubusercontent.com/nextcloud/nextcloudpi/master/install.sh</a></p>\r\n<pre><code>\r\n#!/bin/bash\r\n\r\n# NextCloudPi installation script\r\n#\r\n# Copyleft 2017 by Ignacio Nunez Hernanz <nacho _a_t_ ownyourbits _d_o_t_ com>\r\n# GPL licensed (see end of file) * Use at your own risk!\r\n#\r\n# Usage: ./install.sh\r\n#\r\n# more details at https://ownyourbits.com\r\n\r\nBRANCH=master\r\n#DBG=x\r\n\r\nset -e$DBG\r\n\r\nTMPDIR="$(mktemp -d /tmp/nextcloudpi.XXXXXX || (echo "Failed to create temp dir.\r\nExiting" >&2 ; exit 1) )"\r\ntrap "rm -rf "${TMPDIR}" ; exit 0" 0 1 2 3 15\r\n\r\n[[ ${EUID} -ne 0 ]] && {\r\n printf "Must be run as root. Try 'sudo $0'n"\r\n exit 1\r\n}\r\n\r\nexport PATH="/usr/local/sbin:/usr/sbin:/sbin:${PATH}"\r\n\r\n# check installed software\r\ntype mysqld &>/dev/null && echo ">>> WARNING: existing mysqld configuration\r\nwill be changed <<<"\r\n\r\n# get install code\r\necho "Getting build code..."\r\napt-get update\r\napt-get install --no-install-recommends -y wget ca-certificates sudo lsb-release\r\n\r\npushd "$TMPDIR"\r\nwget -qO- --content-disposition\r\nhttps://github.com/nextcloud/nextcloudpi/archive/"$BRANCH"/latest.tar.gz\r\n | tar -xz\r\n || exit 1\r\ncd - && cd "$TMPDIR"/nextcloudpi-"$BRANCH"\r\n\r\n# install NCP\r\necho -e "nInstalling NextCloudPi..."\r\nsource etc/library.sh\r\n\r\n# check distro\r\ncheck_distro etc/ncp.cfg || {\r\n echo "ERROR: distro not supported:";\r\n cat /etc/issue\r\n exit 1;\r\n}\r\n\r\n\r\nmkdir -p /usr/local/etc/ncp-config.d/\r\ncp etc/ncp-config.d/nc-nextcloud.cfg /usr/local/etc/ncp-config.d/\r\ncp etc/library.sh /usr/local/etc/\r\ncp etc/ncp.cfg /usr/local/etc/\r\n\r\ninstall_app lamp.sh\r\ninstall_app bin/ncp/CONFIG/nc-nextcloud.sh\r\nrun_app_unsafe bin/ncp/CONFIG/nc-nextcloud.sh\r\nsystemctl restart mysqld # TODO this shouldn't be necessary, but somehow it's\r\nneeded in Debian 9.6. Fixme\r\ninstall_app ncp.sh\r\nrun_app_unsafe bin/ncp/CONFIG/nc-init.sh\r\nbash /usr/local/bin/ncp-provisioning.sh\r\n\r\npopd\r\n\r\nIFACE="$( ip r | grep "default via" | awk '{ print $5 }' | head -1 )"\r\nIP="$( ip a show dev "$IFACE" | grep global | grep -oP 'd{1,3}(.d{1,3}){3}' |\r\nhead -1 )"\r\n\r\necho "Done.\r\n\r\nFirst: Visit https://$IP/ https://nextcloudpi.local/ (also\r\nhttps://nextcloudpi.lan/ or https://nextcloudpi/ on windows and mac)\r\nto activate your instance of NC, and save the auto generated passwords. You may\r\nreview or reset them\r\nanytime by using nc-admin and nc-passwd.\r\nSecond: Type 'sudo ncp-config' to further configure NCP, or access ncp-web on\r\nhttps://$IP:4443/\r\nNote: You will have to add an exception, to bypass your browser warning when you\r\nfirst load the activation and :4443 pages. You can run letsencrypt to get rid of\r\nthe warning if you have a (sub)domain available.\r\n"\r\n\r\nexit 0\r\n\r\n# License\r\n#\r\n# This script is free software; you can redistribute it and/or modify it\r\n# under the terms of the GNU General Public License as published by\r\n# the Free Software Foun
(3254,'2021-01-21','The Markdown editor Retext',1494,'In this episode I cover the markdown editor ReText. I found this useful when creating show notes','<h2 id=\"what-is-retext\">What is ReText?</h2>\r\n<p>The <a href=\"https://github.com/retext-project/retext\">ReText website</a> on GitHub says that ReText is a simple but powerful editor for Markdown and reStructuredText markup languages.</p>\r\n<p>Doing a search on the HPR site returned the following two references to ReText.</p>\r\n<p><a href=\"https://hackerpublicradio.org/eps.php?id=1832\">The excellent Markdown and Pandoc HPR 1832 episode by b-yeezi makes reference to ReText</a></p>\r\n<p><a href=\"https://hackerpublicradio.org/eps.php?id=3167\">Dave Morriss mentioned using ReText as a possible tool when sending in shownotes as markdown is preferable to plain text. Refer to HPR 3167</a></p>\r\n<h2 id=\"retext-version-info\">Retext Version Info</h2>\r\n<p>As of the 1st of January 2021 I am running ReText version 7.0.1 the latest version was 7.1.0 this was last updated on the 4th of April 2020.</p>\r\n<h2 id=\"why-i-am-covering-this\">Why I am covering this</h2>\r\n<p>I’m covering this because in HPR show 3167 Dave Morriss said that Markdown was a preferred way to submit shownotes. Prior to this I had supplied my shownotes in plain text.</p>\r\n<h2 id=\"what-is-markdown\">What is Markdown?</h2>\r\n<p>I guess I first must cover what markdown is I found the following definitions:-</p>\r\n<p><a href=\"https://daringfireball.net/projects/markdown/\">Description of Markdown from Wikipedia</a></p>\r\n<p>Markdown is a lightweight markup language for creating formatted text using a plain-text editor. John Gruber and Aaron Swartz created Markdown in 2004 as a markup language that is appealing to the human users in its source form.[9] Markdown is widely used in blogging, instant messaging, online forums, collaboration software, documentation pages, and even readme files Link <a href=\"https://en.wikipedia.org/wiki/Markdown\">https://en.wikipedia.org/wiki/Markdown</a></p>\r\n<p><a href=\"https://daringfireball.net/projects/markdown/\">Description of Markdown from John Gruber\'swebsite,oneofthecofoundersofMarkdown.</a></p>\r\n<p>Markdownisatext-to-HTMLconversiontoolforwebwriters.Markdownallowsyoutowriteusinganeasy-to-read,easy-to-writeplaintextformat,thenconvertittostructurallyvalidXHTML(orHTML).</p>\r\n<h2id=\"example-text-used-in-the-show-and-how-it-looks\">Exampletextusedintheshowandhowitlooks</h2>\r\n<pre><code># This is a level 1 heading\r\n\r\n## This is a level 2 heading\r\n\r\n### This is a level 3 heading\r\n</code></pre>\r\n<h1 id=\"this-is-a-level-1-heading\">This is a level 1 heading</h1>\r\n<h2 id=\"this-is-a-level-2-heading\">This is a level 2 heading</h2>\r\n<h3 id=\"this-is-a-level-3-heading\">This is a level 3 heading</h3>\r\n<h2 id=\"list-of-useful-links\">List of useful links</h2>\r\n<p>Finally here are useful links that are available from within the ReText program. They can be found within the Help / About ReText menu:-</p>\r\n<p><a href=\"https://github.com/retext-project/retext\">Link to ReText website</a></p>\r\n<p><a href=\"https://daringfireball.net/projects/markdown/syntax#precode\">Link to Markdown syntax</a></p>\r\n<p><a href=\"https://docutils.sourceforge.io/docs/user/rst/quickref.html\">Link to reStructuredText syntax</a></p>\r\n<h2 id=\"final-thoughts\">Final thoughts</h2>\r\n<ul>\r\n<li><p>Using ReText to pull these shownotes together disciplined me to hopefully put more meaningful titles within my shownotes.</p></li>\r\n<li><p>It helped my to create meaningful descriptive links which will hopefully help accessibility for the visually impaired.</p></li>\r\n<li><p>I edited the text on this occasion in live preview mode I found this made it very easy to see how the final version would look.</p></li>\r\n<li><p>I think I ended up with more polished shownotes that hopefully needs fewer and hopefully no input from our band of HPR volunteers working behind the scenes.</p></li>\r\n</ul>\r\n',201,0,1,'CC-BY
(3265,'2021-02-05','My Chromebook Experience',525,'Adding my own perspective to the Chromebook discussion','<p>On January 5, 2021, Zen_Floater2 did an interesting show that you might call a virtual conversation with Klaatu. He took a show that Klaatu had done on the GNU World Order podcast about using Chromebooks, and interspersed his own comments. As I was listening I thought that I had a slightly different perspective, so I recorded this brief show about my own experience.</p>\r\n<h2 id=\"links\">Links</h2>\r\n<ul>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=3242\" class=\"uri\">https://hackerpublicradio.org/eps.php?id=3242</a></li>\r\n<li><a href=\"https://www.amazon.com/gp/product/B075S8YS87/\" class=\"uri\">https://www.amazon.com/gp/product/B075S8YS87/</a></li>\r\n<li><a href=\"https://www.palain.com/my-chromebook-experience/\" class=\"uri\">https://www.palain.com/my-chromebook-experience/</a></li>\r\n</ul>\r\n',198,0,0,'CC-BY-SA','Chromebooks',0,0,1),
(3258,'2021-01-27','Linux Inlaws S01E22: The Linux Professional Institute',4129,'The chaps host Evan Leibovitch from the LPI','<ul>\r\n<li>Linux Professional Institute: <a href=\"https://www.lpi.org\" target=\"_blank\">https://www.lpi.org</a></li>\r\n<li>Kali Linux: <a href=\"https://www.kali.org\" target=\"_blank\">https://www.kali.org</a></li>\r\n<li>Anti-pox of the week (Java is broken): <a href=\"https://stackoverflow.com/questions/2210720/how-to-analyse-a-noclassdeffounderror-caused-by-an-ignored-exceptionininitialize\" target=\"_blank\">https://stackoverflow.com/questions/2210720/how-to-analyse-a-noclassdeffounderror-caused-by-an-ignored-exceptionininitialize</a></li>\r\n<li>Book of Monsters: <a href=\"https://www.imdb.com/title/tt7260818\" target=\"_blank\">https://www.imdb.com/title/tt7260818</a></li>\r\n<li>Tucker and Dale vs. Evil: <a href=\"https://www.imdb.com/title/tt1465522\" target=\"_blank\">https://www.imdb.com/title/tt1465522</a></li>\r\n<li>The serpent (BBC series): <a href=\"https://en.wikipedia.org/wiki/The_Serpent_(TV_series)\" target=\"_blank\">https://en.wikipedia.org/wiki/The_Serpent_(TV_series)</a></li>\r\n<li>Grumpy Old Coders (epside 6): <a href=\"https://soundcloud.com/user-498377588/grumpy-old-coders-ep-6-retrospective\" target=\"_blank\">https://soundcloud.com/user-498377588/grumpy-old-coders-ep-6-retrospective</a></li>\r\n</ul>\r\n',384,111,1,'CC-BY-SA','Java screw-up, Linux Professional Institute, Zombies, Grumpies',0,0,1),
(3262,'2021-02-02','My thoughts on diversity in Linux and open source',2010,'I give some of my background story and certain frustrations I have experienced in life','<ol type=\"1\">\r\n<li>Lack of exposure to Linux and open source</li>\r\n<li>Lack of interest in Linux and open source</li>\r\n<li>Some experiences I had growing up</li>\r\n</ol>',297,0,0,'CC-BY-SA','linux, race, podcast, irc, telegram, technology, culture',0,0,1),
(3263,'2021-02-03','My Beginnings in Tech',1157,'Rambling about how I got in to technology and linux.','<p>Hiya! There aren\'tanylinksoranythingtoputhere,butputtingsomethingintheshownotesseemsimportant.</p>',390,0,1,'CC-BY-SA','Introduction,Linux,FirstShow',0,0,1),
(3264,'2021-02-04','Intro to Nagios',1200,'Introduce some nagios basics and walk through setting up nagios on Ubuntu','<h1 id=\"nagios-basics\">Nagios Basics</h1>\r\n<h2 id=\"introduction\">Introduction</h2>\r\n<p>I noticed nagios on the requested topics page. I am far from being an expert with nagios and there is a lot I do not know. I have a working knowledge of most of the basic nagios principles. So, hopefully, I can give a useful introduction and review some one the principles of nagios along the way</p>\r\n<p>Nagios is a network monitoring tool. You define some things for nagios to check, and nagios will alert you if those checks fail.</p>\r\n<p>Nagios has a web UI that is normally used to see the status of the checks. There are some basic administration tasks you can do from the web UI</p>\r\n<ul>\r\n<li>enabling/disabling notifications</li>\r\n<li>Scheduling Downtime</li>\r\n<li>Forcing immediate checks</li>\r\n</ul>\r\n<p>Nagios is primarily configured with text files. You have to edit the nagios config files for things like</p>\r\n<ul>\r\n<li>adding servers</li>\r\n<li>customizing commands</li>\r\n</ul>\r\n<h2 id=\"nagios-core-vs-nagiosxi\">Nagios core vs NagiosXI</h2>\r\n<p>NagiosXI is the commercial version of nagios. NagiosXI requires a paid license and includes support. NagiosXI has some extra features including wizards for adding hosts and easy cloning of hosts.</p>\r\n<p>I have used NagiosXI, and personally don\'tfindtheextrafeaturesveryuseful.ProbablythebiggestreasontouseNagiosXIisEnterprisethatrequirescommercialsupport</p>\r\n<p>The<code>community</code>versionofnagiosisnormallyreferredtoas<code>nagioscore</code>Thisepisodewillfocusonthenagioscore</p>\r\n<h2id=\"nagios-documentation\">NagiosDocumentation</h2>\r\n<p>Idon\'t like the official nagios core documentation. A lot like man pages, It is a good reference, but can be hard to follow.</p>\r\n<p>Maybe is it possible for someone to read the documentation and be able to install and configure nagios for the first time. But it took me a lot of trial and error to get a functional nagios server following the nagios documentation</p>\r\n<p>Outside of the official documentation, Most of the nagios installation guides I found online recommend downloading and building nagios from the nagios site. My general policy is to use OS provided packages whenever possible. Normally, sticking to packages eases long the term maintenance.</p>\r\n<p>You may not always get the latest feature release, but installation and updates are usually easier. I know not everyone will agree with me here, and will want to build the latest version. Regardless of the install method, most of the nagios principles I go over will still apply</p>\r\n<p>I am making the assumption that most listeners will be most familiar with Debian/Ubuntu, so I will go over installing nagios on Ubuntu using the nagios packages from the Ubuntu repository</p>\r\n<h2 id=\"hosts-and-services\">Hosts and Services</h2>\r\n<p>Before I go over the installation, I\'lltalkabitaboutsomeofthepiecesthatmakeupnagiosNagioschecksareforeitherhostsorservices.</p>\r\n<p>FromtheNagiosdocumentation</p>\r\n<blockquote>\r\n<p>Ahostdefinitionisusedtodefineaphysicalserver,workstation,device,etc.thatresidesonyournetwork.</p>\r\n</blockquote>\r\n<p>Alsofromthenagiosdocumentation</p>\r\n<blockquote>\r\n<p>Aservicedefinitionisusedtoidentifya\"service\"thatrunsonahost.Theterm\"service\"isusedveryloosely.Itcanmeananactualservicethatrunsonthehost(POP,SMTP,HTTP,etc.)orsomeothertypeofmetricassociatedwiththehost</p>\r\n</blockquote>\r\n<p>Normally,hostsarecheckedusingping.Ifthehostrespondstothepingwithinthespecifiedtimeframe,thehostisconsideredup.OnceahostisdefinedanddeterminedtobeUP,youcanoptionallycheckservicesonthathost</p>\r\n<h2id=\"installation-and-setup\">Installationandsetup</h2>\r\n<p>Installthepackages</p>\r\n<pre><code>aptinstallnagios4</code></pre>\r\n<p>On
(3267,'2021-02-09','Ripping Media 2021',1000,'I go over ripping webpage media','<ul>\r\n<li>android has newpipes for downloading youtube</li>\r\n<li>windows youtube-DL script:<br />\r\n<a href=\"https://github.com/freeload101/SCRIPTS/blob/master/Windows_Batch/Youtube-dl-ffmpeg-aria2c-updater-downloader.bat\" class=\"uri\">https://github.com/freeload101/SCRIPTS/blob/master/Windows_Batch/Youtube-dl-ffmpeg-aria2c-updater-downloader.bat</a></li>\r\n</ul>\r\n<p>ffmpeg notes:</p>\r\n<ul>\r\n<li><p>I started out by wanting to download facebook live streams and ended up missing it all together</p></li>\r\n<li><p>Reference (no longer live by the time I got online... ): <a href=\"https://www.facebook.com/FormulaDRIFT/videos/452016008942956/\" class=\"uri\">https://www.facebook.com/FormulaDRIFT/videos/452016008942956/</a></p></li>\r\n<li><p>live video looks like something about mpd files with facebook also looks like you need ffmpeg complied with --enable-libxml2</p></li>\r\n<li><p>this is where I found a WONDERFUL script <a href=\"https://github.com/jb-alvarado/media-autobuild_suite\" class=\"uri\">https://github.com/jb-alvarado/media-autobuild_suite</a></p></li>\r\n<li><p>also located other untested projects (pre compiled binaries ;/ ) <a href=\"https://www.videohelp.com/software/Hybrid\" class=\"uri\">https://www.videohelp.com/software/Hybrid</a></p></li>\r\n<li><p>windows binary of youtube-dl for facebook/twitch.tv and youtube etc ..<br />\r\n<a href=\"https://ytdl-org.github.io/youtube-dl/download.html\" class=\"uri\">https://ytdl-org.github.io/youtube-dl/download.html</a></p></li>\r\n<li><p>oneliner to download/run media-autobuild_suite to \"%userprofile%media-autobuild_suite-masterbuildffmpeg-gitbuild-static-64bit\"</p></li>\r\n</ul>\r\n<pre><code>powershell -Exec Bypass "IEX (New-Object System.Net.WebClient).DownloadFile('https://github.com/jb-alvarado/media-autobuild_suite/archive/master.zip',"%userprofile%desktopmaster.zip"); Expand-Archive -LiteralPath "%userprofile%desktopmaster.zip" -DestinationPath "%userprofile%desktop" ;Start-Process "%userprofile%desktopmedia-autobuild_suite-mastermedia-autobuild_suite.bat" "</code></pre>\r\n<ul>\r\n<li><p>this took over 8hrs to compile on a i7 I disabled items that had warnings and comments about issues and useless of codes that have issues etc</p></li>\r\n<li><p>missing libopenh264.dll when I launched ffmpeg_g.exe</p></li>\r\n<li><p>the dll was not built but I\'mnotsureit\'s something I messed up I\'msure</p></li>\r\n<li><p>onlypostIsawonlineaboutitwasthatit\'s useless and -full should never be used flaming etc</p></li>\r\n<li><p>start media-autobuild_suite-mastermsys64mingw64.exe and run the following</p></li>\r\n<li><p>Reference : <a href=\"https://bluexmas.tistory.com/category/OS\" class=\"uri\">https://bluexmas.tistory.com/category/OS</a> not sure what the flags were for but copied the DLL into the folder and it appears to run</p></li>\r\n</ul>\r\n<pre><code>git clone https://github.com/cisco/openh264.git\r\ncd openh264\r\nexport "CFLAGS=-fno-stack-protector"\r\nexport "LDFLAGS=-lssp"\r\nmake</code></pre>\r\n<ul>\r\n<li>also had to apply this fix for AR etc in platform-mingw_nt.mk folder</li>\r\n</ul>\r\n<pre><code>find / -iname "platform-mingw_nt.mk" -exec sed 's/x86_64-w64-mingw32-//g' -i.bak '{}' ;</code></pre>\r\n<pre><code>youtube-dl -f bestvideo+bestaudio "link to youtube video"</code></pre>\r\n<p>If that gives you an error, try the following instead:</p>\r\n<pre><code>youtube-dl -f 'bestvideo[ext=mp4]+bestaudio[ext=m4a]/bestvideo+bestaudio' --merge-output-format mp4 "link to youtube video"</code></pre>\r\n<p>Here you download the best video and audio separately and then merge into a, in this case mp4 file. You can change the output format on the merged video as well.</p>\r\n',36,0,1,'CC-BY-SA','ffmpeg,hacking,youtube-dl,media',0,0,1),
(3271,'2021-02-15','Interview with a 6yo child ',428,'I ask some basic questions to my 6yo','<p>Not really hacking but good times</p>',36,78,0,'CC-BY-SA','interviews,kids',0,0,1),
(3269,'2021-02-11','Linux Inlaws S01E23: The first year of the five year plan',2855,'The Inlaws review the first year: the highlights, lowlights and all the bloody rest','<ul>\r\n<li>Free software (not just Richard\'sidea):<ahref=\"https://www.gnu.org/philosophy/free-sw.html\"target=\"_blank\">https://www.gnu.org/philosophy/free-sw.html</a></li>\r\n<li>HowNvidiabecameSkynet:<ahref=\"https://hackerpublicradio.org/eps.php?id=3069\"target=\"_blank\">https://hackerpublicradio.org/eps.php?id=3069</a></li>\r\n<li>Hacktoberfest:<ahref=\"https://hacktoberfest.digitalocean.com\"target=\"_blank\">https://hacktoberfest.digitalocean.com</a></li>\r\n<li>Claudioandcrew:<ahref=\"https://hackerpublicradio.org/eps.php?id=3099\"target=\"_blank\">https://hackerpublicradio.org/eps.php?id=3099</a></li>\r\n<li>Notgoingout:<ahref=\"https://en.wikipedia.org/wiki/Not_Going_Out\"target=\"_blank\">https://en.wikipedia.org/wiki/Not_Going_Out</a></li>\r\n<li>AnAmericanPickle:<ahref=\"https://www.imdb.com/title/tt9059704/?ref_=fn_al_tt_2\"target=\"_blank\">https://www.imdb.com/title/tt9059704/?ref_=fn_al_tt_2</a></li>\r\n<li>MrsHoneyhume:<ahref=\"https://hackerpublicradio.org/eps.php?id=3251\"target=\"_blank\">https://hackerpublicradio.org/eps.php?id=3251</a></li>\r\n</ul>',384,111,1,'CC-BY-SA','communism,fiveyearplan,worlddomination,FOSS,Femke',0,0,1),
(3268,'2021-02-10','Video Game Review - Ark Survival Evolved',532,'Enigma reviews Ark survival evolved','<p>\r\nEnigma reviews <a href=\"https://ark.gamepedia.com/ARK_Survival_Evolved_Wiki\"> Ark Survival Evolved </a>, a multiplayer survival game for the xbox, PC and ps4 <br>\r\n<br>\r\nCome chat with us at irc.freenode.net #hackerexchange <br>\r\nFollow me on twitter @Ed_N1gma\r\n</p>',39,0,1,'CC-BY-SA','video, game, reviews',0,0,1),
(3272,'2021-02-16','In GNU/Linux, there is no \"diversity\", we\'realljustdata.',1032,'HowIexperiencedGNU/Linuxandthetopicof\"diversity\".','<p>I\'m just Some Guy On The Internet.</p>',391,0,1,'CC-BY-SA','GNU/Linux, GNU/Linux diversity',0,0,1),
(3273,'2021-02-17','Embrace Firefox',853,'That\'sOurBrowser!','<pre>\r\nHPR.config\r\n\r\nName:\"Darwin\"\r\nHandle:\"Some Guy on the Internet\"\r\nOccupation:\"Loiter on the Internet\"\r\nHobby:\"Freedom\"\r\n\r\nTitle:\"Embrace Firefox\"\r\nSummary:\"That’s Our Browser!\"\r\n</pre>',391,0,1,'CC-BY-SA','SomeGuyontheInternet,Darwin,Firefox',0,0,1),
(3266,'2021-02-08','Upgrading Debian on my raspberry pi',2001,'In this episode I cover the process of upgrading Debian from Jessie 8 to Stretch 9 on my raspberrypi','<h1 id=\"pi13-upgrade-from-jessie-8-to-stretch-9---performed-151220\">Pi13 upgrade from Jessie 8 to Stretch 9 - performed 15/12/20</h1>\r\n<h2 id=\"history\">History</h2>\r\n<p>Upgraded my raspberry pi 13, which I think had a minimal install Raspbian, Debian i.e. has no desktop installed. The Pi had a PiFaceIO board installed, <a href=\"https://hackerpublicradio.org/eps.php?id=2901\">refer to my previous HPR episode Hpr2901</a></p>\r\n<h2 id=\"backup-process-in-case-something-went-wrong\">Backup process, in case something went wrong</h2>\r\n<p>I first moved all the unnecessary files to free up as much space as possible</p>\r\n<p>Shrunk the Pi partition on the installed 128GB SD card down to 25106MB (24.52GB), (25708544K), 26,325,549,056 bytes using partition magic</p>\r\n<p>I calculated that this would be 51,417,088 blocks of 512 bytes</p>\r\n<p>I used <code>dd</code> to make an image file and grabbed some unallocated space after partition by using count=55417088, refer to the command below</p>\r\n<pre><code>sudo dd if=/dev/sdb of=/home/stuart/pi-13-img-backup.img bs=512 count=55417088</code></pre>\r\n<p>I used the following command to image files to a spare 64GB SD card</p>\r\n<pre><code>sudo dd if=/home/stuart/pi-13-img-backup.img of=/dev/sdb bs=512 status=progress</code></pre>\r\n<p>I then expanded the partition to fill the full 64GB of the card</p>\r\n<p>Booted from the 64GB card to make sure that I had a backup in case anything went wrong</p>\r\n<p>Removed the 64GB card which I can go back to if things don\'tworkout</p>\r\n<p>Bootedfrom128GBcardandexpandedthepartitionusingGpartedtofill128GBSDcard</p>\r\n<p>Iusedthe128GBSDcardtoperformtheupgrade,rememberIhave64GBcardtofallbackonifthingsgowrong</p>\r\n<h2id=\"upgrade-process\">Upgradeprocess</h2>\r\n<p><ahref=\"https://www.datenreise.de/en/raspberry-pi-raspbian-update-update-jessie-to-stretch/\">Sourceofinformationbelow</a></p>\r\n<p>Step1:Checkavailablediskspace</p>\r\n<p>InordertoupdatetoRaspbianStretch,theremustbeenoughspaceontheSDcard.Thereforeyoushouldchecktheavailableanduseddiskspaceusagefirst:</p>\r\n<pre><code>$df-h</code></pre>\r\n<p>Step2:Checkpackagestatus</p>\r\n<p>Youmustalsocheckthatallpackagesareinastatethatissuitableforupgrade.Thefollowingcommanddisplaysallpackagesthathavethestatussemi-installedorconfigurationfailed,andthosewitherrorstatus:</p>\r\n<pre><code>$sudodpkg--audit\r\n$sudodpkg--get-selections|grephold</code></pre>\r\n<p>Step3:Updatesystem</p>\r\n<p>Beforeupgrading,theRaspbianshouldbecompletelyupdated:</p>\r\n<pre><code>$sudoapt-getupdate\r\n$sudoapt-getupgrade\r\n$sudoapt-getdist-upgrade</code></pre>\r\n<p>Step4:ModifyRelease</p>\r\n<p>ForupgradingtothenewRaspbianversion,thepackagelistsmustbeadaptedtothe\"Stretch\"release.Todothis,onlytheword\"jessie\"hastobereplacedby\"stretch\".Inordernottooverlookanyposition,wesimplyletthereplacementbedonebythefollowingcommand:</p>\r\n<pre><code>$sudosed-i/deb/s/jessie/stretch/g/etc/apt/sources.list\r\n$sudosed-i/deb/s/jessie/stretch/g/etc/apt/sources.list.d/*.list</code></pre>\r\n<p>Step 5: Updating package lists</p>\r\n<p>The new package lists must then be updated and imported:</p>\r\n<pre><code>$ sudo apt-get update</code></pre>\r\n<p>Step 6: Update to \"Stretch\"</p>\r\n<p>Now we are ready to start the upgrade:</p>\r\n<pre><code>$ sudo apt-get upgrade\r\n$ sudo apt-get dist-upgrade</code></pre>\r\n<p>Step 7: Clean up installation</p>\r\n<p>Old, unnecessary packages are removed after the system update with the following commands:</p>\r\n<pre><code>$ sudo apt-get autoremove\r\n$ sudo apt-get autoclean</code></pre>\r\n<h2 id=\"what-was-reported-during-upgrade\">What was reported during upgrade</h2>\r\n<h3 id=\"repo-for-get_iplayer-no-longer
(3274,'2021-02-18','My Custom dwm Setup',2159,'Me talking about how I\'vecustomiseddwm,addedandremovedpatchesandwrittenvariousscripts.','<ul>\r\n<li>Intro-videoonyt,audioonhpr<ahref=\"https://youtu.be/EMFMyxYch14\">https://youtu.be/EMFMyxYch14</a></li>\r\n<li>WhoamI?arfab,clearnitesky,trumpetplanet</li>\r\n<li>myemailhaschangedsincemyfirsthprepisode-thankslavabit!</li>\r\n<li>Youcannowusehello@richcolq.xyz</li>\r\n<li>Mypreviousepisodewas<ahref=\"https://hackerpublicradio.org/eps.php?id=0618\">0618</a></li>\r\n</ul>\r\n<oltype=\"1\">\r\n<li>Storyofricingmyowndesktop:\r\n<ul>\r\n<li>Alwaysbeenintocustomisinglook/feel,neversatisfied</li>\r\n<li>FoundLukeSmithandlikedi3,madeownversion.</li>\r\n<li>Pandemichits!StartedlearningPython,JavaScriptbuthadnorealuseforthem...</li>\r\n<li>Madeawebsite(inspiredbydisconnectingfromsocialmedia)</li>\r\n<li>checkout<ahref=\"https://richcolq.xyz\">richcolq.xyz</a>and<ahref=\"https://github.com/clearnitesky\">github.com/clearnitesky</a></li>\r\n</ul></li>\r\n<li>WhatprogramsamIusing?\r\n<ul>\r\n<li>dwm(obviously)</li>\r\n<li>dmenu</li>\r\n<li>st</li>\r\n<li>surf/brave</li>\r\n<li>sxhkd-variousshortcutssortedbypurpose</li>\r\n<li>dunst</li>\r\n<li>sxiv/feh</li>\r\n<li>zathura</li>\r\n<li>mystatusstuffusingdwmstatscript</li>\r\n<li>alookin<code>~/.local/bin</code></li>\r\n<li>Irecentlylearnedaboutawkandrewrotealliconscriptswhichiswhatinspiredmetorecordthisepisode.</li>\r\n</ul></li>\r\n<li>Whatnext?\r\n<ul>\r\n<li>Isitnecessarytopatchdwm?Probablynot.<br/>\r\nI\'ve come to believe that the real value in these experiments has come from my custom status scripts and keyboard shortcuts - not from patching new features into dwm. It does what I need it to (manage windows!)</li>\r\n</ul></li>\r\n<li>Thanks for watching!</li>\r\n</ol>\r\n',138,0,1,'CC-BY-SA','dwm, suckless, linux, bash, cli',0,0,1),
(3276,'2021-02-22','Deepgeek\'sthoughtsaboutHDRadio',612,'KlaatureadsapostbyDeepgeek','<p>\r\nDeepgeek\'s thoughts about HD radio.\r\n</p>\r\n\r\n<h2>Links</h2>\r\n\r\n<ul>\r\n<li><a href=\"https://hdradio.com/broadcasters/engineering-support/high-quality-consistent-multicast-engineering/\" target=\"_blank\">multicast chart</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Sacd\" target=\"_blank\">en.wikipedia.org/wiki/Sacd</a></li>\r\n<li><a href=\"https://traffic.libsyn.com/secure/textfiles/Jason_Scott_Talks_His_Way_Out_Of_It_-_Episode_120.mp3\" target=\"_blank\">Jason Scott episode 120</a></li>\r\n</ul>\r\n\r\n',73,99,0,'CC-BY-SA','radio',0,0,1),
(3277,'2021-02-23','Microsoft in my Debian repo',272,'microsoft, raspberry pi, bash, script','<h2 id=\"raspberry-pi-foundation-added-vscode-repo-to-raspberry-os.\">Raspberry pi foundation added vscode repo to raspberry OS.</h2>\r\n<p>Raspberry Pi OS\'stried:</p>\r\n<ul>\r\n<li>RaspberryPiOS<br/>\r\n<ahref=\"https://www.raspberrypi.org/software/\"class=\"uri\">https://www.raspberrypi.org/software/</a></li>\r\n<li>Debian10<br/>\r\n<ahref=\"https://raspi.debian.net/\"class=\"uri\">https://raspi.debian.net/</a></li>\r\n<li>Fedora33<br/>\r\n<ahref=\"https://fedoraproject.org/wiki/Architectures/ARM/Raspberry_Pi#Downloading_the_Fedora_ARM_image\"class=\"uri\">https://fedoraproject.org/wiki/Architectures/ARM/Raspberry_Pi#Downloading_the_Fedora_ARM_image</a></li>\r\n</ul>\r\n<p>To try later:</p>\r\n<ul>\r\n<li><p>Arch for Arm<br />\r\n<a href=\"https://archlinuxarm.org/platforms/armv8/broadcom/raspberry-pi-4\" class=\"uri\">https://archlinuxarm.org/platforms/armv8/broadcom/raspberry-pi-4</a></p></li>\r\n<li><p>TPLink dongle. Actually, it has a 6-7 inch antenna for greater range.<br />\r\n<a href=\"https://www.amazon.com/Wireless-desktop-10-9-10-14-Archer-T2U/dp/B07P5PRK7J/\" class=\"uri\">https://www.amazon.com/Wireless-desktop-10-9-10-14-Archer-T2U/dp/B07P5PRK7J/</a><br />\r\n<a href=\"https://github.com/aircrack-ng/rtl8812au.git\" class=\"uri\">https://github.com/aircrack-ng/rtl8812au.git</a></p></li>\r\n</ul>\r\n<pre><code>sudo apt install dkms\r\n\r\ncd rtl8812au\r\n\r\nsudo make dkms_install</code></pre>\r\n<h2 id=\"references.\">References.</h2>\r\n<ul>\r\n<li><p>Gardiner Bryant (The Linux Gamer)<br />\r\n<a href=\"https://www.youtube.com/watch?v=TuYPIohzo2Y\" class=\"uri\">https://www.youtube.com/watch?v=TuYPIohzo2Y</a></p></li>\r\n<li><p>Found after this recording is a more in-depth way to remove Microsoft\'s hands from your Raspberry Pi OS.</p>\r\n<ul>\r\n<li>From Ham Radio operator KM4ACK<br />\r\n<a href=\"https://github.com/km4ack/pi-scripts\" class=\"uri\">https://github.com/km4ack/pi-scripts</a><br />\r\n<a href=\"https://raw.githubusercontent.com/km4ack/pi-scripts/417aaf3a9347c5e6a475071dcbbbe8cae68c1f75/removeMS\" class=\"uri\">https://raw.githubusercontent.com/km4ack/pi-scripts/417aaf3a9347c5e6a475071dcbbbe8cae68c1f75/removeMS</a></li>\r\n</ul></li>\r\n</ul>\r\n<p>The following code snippet was edited for readability.</p>\r\n<pre><code>#Hold raspberrypi-sys-mods package\r\nsudo apt-mark hold raspberrypi-sys-mods\r\n\r\n#Redirect calls to packages.microsoft.com to localhost\r\nsudo echo "0.0.0.0 packages.microsoft.com" >> /etc/hosts\r\n\r\n#remove MS Key file\r\nsudo rm -vf /etc/apt/trusted.gpg.d/microsoft.gpg\r\n\r\n#create empty dummy key file\r\nsudo touch /etc/apt/trusted.gpg.d/microsoft.gpg\r\n\r\n#lock the dummy key file\r\nsudo chattr +i /etc/apt/trusted.gpg.d/microsoft.gpg\r\n\r\n#comment out vscode.list\r\nsudo sed -i 's/deb/#deb/' /etc/apt/sources.list.d/vscode.list\r\n\r\n#lock the vscode.list file\r\nsudo chattr +i /etc/apt/sources.list.d/vscode.list</code></pre>\r\n',318,0,0,'CC-BY-SA','microsoft, raspberry pi, bash, script',0,0,1),
(3278,'2021-02-24','A Minor Victory Against Designed-In Obsolescence',513,'Extracting a bit more life out of a device that Apple would rather have you dump','<p>The Ipad2, at over 9 years old, is unsupported with security or any other kind of updates. Few apps in the App Store will run on its old version of IOS, and that operating system cannot be upgraded.</p>\r\n<p>As far as Apple are concerned an Ipad2 should have been sent to the scrap heap years ago. If you found its 16GB of storage wasn\'tenough,youweresupposedtodumpitandbuyanewoneasyoucouldn\'t add more. If you found that you couldn\'trunthelatestversionofyourfavouriteapps,dumpitandbuyanewoneasyoucouldn\'t upgrade the operating system to the required standard.</p>\r\n<p>Is it necessary to abide by this designed-in obsolescence? Beeza inherits an Ipad2 and decides to find out if he can get any serious use out of it or whether it really does need to be dumped.</p>',246,0,0,'CC-BY-SA','Ipad, Apple, Obsolescence, IOS, Hardware',0,0,1),
(3282,'2021-03-02','HP Laptop with AMD Ryzen 3 Mobile with Radeon Graphics',1637,'I talk about the specs of the laptop and a brief upgrade.','<h1 id=\"hp-laptop-with-amd-ryzen-3-mobile-processors-with-radeon-graphics\">HP Laptop with AMD Ryzen 3 Mobile Processors with Radeon Graphics</h1>\r\n<h3 id=\"hp-laptop-info\"><strong>HP Laptop Info.</strong></h3>\r\n<ul>\r\n<li><a href=\"https://support.hp.com/us-en/document/c06620370\" title=\"HP Customer Support, Knowledge Base\">model: 14-dk1025wm</a> (I own this model)</li>\r\n<li>Product ID: 1A491UA#ABA</li>\r\n<li>\r\n<ul>\r\n<li><a href=\"https://www.walmart.com/ip/HP-14-Ryzen-3-4GB-1TB-Laptop-Silver-Google-Classroom-Compatible/580075820\" title=\"HP Laptop - 14-dk1025wm\">Walmart Link 01</a></li>\r\n<li><a href=\"https://www.walmart.com/ip/HP-14-Ryzen-3-4GB-128GB-Laptop-Silver-Google-Classroom-Compatible/779578906\" title=\"HP Laptop - 14-dk1022wm\">Walmart Link 02</a></li>\r\n</ul></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/NATO_phonetic_alphabet\" title=\"Alfa, Brovo, Charlie,...you get it.\">NATO phonetic alphabet</a></li>\r\n</ul>\r\n<h3 id=\"specifications\"><strong>Specifications.</strong></h3>\r\n<ol>\r\n<li><p><a href=\"https://www.amd.com/en/products/apu/amd-ryzen-3-3250u\" title=\"AMD Ryzen 3 3250U Specifications\">AMD Ryzen 3 3250U</a> (2.6 GHz base clock, up to 3.5 GHz max boost clock, 1 MB L2 cache, 2 cores)</p>\r\n<ul>\r\n<li>CPU Cores: 2</li>\r\n<li>CPU Threads: 4</li>\r\n<li>GPU Cores: 3</li>\r\n<li>System Memory Specification: Up to 2400MHz (No need to go big, keep it simple and cheap.)</li>\r\n<li>Launch Date: 06/01/2020 (January 06, 2020)</li>\r\n</ul></li>\r\n<li><p>Memory/Ram: 4 GB DDR4-2400 SDRAM (1 x 4 GB)</p>\r\n<ul>\r\n<li><a href=\"https://en.wikipedia.org/wiki/ECC_memory\" title=\"wiki\">ECC</a> Type: Non-ECC</li>\r\n<li>Form Factor: <a href=\"https://en.wikipedia.org/wiki/SO-DIMM\" title=\"wiki\">SODIMM</a></li>\r\n<li>Pin Count: 260-pin</li>\r\n<li>PC Speed: PC4-19200</li>\r\n<li><strong>Ram is upgradable</strong> (Two slots)\r\n<ul>\r\n<li>Walmart has \"Maximum RAM Supported 4 GB\" for model: 14-dk1025wm; <em>this is false information.</em></li>\r\n<li><a href=\"https://www.amazon.com/Crucial-Single-PC4-19200-SODIMM-260-Pin/dp/B01BIWKP58\" title=\"Crucial DDR4-2400\">Amazon Link 01: 8 gb SODIMM</a></li>\r\n<li><a href=\"https://www.amazon.com/Crucial-DDR4-Laptop-Memory-CT8G4SFRA266/dp/B08C56KXQJ\" title=\"Crucial DDR4-2666\">Amazon Link 02: 8 gb SODIMM</a></li>\r\n</ul></li>\r\n<li><strong>Note:</strong>\r\n<ul>\r\n<li>Installed 16 GB ram but system only accepts/recognizes 14 GB ram. Attempted two different ram manufacture type (Crucial and PNY Ram)</li>\r\n</ul></li>\r\n</ul></li>\r\n<li><p>Video graphics: <a href=\"https://www.notebookcheck.net/AMD-Radeon-RX-Vega-3-GPU.278652.0.html\" title=\"Packaged with CPU/APU\">AMD Radeon Vega 3 Graphics</a></p></li>\r\n<li><p>Hard drive: <a href=\"https://shop.westerndigital.com/products/internal-drives/wd-blue-mobile-sata-hdd#WD5000LPCX\" title=\"Western Digital Blue 2.5 hdd 5400 rpm\">1 TB 5400 rpm SATA III HDD</a></p>\r\n<ul>\r\n<li>Also includes, SATA III 6 Gb/s, <a href=\"https://bytebitebit.com/wp-content/uploads/2020/02/m2-ssd-2230-2242-2260-2280-22110.png\" title=\"images\">M.2 2280</a> Slot for additional storage.\r\n<ul>\r\n<li><a href=\"https://www.amazon.com/Blue-NAND-500GB-SSD-WDS500G2B0B/dp/B073SBX6TY\" title=\"Amazon Link 01\">Western Digital Blue 500 GB M.2 2280 SSD.</a></li>\r\n<li><a href=\"https://www.amazon.com/Blue-NAND-500GB-SSD-WDS500G2B0A/dp/B073SBZ8YH\" title=\"Amazon Link 02\">Western Digital Blue 500 GB 2.5 inch SSD, SATA III 6 Gb/s,Up to 560 MB/s</a></li>\r\n</ul></li>\r\n</ul></li>\r\n<li><p>Wifi: Realtek RTL8821CE 802.11b/g/n/ac (1x1) and Bluetooth® 4.2 Combo.</p>\r\n<ul>\r\n<li>Open Source <a href=\"https://en.wikipedia.org/wiki/Dynamic_Kernel_Module_Support\" title=\"Noob Friendly\">DKMS</a> Drivers in <a href=\"https://ubuntu.com/\" title=\"Ubuntu\">Ubuntu</a> (and Ubuntu based <a href=\"https://www.howtogeek.com/132624/htg-explains-whats-a-linux-distro-and-
(3288,'2021-03-10','Linux Inlaws S01E25: The Grumpy Old Coders',3628,'Our heroes host an episode with an eclectic duo (not Waldorf or Statler)','<p>\r\nThis time our two heroes host an eclectic couple known as the grumpy old coders. Thomas, David, Martin and Chris\r\ndiscuss stealing, um, borrowing (and never giving back) of mottos and mascotts, programming languages including\r\nJava, Python and Rust woes and how they all arrived at podcasting. Never mind Chris revealing his true and\r\nonly heritage and other little-known secrets. Don\'tmissoutonthisepisodeforthefulllowdown(nevermind\r\ntheevenlowerdown.\r\n</p>\r\n<h3>Shownotes:</h3>\r\n<ul>\r\n<li>GrumpyOldCoders:<ahref=\"https://grumpy-old-coders.org\"target=\"_blank\">https://grumpy-old-coders.org</a></li>\r\n<li>TheDig:<ahref=\"https://www.netflix.com/de-en/title/81167887\"target=\"_blank\">https://www.netflix.com/de-en/title/81167887</a></li>\r\n<li>Oktoberfest:<ahref=\"https://www.oktoberfest.de/en\"target=\"_blank\">https://www.oktoberfest.de/en</a></li>\r\n<li>ErdingerHerbstfest(inGermanonly):<ahref=\"https://de.wikipedia.org/wiki/Erdinger_Herbstfest\"target=\"_blank\">https://de.wikipedia.org/wiki/Erdinger_Herbstfest</a></li>\r\n<li>F#: <a href=\"https://fsharp.org\" target=\"_blank\">https://fsharp.org</a></li>\r\n<li>Vulkan API: <a href=\"https://www.khronos.org/vulkan\" target=\"_blank\">https://www.khronos.org/vulkan</a></li>\r\n</ul>',384,111,1,'CC-BY-SA','OAPs, old coders, senior citizens, Bitterfeld, communism',0,0,1),
(3283,'2021-03-03','HPR RPG Club reviews Dead Earth',3150,'Escape reality by pretending you live in a dystopia','<p>\r\nKlaatu, Beni, and Mcnalu review the tabletop RPG game <strong>Dead Earth</strong>, a game published under the <a href=\"https://www.gnu.org/licenses/fdl-1.3.en.html\" target=\"_blank\">GNU Free Documentation License (GFDL)</a>.\r\n</p>\r\n\r\n<p>\r\nNext up is <a href=\"https://paizo.com/starfinder\" target=\"_blank\">Starfinder</a>, a space-themed game using the 3.5 edition D&D rules.\r\nIf you\'reinterestedinplaying,jointheHackerPublicRadiomailinglistoremailKlaatuatthisdomain.\r\n</p>\r\n\r\n\r\n',78,95,0,'CC-BY-SA','rpg,cyberpunk,post-apocalyptic',0,0,1),
(3284,'2021-03-04','Introduction to gdb',1420,'A really friendly introduction to Gnu Debugger','<p>\r\nFrustrated by gdb tutorials that are either too complicated or too simple? I think this might be an actually-useful tutorial to help you see how and why gdb can be useful. Anyway, it\'sthepathIfollowedtofindingauseforthemysteriousgdb,somaybeitwillworkforyou.\r\n</p>\r\n\r\n<p>\r\nTofollowalongwiththisepisode,here\'s some simple yet buggy code. This compiles but crashes when run.\r\n</p>\r\n\r\n<pre><code>\r\n#include <iostream>\r\n#include <stdlib.h> // rand\r\n#include <stdio.h> // printf\r\n\r\nusing namespace std;\r\n\r\nint main () {\r\n\r\nsrand (time(NULL));\r\nint penguin = rand() % 8;\r\ncout << "This is a message from your friendly coder\\n" << endl;\r\nint kiwi = 3;\r\n\r\nprintf(\"penguin is set to is %s\\n\", penguin);\r\nprintf(\"kiwi is set to is %s\\n\", kiwi);\r\n\r\n return 0;\r\n} // main\r\n</code>\r\n</pre>\r\n\r\n<p>\r\nTo compile it and see it crash, do this:\r\n</p>\r\n\r\n<pre><code>\r\n$ g++ example.cpp\r\n$ ./a.out\r\n</code></pre>\r\n\r\n<p>\r\nTo compile it with debug symbols so you can step through it in gdb, do this:\r\n</p>\r\n\r\n<pre><code>\r\n$ g++ -g -o debugtest example.cpp\r\n$ gdb debugtest\r\n</code></pre>\r\n\r\n<p>\r\nYou can now follow along with this tutorial.\r\n</p>\r\n\r\n<p>\r\n<em>For extra credit, try compiling this with clang++ instead!</em>\r\n</p>\r\n\r\n\r\n\r\n',78,84,0,'CC-BY-SA','programming, cpp, gdb, gcc',0,0,1),
(3295,'2021-03-19','Renewing a Let\'sEncryptcertforHomeNetworkuse',195,'Howtoupdateacertwhentheautomaticprocessesdon\'t work','<p>\r\nBack in <a href=\"https://hackerpublicradio.org/eps.php?id=3289\">hpr3289 :: NextCloud the hard way</a>, I showed you how to install a Let\'sEncryptSSLcertforuseonyourhomenetwork.Oneoftheproblemswasthefactthattheautomaticrenewtoolswon\'t work.\r\n</p>\r\n<p>\r\nToday I got a reminder email from Let\'sEncryptandIusedtheexactsamecommandtorenewitasIdidtocreateitinthefirstplace.Thetoolissmartenoughtoknowthisisarenewalprocess.\r\n</p>\r\n<p>\r\nOnethingIforgottodolasttimewastoremovethe<em>TXT</em>recordfromDNSafterIwasdone.SoIhadtodeletetherecordandwaitawhilefortheTimeToLive(TTL)toexpire.\r\n</p>\r\n<p>\r\nIsetaboutdoingachecklistsothenexttimetheprocesscanbeevenfaster.\r\n</p>\r\n<ol>\r\n<li>Runthecommand<pre>certbotcertonly--manual--preferred-challengesdns</pre></li>\r\n<li>DeployaDNSTXTrecordunderthename_acme-challenge.nextcloud.example.com</li>\r\n<li>Finishthechallenge.</li>\r\n<li>Whensuccessful,removetheDNSTXTrecordasit\'s not needed for another two months.</li>\r\n</ol>',30,0,0,'CC-BY-SA','SSL, Let\'sEncrypt,Intranet',0,0,1),
(3566,'2022-04-04','HPR Community News for March 2022',5485,'Dave and Ken talk about shows released and comments posted in March 2022','<style>\ntable td.shrink {\n white-space:nowrap\n}\n</style>\n\n<h2>New hosts</h2>\n<p>\nThere were no new hosts this month.\n</p>\n\n<h2>Last Month\'sShows</h2>\n<tableid=\"t01\">\n<tr>\n<th>Id</th>\n<th>Day</th>\n<th>Date</th>\n<th>Title</th>\n<th>Host</th>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3542\"target=\"_blank\">3542</a></strong></td>\n<td>Tue</td>\n<tdclass=\"shrink\">2022-03-01</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3542\"target=\"_blank\">TheWorstCarIEverHad</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0246.html\"target=\"_blank\">Beeza</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3543\"target=\"_blank\">3543</a></strong></td>\n<td>Wed</td>\n<tdclass=\"shrink\">2022-03-02</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3543\"target=\"_blank\">Idlethoughtsonwebbrowsers</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0399.html\"target=\"_blank\">dnt</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3544\"target=\"_blank\">3544</a></strong></td>\n<td>Thu</td>\n<tdclass=\"shrink\">2022-03-03</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3544\"target=\"_blank\">Allmymicrophones</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0268.html\"target=\"_blank\">AndrewConway</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3545\"target=\"_blank\">3545</a></strong></td>\n<td>Fri</td>\n<tdclass=\"shrink\">2022-03-04</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3545\"target=\"_blank\">HowImakecoffee</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0318.html\"target=\"_blank\">Archer72</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3546\"target=\"_blank\">3546</a></strong></td>\n<td>Mon</td>\n<tdclass=\"shrink\">2022-03-07</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3546\"target=\"_blank\">HPRCommunityNewsforFebruary2022</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0159.html\"target=\"_blank\">HPRVolunteers</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3547\"target=\"_blank\">3547</a></strong></td>\n<td>Tue</td>\n<tdclass=\"shrink\">2022-03-08</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3547\"target=\"_blank\">PasswordManagers</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0391.html\"target=\"_blank\">SomeGuyOnTheInternet</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3548\"target=\"_blank\">3548</a></strong></td>\n<td>Wed</td>\n<tdclass=\"shrink\">2022-03-09</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3548\"target=\"_blank\">MakeacustomGitcommand</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0078.html\"target=\"_blank\">klaatu</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3549\"target=\"_blank\">3549</a></strong></td>\n<td>Thu</td>\n<tdclass=\"shrink\">2022-03-10</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3549\"target=\"_blank\">LinuxInlawsS01E51:gitandstaticsitegenerators</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0384.html\"target=\"_blank\">monochromec</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3550\"target=\"_blank\">3550</a></strong></td>\n<td>Fri</td>\n<tdclass=\"shrink\">2022-03-11</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3550\"target=\"_blank\">Format;Copy;Diskcopy;Xcopy</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0198.html\"target=\"_blank\">Ahuka</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hac
(3299,'2021-03-25','Linux Inlaws S01E26: Make your Linux harder',2985,'Ever wanted to know about AppArmor and SELinux? Then this is your show!','<p>In this episode our two aging heroes discuss the proper temperature to\r\ndrink beer at (spoiler: it\'snot20degreesasCAMRAwouldmakeyoubelieve)\r\nandtheinsandoutsofbasicandenhancedsecurityonourbelovedoperating\r\nsystem.IfyoueverwantedtoknowmoreaboutLinuxSecurityModules,AppArmor\r\nandSELinuxandhowdamesofnegotiableaffectionsrelatetotheseconcepts,\r\nthisshowisforyou.</p>\r\n<h3>Shownotes:</h3>\r\n<ul>\r\n<li>CampaignforRealAle:<ahref=\"https://camra.org.uk/\"target=\"_blank\">https://camra.org.uk/</a>\r\n</li>\r\n<li>LinuxSecurityModules:<ahref=\"https://en.wikipedia.org/wiki/Linux_Security_Modules\"target=\"_blank\">https://en.wikipedia.org/wiki/Linux_Security_Modules</a>\r\n</li>\r\n<li>SELinux:<ahref=\"https://selinuxproject.org/page/Main_Page\"target=\"_blank\">https://selinuxproject.org/page/Main_Page</a>\r\n</li>\r\n<li>SELinuxonAndroid:<ahref=\"https://source.android.com/security/selinux\"target=\"_blank\">https://source.android.com/security/selinux</a>\r\n</li>\r\n<li>AppArmor:<ahref=\"https://gitlab.com/apparmor/apparmor/-/wikis/Documentation\"target=\"_blank\">https://gitlab.com/apparmor/apparmor/-/wikis/Documentation</a>\r\n</li>\r\n<li>RBACwithAppArmor:<ahref=\"https://gitlab.com/apparmor/apparmor/-/wikis/AppArmorRBAC\"target=\"_blank\">https://gitlab.com/apparmor/apparmor/-/wikis/AppArmorRBAC</a>\r\n</li>\r\n<li>Plan9:<ahref=\"https://9p.io/plan9\"target=\"_blank\">https://9p.io/plan9</a>\r\n</li>\r\n<li>Plan9fromOuterSpace:<ahref=\"https://www.imdb.com/title/tt0052077\"target=\"_blank\">https://www.imdb.com/title/tt0052077</a>\r\n</li>\r\n<li>Mandown:<ahref=\"https://www.imdb.com/title/tt2461520/?ref_=fn_tt_tt_2\"target=\"_blank\">https://www.imdb.com/title/tt2461520/?ref_=fn_tt_tt_2</a>\r\n</li>\r\n<li>TheMidnightGospel:<ahref=\"https://www.netflix.com/de-en/title/80987903\"target=\"_blank\">https://www.netflix.com/de-en/title/80987903</a>\r\n</li>\r\n</ul>\r\n',384,111,1,'CC-BY-SA','LinuxSecurityModules,DAC,MAC,AppArmor,SELinux,Plan9',0,0,1),
(3285,'2021-03-05','Upgrading Lubuntu on my Samsung N150 Plus netbook',1079,'Lubuntu 16.04 LTS to 20.04.1 LTS upgrade on ageing Samsung N150 Plus netbook.','<h1 id=\"samsung-n150-plus-upgrade-from-lubuntu-16.04-lts-to-lubuntu-20.04.1---performed-171220\">Samsung N150 Plus upgrade from Lubuntu 16.04 LTS to Lubuntu 20.04.1 - performed 17/12/20</h1>\r\n<h2 id=\"backup-and-prep-process\">Backup and prep process</h2>\r\n<ul>\r\n<li><p>Copied all documents and important files from Samsung laptop to removable hard drive. Used Lubuntu gui file manager which crashed at least twice, probably due to netbook limited RAM.</p></li>\r\n<li><p>Found out that a direct upgrade from 16.04 LTS to 20.04 LTS is not possible, refer to the following links.</p>\r\n<ul>\r\n<li><a href=\"https://askubuntu.com/questions/1214292/upgrade-path-from-16-04-to-20-04-lts-without-gui-change\">Upgrade path from 16.04 LTS to 20.04 LTS</a></li>\r\n<li><a href=\"https://ubuntu.com/about/release-cycle\">Ubuntu release-cycle</a></li>\r\n</ul></li>\r\n<li><p>Downloaded Lubuntu 20.04.1</p></li>\r\n<li><p>Found a spare 32GB USB stick and copied all the files that were on it to a removable hard drive.</p></li>\r\n<li><p>Opened downloaded Lubuntu image using Disk Image writer (1st time I\'veusedthis),wroteimageto32GBSD,foundprocessveryeasy</p></li>\r\n<li><p>OnSamsungnetbookhitF2atboottimetoselectbootfromUSB</p></li>\r\n<li><p>BootedfromUSBstickcontainingLUBUNTU20.04.1</p></li>\r\n</ul>\r\n<h2id=\"live-distro-1st-boot.\">Livedistro1stboot.</h2>\r\n<ul>\r\n<li><p>OncebootedIfoundthetrackpadspeedtobeveryslowandmyfirstattemptatadjustingthespeedinpreferencesmadenodifference.</p></li>\r\n<li><p>ConnectedtoWiFi,settingthisupseemedmuchmoreclunkythanpreviousconnectionmethod,howeveritdidwork.</p></li>\r\n<li><p>WenttoYoutubeandplayedsomevideo,everythingworkedfine,alsofoundthatvolumekeysonnetbookworked.</p></li>\r\n</ul>\r\n<h2id=\"install-process\">InstallProcess</h2>\r\n<ul>\r\n<li><p>Wentthroughinstallandselectedmanualpartitioning,</p></li>\r\n<li><p>Usedexistingswaponsda6andformatandmountednewLubunturootfilesystemonsda7replacing16.04with20.04.1</p></li>\r\n</ul>\r\n<h2id=\"after-first-boot\">Afterfirstboot</h2>\r\n<ul>\r\n<li><p>UponfirstbootwassurprisedthatithadrememberedmyWiFiconnectiondetailsandtoldmetherewereupdates</p></li>\r\n<li><p>ItaskedifIwantedtoperformafullupgradewithoutgivinganydetails.AtthetimeIdidn\'t know what this meant. I wasn\'tsureIwouldremainonanLTSorupgradeto20.10.AfterthefullupgradeIcheckOSreleaseusingthefollowingcommand.ThisconfirmedIwasstillrunning20.04LTS</p>\r\n<pre><code>cat/etc/os-release</code></pre></li>\r\n<li><p>Thelogonscreenhasdesktopoptions,bydefaultit\'s set to Lubuntu, I found this to be a bit slow and unresponsive also the screen decoration on terminals was rather clunky taking up unnecessary screen space.</p></li>\r\n<li><p>The next time I entered the logon screen I selected LXQT. I was pleased to find that this option was remembered. The netbook was now a bit more responsive though not quite as good as it was before the upgrade. The terminal screen was now much tidier and more usable.</p></li>\r\n<li><p>Preferences / LXQT settings / Keyboard and mouse / Mouse and Touch Pad / Acceleration speed now 5.0 think was 0.1, also selected single click to activate item</p></li>\r\n<li><p>Installed mc, ncdu, screen, pv, moc, ssh</p></li>\r\n<li><p>Generated RSA ssh keys and copied them to Pi13, they installed with no problems and allowed me to SSH into my Pi13.</p></li>\r\n<li><p>Copied all my files and documents from my portable hard drive back onto the laptop. This time I used mc \"Midnight Commander\" to copy the files back which I found much easier than using the GUI file manager the first time around. Midnight commander is an Ncurses file manager.</p></li>\r\n<li><p>I had forgotten just how good the ncurses file manager Midnight commander is.</
(3286,'2021-03-08','Wireguard How To',574,'My findings setting up wireguard at home and in my office at work.','<h2 id=\"wireguard-how-to\">Wireguard How To</h2>\r\n<p>Firstly, I am not an expert. These are just my findings setting up wireguard at home and in my office at work.</p>\r\n<p>I\'veusedaprogramcalled<code>sshuttle</code>for7/8yearstoattachmyselftomyhomeandworknetworkswhenonpublic/untrustednetworksorifIneedtoaccesssomeresourceatworkfromhome.</p>\r\n<p>Sshuttleforthemainpartworksgreatandthemainbenefitisthattheonlyportyoueverneedtoopenontheservernetworkiswhicheverportyouhaveyoursshserverrunningon.</p>\r\n<p>Thedownsidetosshuttleisthatitwon\'t work with my android devices so I\'vebeenusingapaidforVPNcalledPIAonuntrustednetworksorjuststayingon3g/4gandnothaveanywaytoconnecttomyhomeorworknetwork.</p>\r\n<p>SshuttleiswritteninpythonandafewweeksagoArchLinuxmovedtopython3.8whichbrokesshuttle.Thereisaworkaroundusingpyenvandabughasbeenfilledwiththepythonteamandait\'s already been fixed upstream <a href=\"https://bugs.python.org/issue35415\" class=\"uri\">https://bugs.python.org/issue35415</a>.</p>\r\n<p>Anyway.</p>\r\n<p>I thought it was about time I looked at setting up a proper VPN on my work network.</p>\r\n<p>So I spent a couple of hours reading up on openVPN and creating client and server certificates making a server config on the work server forwarding the port on the router to the server.</p>\r\n<p>Then I spent a couple more hours poking around trying to figure out why it wouldn\'twork.</p>\r\n<p>Ieventuallygaveupfrustrated.</p>\r\n<p>I\'m not blaming openVPN, I know it works for many many people, but I couldn\'tseewhatwaswrong.</p>\r\n<p>SoIdidwhatwealldoinasituationlikethis.</p>\r\n<p>Itooktosocialmedia,whichinmycaseismypleromaserverandpostedamessagetothefediverse.</p>\r\n<p><em>\"OpenVPN has fried my brain. Need booze\"</em><br/>\r\nThenIhadabeer,anicecoldStieglgoldbrauifIrememberright.</p>\r\n<p>Afewminuteslateramessagepoppedupfromtheru,itcontainedonewordwithasmileyface.Wireguard.</p>\r\n<p>NowIhadlookedatwireguardawhileago.YoumightrememberithittheheadlinesbecauseLinusTorvaldshadpraisedhowbeautifullywrittenthecodewasforit.Itturnsoutwhathesaidwas\"It\'s beautiful when compared to openVPN\'s code\".Backthenthehowtoguideswerereallyhard,formeanywaytofollow.</p>\r\n<p>TherewerejustexamplesoftwomachinesonthesameLANconnectedtogetherandIreallystruggledtogetmyheadarounditbeingserverlessandbothmachinesbeingpeerstoeachother;afterallopenVPNhasclientsandserversandevensshuttleonmylaptopconnectstoaservermachine.</p>\r\n<p>TherewhereacoupleofwikipagesthatIreadonChristmasEvethatgavemealightbulbmomentandsomeclarityonthewayitworked.SoIdecidedtotryandsetitup.</p>\r\n<p>Thearticlesacknowledgethatitisapeertopeertechnologyandthengoontocallonepeeraserverandtheotherpeertheclient.</p>\r\n<p>AlsoIwouldrecommendforyourfirstclientuseanandroiddevicewiththewireguardapp.It\'s more user friendly in that some of the config is auto filled for you and then you can export the config file and examine it in a text editor later to get a better handle on things.</p>\r\n<p>I\'mgoingtoassumethatyouhaveinstalledthewireguardpackagesforyoursystemandthatyouhavegivenyourserverastaticIPonyournetwork.</p>\r\n<p>I\'m using Arch linux on my servers but I see the Linode Debian \'howto\' works in the same way.</p>\r\n<p>So we are going to log into the server and start the setup.</p>\r\n<h3 id=\"st-create-private-and-public-keys\">1st create Private and Public keys</h3>\r\n<p>Create directory for Keys</p>\r\n<pre><code>cd ~\r\nmkdir wireguard\r\ncd wireguard</code></pre>\r\n<p>Create Server Keys</p>\r\n<pre><code>umask 077\r\nwg genkey | tee privatekey | wg
(3287,'2021-03-09','Quick tip',117,'Quick tip and HPR needs shows','<p><a href=\"https://f-droid.org/en/packages/com.github.axet.audiorecorder/\" class=\"uri\">https://f-droid.org/en/packages/com.github.axet.audiorecorder/</a></p>\r\n<p><em>Small drinking glass</em><br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3287/picture1.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3287/picture1_thumbnail.jpg\" alt=\"Small drinking glass\" /></a> <br/><small><small><em>Click the thumbnail to see the full-sized image</em></small></small></p>\r\n<p><em>Perfectly peeled eggs</em><br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3287/picture2.jpg\"><img src=\"https://hackerpublicradio.org/eps/hpr3287/picture2_thumbnail.jpg\" alt=\"Perfectly peeled eggs\" /></a> <br/><small><small><em>Click the thumbnail to see the full-sized image</em></small></small></p>\r\n',318,93,0,'CC-BY-SA','Cooking',0,0,1),
(3291,'2021-03-15','The New Audacity and Batch Processing Macros',501,'A brief look at at the new Audacity and how I got it working for me','<p>When Audacity upgraded it caused some changes that affected my use of it to prepare podcasts I listen to. I did find the answer, though, and I am sharing it with you.</p>\r\n<ul>\r\n<li><a href=\"https://hackerpublicradio.org/\" class=\"uri\">https://hackerpublicradio.org/</a></li>\r\n<li><a href=\"https://forum.audacityteam.org/\" class=\"uri\">https://forum.audacityteam.org/</a></li>\r\n<li><a href=\"https://www.youtube.com/watch?v=_DZeio_ansE\" class=\"uri\">https://www.youtube.com/watch?v=_DZeio_ansE</a></li>\r\n<li><a href=\"https://www.zwilnik.com/the-new-audacity-and-batch-processing-macros/\" class=\"uri\">https://www.zwilnik.com/the-new-audacity-and-batch-processing-macros/</a></li>\r\n</ul>\r\n',198,0,0,'CC-BY-SA','Audacity, macros, batch processing',0,0,1),
(3390,'2021-07-30','Intro to DOS Series',803,'We begin some technological archeology to explore the old warhorse, DOS.','<p>This Introduction to the series also serves as a brief recap of my early history with computers, and the path that brought me to where I am today.</p>\r\n<h2 id=\"links\">Links:</h2>\r\n<ul>\r\n<li><a href=\"https://www.ahuka.com/dos-lessons-for-self-study-purposes/\" class=\"uri\">https://www.ahuka.com/dos-lessons-for-self-study-purposes/</a></li>\r\n</ul>\r\n',198,117,0,'CC-BY-SA','DOS, early PC computing',0,0,1),
(3400,'2021-08-13','Normal Layer Modes: Normal, Dissolve, Color Erase',778,'We begin a look at the Layer Modes in GIMP','<p>Layer Modes, sometimes called Blending Modes, allow you to combine layers in a variety of ways. We\'llbeginwiththeNormalmodesandworkourwaythroughmany,butnotall,oftheLayerModesavailableonthelatest(atthetimeIwritethis)versionofGIMP,2.10.20.</p>\r\n<h2id=\"links\">Links:</h2>\r\n<ul>\r\n<li><ahref=\"https://docs.gimp.org/2.10/en/gimp-concepts-layer-modes.html\"class=\"uri\">https://docs.gimp.org/2.10/en/gimp-concepts-layer-modes.html</a></li>\r\n<li><ahref=\"https://www.ahuka.com/gimp/normal-layer-modes-normal-dissolve-color-erase/\"class=\"uri\">https://www.ahuka.com/gimp/normal-layer-modes-normal-dissolve-color-erase/</a></li>\r\n</ul>\r\n',198,113,0,'CC-BY-SA','GIMP,LayerModes,BlendingModes',0,0,1),
(3410,'2021-08-27','Operating Systems',828,'Here we look at what an operating system is, and how they developed historically.','<p>While the very first computers did not have operating systems, the lack of them made computers less efficient and more difficult to use. We look at the general history of operating systems before getting into the history of DOS. Then we look at some general principles of what operating systems do.</p>\r\n<h2 id=\"links\">Links:</h2>\r\n<ul>\r\n<li><a href=\"https://webopedia.com/\" class=\"uri\">https://webopedia.com/</a></li>\r\n<li><a href=\"https://webopedia.com/TERM/o/operating_system.html\" class=\"uri\">https://webopedia.com/TERM/o/operating_system.html</a></li>\r\n<li><a href=\"https://www.telegraph.co.uk/technology/0/worst-tech-predictions-of-all-time/thomas-watson-ibm-president-in-1943/\" class=\"uri\">https://www.telegraph.co.uk/technology/0/worst-tech-predictions-of-all-time/thomas-watson-ibm-president-in-1943/</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Time-sharing\" class=\"uri\">https://en.wikipedia.org/wiki/Time-sharing</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Multics\" class=\"uri\">https://en.wikipedia.org/wiki/Multics</a></li>\r\n<li><a href=\"https://webopedia.com/TERM/C/CPU.html\" class=\"uri\">https://webopedia.com/TERM/C/CPU.html</a></li>\r\n<li><a href=\"https://webopedia.internet.com/TERM/u/user_interface.html\" class=\"uri\">https://webopedia.internet.com/TERM/u/user_interface.html</a></li>\r\n<li><a href=\"https://dougengelbart.org/\" class=\"uri\">https://dougengelbart.org/</a></li>\r\n<li><a href=\"https://webopedia.internet.com/TERM/G/Graphical_User_Interface_GUI.html\" class=\"uri\">https://webopedia.internet.com/TERM/G/Graphical_User_Interface_GUI.html</a></li>\r\n<li><a href=\"https://www.amazon.com/Fumbling-Future-Invented-Personal-Computer/dp/1583482660\" class=\"uri\">https://www.amazon.com/Fumbling-Future-Invented-Personal-Computer/dp/1583482660</a></li>\r\n<li><a href=\"https://www.cryptonomicon.com/beginning.html\" class=\"uri\">https://www.cryptonomicon.com/beginning.html</a></li>\r\n<li><a href=\"https://www.ahuka.com/dos-lessons-for-self-study-purposes/dos-lesson-1-operating-systems/\" class=\"uri\">https://www.ahuka.com/dos-lessons-for-self-study-purposes/dos-lesson-1-operating-systems/</a></li>\r\n</ul>\r\n',198,117,0,'CC-BY-SA','DOS, early PC computing, operating systems',0,0,1),
(3420,'2021-09-10','Normal Layer Modes: Erase, Merge, and Split',606,'We continue our look at the Layer Modes in GIMP','<p>Layer Modes, sometimes called Blending Modes, allow you to combine layers in a variety of ways. We\'llbeginwiththeNormalmodesandworkourwaythroughmany,butnotall,oftheLayerModesavailableonthelatest(atthetimeIwritethis)versionofGIMP,2.10.20.</p>\r\n<h2id=\"links\">Links:</h2>\r\n<ul>\r\n<li><ahref=\"https://fontlibrary.org/\"class=\"uri\">https://fontlibrary.org/</a></li>\r\n<li><ahref=\"https://www.ahuka.com/gimp/free-public-domain-and-cc-assets/\"class=\"uri\">https://www.ahuka.com/gimp/free-public-domain-and-cc-assets/</a></li>\r\n<li><ahref=\"https://fontlibrary.org/en/font/fivefoldornamentsetc\"class=\"uri\">https://fontlibrary.org/en/font/fivefoldornamentsetc</a></li>\r\n<li><ahref=\"https://www.youtube.com/watch?v=17Iivi0tmug\"class=\"uri\">https://www.youtube.com/watch?v=17Iivi0tmug</a></li>\r\n<li><ahref=\"https://www.gimp-forum.net/Forum-GIMP\"class=\"uri\">https://www.gimp-forum.net/Forum-GIMP</a></li>\r\n<li><ahref=\"https://www.ahuka.com/gimp/normal-layer-modes-erase-merge-and-split/\"class=\"uri\">https://www.ahuka.com/gimp/normal-layer-modes-erase-merge-and-split/</a></li>\r\n</ul>\r\n',198,113,0,'CC-BY-SA','GIMP,LayerModes,BlendingModes',0,0,1),
(3430,'2021-09-24','Booting',724,'We look in detail at how early PCs booted.','<p>The boot process is a very particular system for taking a dead hunk of metal and silicon and turning it into an active computer. It is kind of remarkable, and in the DOS environment you really needed to know how it worked.</p>\r\n<h2 id=\"links\">Links:</h2>\r\n<ul>\r\n<li><a href=\"https://webopedia.com/TERM/B/BIOS.html\" class=\"uri\">https://webopedia.com/TERM/B/BIOS.html</a></li>\r\n<li><a href=\"https://webopedia.com/TERM/R/ROM.html\" class=\"uri\">https://webopedia.com/TERM/R/ROM.html</a></li>\r\n<li><a href=\"https://webopedia.com/TERM/C/CMOS.html\" class=\"uri\">https://webopedia.com/TERM/C/CMOS.html</a></li>\r\n<li><a href=\"https://webopedia.com/TERM/p/power_on_self_test.html\" class=\"uri\">https://webopedia.com/TERM/p/power_on_self_test.html</a></li>\r\n<li><a href=\"https://webopedia.com/TERM/M/MBR.html\" class=\"uri\">https://webopedia.com/TERM/M/MBR.html</a></li>\r\n<li><a href=\"https://webopedia.com/TERM/k/kernel.html\" class=\"uri\">https://webopedia.com/TERM/k/kernel.html</a></li>\r\n<li><a href=\"https://webopedia.com/TERM/s/shell.html\" class=\"uri\">https://webopedia.com/TERM/s/shell.html</a></li>\r\n<li><a href=\"https://webopedia.com/TERM/i/internal_command.html\" class=\"uri\">https://webopedia.com/TERM/i/internal_command.html</a></li>\r\n<li><a href=\"https://webopedia.com/TERM/b/batch_file.html\" class=\"uri\">https://webopedia.com/TERM/b/batch_file.html</a></li>\r\n<li><a href=\"https://www.ahuka.com/dos-lessons-for-self-study-purposes/dos-lesson-2-booting/\" class=\"uri\">https://www.ahuka.com/dos-lessons-for-self-study-purposes/dos-lesson-2-booting/</a></li>\r\n</ul>\r\n',198,117,0,'CC-BY-SA','DOS, early PC computing, boot process',0,0,1),
(3292,'2021-03-16','Squirrel FSF blog',2785,'The trouble with HUMANS and HUMAN things.... ','<ul>\r\n<li><p>Google Chrome OS<br />\r\n<a href=\"https://www.google.com/chromebook/chrome-os\" class=\"uri\">https://www.google.com/chromebook/chrome-os</a></p></li>\r\n<li><p>Dell Mini 10<br />\r\n<a href=\"https://www.dell.com/sr/business/p/inspiron-mini10z/pd\" class=\"uri\">https://www.dell.com/sr/business/p/inspiron-mini10z/pd</a></p></li>\r\n<li><p>ConnochaetOS - what\'sleftofit.<br/>\r\n<ahref=\"https://sourceforge.net/projects/connochaetos/\"class=\"uri\">https://sourceforge.net/projects/connochaetos/</a></p></li>\r\n<li><p>OpenBSDwebsite<br/>\r\n<ahref=\"https://www.openbsd.org/index.html\"class=\"uri\">https://www.openbsd.org/index.html</a></p></li>\r\n<li><p>EnablingaudioinOpenBSD<br/>\r\n<ahref=\"https://www.openbsd.org/faq/faq13.html\"class=\"uri\">https://www.openbsd.org/faq/faq13.html</a></p></li>\r\n<li><p>EnablingawebcaminOpenBSD<br/>\r\n<ahref=\"https://www.openbsd.org/faq/faq13.html#webcam\"class=\"uri\">https://www.openbsd.org/faq/faq13.html#webcam</a></p></li>\r\n<li><p>FuguIta - OpenBSD Live System<br />\r\n<a href=\"https://fuguita.org/\" class=\"uri\">https://fuguita.org/</a></p></li>\r\n<li><p>Linux Mint - LMDE 4 - Debbie<br />\r\n<a href=\"https://www.linuxmint.com/download_lmde.php\" class=\"uri\">https://www.linuxmint.com/download_lmde.php</a></p></li>\r\n<li><p>Bonus Material - CROWZ - Devuan based Crunchbang clone.<br />\r\n<a href=\"https://sourceforge.net/projects/crowz/\" class=\"uri\">https://sourceforge.net/projects/crowz/</a></p></li>\r\n</ul>\r\n',377,0,0,'CC-BY-SA','banning software, banning ideology, modernizing, re-evaluating, prejudice',0,0,1),
(3293,'2021-03-17','HPR RPG Club reviews Dungeon Raiders',3269,'Klaatu, Beni, and McNalu review an OSR DnD clone','<p>\r\nDungeon Raiders is a D&D \"retroclone\", designed to mimic old school gaming.\r\nIt\'sasimplesystem,butisit<em>too</em>simple?\r\nFindoutintoday\'s episode!\r\n</p>\r\n\r\n<p>\r\nYou can download Dungeon Raiders for free from <a href=\"https://www.drivethrurpg.com/product/99366/Dungeon-Raiders\">Drivethrurpg.com</a>\r\n</p>\r\n\r\n<p>\r\nYou can play games with the RPG club.\r\nSubscribe to the HPR mailing list to learn about our schedule, or email Klaatu at this domain.\r\n</p>\r\n',78,95,0,'CC-BY-SA','dnd,osr,tabletop,rpg',0,0,1),
(3301,'2021-03-29','K S P Kerbal Space Program! (Game)',2131,'400 hours into the game I talk about howto get into Kerbal Space Program!','<ul>\r\n<li>dont ever use return to launch pad or anything always use quick save and load etc .. quick save before launch etc...</li>\r\n<li>stay away from missions that are high altitudes/ and low speed etc ... for now. stick with ones that are ALT or SPEED only .. do both only if you are sure you can do it.</li>\r\n<li>use F12 to keep an eye on physics</li>\r\n<li>to EVA in space you need upgrade astronaut complex first ...</li>\r\n<li>hit the rest button in the build menu to reset all the stage to .. logical order</li>\r\n<li>My rules of thumb for parachutes:\r\n<ul>\r\n<li>Mk1s are good for a ton each.</li>\r\n<li>Radials and drogues are good for 1.5t each.</li>\r\n<li>Mk2s are good for 2t each.</li>\r\n</ul></li>\r\n<li><a href=\"https://www.youtube.com/watch?v=nprOvWBgsEM&t=1574\" class=\"uri\">https://www.youtube.com/watch?v=nprOvWBgsEM&t=1574</a></li>\r\n<li>build a plane to do \"conduct survey\" missions ...</li>\r\n<li>missing SAS buttons ? upgrade at tracking and mission control then level up your Pilot to 3 or use tech tree to unlock mod with SAS https://forum.kerbalspaceprogram.com/index.php?/topic/186853-most-efficient-way-to-level-up-pilots/</li>\r\n<li>try to just focuses on missions you can complete easily</li>\r\n<li>when you finish a mission keep an eye on the recovery mod or % at the end it will tell you in the report how much money you lost ....</li>\r\n<li>sub assembly <a href=\"https://www.youtube.com/watch?v=ZdUyKH4NC1M\" class=\"uri\">https://www.youtube.com/watch?v=ZdUyKH4NC1M</a></li>\r\n<li><a href=\"https://www.youtube.com/watch?v=RXKjt11vjps\" class=\"uri\">https://www.youtube.com/watch?v=RXKjt11vjps</a></li>\r\n<li><a href=\"https://www.youtube.com/watch?v=mqWppFJGbY8\" class=\"uri\">https://www.youtube.com/watch?v=mqWppFJGbY8</a> ( unlock tech tree )</li>\r\n<li>A good rule of thumb is to simply keep the ship between 200-300 m/s until you are above 12k meters so you aren\'tburningextrafueltogetthroughtheloweratmospherewhereyou\'re going to experience the most drag. <a href=\"https://m.youtube.com/playlist?list=PL-7ICWbZUDjlBrsHIS8mEEj3xIMUQwlp5\" class=\"uri\">https://m.youtube.com/playlist?list=PL-7ICWbZUDjlBrsHIS8mEEj3xIMUQwlp5</a>\r\n<ul>\r\n<li>different rockets work better in vacuum of Space</li>\r\n<li>for large payloads: Fuel Flow & Asparagus Staging | KSP Beginner\'sGuide</li>\r\n</ul></li>\r\n<li>NERVRocket:<ahref=\"https://www.youtube.com/watch?v=s90tSM0oowo\"class=\"uri\">https://www.youtube.com/watch?v=s90tSM0oowo</a></li>\r\n<li>223hrsandjustnowgettingtobuild/mechjebOK...</li>\r\n<li>COMranges<ahref=\"https://wiki.kerbalspaceprogram.com/wiki/CommNet\"class=\"uri\">https://wiki.kerbalspaceprogram.com/wiki/CommNet</a></li>\r\n<li>satbuild!<ahref=\"https://www.youtube.com/watch?v=OYCk_pYx_kE\"class=\"uri\">https://www.youtube.com/watch?v=OYCk_pYx_kE</a>:\r\n<ul>\r\n<li>AE-F33shell(faring)</li>\r\n<li>TR-V2decopuler</li>\r\n<li>dawnengine</li>\r\n<li>2xpb-x150xeono</li>\r\n<li>smallinlinereactionwheel</li>\r\n<li>z-200battery</li>\r\n<li>ra-15sat</li>\r\n<li>OK-T02probe(remotecontrol)</li>\r\n<li>communion16(forkerbalcoms)</li>\r\n<li>2xgigantorsolararray</li>\r\n</ul></li>\r\n<li>toggledebeisandcleanup!</li>\r\n<li><spanclass=\"citation\"data-cites=\"KSpaceAcademy\">@KSpaceAcademy</span><spanclass=\"citation\"data-cites=\"KSA_MissionCtrl\">@KSA_MissionCtrl</span>#KSP #KSP2 <span class=\"citation\" data-cites=\"SquadDevs\">@SquadDevs</span> <span class=\"citation\" data-cites=\"KerbalSpaceP\">@KerbalSpaceP</span></li>\r\n</ul>\r\n',36,0,0,'CC-BY-SA','Kerbal Space Program,KSP,games,space',0,0,1),
(3294,'2021-03-18','Update to MakeMKV to back up media',378,'Update to MakeMKV to back up media, now on Raspberry Pi','<p>This is an update on my previous episode <a href=\"https://hackerpublicradio.org/eps.php?id=3179\"><em>hpr3179 :: MakeMKV to back up media</em></a>.</p>\r\n<p>In the past month, MakeMKV.com has been updated to include Raspberry Pi support.</p>\r\n<h3 id=\"sources\">Sources:</h3>\r\n<ul>\r\n<li>MakeMKV on Linux post<br />\r\n<a href=\"https://forum.makemkv.com/forum/viewtopic.php?f=3&t=224\" class=\"uri\">https://forum.makemkv.com/forum/viewtopic.php?f=3&t=224</a></li>\r\n<li>MakeMKV on ARM release<br />\r\n<a href=\"https://forum.makemkv.com/forum/viewtopic.php?p=105912#p105912\" class=\"uri\">https://forum.makemkv.com/forum/viewtopic.php?p=105912#p105912</a></li>\r\n</ul>\r\n<p>It was a very uneventful \"It\'shere\"</p>\r\n<p><em>MakeMV on Raspberry Pi (ARM)</em><br />\r\n<a href=\"https://hackerpublicradio.org/eps/hpr3294/Picture1.png\"><img src=\"https://hackerpublicradio.org/eps/hpr3294/Picture1_thumbnail.png\" alt=\"MakeMVonRaspberryPi(ARM)\" /></a> <br/><small><small><em>Click the thumbnail to see the full-sized image</em></small></small></p>\r\n<pre><code>wget https://www.makemkv.com/download/makemkv-bin-1.16.1.tar.gz\r\nwget https://www.makemkv.com/download/makemkv-oss-1.16.1.tar.gz</code></pre>\r\n<p>Unpack both packages and starting from source package and do the following steps:</p>\r\n<p>For makemkv-oss package:</p>\r\n<pre><code>./configure\r\nmake\r\nsudo make install</code></pre>\r\n<p>For makemkv-bin package:</p>\r\n<pre><code>make\r\nsudo make install</code></pre>\r\n<p>Install ccextractor and necessary packages</p>\r\n<pre><code>sudo apt install libtesseract-dev autoconf sysconftool\r\n\r\ngit clone https://github.com/CCExtractor/ccextractor.git\r\ncd ccextractor/linux/\r\n./build</code></pre>\r\n<p>nnn: command line file browser with vim-like keybindings</p>\r\n<p><a href=\"https://github.com/jarun/nnn\" class=\"uri\">https://github.com/jarun/nnn</a></p>\r\n<p>Script to rip TV episodes</p>\r\n<p>makemkv.tv.sh</p>\r\n<pre><code>#!/bin/bash\r\n#echo "Series?"\r\nseries=Battlestar\r\necho "Series: $series"\r\necho "What Season is this?"\r\nread season\r\necho "Season: $season"\r\necho "Which disc # is this?"\r\nread disknum\r\necho "This is disk #$disknum"\r\necho "Starting with which episode?"\r\nread episode\r\n\r\neject -x20\r\nmkdir ""disc."$disknum"\r\nmakemkvcon mkv --progress=-same --minlength=2100 disc:0 all ""disc."$disknum"\r\ncd ""disc."$disknum"\r\n\r\n#episode=1\r\nepisode=$episode\r\nfor track in *.mkv\r\ndo\r\n mv $track $series"_S"$season"_D"$disknum"_E"$episode.mkv\r\n episode=$((episode+1))\r\ndone\r\n\r\ncd ..</code></pre>\r\n<p>Script to convert multiple episodes</p>\r\n<p>mkv2mkv_mult.sh</p>\r\n<pre><code>#!/bin/bash\r\nmkdir encoded\r\nfor i in *.mkv\r\ndo\r\n HandBrakeCLI --first-subtitle --subtitle-default=none -i $i -o "encoded"/"`basename -s .mkv $i`.mkv"\r\ndone</code></pre>\r\n<p>Before and after the rename loop</p>\r\n<p><em>Before rename</em><br />\r\n<img src=\"https://hackerpublicradio.org/eps/hpr3294/Picture2.png\" alt=\"Beforerename\" /></p>\r\n<p><em>After rename</em><br />\r\n<img src=\"https://hackerpublicradio.org/eps/hpr3294/Picture3.png\" alt=\"Afterrename\" /></p>\r\n',318,0,0,'CC-BY-SA','dvd, blu-ray, backup, nnn',0,0,1),
(3296,'2021-03-22','Spam Bot Honey Pot',364,'Implementing a honey pot style spam filter for your HTML forms','<p>In this episode of Hacker Public Radio, I will describe the method I chose to combat spam bots filling out my company\'scontactform.About99%ofthesubmissionswereceivearespam,whichmakesfilteringforvalidmessagespainful.Aftersomeresearchintodifferentmethods,Idecidedtogowiththehoneypotmethod.</p>\r\n<p>Thehoneypotmethodusesanextratextinputfieldtolurethespambotintofillingitout.TherearedifferentsuggestionsforhowtohidethisextrafieldfromvalidusersbyusingeitherjavascriptorCSS.Withjavascript,thehoneypotsectionoftheformisremovedfromtheDOMwhenthepageloads,hidingitfromyourusers.Theargumentforthismethodismostbotsdon\'t implement javascript, so the honey pot field will not be hidden from them. I think that is a valid argument but I didn\'twanttoincludeextrajavascriptinmypage--soIwentwiththeCSSmethod.</p>\r\n<p>TherearereferencesattheendoftheshownotestoacoupleofthearticlesIreadonimplementingthehoneypotwitheitherjavascriptorCSS.Mytakeawaywas,one,don\'t use the CSS display property set to the value of none to take the input out of the DOM. Sufficiently smart enough bots may know to scan for this, especially if applied directly to the element. Also don\'tnameyourclassessomethingobvioustoyourintentlike\"anti-spam-filter\".Myguessisthemajorityofthebotsouttherearen\'t that sophisticated, but I figured it couldn\'thurttofollowthosesuggestions.</p>\r\n<p>IwasalreadyusingBootstrapCSSforoursite,soIdecidedtouseBootstrap\'s \"sr-only\" class. This class is used for elements that you only want visible to screen readers. It takes the element and uses a combination of absolute positioning, setting the size and width to 1 pixel, setting a negative left margin, and hiding content overflow to prevent the honey pot showing up visually. I figured if the bot was scanning CSS for classes or properties, this wouldn\'ttriggeranywarnings.Itdoesbringuptheissueofhowtopreventimpactingtheexperienceofpeopleusingscreenreaders.Iappliedthearia-hiddenattributewithavalueoftruetothelabelelementsurroundingthehoneypotinputfield.\"[this] removes that element and all of its children from the accessibility tree.\"Sowenowhavethefieldhiddenbothvisuallyinthebrowserandfromassistivetechnologies.Giventheshortendofthestickaccessibilityusuallygets,IdoubtthereareanyspambotsscanningforthatARIAattribute.Fortheminorityofuserswhomightbeviewingwiththeclassiclynxbrowser,Iput\'For office use\'asthelabeltextbeforethehoneypot,hopingthiswouldgetthemessageacrosswithouttippingoffthebottotheintendedpurposeoftherelatedinputfield.</p>\r\n<p>Theothermainissuewiththismethodisthevalueofthenameattributeusedfortheinputfield.Somearguetouseobfuscatedvalueslike\"mmxxName\"insteadof\"name\",or\"sxysPhone\"for\"phone\".Apparentlysomebotswillskipfieldstheydon\'t recognize. By using more standard names for multiple honey pot fields, it easier to determine if it is a bot. The counter argument to this naming scheme is about the user experience, by obfuscating the name, then browsers won\'tauto-fillthevalidfieldsoftheform.Thisalsobringsupthematterofnotauto-fillingthespamfieldsbythebrowserofyourusers.Thisisdonebysettinganyofyourhoneypotinputelements\' \"autocomplete\" attributes to \"off\".</p>\r\n<p>So far this spam filtering method is working nicely. I currently send any messages flagged as spam to a different email address with the subject prepended with the words \"[Spam review]\". Once I am confident there are not that many false positives, I will just skip sending flagged messages. The one issue I have experienced with this method is when using the tab key to move through the form. Since the input field is only v
(3297,'2021-03-23','Nextcloud Application Updating',136,'Automatically Update Nextcloud Applications via Cron','<p>Simple method to autoupdate nextcloud apps. An email is sent as summary of actions.</p>\r\n<p>Scheduled for 5 AM Sunday - Cron Entry</p>\r\n<pre><code>MAILTO=MYEMAILADDRES@MYDOMAIN.com\r\n0 5 * * 0 /usr/bin/php /var/www/nextcloud/occ app:update --all 2>&1\r\n# * * * * * command to be executed\r\n# - - - - -\r\n# | | | | |\r\n# | | | | +----- day of week (0 - 6) (Sunday=0)\r\n# | | | +------- month (1 - 12)\r\n# | | +--------- day of month (1 - 31)\r\n# | +----------- hour (0 - 23)\r\n# +------------- min (0 - 59)</code></pre>\r\n',273,0,0,'CC-BY-SA','Nextcloud,SysAdmin,Admin',0,0,1),
(3298,'2021-03-24','Poisoning The Well',1505,'Shutdown the negativity in our community.','<p>Hot, off the cuff. You can leave feedback at <a href=\"mailto:Lyunpaw@gmail.com\" class=\"email\">Lyunpaw@gmail.com</a>; \"hpr04\" for the subject line. Emails are seen as plain text and are filtered. Maybe I\'lldoashowonemail;oopsnowIoweashow.</p>',391,0,0,'CC-BY-SA','GeneralContent.',0,0,1),
(3302,'2021-03-30','Input Methods on Ubuntu',924,'I\'maddingsomeinputmethodstoastandardUbuntu20.04install','<p>FirstIgotothe<em>LanguageSupport</em>window.Eithersearch(pressSuper/Windows,thentype)for\r\n\"Language Support\"andgotheredirectly,orsearchfor\"Region & Language\",gothere,thenclick\r\n\"Manage Installed Languages\".</p>\r\n<p>ThereIclick<em>Install/RemoveLanguages...</em>,checktheChineseIwant,thenclick<em>Apply</em>.</p>\r\n<p>ThenIaddthepackagesfortheinputmethodsIwant,eitherusingthecommandline(<code>aptinstall</code>)\r\northe<em>UbuntuSoftware</em>application:</p>\r\n<ul>\r\n<li>ChineseQuick:<code>ibus-table-quick-classic</code></li>\r\n<li>ChinesePinyin:<code>ibus-libpinyin</code></li>\r\n<li>Chinese(Cantonese)Jyutping:<code>ibus-table-jyutping</code></li>\r\n</ul>\r\n<p>Bonusinputmethod:</p>\r\n<ul>\r\n<li>Unicodeemoji:<code>ibus-typing-booster</code></li>\r\n</ul>\r\n<p>Nowforeachuserthatwantsaninputmethod,Isearchforandgoto<em>Region&Language</em>.Atthe\r\nbottomofthe<em>InputSources</em>sectionIclicktheplusbutton.Thedifferentinputmethodsarefound\r\nbyclickingdownintodifferentsublists.Clicktherightchoice,then<em>Add</em>:</p>\r\n<ul>\r\n<li>ChineseQuick:<em>Chinese</em>-><em>Chinese(QuickClassic)</em></li>\r\n<li>ChinesePinyin:<em>⋮</em>-><em>Other</em>-><em>Chinese(IntelligentPinyin)</em></li>\r\n<li>Chinese(Cantonese)Jyutping:<em>Chinese</em>-><em>Chinese(Jyutping)</em></li>\r\n<li>Unicodeemoji:<em>⋮</em>-><em>Other</em>-><em>Other(TypingBooster)</em></li>\r\n<li>EurKEY:<em>English(UnitedStates)</em>-><em>EurKEY(USbasedlayoutwithEuropeanletters)</em></li>\r\n</ul>\r\n<p>TheEurKEYlayoutispartofthestandardEnglishlanguagesupportinUbuntu.</p>\r\n<p>Finally,toenableunicodecoloremojiascompletionsuggestions,switchtotheTypingBoostermode\r\nbypressingSuper/Windows+Spacerepeatedlyuntilyouseetherocketinyournotificationarea.Click\r\ntherocket-><em>Unicodesymbolsandemojipredictions</em>-><em>On</em>.</p>\r\n<p>IoweyouafollowupepisodeonceIfigureouthowtomakethisworkforGuixapplicationsrunning\r\ninsideUbuntu.</p>\r\n<hr>\r\n<p>ThisepisodewasbasedonaFediversethread:<br><ahref=\"https://libranet.de/display/0b6b25a8-6760-517c-52c9-654926232346\">https://libranet.de/display/0b6b25a8-6760-517c-52c9-654926232346</a></p>\r\n<p>Referencesforyourfurtherstudy:</p>\r\n<ul>\r\n<li><ahref=\"https://en.wikipedia.org/wiki/Intelligent_Input_Bus\">IBus</a>isaninputmethodprotocolforthe\r\nGNU/Linuxdesktop.Otherprotocolssupportedare<ahref=\"https://en.wikipedia.org/wiki/Xim\">XIM</a>,\r\n<ahref=\"https://en.wikipedia.org/wiki/Smart_Common_Input_Method\">SCIM</a>,\r\n<ahref=\"https://en.wikipedia.org/wiki/Fcitx\">fcitx</a>and<ahref=\"https://en.wikipedia.org/wiki/Uim\">uim</a>.You\r\nhavetochooseoneofthesetouseforallyourinputmethods,butthemostcommoninputmethods\r\nexistatleastforIBusandthefirstthreeoftherest,sothisisnotasmuchalimitationas\r\nitsoundslike.</li>\r\n<li>Quickisasimplificationofthe\r\n<ahref=\"https://en.wikipedia.org/wiki/Cangjie_input_method\">Cangjieinputmethod</a>.Cangjieassigns\r\nradicals,charactercomponents,to24keysonthealphabetickeyboard,andyoucombinetheseinto\r\nacharacter.InQuickyoucombinetwoandthenchooseacompletionfromalist.</li>\r\n<li><ahref=\"https://en.wikipedia.org/wiki/Pinyin\">Pinyin</a>isaromanization,aLatinalphabeticspelling,\r\nfor<ahref=\"https://en.wikipedia.org/wiki/Standard_Chinese\">StandardChinese</a>(Mandarin).</li>\r\n<li><ahref=\"https://en.wikipedia.org/wiki/Jyutping\">Jyutping</a>isoneof\r\n<ahref=\"https://en.wikipedia.org/wiki/Hong_Kong_Government_Cantonese_Romanisation\">many</a>\r\n<ahref=\"https://en.wikipedia.org/wiki/Yale_romanization_of_Cantonese\">romanizations</a>\r\n<ahref=\"https://en.wi
(3303,'2021-03-31','Slackware on RaspberryPi',1182,'An alternative to raspberrypi os','<h3 id=\"a-little-history\">a little history</h3>\n<ul>\n<li>slackware on arm started by stuart winter in 2002</li>\n<li>became an official port of slackware in 2009</li>\n<li>lots of info at the video podcast on youtube</li>\n</ul>\n<h3 id=\"why-choose-slackware\">why choose slackware</h3>\n<ul>\n<li>can do minimal installs easy</li>\n<li>education</li>\n<li>stable and secure</li>\n</ul>\n<h3 id=\"who-should-avoid-slackware\">who should avoid slackware</h3>\n<ul>\n<li>unwilling or unable to read and follow directions</li>\n<li>if you think your leet when you use apt instead of apt-get</li>\n<li>if you think commands like dd are \'scary\'</li>\n</ul>\n<h3 id=\"howto\">howto</h3>\n<ul>\n<li>there is no official port of slackware arm to raspberrypi</li>\n<li>i think this is because of raspberrypi has a non standard way of booting compared to most arm devices</li>\n<li>community has stepped in</li>\n</ul>\n<h4 id=\"on-the-slackware-documentation-project-website-there-are-manual-install-projects\">on the slackware documentation project website there are \'manual\' install projects</h4>\n<ul>\n<li>took a while, had to download firmware from the raspberrypi project itself</li>\n<li>quite a bit of cleanup</li>\n<li>this is the guide if you want slackware on a pi-zero</li>\n</ul>\n<h4 id=\"link-to-the-sarpi-project\">link to the sarpi project</h4>\n<ul>\n<li>guy named phil project lead, started in 2012</li>\n<li>the sarpi project is also a manual process</li>\n<li>even if you don\'tdothisyoushouldlookatthewebsitecontent,thisisthewaytodoatutorial</li>\n<li>afteryoudownloadthesourcesthisinstallisexactlylikeanyotherslackwareinstall</li>\n<li>whenyougettothepackageselectionitseasytocustomize</li>\n</ul>\n<h3id=\"after-install\">afterinstall</h3>\n<ul>\n<li>youhaveacompletedevelopmentenvironment</li>\n<li>bepreparedtoupyoursearchfoo</li>\n<li>manypackagescanbebuiltfromslackbuilds</li>\n</ul>\n<p>Theonlymistakesyoucan\'t learn from are, your own fatal mistakes</p>\n<h2 id=\"links\">Links</h2>\n<ul>\n<li><a href=\"https://arm.slackware.com/\" class=\"uri\">https://arm.slackware.com/</a></li>\n<li><a href=\"https://sarpi.fatdog.eu/\" class=\"uri\">https://sarpi.fatdog.eu/</a></li>\n<li><a href=\"https://www.youtube.com/channel/UCabC1NZDGA3FZXf2hQ-6uyA/featured\" class=\"uri\">https://www.youtube.com/channel/UCabC1NZDGA3FZXf2hQ-6uyA/featured</a></li>\n<li><a href=\"https://docs.slackware.com/howtos:hardware:arm:start\" class=\"uri\">https://docs.slackware.com/howtos:hardware:arm:start</a></li>\n<li><a href=\"https://slackbuilds.org\" class=\"uri\">https://slackbuilds.org</a></li>\n</ul>\n',326,0,0,'CC-BY-SA','raspberry pi, slackware',0,0,1),
(3309,'2021-04-08','Linux Inlaws S01E27: The Big Uncertainties in Life and beyond',3417,'The two chaps discuss uncertainties and beyond in this episode on probabilistic data structure','<p>In this episode, our two heroes explore the realm of the great uncertainties also known as probabilistic data structures. For this adventures they managed to retain one of the experts in this field from the open source realm. Check out the episode to get in on this secret and its details!</p>\r\n<h3>Links:</h3>\r\n<ul>\r\n<li>Probabilistic data structures (PDS): <a href=\"https://en.wikipedia.org/wiki/Category:Probabilistic_data_structures\" target=\"_blank\">https://en.wikipedia.org/wiki/Category:Probabilistic_data_structures</a>\r\n</li>\r\n<li>Hash functions: <a href=\"https://en.wikipedia.org/wiki/Hash_function\" target=\"_blank\">https://en.wikipedia.org/wiki/Hash_function</a>\r\n</li>\r\n<li>Bloom / cuckoo filters: <a href=\"https://bdupras.github.io/filter-tutorial\" target=\"_blank\">https://bdupras.github.io/filter-tutorial</a>\r\n</li>\r\n<li>Scalable Bloom filter: <a href=\"https://www.waitingforcode.com/big-data-algorithms/scalable-bloom-filter/read\" target=\"_blank\">https://www.waitingforcode.com/big-data-algorithms/scalable-bloom-filter/read</a>\r\n</li>\r\n<li>redis module: <a href=\"https://oss.redislabs.com/redisbloom\" target=\"_blank\">https://oss.redislabs.com/redisbloom</a>\r\n</li>\r\n<li>HyperLogLog: <a href=\"https://en.wikipedia.org/wiki/HyperLogLog\" target=\"_blank\">https://en.wikipedia.org/wiki/HyperLogLog</a>\r\n</li>\r\n<li>PDS Foundation: <a href=\"https://www.amazon.de/Probabilistic-Data-Structures-Algorithms-Applications/dp/3748190484\" target=\"_blank\">https://www.amazon.de/Probabilistic-Data-Structures-Algorithms-Applications/dp/3748190484</a>\r\n</li>\r\n</ul>\r\n',384,111,1,'CC-BY-SA','Probabilistic data structures,PDS',0,0,1),
(3305,'2021-04-02','Nagios part 2',1428,'Follow up to hpr3264 - Notifications, SNMP, Remote Checks','<p>I did not get any feed back on my first nagios episode, so I can only assume that I perfectly explained what nagios is. And my installation instructions were so good, that no one had any questions. So I will move on to some additional nagios topics.</p>\r\n<h2 id=\"why-use-nagios\">Why use nagios</h2>\r\n<p>One thing I meant to talk about but forgot in the intro is why you may want to run nagios as a hobbyist.</p>\r\n<ul>\r\n<li>Education, learning a new technology for fun</li>\r\n<li>Network Monitoring is a valuable skill and benefit your career if you work in IT</li>\r\n<li>Early warning for failing hardware</li>\r\n<li>Monitoring self hosted applications</li>\r\n<li>Notification for home security devices IP cameras</li>\r\n</ul>\r\n<p>Most of the benefits of nagios are not specific to nagios. There are plenty of other options for monitoring, and all of them are worth exploring.</p>\r\n<h2 id=\"notification-options\">Notification Options</h2>\r\n<h3 id=\"email\">Email</h3>\r\n<p>I had planned on discussing how to set up postfix to send emails. But, that is such a big topic I will have to skip it. I will instead talk about what I do to send email. And Maybe you can do something similar.</p>\r\n<p>Spammers have ruined the ability to directly send email. Most residential ISPs block port 25 outbound to prevent malware from sending email. Some Virtual hosting providers may not block sending mail, but many mail servers will not accept mail from VPS IP ranges.</p>\r\n<p>There are a few ways to get around this problem. I use the email delivery service <code>Sendgrid</code>. They do all the work of staying off the list of spammers, and most email providers trust mail send via Sendgrid.</p>\r\n<p>I wont go into the instructions for configuring postfix to relay outgoing mail via Sendgrid, but their documentation is easy to follow.</p>\r\n<p>There are plenty of services like sendgrid. And most have a free tier. So unless you are blasting out alerts you probably will not have to pay. If you want to send alerts from nagios via email, I recommend finding a email sending service that works for you.</p>\r\n<h3 id=\"push-alerts\">Push alerts</h3>\r\n<p>There are a few options (besides email) for getting alerts on your phone.</p>\r\n<h4 id=\"anag\">aNag</h4>\r\n<p>The easiest way to get alerts is probably the <code>aNag</code> Android app. aNag connects to the nagios UI to get status updates. It can be configured to check in periodically and there generate notifications for failed checks.</p>\r\n<p>One downside to aNag is the phone has to be able to connect to the nagios server. So, if nagios is on a private network, you will need a VPN when you are not on the same network.</p>\r\n<p>If you decide to put nagios on a public network, be sure to configure apache to only use HTTPS. <code>certbot</code> makes this really easy.</p>\r\n<h4 id=\"pushover\">Pushover</h4>\r\n<p>Another option is to us a Push Notification service that can send notifications that are triggered by API calls.</p>\r\n<p>I like to use the pushover.net You pay $5 when you download the pushover app from the app store, and then notifications are sent for free. They offer a 30 day trial if you want to evaluate the service.</p>\r\n<p>To use pushover, we will add a new contact to nagios. The command for the pushover contact is a script that calls the pushover API via curl.</p>\r\n<p>Remember from the previous episode, nagios has a <code>conf.d</code> directory and will load any files in that directory. So we will create a new file <code>/etc/nagios4/conf.d/pushover.cfg</code> and restart nagios. The contents of the pushover file will be in the show notes.</p>\r\n<p>To use pushover for specific checks, and the contact to that check. See the example in the show notes. Or if you want to use pushover for everything Modify the definitions for the host and service templates to use pushover as a contact</p>\r\n<p>The script that calls the Pushover API is at <code>https://github.c
(3307,'2021-04-06','Git worktree',1507,'How to use git worktree','<h2>Create a new worktree</h2>\r\n\r\n<pre><code>\r\n$ git branch | tee\r\n* dev\r\ntrunk\r\n$ git worktree add -b hotfix ~/demo/penguin.tree trunk\r\nPreparing ../penguin.tree (identifier penguin.tree)\r\nHEAD is now at 62a2daf commit\r\n</code>\r\n</pre>\r\n\r\n<h2>List existing worktrees</h2>\r\n\r\n<pre><code>\r\n$ git worktree list\r\n/home/tux/demo/penguin.git 15fca84 [dev]\r\n/home/tux/demo/penguin.tree 09e585d [trunk]\r\n</code>\r\n</pre>\r\n\r\n<h2>Move a worktree</h2>\r\n\r\n<pre><code>\r\n$ git worktree move penguin.tree ~/Temp\r\n</code>\r\n</pre>\r\n\r\n<h2>Remove a worktree</h2>\r\n<pre><code>\r\n$ git worktree remove penguin.tree\r\n</code>\r\n</pre>\r\n\r\n',78,104,0,'CC-BY-SA','git,tree,trunk,branch',0,0,1),
(3311,'2021-04-12','Bradley M. Kuhn\'sarticlefrom2019onRichardM.Stallman',1584,'Thistexttospeecharticlerequireslistenerdiscretion.','<hr/>\r\n<h3>CounterPoint</h3>\r\n<p>Thisshowhasacounterpoint:<ahref=\"https://hackerpublicradio.org/eps.php?id=3316\">hpr3316::FSFandRMSonelectionofRichardStallman</a>\r\n</p>\r\n<hr/>\r\n\r\n<p>WarningThisshowcontainsinformationthatmaynotbesuitableforall.Listenerdiscretionisadvised.</p>\r\n<p>RecentlyRichardM.Stallman,announcedthathehasrejoinedtheFreeSoftwareFoundation’sboardofdirectors.An<ahref=\"https://rms-open-letter.github.io/\">openletterongithub</a>calledforhimtoberemovedagain,andfortheFSF’sentireboardtoresign.</p>\r\n<p>Whenheresignedin2019,BradleyM.Kuhn(fromthe<ahref=\"https://faif.us/\">FreeasinFreedompodcast</a>)wroteanarticletitled\"On Recent Controversial Events\"abouttheissue.IamsubmittingthatarticlehereunderthetermsoftheCreativeCommonsAttribution-ShareAlike3.0UnitedStatesLicense.Thepostcontainsmanylinksandisavailableintheshownotesforthisshow.Someexamplesareincludedattheendoftheblogpost,andlistenerdiscretionisadvised.</p>\r\n<h1>\r\n<ahref=\"https://ebb.org/bkuhn/blog/2019/10/15/fsf-rms.html\">OnRecentControversialEvents</a>\r\n</h1>\r\n<pclass=\"topAttributionWithDate\">\r\nTuesday15October2019byBradleyM.Kuhn\r\n</p>\r\n<p>\r\nThelast33dayshavebeenunprecedentedlydifficultforthesoftwarefreedomcommunityandformepersonally.Folkshavebeenemailing,phoning,texting,taggingmeonsocialmedia(—thelastofwhichhasbeenfunny,becauseallmysocialmediaaccountsareplaceholderaccounts).But,justabouteveryonehasurgedmetocommentontheseriousissuesthatthesoftwarefreedomcommunitynowfaces.Untilnow,Ihavestayedsilentregardingallthesecurrenttopics:fromRichardM.Stallman(RMS)’spublicstatements,to<ahref=\"https://www.fsf.org/news/richard-m-stallman-resigns\">hisresignationfromtheFreeSoftwareFoundation(FSF)</a>,totheEpsteinscandalanditsconnectiontoMIT.I’vealsoavoidedgenerallycommentingonsoftwarefreedomorganizationalgovernanceduringthisperiod.Ididthisforgoodreason,whichisexplainedbelow.However,inthisblogpost,InowsharemyprimarycommentsonthemattersthatseemtocurrentlybeoftheutmostattentionoftheOpenSourceandFreeSoftwarecommunities.\r\n</p>\r\n<p>\r\nIhavebeensilentthelastmonthbecause,untiltwodaysago,Iwasanat-largememberof<ahref=\"https://www.fsf.org/about/staff-and-board\">FSF’sBoardofDirectors</a>,anda<ahref=\"https://static.fsf.org/nosvn/fsf-amended-bylaws-current.pdf\">VotingMember</a>oftheFSF.AsamemberofFSF’stwoleadershipbodies,IwasabidingbyareasonablerequestfromtheFSFmanagementandmydutytotheorganization.Specifically,theFSFaskedthatallcommunicationduringthecrisis<ahref=\"https://www.fsf.org/news/richard-m-stallman-resigns\">come</a><ahref=\"https://www.fsf.org/news/fsf-and-gnu\">directly</a>fromFSFofficersandnotfromat-largedirectorsand/orVotingMembers.Furthermore,theFSFmanagementaskedallDirectorsandVotingMemberstoremainsilentonthisentirematter—evenonissuesonlytangentiallyrelatedtothecurrentsituation,andevenwhenspeakinginourowncapacity(e.g.,onourownblogslikethisone).TheFSFisanimportantorganization,andItakeanyrequestfromtheFSFseriously—soIabidedfullywiththeirrequest.\r\n</p>\r\n<p>\r\nThesituationwasfurthercomplicatedbecausefolksatmyemployer,SoftwareFreedomConservancy(whereIalsoserveonthe<ahref=\"https://sfconservancy.org/about/board/#bkuhn\">BoardofDirectors</a>)hadstrongopinionsaboutthismatteraswell.Fortunately,theFSFandConservancybothhadalreadycreatedclearprotocolsforwhatIshoulddoifevertherewasadisagreementordivergenceofviewsbetweenConservancyandFSF.Ithereforewasrecused
(3304,'2021-04-01','Newsflash 21/01/04',178,'An upgrade to some standard information formats','<h2 id=\"introduction\">Introduction</h2>\r\n<p>After many years of confusion it has been decided to produce a common standard for dates and times between Europe and the United States of America.</p>\r\n<p>When encountering a USA date such as 03/14/2021 (known as <em>Pi Day</em> in the USA) there has been ambiguity over which part of the date is the day and which the month. There can also be confusion as to the year if the two-digit form is used.</p>\r\n<p>Standardisation is a way in which these sorts of ambiguities can be resolved. Having a common method of representation avoids confusion.</p>\r\n<p>Therefore, starting in 2021, in the spirit of clarity and prevention of misunderstanding, the EU has decided to standardise on compatible formats wherever possible.</p>\r\n<h3 id=\"dates\">Dates</h3>\r\n<p>Henceforward dates will be represented in one of the following forms:</p>\r\n<pre><code>MM/DD/YY month/day of month/two-digit year\r\n\r\nYY/DD/MM two-digit year/day of month/month</code></pre>\r\n<p>Thus, 21/14/03 or 03/14/21 will be universally recognised as <em>Pi Day</em>.</p>\r\n<h3 id=\"times\">Times</h3>\r\n<p>The break from the previous tyranny of <b>large</b>|<b>medium</b>|<b>small</b> or <b>small</b>|<b>medium</b>|<b>large</b> formats has been extended to 24-hour time representations.</p>\r\n<p>Henceforward 24-hour times will be represented in one of the following forms:</p>\r\n<pre><code>SS:HH:MM seconds:hours:minutes\r\n\r\nMM:HH:SS minutes:hours:seconds</code></pre>\r\n<h3 id=\"support\">Support</h3>\r\n<p>Bash already introduced support last year. You will need to update to Ubuntu Falex to get the latest version.</p>\r\n<h3 id=\"future-plans\">Future plans</h3>\r\n<p>The Standardisation Working Group will be planning other measures.</p>\r\n<p>Forthcoming rationalisations will be:</p>\r\n<ul>\r\n<li>Weights and Measures:\r\n<ul>\r\n<li>Discrepancies such as the US pint (16 fluid ounces) versus the British pint (20 fluid ounces)</li>\r\n</ul></li>\r\n<li>Temperature:\r\n<ul>\r\n<li>Fahrenheit versus Centigrade, replaced by the new <em>Eurotemp</em> which straddles both ranges. The choice might be the Rankine scale (°R), but this has yet to be decided.</li>\r\n</ul></li>\r\n</ul>\r\n',393,0,0,'CC-BY-SA','date,time,formats',0,0,1),
(3312,'2021-04-13','COVID Doldrums',4288,'MrX and Dave Morriss have a chat over Mumble in these trying times','<h2 id=\"introduction\">Introduction</h2>\r\n<p>Hosts:</p>\r\n<ul>\r\n<li><a href=\"https://hackerpublicradio.org/correspondents/0201.html\">MrX</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/correspondents/0225.html\">Dave Morriss</a></li>\r\n</ul>\r\n<p>We had some issues with getting Mumble to work, for reasons we couldn’t quite fathom. Both ends needed to be restarted several times until all worked properly.</p>\r\n<p>We recorded this on Sunday March 7<sup>th</sup> 2021. The last time we set up a chat like this was back in August 2020, surprisingly!</p>\r\n<p><small>Note on the title: the term <em>the doldrums</em> refers to a belt around the equator where sailing ships used to be becalmed due to the lack of wind. It also means a state of inactivity or stagnation, or a dull, listless, depressed mood; low spirits. </small></p>\r\n<h2 id=\"topics-discussed\">Topics discussed</h2>\r\n<ul>\r\n<li>Pandemic (1):\r\n<ul>\r\n<li>Planning for pandemics</li>\r\n<li>Years ago parents used to let children catch chickenpox when it was known somebody had it (<a href=\"https://en.wikipedia.org/wiki/Pox_party\">pox party</a>).</li>\r\n<li>Did COVID-catching parties really happen? <a href=\"https://en.wikipedia.org/wiki/Coronavirus_party\">Wikipedia page on alleged COVID parties</a>.</li>\r\n</ul></li>\r\n</ul>\r\n<ul>\r\n<li>Christmas/New Year:\r\n<ul>\r\n<li>Dave:\r\n<ul>\r\n<li>Cooked a fancy vegetarian meal twice! On Boxing Day and New Years Day. Second time was a joint effort. Getting everything coordinated is easier when there are several contributors!</li>\r\n</ul></li>\r\n<li>MrX:\r\n<ul>\r\n<li>Had long break because like many I hadn’t taken many holidays</li>\r\n<li>Spent first part of holiday upgrading devices around the house</li>\r\n<li>I had a nice relaxing break and spent Christmas with my mother, she lives on her own.</li>\r\n<li>Visit to the dentist was interesting, wondering how they were going to cope with aerosol spray from the drill. The answer was they didn’t. Rough edge smoothed, they told me they will contact me when things settle down and said I was right to get it checked. If any pain or further break then will be moved into a different category where they do use drill with full PPE.</li>\r\n</ul></li>\r\n</ul></li>\r\n</ul>\r\n<ul>\r\n<li>Pandemic (2):\r\n<ul>\r\n<li>Dave:\r\n<ul>\r\n<li>Vaccination received on 2020-02-02 (<a href=\"https://en.wikipedia.org/wiki/Oxford%E2%80%93AstraZeneca_COVID-19_vaccine\">Oxford/AstraZeneca</a>)</li>\r\n<li>Probably getting second in late April or early May; not heard yet</li>\r\n<li>Still avoiding going out for the moment</li>\r\n<li>The deleterious effects of the lock down; trying to walk on a regular basis to counteract these and get exercise</li>\r\n<li>Meeting up with the rest of the family several times per week for dinner, etc.</li>\r\n</ul></li>\r\n<li>MrX:\r\n<ul>\r\n<li>Horizon things we now know about COVID</li>\r\n<li>Don’t know how long the vaccine protects against virus spreading but likely to protect against serious illness for a good long time.</li>\r\n<li>12 weeks between jabs: 2nd jab does not provoke a stronger response; it’s that the 1st jab produces good responses and poor responses but by waiting 12 weeks for the 2nd jab it only provokes the good responses.</li>\r\n<li>Think the UK has among the worst death rate in Europe</li>\r\n<li>Like Dave continuing to avoid the virus as before.</li>\r\n<li>Seems to be getting more difficult coping with lock down</li>\r\n<li>Haven’t been into work since last November, working from home</li>\r\n<li>Home working, clutter, stress, not taking enough breaks</li>\r\n<li>Glad I didn’t need to drive during all the bad weather</li>\r\n<li>Think I heard on a podcast recently that Linux use had dropped by 50%, could this be linked to people working from home. I would say this is true for myself</li>\r\n<li>Except for me all immediate family have been vaccinated</li>\r\n<li>Way to stay posit
(3317,'2021-04-20','Reading a manifesto: Towards A Cooperative Technology Movement',1015,'If open source misses the point of free software philosophy, what point is free software missing?','<p>Three good decades ago, Richard Stallman founded the free software movement and gave it a name.</p>\r\n<p>Two good decades ago there was a fork and Eric S. Raymond, Bruce Perens and others founded the open\r\nsource software movement, and neglected to tell us who gave it a name.\r\n(it was Christine Peterson<a href=\"#footnote0\">[0]</a>)</p>\r\n<p>Ever since then, the free software side of the two movements has been careful to guard the boundary\r\nbetween the two, see Richard Stallman\'sessay\"<em>Open Source Misses the Point</em>\".<ahref=\"#footnote1\">[1]</a></p>\r\n<p>Butlatelyalotofpeoplehaveincreasinglybeenfeelingthat<em>freesoftware</em>missesthepoint.\r\nIronicallyalotofthishasbeencomingfromthe<em>opensource</em>sideofthings,astheofficialfree\r\nsoftwarephilosophyhasbeenfirmlyanchoredwithStallman,andhehasn\'t been interested in moving\r\nhis philosophy in more inclusive directions.</p>\r\n<p>For sure, there are a lot of people in free software who have been wanting to go in this direction\r\nas well. I\'vebeenthinkingofitasa\"free software plus\",asitbuildsonthefreesoftware\r\nphilosophy,butaddsaspectsofsocialresponsibility.ThefactthatStallmanwasforcedtoresign\r\nfrombeingFreeSoftwareFoundationpresidenttwoyearsagowasasignthatpeopleinsidefree\r\nsoftwarecaredaboutmorethanjustthecodeandwhatfreedomsitgivestherecipient.</p>\r\n<p>Amonthago,ifyouarelisteningtothisonAprilthe20th2021,\r\namanifestowaspublishedcalled\"<em>Towards A Communal Software Movement</em>\",andI\'ll get to\r\nthat in a minute. I mentioned the names of the drivers of the previous movements, but this author\r\nhas said \"I intentionally left authors\'namesoutofit\"<a href=\"#footnote2\">[2]</a>, and I think that makes sense. Part of the\r\nproblems with previous movements has been this Great Man of History fallacy, which may have kept\r\nthem focused and on track, but it has also held them back.</p>\r\n<p>The movement is young and has already changed names once as I was writing about it. The manifesto is\r\nnow \"<em>Towards A Cooperative Technology Movement</em>\", and I have updated the shownotes and my commentary\r\nto reflect that.</p>\r\n<p><a href=\"https://misskey.de/notes/8k0igd5tcd\">https://misskey.de/notes/8k0igd5tcd</a></p>\r\n<p>I see the difference between free software and cooperative technology similarly as the difference\r\nbetween open source and free software.</p>\r\n<p>There are certainly people within open source and on the Open Source Initiative board that look\r\nfurther than just the license, and treat open source like just another brand name for free software.</p>\r\n<p>But at its core, the Open Source Definition is all about the licensing and that document is the\r\nshared common ground for all open source. People write code for different reasons and there\'s a\r\nlicense and contribution model that allow them to come together without those differences of purpose\r\ngetting too much in the way.</p>\r\n<p>So if the software and the license is \"what\" we\'re building, the philosophical documents of free\r\nsoftware provide the guidance on \"why\" we are building it: We want to get away from proprietary\r\nsoftware, we want to control our own computing, we want the freedoms to use, learn, modify and\r\nshare, etc. Free software is about our freedoms.</p>\r\n<p>So just like \"free\" is right there in the name, maybe the \"community\" in \"communal software\" or\r\nthe \"cooperative\" in \"cooperative technology\" is\r\nall about the \"who\": Who gets the freedom, who has the influence, who is affected.</p>\r\n<p>And again, lots of people in free software do care about community principles beyond code, care about\r\nsocial responsibility, but the shared baseline is the care for formal, technical and individual
(3315,'2021-04-16','tesseract optical character recognition',128,'How to use this amazing tool','<h3>Tesseract (software)</h3>\r\n<em>From Wikipedia, the free encyclopedia</em>\r\n<p>\r\nTesseract is an optical character recognition engine for various operating systems. It is free software, released under the Apache License. Originally developed by Hewlett-Packard as proprietary software in the 1980s, it was released as open source in 2005 and development has been sponsored by Google since 2006.<br />\r\nIn 2006, Tesseract was considered one of the most accurate open-source OCR engines then available.\r\n</p>\r\n<pre>\r\n<code>\r\n$ tesseract -l eng english-page.jpg english\r\n$ tesseract -l nld dutch-page.jpg dutch\r\n$ ls\r\ndutch.txt english.txt \r\n</code>\r\n</pre>',30,0,0,'CC-BY-SA','Tesseract, OCR, optical character recognition',0,0,1),
(3319,'2021-04-22','Linux Inlaws S01E28: Politicians and artificial intelligence part 1',4023,'Part 1 of a miniseries on AI, ML, DL and other fun','<p>In this episode, our two heroes explore the realm of artificial intelligence, paying special attention to deep learning (hoping that some\r\nof the stuff may rub on them :-). In this first part of a three-part mini-series the chaps discuss the foundation including networks, neurons\r\nand other topics of advanced black magic, carefully avoiding the temptations of introducing too much maths (we\'llleavethistotheGrumpyOldCoders:-).</p>\r\n<h2>Links:</h2>\r\n<ul>\r\n<li>Artificialintelligence:<ahref=\"https://en.wikipedia.org/wiki/Artificial_intelligence\"target=\"_blank\">https://en.wikipedia.org/wiki/Artificial_intelligence</a>\r\n</li>\r\n<li>Machinelearning:<ahref=\"https://www.mygreatlearning.com/blog/machine-learning-tutorial\"target=\"_blank\">https://www.mygreatlearning.com/blog/machine-learning-tutorial</a>\r\n</li>\r\n<li>Deeplearning:<ahref=\"https://www.guru99.com/deep-learning-tutorial.html\"target=\"_blank\">https://www.guru99.com/deep-learning-tutorial.html</a>\r\n</li>\r\n<li>Artificialneuralnetworks(ANN):<ahref=\"https://www.asimovinstitute.org/neural-network-zoo\"target=\"_blank\">https://www.asimovinstitute.org/neural-network-zoo</a>\r\n</li>\r\n<li>Back-propagationANNs(BPN):<ahref=\"https://en.wikipedia.org/wiki/Backpropagation\"target=\"_blank\">https://en.wikipedia.org/wiki/Backpropagation</a>\r\n</li>\r\n<li>DWAVE:<ahref=\"https://www.dwavesys.com/quantum-computing\"target=\"_blank\">https://www.dwavesys.com/quantum-computing</a>\r\n</li>\r\n<li>Convolutionalneuralnetworks(CNNs):<ahref=\"https://en.wikipedia.org/wiki/Convolutional_neural_network\"target=\"_blank\">https://en.wikipedia.org/wiki/Convolutional_neural_network</a>\r\n</li>\r\n<li>Generativeadversarialnetwork(GAN):<ahref=\"https://en.wikipedia.org/wiki/Generative_adversarial_network\"target=\"_blank\">https://en.wikipedia.org/wiki/Generative_adversarial_network</a>\r\n</li>\r\n<li>Spyvs.Spy:<ahref=\"https://toonopedia.com/spyvsspy.htm\"target=\"_blank\">https://toonopedia.com/spyvsspy.htm</a>\r\n</li>\r\n<li>AtlantikAle:<ahref=\"https://www.stoertebeker.com/stoertebeker-atlantik-ale.html\"target=\"_blank\">https://www.stoertebeker.com/stoertebeker-atlantik-ale.html</a>\r\n</li>\r\n</ul>\r\n',384,111,1,'CC-BY-SA','Policitians,artificialintelligence,deeplearning,convolutions',0,0,1),
(3313,'2021-04-14','Zoom Update',102,'Scripted Zoom Update with History on Fedora.','<ul>\r\n<li>Script and instruction at <a href=\"https://james.toebesacademy.com/ZoomUpdate.html\" class=\"uri\">https://james.toebesacademy.com/ZoomUpdate.html</a></li>\r\n<li>GitHub Repo: <a href=\"https://github.com/ToeJet/Scripts/tree/main/ZOOMUPDATE\" class=\"uri\">https://github.com/ToeJet/Scripts/tree/main/ZOOMUPDATE</a></li>\r\n</ul>\r\n<p>Zoom does not provide a standard Fedora repo for updating. To get around that, this script will check the zoom fedora download link. If an update is found, it will download the new version, stop the current version from running, then install the updated package. All versions are downloaded to the same folder as the script. Filename is changed to match datestamp.</p>\r\n<p>I leave my linux machine always running. I schedule this to run just after midnight. If no update, nothing happens. If zoom is not running when I unlock, I launch zoom as normal.</p>\r\n<ul>\r\n<li>Bash Script.</li>\r\n<li>Uses wget</li>\r\n<li>Cron for scheduling</li>\r\n<li>Download, cron, forget...</li>\r\n<li>Periodically review log to see update history</li>\r\n</ul>\r\n<p>james@toebesacademy.com<br />\r\n<a href=\"https://james.toebesacademy.com\" class=\"uri\">https://james.toebesacademy.com</a><br />\r\nLet me know what you think.</p>\r\n',273,108,1,'CC-BY-SA','zoom update,sysadmin automation',0,0,1),
(3318,'2021-04-21','Modding a Wii classic with a DNS exploit',457,'Modding a Wii with a DNS exploit and using a USB drive to save games','<ol type=\"1\">\r\n<li>Wii Options > Wii Settings</li>\r\n<li>Verify version is 4.3\r\n<ul>\r\n<li>If not,</li>\r\n<li>Is the Wii connected to the internet</li>\r\n<li>If not, go to Connection Settings\r\n<ul>\r\n<li>Pick Connection 1</li>\r\n<li>Enter wifi connection info</li>\r\n<li>perform Wii System Update (Page 3 of Wii Settings)</li>\r\n</ul></li>\r\n</ul></li>\r\n<li>Wii Settings > Internet\r\n<ul>\r\n<li>Go to Change Settings</li>\r\n<li>A few pages over is Auto-Obtain DNS\r\n<ul>\r\n<li>Select No and Advanced Settings</li>\r\n<li>Enter Primary DNS: 97.74.103.14</li>\r\n<li>Enter Secondary DNS: 173.201.71.14</li>\r\n</ul></li>\r\n<li>Confirm and Save Settings</li>\r\n<li>Press Ok to perform Connection Test</li>\r\n<li>This does take a while, be patient because the Wii is slow</li>\r\n<li>Go back a couple of pages to Internet Settings</li>\r\n<li>Go to User Agreements\r\n<ul>\r\n<li>Would you like to use the Wii Shop Channel and WiiConnect24?</li>\r\n<li>Select Yes</li>\r\n<li>You must review the User Agreements before using the Wii network services.</li>\r\n<li>Select Next</li>\r\n<li>Connecting to Internet... Please wait a moment.</li>\r\n<li>Another screen will appear with message to \"Please wait, this will take 1-2 minutes.\"\r\n<ul>\r\n<li>Do NOT press I Accept at this point, or it will go to the previous screen.</li>\r\n<li>These next two screens will show up, one with console text, which is the exploit, and the next look like static. This is ok</li>\r\n<li>The next screen is a message not to be scammed by buying a copy of HackMii. Wait for the option to press \'1\' to continue.</li>\r\n<li>The HackMii menu will now appear, press \'A\' to continue.</li>\r\n<li>On the HackMii installer screen, use the D-pad on the Wii to arrow up to Install The HomeBrew Channel.</li>\r\n</ul></li>\r\n</ul></li>\r\n<li>At this point the Wii can be powered off.</li>\r\n</ul></li>\r\n<li>Install Wii Homebrew Browser <a href=\"https://oscwii.org/\" class=\"uri\">https://oscwii.org/</a>\r\n<ul>\r\n<li>I have read that a 2gb non-hd sd card was needed, but found that up to a 32gb card works just fine.</li>\r\n<li>Remove the sd card and download and extract the zip file on the main page.</li>\r\n<li>Move the folder on the root of the sd card (i.e. <code>apps/homebrew_browser/</code>).</li>\r\n<li>More applications can now be accessed from the Homebrew Browser.</li>\r\n</ul></li>\r\n<li>Adding roms (i.e. Nintendo 64 games)\r\n<ul>\r\n<li>From the Homebrew Browser, add the not64 emulator, as the Wii64 would not save games for me. This is an updated version of the Wii64 emulator.</li>\r\n<li>At the root of the sd card, if it is not already there, create a not64/roms folder and place the roms in here.</li>\r\n</ul></li>\r\n<li>Play Wii games from a USB drive\r\n<ul>\r\n<li>First need to install cIOS (custom OS)\r\n<ul>\r\n<li>Will be installing:\r\n<ul>\r\n<li>cIOS 249 base 56 v10 beta52, some guides say cIOS 249 base 56 beta52-alt, YMMV.</li>\r\n<li>cIOS 250 base 57 v10 beta52</li>\r\n</ul></li>\r\n</ul></li>\r\n<li>From the Homebrew Browser, go to the Utilities tab and install USBLoader and the d2x cIOS installer.</li>\r\n<li>Wait for the app to load.</li>\r\n<li>You will see the main screen, press A\r\n<ul>\r\n<li>Change the following:\r\n<ul>\r\n<li>cIOS to v10 beta 52 d2x-v10-beta52-alt</li>\r\n<li>base to 56</li>\r\n<li>slot to 249</li>\r\n<li>revision to 65535</li>\r\n</ul></li>\r\n<li>Press A to load these values</li>\r\n</ul></li>\r\n<li>The app will go back to the main screen, just go right back into the app.\r\n<ul>\r\n<li>Change the following:\r\n<ul>\r\n<li>cIOS to v10 beta 52 d2x-v10-beta52</li>\r\n<li>base to 57</li>\r\n<li>slot to 250</li>\r\n<li>revision to 65535</li>\r\n</ul></li>\r\n<li>Press A to load these values</li>\r\n</ul></li>\r\n<li>You are now ready to format the external USB drive\r\n<ul>\r\n<li>This can be either FAT32 or ext4</li>\r\n<li>Plug in the USB drive afte
(3321,'2021-04-26','DNS66 URANDOM RANDOM',1911,'I talk about D N S 66 and go over some comments from Urandom episode ','<ul>\r\n<li><p>DNS66 apk<br />\r\n<a href=\"https://f-droid.org/packages/org.jak_linux.dns66/\" class=\"uri\">https://f-droid.org/packages/org.jak_linux.dns66/</a></p></li>\r\n<li><p>for more ads:<br />\r\n<a href=\"https://adaway.org/hosts.txt\" class=\"uri\">https://adaway.org/hosts.txt</a></p></li>\r\n<li><p>for blocking pinterest<br />\r\n<a href=\"https://rmccurdy.com/.scripts/hosts.file.pinterest.txt\" class=\"uri\">https://rmccurdy.com/.scripts/hosts.file.pinterest.txt</a></p></li>\r\n<li><p><a href=\"https://www.reddit.com/r/browsers/comments/jr6k6d/is_brave_browser_really_that_bad/\" class=\"uri\">https://www.reddit.com/r/browsers/comments/jr6k6d/is_brave_browser_really_that_bad/</a></p></li>\r\n<li><p><a href=\"https://github.com/freeload101/SCRIPTS/blob/master/Windows_Batch/Youtube-dl-ffmpeg-aria2c-updater-downloader.bat\" class=\"uri\">https://github.com/freeload101/SCRIPTS/blob/master/Windows_Batch/Youtube-dl-ffmpeg-aria2c-updater-downloader.bat</a></p></li>\r\n</ul>\r\n',36,0,0,'CC-BY-SA','block ads,ads,android,youtube,media,streaming',0,0,1),
(3314,'2021-04-15','Introduction... A little bit about me',226,'My first HPR episode, introducing myself and sharing a bit about me','<p>Inoffensive in every region of the world. Meeting me is a completely different story.</p>\r\n<p>Name is Trey. I have been listening to HPR for about a year and after hearing repeated pleas for episodes, I thought I would record some of my own.</p>\r\n<p>I cannot guarantee quality of production nor content, but I hope you find them entertaining.</p>\r\n<p>This episode is simply an introduction with a little bit of information about me</p>\r\n<p>My love of computers began 40 years ago when my parents scrimped and saved to purchase a Texas Instruments TI-99/4a computer. I began programming in BASIC, saving programs to audio cassette tapes. I remember buying magazines to get new programs to enter, save, edit, and turn into something different.</p>\r\n<p>Soon I expanded the computer to include 32K of RAM and an RS232 card which allowed me to connect a 300 BAUD modem and connect to bulletin board systems (BBS). BBS became my connection to the world.</p>\r\n<p>I later upgraded to a Commodore 64, which gave me a floppy disk. Much faster than saving to tape. I studied electronics & computers in college, then went to work for a large computer vendor, traveling all over fixing computers, networks, and peripherals.</p>\r\n<p>After about a decade, I joined a different company where I worked in systems administration and engineering, with a focus on information security. I have worked as security analyst, incident responder, security engineer, and security architect, then built out and managed the SOC for a large organization.</p>\r\n<p>Today, I am still focused on information security and I also dabble in clock repair, Ham radio, electronics, and photography. I may record some episodes on some of these topics in the future.</p>\r\n<p>Thank you for listening to me prattle on about myself, and have an awesome day.</p>\r\n',394,0,0,'CC-BY-SA','Introduction',0,0,1),
(3316,'2021-04-19','FSF and RMS on election of Richard Stallman',841,'The Free Software Foundation (FSF) and Richard Stallman have released statements on the matter','<hr />\r\n<h3>Counter Point</h3>\r\n<p>This show is a counter point to: <a href=\"https://hackerpublicradio.org/eps.php?id=3311\">hpr3311 :: Bradley M. Kuhn\'sarticlefrom2019onRichardM.Stallman</a>\r\n</p>\r\n<hr/>\r\n<p><ahref=\"https://en.wikipedia.org/wiki/Richard_Stallman\">FromWikipedia,thefreeencyclopedia</a><quote>InSeptember2019,RichardStallmanresignedaspresidentoftheFSFandlefthis“visitingscientist”roleatMITaftermakingcontroversialcommentsaboutMarvinMinsky’sallegedroleintheJeffreyEpsteinsextraffickingscandal.StallmanremainedheadoftheGNUProjectneverthelessand,in2021,hereturnedtotheFSFboardofdirectors.</quote></p>\r\n<p>SincetheshowwassubmittedboththeFreeSoftwareFoundation(FSF)andRichardStallmanhavereleasedstatementsonthematter.</p>\r\n<p>Iamsubmittingthosestatementshereunderthetermsofthe<ahref=\"https://creativecommons.org/licenses/by-nd/3.0/\">CreativeCommonsAttribution-NoDerivativeWorks3.0license</a>.Thestatementscontainsmanylinkswhichareavailableintheshownotesforthisshow.</p>\r\n<h1id=\"statement-of-fsf-board-on-election-of-richard-stallman\">StatementofFSFboardonelectionofRichardStallman</h1>\r\n<p>PublishedonApr12,202110:25AMby<ahref=\"https://www.fsf.org/author/fsfweb\">FreeSoftwareFoundation</a></p>\r\n<p>\r\nThevotingmembersoftheFreeSoftwareFoundation,whichincludetheboardofdirectors,votedtoappointRichardStallmantoaboardseatafterseveralmonthsofthoroughdiscussionandthoughtfuldeliberation.\r\n</p>\r\n<p>\r\nWedecidedtobringRMSbackbecausewemissedhiswisdom.Hishistorical,legalandtechnicalacumenonfreesoftwareisunrivaled.Hehasadeepsensitivitytothewaysthattechnologiescancontributetoboththeenhancementandthediminutionofbasichumanrights.Hisglobalnetworkofconnectionsisinvaluable.Heremainsthemostarticulatephilosopherandanunquestionablydedicatedadvocateoffreedomincomputing.\r\n</p>\r\n<p>\r\n<ahref=\"https://www.fsf.org/news/rms-addresses-the-free-software-community\">RMSacknowledgesthathehasmademistakes.</a>Hehassincereregrets,especiallyathowangertowardhimpersonallyhasnegativelyimpactedthereputationandmissionofFSF.Whilehispersonalstyleremainstroublingforsome,amajorityoftheboardfeelhisbehaviorhasmoderatedandbelievethathisthinkingstrengthenstheworkoftheFSFinpursuitofitsmission.\r\n</p>\r\n<p>\r\nWetakefullresponsibilityforhowbadlywehandledthenewsofhiselectiontoaboardseat.Wehadplannedaflowofinformationthatwasnotexecutedinatimelymannerordeliveredinthepropersequence.\r\n</p>\r\n<p>\r\nFSFstaffshouldhavebeeninformedandconsultedfirst.TheannouncementbyRMSatLibrePlanetwasacompletesurprisetostaff,allthosewhoworkedsohardtoorganizeagreatevent,toLibrePlanetspeakersandtotheexhibitors.Wehadhopedforamoreinclusiveandthoughtfulprocessandweapologizethatthisdidnotoccur.\r\n</p>\r\n<p>\r\nInhispositionontheboard,RMShasthesameresponsibilitiesasothermembers.Heisanunpaidvolunteerandsubjecttotheorganization’spolicies,includingprohibitionsagainstconflictsofinterestandsexualharassmentandthoseoutliningwhistleblowerprocessesandfiduciaryduties.Theresponsibilitiesoftheboardaredescribedat<ahref=\"https://www.fsf.org/about/the-role-of-the-fsfs-board-of-directors\">https://www.fsf.org/about/the-role-of-the-fsfs-board-of-directors</a>.\r\n</p>\r\n<p>\r\nWebelievehisviewswillbecriticaltotheFSFasweadvancethemissionandconfrontthechallengesthatsoftwarefreedomfaces.\r\n</p>\r\n<p>\r\nInrecentweeks,theboardhas<ahref=\"https://www.fsf.org/news/preliminary-board-statement-on-fsf-governance\">committedtoaseriesofchanges</a
(3324,'2021-04-29','Infosec Podcasts Part 1 News and Current Events ',438,'Presenting my favorite information security news and current events podcasts','<p>Inoffensive in every region of the world</p>\r\n<p>Hello, again. This is Trey. This is part 1 of a 6 part series related to information security podcasts.</p>\r\n<p>Why am I recording this series?</p>\r\n<p>\"What podcasts you listen to\" was on the list of recommended topics</p>\r\n<p>I am passionate about information security</p>\r\n<p>We desperately need people to fill infosec jobs in many different specialties</p>\r\n<p>Infosec is a rapidly changing field, and it is critical to stay current</p>\r\n<p>As a result I listen to TONS of infosec related podcasts</p>\r\n<p>Because there are so many podcasts to list, I will break them down into 6 different episodes based on topics:</p>\r\n<ul>\r\n<li>Part 1 – News & Current Events</li>\r\n<li>Part 2 – General Information Security</li>\r\n<li>Part 3 - Career & Personal Development</li>\r\n<li>Part 4 – Social Engineering</li>\r\n<li>Part 5 -\r\n<ul>\r\n<li>Hacks & Attacks</li>\r\n<li>Technical Information & Learning</li>\r\n<li>Infosec Community / Social / History</li>\r\n</ul></li>\r\n<li>Part 6 – Infosec Leadership</li>\r\n</ul>\r\n<h2 id=\"part-1\">Part 1</h2>\r\n<p>Infosec News / current events podcasts – Why?</p>\r\n<p>Stay aware of what is happening for your own personal growth</p>\r\n<p>If you already work in IT or Infosec, you can have early awareness about attacks to look for indicators of compromise, or learn new tools and techniques</p>\r\n<p>You can get a head start answering questions from leadership, when they ask about something they heard on the news or from a peer.</p>\r\n<ul>\r\n<li><p>SANS Internet Stormcenter Stormcast - Dr. Johannes Ullrich (Daily M-F)<br />\r\nThe latest Cybersecurity news<br />\r\n<a href=\"https://isc.sans.edu/podcast.html\" class=\"uri\">https://isc.sans.edu/podcast.html</a></p></li>\r\n<li><p>Cyber Security Headlines (Daily M-F)<br />\r\nDaily podcast with the latest Cybersecurity news<br />\r\nCaps off Friday with a weekly review<br />\r\n<a href=\"https://cisoseries.com/category/podcast/cyber-security-headlines/\" class=\"uri\">https://cisoseries.com/category/podcast/cyber-security-headlines/</a><br />\r\n</p></li>\r\n<li><p>The Cyberwire - Dave Bitner (Daily M-F – Drops in afternoon)<br />\r\nDaily podcast with the latest Cybersecurity news<br />\r\n<a href=\"https://thecyberwire.com/podcasts\" class=\"uri\">https://thecyberwire.com/podcasts</a></p></li>\r\n<li><p>Shared Security Show – Tom Eston, Scott Wright, & Kevin Johnson (Weekly)<br />\r\nNews, tips, advice, and interviews with cybersecurity professionals and privacy experts.<br />\r\n<a href=\"https://sharedsecurity.net/\" class=\"uri\">https://sharedsecurity.net/</a></p></li>\r\n<li><p>Transatlantic Cable Podcast – Sponsored by Kaspersky with Jeff Esposito & David Buxton (Weekly)<br />\r\nA weekly infosec news discussion<br />\r\n<a href=\"https://www.kaspersky.com/blog/kaspersky-transatlantic-podcast/\" class=\"uri\">https://www.kaspersky.com/blog/kaspersky-transatlantic-podcast/</a></p></li>\r\n<li><p>Security Now- Steve Gibson, Leo Laporte (Weekly)<br />\r\nPart of the TWIT TV Network<br />\r\nSteve Gibson, the man who coined the term spyware and created the first anti-spyware program, creator of Spinrite and ShieldsUP, discusses the hot topics in security today.<br />\r\nSpinrite has helped me salvage many a hard drive over the last few decades. I\'mabigfanofSteveGibson<br/>\r\nDoesagreatjobofsimplifyingtechnicaltopics.<br/>\r\n<ahref=\"https://twit.tv/shows/security-now\"class=\"uri\">https://twit.tv/shows/security-now</a></p></li>\r\n<li><p>TheSecurityLedger–PaulRoberts(Weekly)<br/>\r\nAweeklypodcastmixingnewsandinterviews<br/>\r\n<ahref=\"https://securityledger.com/\"class=\"uri\">https://securityledger.com/</a></p></li>\r\n<li><p>RiskyBusinesspodcast-PatrickGrayandAdamBoileau(Weekly)<br/>\r\nDiscussestheweek\'s security news
(3322,'2021-04-27','Tune system performance with tuned',1361,'Introduction to tuned and tuned-adm','<p>\r\nThe tuned-adm command switches profiles to help you fine-tune your Linux system\'sperformance.\r\n</p>\r\n\r\n<p>\r\nFormoreaboutperformance,see<atarget=\"_blank\"href=\"https://01.org/powertop/blogs/ayates1/2016/powertop-linuxcon-2015\">PowertopLinuxcon2015presentation</a>andmaybelistento<ahref=\"https://gnuworldorder.info/#379\"target=\"_blank\">myGNUWorldOrderepisode</a>\r\n</p>',78,0,0,'CC-BY-SA','linux',0,0,1),
(3323,'2021-04-28','The alternate Internet you never knew existed',1757,'I changed my DNS server and you won\'tbelievewhathappenednext.','<p>\r\nAnot-briefintroductiontoOpenNIC,theopenanddemocraticdomainnameandnumberregistry.\r\n</p>',78,0,0,'CC-BY-SA','ICANN,IANA,DNS',0,0,1),
(3325,'2021-04-30','Games and rules',1499,'Talking about the conundrum of rules-light and rules-heavy game systems','<p>There are three nodes. You can choose two.\r\n</p>\r\n\r\n<pre>\r\n<code>\r\n o Rules\r\n / \\\r\n / \\\r\nTrust ó-----ò Competition\r\n</code>\r\n</pre>',78,95,0,'CC-BY-SA','rpg,rules,game',0,0,1),
(3329,'2021-05-06','Linux Inlaws S01E29: The (one and only) Linux Kernel Contributor Panel',5069,'An eclectic panel of Linux contributors discuss technology, anger management and other things','<p>In this episode, our two ageing heroes host an eclectic panel of kernel\r\ncontributors of a small, mostly unknown operating system called \"Linux\".\r\nThe panelists hail from all over the planet (sadly, no money or love would\r\nbuy Richard\'sorLinus\' way onto that panel :-) but the discussion proves\r\nmore than interesting regardless of these uber-nerds being absent. All\r\nwill be revealed including the true age of Linux, one of Chris\'secret\r\nobsessions(hint:it\'s not software bugs), Linus Torvald\'sthoughtprocess\r\nandevolutionassuch.NevermindLinux\'s second future high-level\r\nprogramming language... Plus: a philosophical discussion of the social\r\nimpact of insulting from a pan-cultural perspective. Don\'tmissouton\r\nthis!</p>\r\n\r\n<h3>Links:</h3>\r\n<ul>\r\n<li>LinuxKernelArchives:<ahref=\"https://www.kernel.org\"target=\"_blank\">https://www.kernel.org</a>\r\n</li>\r\n<li>DeviceTreeSystemdocumentation:<ahref=\"https://www.kernel.org/doc/html/latest/devicetree/usage-model.html\"target=\"_blank\">https://www.kernel.org/doc/html/latest/devicetree/usage-model.html</a>\r\n</li>\r\n<li>LinuxBDFL:<ahref=\"https://torvalds-family.blogspot.com\"target=\"_blank\">https://torvalds-family.blogspot.com</a>\r\n</li>\r\n<li>Linuxkernelpolice:<ahref=\"https://www.youtube.com/watch?v=zOcwNm7sqlw\"target=\"_blank\">https://www.youtube.com/watch?v=zOcwNm7sqlw</a>\r\n</li>\r\n<li>MythBusters:<ahref=\"https://www.imdb.com/title/tt0383126\"target=\"_blank\">https://www.imdb.com/title/tt0383126</a>\r\n</li>\r\n<li>ConflictResolutionNetwork:<ahref=\"https://www.crnhq.org\"target=\"_blank\">https://www.crnhq.org</a>\r\n</li>\r\n<li>SageSharp(lefttheprojectduetothenatureofLinus\' comments): <a href=\"https://sage.thesharps.us\" target=\"_blank\">https://sage.thesharps.us</a>\r\n</li>\r\n</ul>\r\n',384,111,1,'CC-BY-SA','Linux Kernel',0,0,1),
(3327,'2021-05-04','Looking into Ceph storage solution',818,'We look into what a Ceph implementation entails, what specific use-cases it excels at. ','<p>We look into what a Ceph implementation entails, what specific use-cases it excels at.</p>\r\n<p>And we also talk about the building blocks of the system. What kind of hosts is required for different Ceph daemons and the requirements regarding disk space, CPU, and memory.</p>\r\n<p>The services we are talking about are OSD (Object storage daemon), Monitors, Managers, and MDS (MetaData Services).</p>\r\n<p>Ceph can be used as an S3 compatible object store, disk storage, and even a file system, depending on your setup.</p>\r\n<p>If you are interested in diving deeper into the topic, I have created a couple of videos on the subject that might interest you.</p>\r\n<ul>\r\n<li>Getting started with Ceph storage cluster setup - <a href=\"https://youtu.be/Uvbp3mtOltw\" class=\"uri\">https://youtu.be/Uvbp3mtOltw</a></li>\r\n<li>Using the amazon s3 object storage API for local storage on Ceph - <a href=\"https://youtu.be/XtfjYp8ikaU\" class=\"uri\">https://youtu.be/XtfjYp8ikaU</a></li>\r\n<li>Doing an automatic upgrade of Ceph cluster using CephAdm - <a href=\"https://youtu.be/N1ARNNvv1zY\" class=\"uri\">https://youtu.be/N1ARNNvv1zY</a></li>\r\n<li>Looking into a manual upgrade of Ceph to Pacific - <a href=\"https://youtu.be/RrrS4UU5U6o\" class=\"uri\">https://youtu.be/RrrS4UU5U6o</a></li>\r\n</ul>\r\n',382,0,0,'CC-BY-SA','ceph, storage solution, amazon s3',0,0,1),
(3335,'2021-05-14','For your consideration, the Anarcho Book Club',1348,'This is an example of the podcast that was featured on GNU World Order','<ul>\r\n<li><a href=\"https://gnuworldorder.info/audiophile/gnuWorldOrder_397.opus\">Interview with Herag, from the Anarcho Book Club podcast. </a></li>\r\n<li><a href=\"https://anarchobook.club/pages/about.html\">About the Anarcho Book Club</a></li>\r\n</ul>',30,75,1,'CC-BY-SA','Anarcho Book Club,anarchism,gnuWorldOrder,gwo',0,0,1),
(3586,'2022-05-02','HPR Community News for April 2022',3986,'HPR Volunteers talk about shows released and comments posted in April 2022','<style>\ntable td.shrink {\n white-space:nowrap\n}\n</style>\n\n<h2>New hosts</h2>\n<p>\nWelcome to our new hosts: <br />\n\n <a href=\"https://hackerpublicradio.org/correspondents/0403.html\" target=\"_blank\">Lee</a>, \n <a href=\"https://hackerpublicradio.org/correspondents/0404.html\" target=\"_blank\">Sarah</a>.\n</p>\n\n<h2>Last Month\'sShows</h2>\n<tableid=\"t01\">\n<tr>\n<th>Id</th>\n<th>Day</th>\n<th>Date</th>\n<th>Title</th>\n<th>Host</th>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3565\"target=\"_blank\">3565</a></strong></td>\n<td>Fri</td>\n<tdclass=\"shrink\">2022-04-01</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3565\"target=\"_blank\">HeavyHackingdowninthequarry.</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0392.html\"target=\"_blank\">timttmy</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3566\"target=\"_blank\">3566</a></strong></td>\n<td>Mon</td>\n<tdclass=\"shrink\">2022-04-04</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3566\"target=\"_blank\">HPRCommunityNewsforMarch2022</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0159.html\"target=\"_blank\">HPRVolunteers</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3567\"target=\"_blank\">3567</a></strong></td>\n<td>Tue</td>\n<tdclass=\"shrink\">2022-04-05</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3567\"target=\"_blank\">WhatisNVMe™andwhyisitimportant?</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0129.html\"target=\"_blank\">JWP</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3568\"target=\"_blank\">3568</a></strong></td>\n<td>Wed</td>\n<tdclass=\"shrink\">2022-04-06</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3568\"target=\"_blank\">PopKornEpisode2:Programming,Mathematics,andAsymmetricLiteracy</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0396.html\"target=\"_blank\">BlacKernel</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3569\"target=\"_blank\">3569</a></strong></td>\n<td>Thu</td>\n<tdclass=\"shrink\">2022-04-07</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3569\"target=\"_blank\">LinuxInlawsS01E53:RustMarketing</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0384.html\"target=\"_blank\">monochromec</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3570\"target=\"_blank\">3570</a></strong></td>\n<td>Fri</td>\n<tdclass=\"shrink\">2022-04-08</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3570\"target=\"_blank\">TheFilesystem</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0198.html\"target=\"_blank\">Ahuka</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3571\"target=\"_blank\">3571</a></strong></td>\n<td>Mon</td>\n<tdclass=\"shrink\">2022-04-11</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3571\"target=\"_blank\">TheMeatballMystery</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0196.html\"target=\"_blank\">Windigo</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3572\"target=\"_blank\">3572</a></strong></td>\n<td>Tue</td>\n<tdclass=\"shrink\">2022-04-12</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3572\"target=\"_blank\">MoreaboutNVMe</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0129.html\"target=\"_blank\">JWP</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3573\"target=\"_blank\">3573</a></strong></td>\n<td>Wed</td>\n<tdclass=\"shrink\">2022-04-13</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php
(3328,'2021-05-05','Pandas Part 2',719,'Enigma continues his discussion about his favorite Python module Pandas','<p>\r\nPart two in the For the Love of Data series. Enigma covers part 2 of Pandas <br>\r\nThe following topics are discussed <br>\r\n<br>\r\n1) Another way to apply a condition to a field <br>\r\n2) Creating a DataFrame from a dictionary <br>\r\n3) Appending a data frame with another DataFrame <br>\r\n4) Joining DataFrames with merge and join <br>\r\n5) Writing an output to csv <br>\r\n<br>\r\n<a href = \"https://github.com/eth0enigma/PandasPart2\"> Part 2 Sample code </a>\r\n<br>\r\nFollow me on twitter @Ed_N1gma <br>\r\n<br>\r\nCome chat on irc.freenode.net #hackerexchange\r\n</p>',39,38,0,'CC-BY-SA','python, pandas, Data, Data Science',0,0,1),
(3334,'2021-05-13','Infosec Podcasts Part 2 - General Information Security',520,'Presenting my favorite general information security podcasts','<p>Inoffensive in every region of the world</p>\r\n<p>Hello, again. My name is Trey. This is part 2 of a 6 part series related to information security podcasts.</p>\r\n<p>To recap Why am I recording this series?</p>\r\n<p>\"What podcasts you listen to\" was on the list of recommended topics</p>\r\n<p>I am passionate about information security</p>\r\n<p>We desperately need people to fill infosec jobs in many different specialties</p>\r\n<p>Infosec is a rapidly changing field, and it is critical to stay current</p>\r\n<p>As a result I listen to TONS of infosec related podcasts</p>\r\n<p>Because there are so many podcasts to list, I have broken them down into 6 different episodes based on topics:</p>\r\n<ul>\r\n<li>Part 1 – News & Current Events</li>\r\n<li>Part 2 – General Information Security</li>\r\n<li>Part 3 - Career & Personal Development</li>\r\n<li>Part 4 – Social Engineering</li>\r\n<li>Part 5 -\r\n<ul>\r\n<li>Hacks & Attacks</li>\r\n<li>Technical Information & Learning</li>\r\n<li>Infosec Community / Social / History</li>\r\n</ul></li>\r\n<li>Part 6 – Infosec Leadership</li>\r\n</ul>\r\n<h2 id=\"part-2\">Part 2</h2>\r\n<ul>\r\n<li><p>General Information Security<br />\r\nCaveat – Dave Bittner & Ben Yelin (Weekly)<br />\r\nWeekly discussion of cybersecurity law and policy, with a particular focus on surveillance and digital privacy<br />\r\n<a href=\"https://thecyberwire.com/podcasts/caveat.html\" class=\"uri\">https://thecyberwire.com/podcasts/caveat.html</a></p></li>\r\n<li><p>Defense in Depth - David Spark & Guests (Weekly)<br />\r\nWeekly podcast digging deeper into a currently trending infosec topic<br />\r\n<a href=\"https://cisoseries.com/subscribe-podcast/\" class=\"uri\">https://cisoseries.com/subscribe-podcast/</a></p></li>\r\n<li><p>Recorded Future - Dave Bittner & Recorded Future (Weekly)<br />\r\nA weekly podcast about practical applications of security intelligence<br />\r\n<a href=\"https://www.recordedfuture.com/resources/podcast/\" class=\"uri\">https://www.recordedfuture.com/resources/podcast/</a></p></li>\r\n<li><p>Brakeing Down Security - Bryan Brake, Brian Boettcher, and Amanda Berlin (Weekly)<br />\r\nA weekly discussion of current infosec topics and events<br />\r\nCovers concepts that aspiring Information Security Professionals need to know, or refresh the memories of the seasoned veterans.<br />\r\n<a href=\"https://www.brakeingsecurity.com/\" class=\"uri\">https://www.brakeingsecurity.com/</a></p></li>\r\n<li><p>Down the Security Rabbit Hole - Rafal Los (Weekly)<br />\r\nA weekly interview based podcast discussing various challenges of implementing infosec<br />\r\n<a href=\"https://podcast.wh1t3rabbit.net/\" class=\"uri\">https://podcast.wh1t3rabbit.net/</a></p></li>\r\n<li><p>Security Weekly Podcast Network - Network of shows with various hosts<br />\r\nA collection of podcasts including: Paul\'sSecurityWeekly,EnterpriseSecurityWeekly,BusinessSecurityWeekly,ApplicationSecurityWeekly,Security&ComplianceWeekly,SecurityWeeklyNews,TradecraftSecurityWeekly,&SecureDigitalLife.Interestinganddiversediscussions.<br/>\r\nWarning:Discussionssometimespromotetheconsumptionofalcoholandsmokingcigars<br/>\r\nThesepodcastsarelong<br/>\r\n<ahref=\"https://securityweekly.com/\"class=\"uri\">https://securityweekly.com/</a></p></li>\r\n<li><p>SecurityStories-CiscowithHazelBurton,BenNahorney,&NoureenNjoroge(Weekly)<br/>\r\nAuniqueweeklyinterview-basedpodcastbysponsoredbyCiscofocusingoninfosecstories<br/>\r\n<ahref=\"https://www.cisco.com/c/en/us/products/security/securitystories.html\"class=\"uri\">https://www.cisco.com/c/en/us/products/security/securitystories.html</a></p></li>\r\n<li><p>TheConfidentDefensePodcast-ConorSherman(Weekly)<br/>\r\nInterviewswithinfluentialandinspirationalpeopleinallareasofsecurity<br/>\r\n<ahref
(3331,'2021-05-10','Audio for Podcasting: Episode 1 - The Microphone',1399,'Thaj shares tips and tricks on producing quality audio for HPR episodes','<p>The first in a series of episodes concerning recording and audio quality. For this episode I focus on the beginning of the signal chain, the microphone. Tips on choosing a microphone, and how to use it to get the sound you want.</p>\r\n<ul>\r\n<li><a href=\"https://www.samsontech.com/samson/products/microphones/usb-microphones/q2u/\">Samson 2QU</a></li>\r\n<li><a href=\"https://www.audio-technica.com/en-us/atr2100-usb\">ATR 2100</a></li>\r\n</ul>\r\n',270,45,1,'CC-BY-SA','audio production, microphones, audio quality',0,0,1),
(3338,'2021-05-19','Using openssl s_client like telnet',1189,'OpenSSL s_client is the new telnet. Here is how to use it.','<p>\r\nConnect to port 443 and send some HTTP signals:\r\n</p>\r\n\r\n<pre><code>\r\n$ openssl s_client -connect example.com:443\r\n [...snip...]\r\n Verify return code: 0 (ok)\r\n Extended master secret: no\r\n Max Early Data: 0\r\n---\r\n</code></pre>\r\n\r\n<p>\r\nYou\'renowconnected.Ifyouwaittoolong,yourconnectionwilllikelytimeout.\r\nViewthedefaultlandingpageofthesiteyou\'ve connected with:\r\n</p>\r\n\r\n<pre><code>\r\nGET / HTTP/1.1\r\nHOST: example.com\r\n</code></pre>\r\n\r\n<p>\r\nIn return, you get a dump of the HTML source of the default page (usually <code>index.html</code>) in your terminal.\r\n</p>\r\n\r\n<p>\r\nYou can also use OpenSSL s_client for email servers using SSL.\r\nBefore you can send credentials, you must encode your email username and passphrase into Base64. The easiest method I know is this Perl one-liner:\r\n</p>\r\n\r\n<pre><code>\r\n$ perl -MMIME::Base64 -e \'printencode_base64(\"myUserName\");\'\r\n$ perl -MMIME::Base64 -e \'printencode_base64(\"myPassPhrase\");\'\r\n</code></pre>\r\n\r\n<p>\r\nTake note of the results.\r\n</p>\r\n\r\n<p>\r\nThe s_client session, aside from authentication, is basically the same as a telnet session. You can find <a href=\"https://www.redhat.com/sysadmin/telnet-troubleshoot-mail-system\" target=\"_blank\">good telnet tutorials all over the Internet</a>, and aside from sending your credentials, they apply to s_client.\r\n</p>\r\n\r\n<p>\r\nHere\'sacopy-pasteofanexamplesession:\r\n</p>\r\n\r\n<pre><code>\r\n$openssls_client-starttlssmtp-connectemail.example.com:587\r\n> ehlo example.com\r\n> auth login\r\n##paste your user base64 string here####\r\n##paste your password base64 string here####\r\n\r\n> mail from: noreply@example.com\r\n> rcpt to: admin@example.com\r\n> data\r\n> Subject: Test 001\r\nThis is a test email.\r\n.\r\n> quit\r\n</code></pre>\r\n',78,61,0,'CC-BY-SA','telnet, openssl',0,0,1),
(3332,'2021-05-11','My current Devices',642,'A short list of tablets and phones that I am using these Days','<p>Sadly no Opensource hand held devices these days.<br />\r\nBut Android might count though.</p>\r\n',129,0,0,'CC-BY-SA','Tablet, Phone, kindle',0,0,1),
(3333,'2021-05-12','My TV Stand devices and Pine64.org',1408,'About my TV devices - TV Stand & Pine64','<h2 id=\"about-pine64\">About Pine64</h2>\r\n<blockquote>\r\n<dl>\r\n<dt><em>None of us is as smart as all of us</em></dt>\r\n<dd>Ken H. Blanchard\r\n</dd>\r\n</dl>\r\n</blockquote>\r\n<p>At the core of our philosophy is the notion that PINE64 is a community platform. A simplistic point of view, often offered up and referenced online, is that ‘PINE64 does hardware while the community does the software’. While this depiction is not inaccurate, it is also a gross oversimplification. The fact that PINE64 is community driven doesn’t simply entail a one-way reliance on the community or partner projects for software support; it means that the community gets to actively shape the devices, as well as the social platform, of PINE64 from the ground up. The goal is to deliver ARM64 devices that you really wish to engage with and a platform that you want to be a part of. As such, the community – PINE64 – and the company PINE Microsystems Inc. are interlocked and intertwined, but separate entities.</p>\r\n<p>What does it mean in practice then? It means that we usually announce what we’re working on well ahead of the shipping date – many months before a device is released – so that you have plenty of time to request product features, suggest changes, ask for/make changes to documentation, etc. before the first iteration of the device rolls of the factory line. It also means that the hardware developments – successes and failures alike – are all in the open. You can follow the process on our forum, the IRC, Discord, Matrix, Telegram the online conversations log and, in some instances, on our partner projects forums. But it also means that anyone who is a part of the community gets to shape anything related to the PINE64 project – including the Wiki or this website – and so, software development is only one area where you can contribute your time and skill. In return for time investment, the community gets fair priced devices that developers wish to spend their time on.</p>\r\n<p>Last, but not least, is our belief in supporting existing SoCs for long periods of time as well as actively developing new devices based on those SOCs. What does this mean for developers then? It means that a developer can start developing software on a PINE64 SBC and, in time, support multiple devices with relative ease. This device convergence is, at the time of writing, most pronounced on the Allwinner A64 SOC used in a number of our devices including the: PINE64-LTS, SOPine, Pinebook and Pinetab. That said, similar convergence is also planned for the Rockchip RK3399, currently used on the RockPro64 and in the Pinebook Pro.</p>\r\n<p>You can always find us in the chats or the forum, so if you have any further questions make sure to drop by and ask about how the PINE64 project actually works.</p>\r\n',129,0,0,'CC-BY-SA','Tablet, phone, desktop, windows, pine64, pinetime',0,0,1),
(3341,'2021-05-24','Linux on a serial Terminal - And Jorome\'sMainFrameChallenge',314,'MyexperimentwithGettyandAGettyAnsi-AndwantingtohaveaSerialTerminalMainframe','<p>WellitsbitofchallengeforJerometoteachmehowtodoaMainframeonaPIwithserialterminal.IstartedtheprojectusingaoldHPE700/96terminalamber.Iusedthissiteasmyprimeinfo.<br/>\r\n<ahref=\"https://www.cyberciti.biz/hardware/5-linux-unix-commands-for-connecting-to-the-serial-console/\"class=\"uri\">https://www.cyberciti.biz/hardware/5-linux-unix-commands-for-connecting-to-the-serial-console/</a></p>\r\n<ul>\r\n<li>Firstisseeingifyouhaveaserialport</li>\r\n</ul>\r\n<pre><code>dmesg|egrep--color'serial|ttyS'</code></pre>\r\n<ul>\r\n<li>Then install getty if its not there</li>\r\n<li>Then add your config line to /etc/gettydefs</li>\r\n<li>Then make work if you reboot.</li>\r\n<li>The do report</li>\r\n<li>Then you have the log in prompt on the terminal</li>\r\n</ul>\r\n',129,0,0,'CC-BY-SA','Terminal, Mainframe, Raspberry PI',0,0,1),
(3336,'2021-05-17','2020-2021 New Years Eve Show Episode 1',6241,'the hpr community stops by for a chat','<h2 id=\"welcome-to-the-9th-annual-hacker-public-radio-show\">Welcome to the 9th Annual Hacker Public Radio show</h2>\r\n<p>It is December the 31st 2020 and the time is 10 hundred hours UTC. We start the show by sending Greetings to Christmas Island/Kiribati and Samoa Kiritimati, Apia.</p>\r\n<ul>\r\n<li><p>Covid Covid Covid</p></li>\r\n<li><p>Brexit.<br />\r\nBrexit explained <a href=\"https://en.wikipedia.org/wiki/Brexit\" class=\"uri\">https://en.wikipedia.org/wiki/Brexit</a></p></li>\r\n<li><p>Add ISO 8601 YYYY-MM-DD support for dates in preferences<br />\r\n<a href=\"https://bugzilla.mozilla.org/show_bug.cgi?id=484860\" class=\"uri\">https://bugzilla.mozilla.org/show_bug.cgi?id=484860</a></p></li>\r\n<li><p>Cannot format date in ISO8601 (YYY-MM-DD) format<br />\r\n<a href=\"https://bugzilla.mozilla.org/show_bug.cgi?id=1492448\" class=\"uri\">https://bugzilla.mozilla.org/show_bug.cgi?id=1492448</a></p></li>\r\n<li><p>Setting date locale no longer works in Thunderbird 60 on linux LC_TIME=en_DK.utf8 behaves differently than it used to<br />\r\n<a href=\"https://bugzilla.mozilla.org/show_bug.cgi?id=1426907\" class=\"uri\">https://bugzilla.mozilla.org/show_bug.cgi?id=1426907</a></p></li>\r\n</ul>\r\n<pre><code>Podcast_________________Last_Active_Date\r\nBoston Bruins ......... ????\r\nTheTechieGeek ......... 2013-12-27\r\nDudmanovi ............. 2016-04-09\r\nGeeks With Guns ....... 2014-04-26\r\nledgerthecat .......... ????\r\nLinux Basix ........... 2014-01-29\r\nLinuXburg ............. 2019-08-16\r\nmintCast .............. Active\r\nNoll Tech Show ........ ????\r\nNollCraft ............. ????\r\nOpen Source Musician .. 2015-02-17\r\nPodBrewers ............ 2016-03-02\r\nPodnutz ............... Active\r\nRevUnity .............. ????\r\nScannerDrome .......... 2020-05-01\r\nSMLR .................. Active\r\nThePythonExperiment ... ????\r\nUnseenStudio .......... Active</code></pre>\r\n<ul>\r\n<li><p>Reverse Engineering the source code of the BioNTech/Pfizer SARS-CoV-2 Vaccine <a href=\"https://berthub.eu/articles/posts/reverse-engineering-source-code-of-the-biontech-pfizer-vaccine/\" class=\"uri\">https://berthub.eu/articles/posts/reverse-engineering-source-code-of-the-biontech-pfizer-vaccine/</a></p></li>\r\n<li><p>Open street map<br />\r\n<a href=\"https://f-droid.org/en/packages/net.osmand.plus/\" class=\"uri\">https://f-droid.org/en/packages/net.osmand.plus/</a><br />\r\n<a href=\"https://www.openstreetmap.org/\" class=\"uri\">https://www.openstreetmap.org/</a></p></li>\r\n<li><p>Farenheit celsius scales<br />\r\n<a href=\"https://commons.wikimedia.org/wiki/File:Fahrenheit_Celsius_scales.svg\" class=\"uri\">https://commons.wikimedia.org/wiki/File:Fahrenheit_Celsius_scales.svg</a></p></li>\r\n<li><p>Soft drink industry levy<br />\r\n<a href=\"https://www.gov.uk/government/news/soft-drinks-industry-levy-comes-into-effect\" class=\"uri\">https://www.gov.uk/government/news/soft-drinks-industry-levy-comes-into-effect</a></p></li>\r\n<li><p>Heroes<br />\r\n<a href=\"https://en.wikipedia.org/wiki/Heroes_(American_TV_series)\" class=\"uri\">https://en.wikipedia.org/wiki/Heroes_(American_TV_series)</a></p></li>\r\n<li><p>Mr Robot<br />\r\n<a href=\"https://en.wikipedia.org/wiki/Mr._Robot\" class=\"uri\">https://en.wikipedia.org/wiki/Mr._Robot</a></p></li>\r\n<li><p>Star Trek Theme Faith of The Heart Remake: Sputnik & yuri gagarin<br />\r\n<a href=\"https://www.youtube.com/watch?v=2y_FcxFseyc\" class=\"uri\">https://www.youtube.com/watch?v=2y_FcxFseyc</a></p></li>\r\n</ul>\r\n',159,121,1,'CC-BY-SA','HPR,community,new years eve',0,0,1),
(3342,'2021-05-25','2020-2021 New Years Eve Show Episode 2',3672,'the hpr community stops by for a chat','<h2 id=\"welcome-to-the-9th-annual-hacker-public-radio-new-years-eve-show\">Welcome to the 9th Annual Hacker Public Radio New Years Eve Show</h2>\r\n<ul>\r\n<li><p>heated roads and driveways</p></li>\r\n<li><p>talking about distilling spirits</p></li>\r\n<li><p>geek talk</p></li>\r\n<li><p>single board computers</p></li>\r\n</ul>',159,121,0,'CC-BY-SA','HPR,community,new years eve',0,0,1),
(3346,'2021-05-31','2020-2021 New Years Eve Show Episode 3',10488,'the hpr community stops by for a chat','<h2 id=\"welcome-to-the-9th-annual-hacker-public-radio-new-years-eve-show\">Welcome to the 9th Annual Hacker Public Radio New Years Eve Show</h2>\r\n<ul>\r\n<li><p>adjusting nextcloud time and date. Why can\'tIdoit?Bug?yesorno?</p></li>\r\n<li><p>WediscussClaudioM\'s breakfast<br />\r\n<a href=\"https://mastodon.sdf.org/@claudiom/105475213315933382\" class=\"uri\">https://mastodon.sdf.org/@claudiom/105475213315933382</a></p></li>\r\n<li><p><a href=\"https://voicecommandcenter.com/#\" class=\"uri\">https://voicecommandcenter.com/#</a></p></li>\r\n<li><p>Bollywood sci-fi movie <a href=\"https://www.justwatch.com/us/movie/2-0\" class=\"uri\">https://www.justwatch.com/us/movie/2-0</a></p></li>\r\n<li><p>Lineage OS and Android phones</p></li>\r\n<li><p>Librem phone: <a href=\"https://arstechnica.com/gadgets/2020/01/librem-5-phone-hands-on-a-proof-of-concept-for-the-open-source-smartphone/\" class=\"uri\">https://arstechnica.com/gadgets/2020/01/librem-5-phone-hands-on-a-proof-of-concept-for-the-open-source-smartphone/</a><br />\r\n<a href=\"https://shop.puri.sm/shop/librem-5-usa/\" class=\"uri\">https://shop.puri.sm/shop/librem-5-usa/</a></p></li>\r\n<li><p>De-googled Android OS<br />\r\n<a href=\"https://grapheneos.org/\" class=\"uri\">https://grapheneos.org/</a></p></li>\r\n<li><p><a href=\"https://techcrunch.com/2020/12/30/elon-musk-says-spacex-will-attempt-to-recover-super-heavy-rocket-by-catching-it-with-launch-tower/\" class=\"uri\">https://techcrunch.com/2020/12/30/elon-musk-says-spacex-will-attempt-to-recover-super-heavy-rocket-by-catching-it-with-launch-tower/</a></p></li>\r\n<li><p>why do we as a community stick with niche platforms?</p></li>\r\n<li><p><a href=\"https://joinmastodon.org/communities/tech\" class=\"uri\">https://joinmastodon.org/communities/tech</a></p></li>\r\n<li><p><a href=\"https://dev.to/botwiki/introduction-to-mastodon-bots-hfn\" class=\"uri\">https://dev.to/botwiki/introduction-to-mastodon-bots-hfn</a></p></li>\r\n<li><p><a href=\"https://botsin.space/about\" class=\"uri\">https://botsin.space/about</a></p></li>\r\n<li><p><a href=\"https://cdimage.debian.org/cdimage/ports/snapshots/2020-12-03/\" class=\"uri\">https://cdimage.debian.org/cdimage/ports/snapshots/2020-12-03/</a></p></li>\r\n<li><p><a href=\"https://xnux.eu/p-boot-demo/\" class=\"uri\">https://xnux.eu/p-boot-demo/</a></p></li>\r\n<li><p><a href=\"https://hackerpublicradio.org/series/0115.html\" class=\"uri\">https://hackerpublicradio.org/series/0115.html</a> Bicycle Hacking</p></li>\r\n<li><p><a href=\"https://sites.google.com/site/recycledrecumbents/home/the-showroom\" class=\"uri\">https://sites.google.com/site/recycledrecumbents/home/the-showroom</a></p></li>\r\n<li><p>Linux/BSD audio talk</p></li>\r\n<li><p>Pipewire: <a href=\"https://wiki.archlinux.org/index.php/PipeWire\" class=\"uri\">https://wiki.archlinux.org/index.php/PipeWire</a></p></li>\r\n<li><p>Unfa YouTube channel: <a href=\"https://www.youtube.com/user/unfa00\" class=\"uri\">https://www.youtube.com/user/unfa00</a></p></li>\r\n<li><p>Sndio is a small audio and MIDI framework part of the OpenBSD project<br />\r\n<a href=\"https://sndio.org/\" class=\"uri\">https://sndio.org/</a></p></li>\r\n<li><p>Doctor Who</p></li>\r\n<li><p>Data, data structures, and application.</p></li>\r\n<li><p>Audio fun</p></li>\r\n<li><p>nextcloud<br />\r\nDe google with nextcloud - <a href=\"https://nextcloud.com/\" class=\"uri\">https://nextcloud.com/</a></p></li>\r\n</ul>\r\n',159,121,1,'CC-BY-SA','HPR,community,new years eve',0,0,1),
(3352,'2021-06-08','2020-2021 New Years Eve Show Episode 4',3993,'the hpr community stops by for a chat','<h2 id=\"welcome-to-the-9th-annual-hacker-public-radio-new-years-eve-show\">Welcome to the 9th Annual Hacker Public Radio New Years Eve Show</h2>\r\n<ul>\r\n<li><p>Text editors</p></li>\r\n<li><p>x11 and wayland</p></li>\r\n<li><p>Linux check for X11/Wayland<br />\r\n</p></li>\r\n</ul>\r\n<pre><code>loginctl show-session $(awk '/tty/ {print $1}' <(loginctl)) -p Type | awk -F= '{print $2}'</code></pre>\r\n<ul>\r\n<li><p>Firefox new tab override - <a href=\"https://addons.mozilla.org/en-US/firefox/addon/new-tab-override/?utm_source=addons.mozilla.org&utm_medium=referral&utm_content=search\" class=\"uri\">https://addons.mozilla.org/en-US/firefox/addon/new-tab-override/?utm_source=addons.mozilla.org&utm_medium=referral&utm_content=search</a></p></li>\r\n<li><p>Distributed Search <a href=\"https://yacy.net/index.html\" class=\"uri\">https://yacy.net/index.html</a></p></li>\r\n<li><p>Join Mastodon - <a href=\"https://joinmastodon.org/\" class=\"uri\">https://joinmastodon.org/</a></p></li>\r\n<li><p>edit correspondent page by posting a new show...</p></li>\r\n<li><p><a href=\"https://distrohoppersdigest.blogspot.com/\" class=\"uri\">https://distrohoppersdigest.blogspot.com/</a></p></li>\r\n<li><p><a href=\"https://addons.mozilla.org/en-US/firefox/addon/open-with/?utm_source=addons.mozilla.org\" class=\"uri\">https://addons.mozilla.org/en-US/firefox/addon/open-with/?utm_source=addons.mozilla.org</a></p></li>\r\n<li><p><a href=\"https://addons.mozilla.org/en-US/firefox/addon/videospeed/?utm_source=addons.mozilla.org\" class=\"uri\">https://addons.mozilla.org/en-US/firefox/addon/videospeed/?utm_source=addons.mozilla.org</a></p></li>\r\n<li><p>X2go Graphical interface over ssh <a href=\"https://wiki.x2go.org/doku.php\" class=\"uri\">https://wiki.x2go.org/doku.php</a></p></li>\r\n<li><p>Filk Music discussion: Filk music is a musical culture, genre, and community tied to science fiction, fantasy and horror fandom and a type of fan labor. The genre has been active since the early 1950s, and played primarily since the mid-1970s.</p></li>\r\n<li><p>Dresden Files and books</p></li>\r\n<li><p>happy new year from the Fallon family</p></li>\r\n</ul>\r\n',159,121,1,'CC-BY-SA','HPR,community,new years eve',0,0,1),
(3356,'2021-06-14','2020-2021 New Years Eve Show Episode 5',16905,'the hpr community stops by for a chat','<h2 id=\"welcome-to-the-9th-annual-hacker-public-radio-new-years-eve-show\">Welcome to the 9th Annual Hacker Public Radio New Years Eve Show</h2>\r\n<ul>\r\n<li><p>Vacinations</p></li>\r\n<li><p>covid lock downs</p></li>\r\n<li><p>covid covid covid (no suprise)</p></li>\r\n<li><p>virtual confrences</p></li>\r\n<li><p>Virtual life</p></li>\r\n<li><p>programing languages</p></li>\r\n<li><p>the size of texas - Even the Skunks are Large!</p></li>\r\n<li><p>Religion</p></li>\r\n<li><p>Linux</p></li>\r\n</ul>',159,121,1,'CC-BY-SA','HPR,community,New Years Eve',0,0,1),
(3361,'2021-06-21','2020-2021 New Years Eve Show Episode 6',12738,'the hpr community stops by for a chat','<h2 id=\"welcome-to-the-9th-annual-hacker-public-radio-new-years-eve-show\">Welcome to the 9th Annual Hacker Public Radio New Years Eve Show</h2>\r\n<ul>\r\n<li><p>Vaccines</p></li>\r\n<li><p>Discussion about the movies: Jumanji, Wizard of Oz.</p></li>\r\n<li><p>Discussion about facebook, whatsapp, and social networks.</p></li>\r\n<li><p>Filk</p></li>\r\n<li><p>Performance of \"Alice the first woman on the moon\" written by Blind Lemon Chiffon.</p></li>\r\n<li><p>podcasting</p></li>\r\n<li><p>Dungeons and Dragons talk</p></li>\r\n<li><p>History</p></li>\r\n<li><p>staying awake for many hours</p></li>\r\n<li><p>geography</p></li>\r\n<li><p>geology</p></li>\r\n<li><p>languages</p></li>\r\n<li><p>food</p></li>\r\n<li><p>minecraft</p></li>\r\n<li><p>schools</p></li>\r\n<li><p>language</p></li>\r\n</ul>\r\n',159,121,1,'CC-BY-SA','HPR,community,new years eve',0,0,1),
(3366,'2021-06-28','2020-2021 New Years Eve Show Episode 7',9803,'the hpr community stops by for a chat','<h2 id=\"welcome-to-the-9th-annual-hacker-public-radio-new-years-eve-show\">Welcome to the 9th Annual Hacker Public Radio New Years Eve Show</h2>\r\n<ul>\r\n<li><p>language</p></li>\r\n<li><p>the murmur server (that was originally run by John Neusteter)</p></li>\r\n<li><p>mintcast</p></li>\r\n<li><p>Linux</p></li>\r\n<li><p>Some chatter about home packing and selling. Struggles with packing and finding places to move to out in the \'country\'.</p></li>\r\n<li><p>Free movement and Irish passports</p></li>\r\n<li><p>D\'n\'D talk. The absence of Klaatu.</p></li>\r\n<li><p>The current mumble server for this New year show is probably going to go away after this year.</p></li>\r\n<li><p>Mordancy makes shirts</p></li>\r\n<li><p>Dave talks about his recipe database</p></li>\r\n<li><p>how the HPR shows get posted</p></li>\r\n<li><p>audio books</p></li>\r\n<li><p>Legos</p></li>\r\n<li><p>Electricity is fun</p></li>\r\n<li><p>fun streaming video</p></li>\r\n<li><p>storage</p></li>\r\n<li><p>video game emulation</p></li>\r\n<li><p>Joe fixes headphones (were all shocked)</p></li>\r\n<li><p>weather</p></li>\r\n<li><p>Hunting</p></li>\r\n</ul>\r\n',159,121,1,'CC-BY-SA','HPR,community,new years eve',0,0,1),
(3372,'2021-07-06','2020-2021 New Years Eve Show Episode 8',5947,'the hpr community stops by for a chat','<h2 id=\"welcome-to-the-9th-annual-hacker-public-radio-new-years-eve-show\">Welcome to the 9th Annual Hacker Public Radio New Years Eve Show</h2>\r\n<ul>\r\n<li><p>Hunting</p></li>\r\n<li><p>food</p></li>\r\n<li><p>cpap machines</p></li>\r\n<li><p>Music</p></li>\r\n<li><p>Audio books</p></li>\r\n<li><p>podcasts</p></li>\r\n<li><p>Archive.org is great (support if possible please)</p></li>\r\n<li><p>Moss has a fun 2020</p></li>\r\n<li><p>Politics</p></li>\r\n<li><p>Health care</p></li>\r\n<li><p>grey hat</p></li>\r\n</ul>\r\n',159,121,1,'CC-BY-SA','HPR,community,new years eve',0,0,1),
(3345,'2021-05-28','Audio for Podcasting: Episode 2 - Equalization',965,'Thaj shares tips and tricks on producing quality audio for HPR episodes','<p>In this episode we discuss equalization in order to improve our audio quality for podcasting. We will use <a href=\"https://www.audacityteam.org/\">Audacity</a> to manipulate our equalization.</p>\r\n<p>The best method of achieving this is to use the Graphic EQ plugin. To use this select the audio you wish to process, then use the \"Effect\" menu to select the Graphic EQ plugin.</p>\r\n<p><img src=\"https://ia601405.us.archive.org/28/items/3_20210430_20210430/HPR1.png\" alt=\"The Graphic EQ plugin\" /> <img src=\"https://archive.org/download/3_20210430_20210430/2.png\" alt=\"An example of removing the bass frequencies in the Graphic EQ plugin\" /> <img src=\"https://archive.org/download/3_20210430_20210430/3.png\" alt=\"An example of boosting the bass frequencies in the Graphic EQ plugin\" /></p>',270,45,1,'CC-BY-SA','audio production, equalization, audio quality',0,0,1),
(3337,'2021-05-18','I like that the boat is stuck',527,'A dramatic reading of a work by Gailey','<p><strong><em>The episode is released under a Attribution-NonCommercial-NoDerivs 3.0 Unported (CC BY-NC-ND 3.0). HPR has been given non-exclusive rights to create and distribute audio narration with kind permission of the Author. For clarity, permission has not been granted for derivative works, commercial or otherwise, to be created from this narration. This license only applies to the audio narration, not the print version of the essay.</em></strong></p>\r\n<p>I found this piece really fascinating and I like that you can take a huge problem and still consider it simple. It puts a lot of other problems into perspective and I like how this piece is written.</p>\r\n<p><a href=\"https://stone-soup.ghost.io/archive/i-like-that-the-boat-is-stuck/\" class=\"uri\">https://stone-soup.ghost.io/archive/i-like-that-the-boat-is-stuck/</a></p>\r\n\r\n',382,0,0,'CC-BY-NC-ND','news, boat, stuck',0,0,1),
(3611,'2022-06-06','HPR Community News for May 2022',3341,'HPR Volunteers talk about shows released and comments posted in May 2022','<style>\ntable td.shrink {\n white-space:nowrap\n}\n</style>\n\n<h2>New hosts</h2>\n<p>\nWelcome to our new host: <br />\n\n <a href=\"https://hackerpublicradio.org/correspondents/0405.html\" target=\"_blank\">Lurking Prion</a>.\n</p>\n\n<h2>Last Month\'sShows</h2>\n<tableid=\"t01\">\n<tr>\n<th>Id</th>\n<th>Day</th>\n<th>Date</th>\n<th>Title</th>\n<th>Host</th>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3586\"target=\"_blank\">3586</a></strong></td>\n<td>Mon</td>\n<tdclass=\"shrink\">2022-05-02</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3586\"target=\"_blank\">HPRCommunityNewsforApril2022</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0159.html\"target=\"_blank\">HPRVolunteers</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3587\"target=\"_blank\">3587</a></strong></td>\n<td>Tue</td>\n<tdclass=\"shrink\">2022-05-03</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3587\"target=\"_blank\">20220406_UDM</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0036.html\"target=\"_blank\">operat0r</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3588\"target=\"_blank\">3588</a></strong></td>\n<td>Wed</td>\n<tdclass=\"shrink\">2022-05-04</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3588\"target=\"_blank\">LinuxInlawsS01E55:Getyerbootsonforafreshlookatinitsystems</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0384.html\"target=\"_blank\">monochromec</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3589\"target=\"_blank\">3589</a></strong></td>\n<td>Thu</td>\n<tdclass=\"shrink\">2022-05-05</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3589\"target=\"_blank\">Sampleofmymicrophones</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0318.html\"target=\"_blank\">Archer72</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3590\"target=\"_blank\">3590</a></strong></td>\n<td>Fri</td>\n<tdclass=\"shrink\">2022-05-06</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3590\"target=\"_blank\">DirectoryCommands</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0198.html\"target=\"_blank\">Ahuka</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3591\"target=\"_blank\">3591</a></strong></td>\n<td>Mon</td>\n<tdclass=\"shrink\">2022-05-09</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3591\"target=\"_blank\">SmallFlashlights</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0129.html\"target=\"_blank\">JWP</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3592\"target=\"_blank\">3592</a></strong></td>\n<td>Tue</td>\n<tdclass=\"shrink\">2022-05-10</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3592\"target=\"_blank\">AquicklookattheSurfaceproX</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0111.html\"target=\"_blank\">knightwise</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3593\"target=\"_blank\">3593</a></strong></td>\n<td>Wed</td>\n<tdclass=\"shrink\">2022-05-11</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3593\"target=\"_blank\">HomeofficesetupmouseshoulderandAutoHotKeyScripts</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0036.html\"target=\"_blank\">operat0r</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3594\"target=\"_blank\">3594</a></strong></td>\n<td>Thu</td>\n<tdclass=\"shrink\">2022-05-12</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3594\"target=\"_blank\">Peely-wallyinEdinburgh</a></td>\n<td><ahref=\"https:/
(3339,'2021-05-20','Linux Inlaws S01E30: Politicians and artificial intelligence part 2',3453,'Part 2 of the miniseries on Deep Learning, politicians and other approaches to intelligence (or not)','<p>After successfully navigating through the shallow (or not-so-shallow) depths of the first episode on deep learning fundamentals, our two heroes tackle a more concrete topic in this episode: How to use the damn stuff! No expenses will be spared to bring to the listeners the finer details of tensors, TensorFlow and other frameworks which serve as the basis for modern artificial intelligence / machine learning applications running on back-propagation networks (see the first episode on the foundations). Lifting the curtain even more, all will be revealed about a little corner shop called \"Google\" (well, almost all :-).\r\n</p>\r\n<h2>Links:</h2>\r\n<ul>\r\n<li>Torch: <a href=\"https://torch.ch\" target=\"_blank\">https://torch.ch</a>\r\n</li>\r\n<li>PyTorch: <a href=\"https://pytorch.org\" target=\"_blank\">https://pytorch.org</a>\r\n</li>\r\n<li>TensorFlow: <a href=\"https://www.tensorflow.org\" target=\"_blank\">https://www.tensorflow.org</a>\r\n</li>\r\n<li>Lua: <a href=\"https://www.lua.org\" target=\"_blank\">https://www.lua.org</a>\r\n</li>\r\n<li>BigTable: <a href=\"https://en.wikipedia.org/wiki/Bigtable\" target=\"_blank\">https://en.wikipedia.org/wiki/Bigtable</a>\r\n</li>\r\n<li>BigFS: <a href=\"https://en.wikipedia.org/wiki/Google_File_System\" target=\"_blank\">https://en.wikipedia.org/wiki/Google_File_System</a>\r\n</li>\r\n<li>Google\'sinnerworkings:<ahref=\"https://www.panmacmillan.com/authors/david-a-vise/the-google-story/9781509889211\"target=\"_blank\">https://www.panmacmillan.com/authors/david-a-vise/the-google-story/9781509889211</a>\r\n</li>\r\n<li>TPUs:<ahref=\"https://en.wikipedia.org/wiki/Tensor_Processing_Unit\"target=\"_blank\">https://en.wikipedia.org/wiki/Tensor_Processing_Unit</a>\r\n</li>\r\n<li>MoreDLframeworks:<ahref=\"https://en.wikipedia.org/wiki/Comparison_of_deep-learning_software\"target=\"_blank\">https://en.wikipedia.org/wiki/Comparison_of_deep-learning_software</a>\r\n</li>\r\n<li>TIOBEindex:<ahref=\"https://www.tiobe.com/tiobe-index\"target=\"_blank\">https://www.tiobe.com/tiobe-index</a>\r\n</li>\r\n<li>Stackoverflowsurvey:<ahref=\"https://insights.stackoverflow.com/survey/2020\"target=\"_blank\">https://insights.stackoverflow.com/survey/2020</a>\r\n</li>\r\n</ul>\r\n',384,111,1,'CC-BY-SA','Policitians,artificialintelligence,deeplearning',0,0,1),
(3343,'2021-05-26','The Forth programming language',761,'A less than complete history of Forth','<ul>\r\n<li><p>forth the early years<br />\r\n<a href=\"https://worrydream.com/refs/Moore%20-%20Forth%20-%20The%20Early%20Years.pdf\" class=\"uri\">https://worrydream.com/refs/Moore%20-%20Forth%20-%20The%20Early%20Years.pdf</a></p></li>\r\n<li><p><a href=\"https://en.wikipedia.org/wiki/Forth_(programming_language)\" class=\"uri\">https://en.wikipedia.org/wiki/Forth_(programming_language)</a></p></li>\r\n<li><p><a href=\"https://www.forth.com/resources/forth-programming-language/\" class=\"uri\">https://www.forth.com/resources/forth-programming-language/</a></p></li>\r\n<li><p><a href=\"https://colorforth.github.io/\" class=\"uri\">https://colorforth.github.io/</a></p></li>\r\n<li><p>chuck moore on youtube</p>\r\n<ul>\r\n<li>2019 <a href=\"https://youtu.be/81bkIqPpe0g\" class=\"uri\">https://youtu.be/81bkIqPpe0g</a></li>\r\n<li>2018 <a href=\"https://youtu.be/SX3kXbLmwn4\" class=\"uri\">https://youtu.be/SX3kXbLmwn4</a></li>\r\n<li>2008 <a href=\"https://youtu.be/ydeMNRxJ3Y8\" class=\"uri\">https://youtu.be/ydeMNRxJ3Y8</a></li>\r\n</ul></li>\r\n<li><p>klaatu on lisp <a href=\"https://gnuworldorder.info/audiophile/gnuWorldOrder_405.ogg\" class=\"uri\">https://gnuworldorder.info/audiophile/gnuWorldOrder_405.ogg</a></p></li>\r\n</ul>\r\n',326,0,0,'CC-BY-SA','programming, history',0,0,1),
(3440,'2021-10-08','Lighten Layer Modes',1168,'We continue our look at the Layer Modes in GIMP with the Lighten Modes','<p>Layer Modes, sometimes called Blending Modes, allow you to combine layers in a variety of ways. We continue with the Lighten Modes, except for Dodge which we will cover in the next tutorial along with Burn. These are the Layer Modes available on the latest (at the time I write this) version of GIMP, 2.10.24.</p>\r\n<h2 id=\"links\">Links:</h2>\r\n<ul>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Luma_(video)\" class=\"uri\">https://en.wikipedia.org/wiki/Luma_(video)</a></li>\r\n<li><a href=\"https://blog.johnnovak.net/2016/09/21/what-every-coder-should-know-about-gamma/\" class=\"uri\">https://blog.johnnovak.net/2016/09/21/what-every-coder-should-know-about-gamma/</a></li>\r\n<li><a href=\"https://www.youtube.com/watch?v=Ijwb1R07aa0\" class=\"uri\">https://www.youtube.com/watch?v=Ijwb1R07aa0</a></li>\r\n<li><a href=\"https://docs.gimp.org/2.10/en/gimp-concepts-layer-modes.html\" class=\"uri\">https://docs.gimp.org/2.10/en/gimp-concepts-layer-modes.html</a></li>\r\n<li><a href=\"https://www.ahuka.com/gimp/lighten-layer-modes/\" class=\"uri\">https://www.ahuka.com/gimp/lighten-layer-modes/</a></li>\r\n</ul>\r\n',198,113,0,'CC-BY-SA','GIMP, Layer Modes, Blending Modes, Lighten',0,0,1),
(3450,'2021-10-22','Internal Commands',746,'More on DOS. This time it is Internal Commands.','<p>This tutorial looks at DOS Internal Commands, which in some sense are analogous to shell commands in Linux. That means that the command interpreter already has these loaded and ready to go when you boot.</p>\r\n<h2 id=\"links\">Links:</h2>\r\n<ul>\r\n<li><a href=\"https://webopedia.internet.com/TERM/c/command.html\" class=\"uri\">https://webopedia.internet.com/TERM/c/command.html</a></li>\r\n<li><a href=\"https://www.ahuka.com/dos-lessons-for-self-study-purposes/dos-lesson-3-internal-commands/\" class=\"uri\">https://www.ahuka.com/dos-lessons-for-self-study-purposes/dos-lesson-3-internal-commands/</a></li>\r\n</ul>\r\n',198,117,0,'CC-BY-SA','DOS, early PC computing, Internal Commands',0,0,1),
(3460,'2021-11-05','Dodge and Burn',1107,'We continue our look at the Layer Modes in GIMP with Dodge and Burn','<p>Layer Modes, sometimes called Blending Modes, allow you to combine layers in a variety of ways. We continue with the Dodge and Burn Modes. Dodge is one of the Lighten Modes, while Burn is one of the Darken Modes, but I pulled them out for their own tutorial because they are not only closely related (inverse of each other), but also because I wanted to cover their use as Tool Modes in addition to Layer Modes. These are the Layer Modes available on the latest (at the time I write this) version of GIMP, 2.10.24.</p>\r\n<h2 id=\"links\">Links:</h2>\r\n<ul>\r\n<li><a href=\"https://docs.gimp.org/2.10/en/gimp-tools-paint.html#gimp-tools-paint-options\" class=\"uri\">https://docs.gimp.org/2.10/en/gimp-tools-paint.html#gimp-tools-paint-options</a></li>\r\n<li><a href=\"https://www.ahuka.com/gimp/a-layer-mask-project/\" class=\"uri\">https://www.ahuka.com/gimp/a-layer-mask-project/</a></li>\r\n<li><a href=\"https://digitalmedia.fws.gov/digital/collection/natdiglib/id/14486/rec/210\" class=\"uri\">https://digitalmedia.fws.gov/digital/collection/natdiglib/id/14486/rec/210</a></li>\r\n<li><a href=\"https://www.youtube.com/watch?v=bbaAEZl7_44\" class=\"uri\">https://www.youtube.com/watch?v=bbaAEZl7_44</a></li>\r\n<li><a href=\"https://www.ahuka.com/gimp/dodge-and-burn/\" class=\"uri\">https://www.ahuka.com/gimp/dodge-and-burn/</a></li>\r\n</ul>\r\n',198,113,0,'CC-BY-SA','GIMP, Layer Modes, Blending Modes, Dodge and Burn',0,0,1),
(3470,'2021-11-19','External Commands and Emergency Boot Disk',1008,'More on DOS. This time it is External Commands and Emergency Boot Disk','<p>In our continuing exploration of DOS we come to the topics of External Commands and Emergency Boot Disks. We cover them together because External Commands may not be available on your Emergency Boot Disk unless you take steps to include them, unlike Internal Commands, which are always part of a Boot Disk.</p>\r\n<h2 id=\"links\">Links:</h2>\r\n<ul>\r\n<li><a href=\"https://www.ahuka.com/dos-lessons-for-self-study-purposes/dos-lesson-4-external-commands-emergency-boot-disk/\" class=\"uri\">https://www.ahuka.com/dos-lessons-for-self-study-purposes/dos-lesson-4-external-commands-emergency-boot-disk/</a></li>\r\n</ul>\r\n',198,117,0,'CC-BY-SA','DOS, early PC computing, External Commands, Emergency Boot Disk',0,0,1),
(3480,'2021-12-03','Darken Layer Modes',883,'More on Layer Modes in GIMP with the Darken Modes','<p>Layer Modes, sometimes called Blending Modes, allow you to combine layers in a variety of ways. We continue with the Darken Modes, except for Burn, which was covered in the previous tutorial. Darken modes do what they say on the tin, they make things darker, and so they are kind of the inverse of the Lighten Modes. These are the Layer Modes available on the latest (at the time I write this) version of GIMP, 2.10.24. I also take the time to discuss image formats such as JPG, PNG, and RAW.</p>\r\n<h2 id=\"links\">Links:</h2>\r\n<ul>\r\n<li><a href=\"https://www.ahuka.com/gimp/lighten-layer-modes/\" class=\"uri\">https://www.ahuka.com/gimp/lighten-layer-modes/</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Portable_Network_Graphics\" class=\"uri\">https://en.wikipedia.org/wiki/Portable_Network_Graphics</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/JPEG\" class=\"uri\">https://en.wikipedia.org/wiki/JPEG</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Raw_image_format\" class=\"uri\">https://en.wikipedia.org/wiki/Raw_image_format</a></li>\r\n<li><a href=\"https://www.youtube.com/watch?v=XbcA9iSTudY\" class=\"uri\">https://www.youtube.com/watch?v=XbcA9iSTudY</a></li>\r\n<li><a href=\"https://daviesmediadesign.com/project/open-raw-images-gimp-2-10/\" class=\"uri\">https://daviesmediadesign.com/project/open-raw-images-gimp-2-10/</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Dodging_and_burning\" class=\"uri\">https://en.wikipedia.org/wiki/Dodging_and_burning</a></li>\r\n<li><a href=\"https://docs.gimp.org/2.10/en/gimp-concepts-layer-modes.html\" class=\"uri\">https://docs.gimp.org/2.10/en/gimp-concepts-layer-modes.html</a></li>\r\n<li><a href=\"https://www.ahuka.com/gimp/darken-modes/\" class=\"uri\">https://www.ahuka.com/gimp/darken-modes/</a></li>\r\n</ul>\r\n',198,113,0,'CC-BY-SA','GIMP, Layer Modes, Blending Modes, Darken Modes',0,0,1),
(3490,'2021-12-17','The Path',906,'More on DOS. This time it is the Path.','<p>In this DOS tutorial we take a look at the Path, an important concept. While the concept continues to be used in modern operating systems like Linux, in DOS you had severe limitations you always had to be conscious of. Remember that this was in the days when 640KB was enough memory for anyone.</p>\r\n<h2 id=\"links\">Links:</h2>\r\n<ul>\r\n<li><a href=\"https://www.ahuka.com/dos-lessons-for-self-study-purposes/dos-lesson-5-the-path/\" class=\"uri\">https://www.ahuka.com/dos-lessons-for-self-study-purposes/dos-lesson-5-the-path/</a></li>\r\n</ul>\r\n',198,117,0,'CC-BY-SA','DOS, early PC computing, The Path',0,0,1),
(3349,'2021-06-03','Linux Inlaws S01E31: Interview with Paul Ramsey FOSS aficionado and entrepreneur',3923,'An interview with Paul Ramsey, FLOSS entrepreneur and OpenGeo fame','<p>\r\nIn this episode the inlaws host Paul Ramsey of OpenGeo fame. Apart from his PostgreSQL contributions,\r\nPaul is probably best known for GIS work and geo DB contributions in general (in addition to\r\noff-the-beaten track stuff like URL of his website among other things). Don\'tmissthisfornuggets\r\nongeodatabasesandbeyond!\r\n</p>\r\n<h2>Links:</h2>\r\n<ul>\r\n<li>PaulRamsey:<ahref=\"https://blog.cleverelephant.ca/\"target=_blank>https://blog.cleverelephant.ca/</a></li>\r\n<li>PostgreSQL:<ahref=\"https://www.postgresql.org\"target=_blank>https://www.postgresql.org</a></li>\r\n<li>PostGIS:<ahref=\"https://postgis.net\"target=_blank>https://postgis.net</a></li>\r\n<li>FOSS4G2019:<ahref=\"https://www.youtube.com/watch?v=NQ5_NnrBHjo\"target=_blank>https://www.youtube.com/watch?v=NQ5_NnrBHjo</a></li>\r\n</ul>\r\n',384,111,1,'CC-BY-SA','PostgreSQL,PostGIS',0,0,1),
(3344,'2021-05-27','Infosec Podcasts Part 3 - Infosec Career and Personal Development',366,'Presenting my favorite podcasts related to information security careers and growth','<p>Inoffensive in every region of the world</p>\r\n<p>Infosec Podcasts Part 3 – Infosec Career & Personal Development</p>\r\n<p>Why am I recording this series?</p>\r\n<p>\"What podcasts you listen to\" was on the list of recommended topics</p>\r\n<p>I am passionate about information security</p>\r\n<p>We desperately need people to fill infosec jobs in many different specialties</p>\r\n<p>Infosec is a rapidly changing field, and it is critical to stay current</p>\r\n<p>As a result I listen to TONS of infosec related podcasts</p>\r\n<p>Because there are so many podcasts to list, I will break them down into 6 different episodes based on topics:</p>\r\n<ul>\r\n<li>Part 1 - News & Current Events</li>\r\n<li>Part 2 - General Information Security</li>\r\n<li>Part 3 - Career & Personal Development</li>\r\n<li>Part 4 - Social Engineering</li>\r\n<li>Part 5 -\r\n<ul>\r\n<li>Hacks & Attacks</li>\r\n<li>Technical Information & Learning</li>\r\n<li>Infosec Community / Social / History</li>\r\n</ul></li>\r\n<li>Part 6 - Infosec Leadership</li>\r\n</ul>\r\n<h2 id=\"part-3\">Part 3</h2>\r\n<h3 id=\"career-personal-development\">Career & Personal Development</h3>\r\n<ul>\r\n<li><p>Getting into Infosec - Ayman Elsawah (Monthly)<br />\r\nWas a monthly podcast, but the last recorded episode dropped February 2021<br />\r\nStories of how Infosec and Cybersecurity pros got jobs in the field so you can be inspired, motivated, and educated on your journey<br />\r\n<a href=\"https://gettingintoinfosec.com/\" class=\"uri\">https://gettingintoinfosec.com/</a></p></li>\r\n<li><p>Infosec Career Podcast – Jason Wood (Discontinued March 2020)<br />\r\nInterviews with infosec professionals discussing their career journeys<br />\r\n<a href=\"https://infoseccareer.libsyn.com/\" class=\"uri\">https://infoseccareer.libsyn.com/</a></p></li>\r\n<li><p>Cyber Security Interviews – Douglas Brush (Bi-weekly)<br />\r\nA weekly interview based podcast with top cyber security professionals discussing how they got where they are and their perspectives on the industry<br />\r\n<a href=\"https://cybersecurityinterviews.com/\" class=\"uri\">https://cybersecurityinterviews.com/</a></p></li>\r\n<li><p>Humans of Infosec - Caroline Wong & Mike Shema (Bi-weekly)<br />\r\nA weekly podcast interviewing people from diverse backgrounds involved in infosec.<br />\r\n<a href=\"https://soundcloud.com/humans-of-infosec\" class=\"uri\">https://soundcloud.com/humans-of-infosec</a></p></li>\r\n<li><p>Hacker Valley Studio – Chris Cochran & Ron Eddings (Weekly)<br />\r\nDiscussions of personal growth and maturity within Infosec & life<br />\r\n<a href=\"https://hackervalley.com/\" class=\"uri\">https://hackervalley.com/</a></p></li>\r\n<li><p>We Hack Purple – Tanya Janka (Weekly)<br />\r\nInterview based podcast discussing various infosec careers with a diverse array of guests<br />\r\n<a href=\"https://wehackpurple.com/podcast.html\" class=\"uri\">https://wehackpurple.com/podcast.html</a></p></li>\r\n</ul>\r\n',394,75,0,'CC-BY-SA','infosec, podcasts, security',0,0,1),
(3347,'2021-06-01','Ethical Analysis of Renewable Energy and Conservation',904,'I read a paper I wrote about the ethical issues of renewable energy and conservation efforts.','<h3 id=\"original-essay\">Original essay:</h3>\r\n<p><a href=\"https://hackerpublicradio.org/eps/hpr3347/ethical_analysis_of_renewable_energy_and_conservation.pdf\">https://hackerpublicradio.org/eps/hpr3347/ethical_analysis_of_renewable_energy_and_conservation.pdf</a></p>\r\n<h3 id=\"references\">References</h3>\r\n<ul>\r\n<li>Bedard, Paul (2010, March 23). High Energy Costs for the Poor Might Push Action in Congress. Washington Whispers, U.S. News, Sunday, April 11, 2010 <a href=\"https://www.usnews.com\" class=\"uri\">https://www.usnews.com</a></li>\r\n<li>Colton, Roger D. (1994, July/August). Energy and Low-Income Housing: Part I Energy Policy Hurts The Poor. NHI Shelterforce. Issue #76. Retrieved from <a href=\"https://www.nhi.org\" class=\"uri\">https://www.nhi.org</a></li>\r\n<li>Ellen (2008, October 4). Poverty and Crime [Web log message], retrieved from Defining Canada, <a href=\"https://www.definingcanada.ca\" class=\"uri\">https://www.definingcanada.ca</a></li>\r\n<li>Fellegi, Ivan P. (1997, September). On poverty and low income, retrieved March 31, 2010 from Statistics Canada web site, <a href=\"https://www.statcan.gc.ca/pub/13f0027x/13f0027x1999001-eng.htm\" class=\"uri\">https://www.statcan.gc.ca/pub/13f0027x/13f0027x1999001-eng.htm</a></li>\r\n<li>Minu (2010, April 2). Lamps | Compact Fluorescent Lamps (CFL) [Web log message]. Retrieved from House Construction in India, <a href=\"https://houseconstructionindia.blogspot.com\" class=\"uri\">https://houseconstructionindia.blogspot.com</a></li>\r\n<li>Patel, Julie (2010, March 11). NAACP and FPL: Saving too much energy hurts the poor [web log message], Retrieved from SunSentinel.com, <a href=\"https://weblogs.sun-sentinel.com\" class=\"uri\">https://weblogs.sun-sentinel.com</a></li>\r\n<li>Smith, Adam (1776). An Inquiry into the Nature And Causes of the Wealth of Nations. Public domain.</li>\r\n<li>Toohey, Marty (2009, September 21). Advocates concerned Austin Energy plans will hurt poor, elderly. statesman.com. Retrieved from www.statesman.com</li>\r\n<li>Walsh, Bryan (2009, February 17). Building Green Houses for the Poor. Time. Retrieved from <a href=\"https://www.time.com\" class=\"uri\">https://www.time.com</a>.</li>\r\n</ul>',383,0,0,'CC-BY-SA','Ethics,renewable,energy,poverty,solar,wind,conservation,green',0,0,1),
(3348,'2021-06-02','Feedback on the Article by hedorah about HPR',4420,'Join the policy discussions on the mail list','<p>hedorah posted an article <a href=\"https://foxacid.se/hedorah/posts/hpr/\">https://foxacid.se/hedorah/posts/hpr/</a>, and we read out the mail thread that resulted <a href=\"https://hackerpublicradio.org/pipermail/hpr_hackerpublicradio.org/2021-April/014931.html\">https://hackerpublicradio.org/pipermail/hpr_hackerpublicradio.org/2021-April/014931.html</a></a>',30,0,1,'CC-BY-SA','HPR, policy decisions',0,0,1),
(3500,'2021-12-31','Contrast Layer Modes',1019,'More on Layer Modes in GIMP with the Contrast Modes','<p>Layer Modes, sometimes called Blending Modes, allow you to combine layers in a variety of ways. We continue with the Contrast Modes, which are ways of combining layers that can heighten the contrast my making light pixels lighter and dark pixels darker. These are the Layer Modes available on the latest (at the time I write this) version of GIMP, 2.10.24.</p>\r\n<h2 id=\"links\">Links:</h2>\r\n<ul>\r\n<li><a href=\"https://docs.gimp.org/2.10/en/gimp-concepts-layer-modes.html\" class=\"uri\">https://docs.gimp.org/2.10/en/gimp-concepts-layer-modes.html</a></li>\r\n<li><a href=\"https://www.ahuka.com/gimp/darken-modes/\" class=\"uri\">https://www.ahuka.com/gimp/darken-modes/</a></li>\r\n</ul>\r\n',198,113,0,'CC-BY-SA','GIMP, Layer Modes, Blending Modes, Contrast Modes',0,0,1),
(3510,'2022-01-14','Syntax, Switches, and Help',1215,'We continue our look the old warhorse, DOS. This time it is Syntax, Switches, and Help.','<p>Since DOS is a command line type of operating system, it is really important that you understand the syntax of commands. The good news is that the system will do what you tell it to do. But the bad news is that it will do what you tell it to do. You have to tell it in the precisely correct way, and that means Syntax. And with a number of commands you can modify them using Switches. And where do you learn all about Syntax and Switches? Why, in the HELP system, of course!</p>\r\n<h2 id=\"links\">Links:</h2>\r\n<ul>\r\n<li><a href=\"https://www.ahuka.com/dos-lessons-for-self-study-purposes/dos-lesson-6-syntax-and-switches-help-system/\" class=\"uri\">https://www.ahuka.com/dos-lessons-for-self-study-purposes/dos-lesson-6-syntax-and-switches-help-system/</a></li>\r\n</ul>\r\n',198,117,0,'CC-BY-SA','DOS, early PC computing, syntax, switches, help',0,0,1),
(3520,'2022-01-28','Inversion Layer Modes',1064,'More on Layer Modes in GIMP with the Inversion Modes','<p>Layer Modes, sometimes called Blending Modes, allow you to combine layers in a variety of ways. We continue with the Inversion Modes, which in various ways invert the lightness and the color values of the component layers. These are the Layer Modes available on the latest (at the time I write this) version of GIMP, 2.10.24.</p>\r\n<h2 id=\"links\">Links:</h2>\r\n<ul>\r\n<li><a href=\"https://www.ahuka.com/gimp/lighten-layer-modes/\" class=\"uri\">https://www.ahuka.com/gimp/lighten-layer-modes/</a></li>\r\n<li><a href=\"https://docs.gimp.org/2.10/en/gimp-concepts-layer-modes.html\" class=\"uri\">https://docs.gimp.org/2.10/en/gimp-concepts-layer-modes.html</a></li>\r\n<li><a href=\"https://www.ahuka.com/gimp/darken-modes/\" class=\"uri\">https://www.ahuka.com/gimp/darken-modes/</a></li>\r\n</ul>',198,113,0,'CC-BY-SA','GIMP, Layer Modes, Blending Modes, Inversion Modes',0,0,1),
(3530,'2022-02-11','Filenames and ASCII',875,'We continue our look at the old warhorse, DOS. This time it is DOS filenames and ASCII','<p>In a purely text-based operating system you need to pay special attention to naming files. You won\'thaveanyhelpfuliconsorthumbnailstohelpyoulocatethings.SowedigintothefilenamingconventionsinDOS,includingforbiddencharacters.AndsincethepossiblecharactersallcomefromtheASCIIcharacterset,wedoasmalllookatthataswell.</p>\r\n<h2id=\"links\">Links:</h2>\r\n<ul>\r\n<li><ahref=\"https://webopedia.internet.com/TERM/A/ASCII.html\"class=\"uri\">https://webopedia.internet.com/TERM/A/ASCII.html</a></li>\r\n<li><ahref=\"https://www.techweb.com/encyclopedia/defineterm?term=ASCIIchart\"class=\"uri\">https://www.techweb.com/encyclopedia/defineterm?term=ASCIIchart</a></li>\r\n<li><ahref=\"https://www.ahuka.com/dos-lessons-for-self-study-purposes/dos-lesson-7-dos-filenames-ascii/\"class=\"uri\">https://www.ahuka.com/dos-lessons-for-self-study-purposes/dos-lesson-7-dos-filenames-ascii/</a></li>\r\n</ul>\r\n',198,117,0,'CC-BY-SA','DOS,earlyPCcomputing,filenames,ASCII',0,0,1),
(3353,'2021-06-09','My terminal journey, part 01.',2814,'Becoming terminal friendly.','<h2 id=\"book-tlcl\">Book <a href=\"https://sourceforge.net/projects/linuxcommand/files/TLCL/19.01/TLCL-19.01.pdf/download\" title=\"download link\">TLCL</a></h2>\r\n<p>The Linux Command Line: <a href=\"https://www.linuxcommand.org/tlcl.php\">https://www.linuxcommand.org/tlcl.php</a></p>\r\n<h2 id=\"my-bashrc-alias\">My .bashrc alias</h2>\r\n<pre><code># ls aliases\r\nalias la='ls -Alh --group-directories-first'\r\nalias lr='ls -lh --group-directories-first --recursive'\r\nalias lar='ls -Alh --group-directories-first --recursive'\r\n\r\n# safety first ;)\r\nalias rmi='rm --interactive --verbose'\r\nalias mvi='mv --interactive --verbose'\r\nalias cpi='cp --interactive --verbose'\r\n\r\n# cd reverse dir\r\nalias ..='cd ..'\r\nalias .2='cd ../..'\r\nalias .3='cd ../../..'\r\nalias .4='cd ../../../..'\r\nalias .5='cd ../../../../..'\r\n\r\n# cd dir\r\nalias cd.d='cd ~/Documents/.dump'\r\n\r\n# shutdown | reboot\r\nalias ssn='sudo shutdown -P now'\r\nalias sr='sudo reboot'\r\n\r\n# Misc\r\nalias nrpt='echo -e "\\n\\n---\\n\\nNew Report\\n\\n---\\n\\n"'\r\n</code></pre>\r\n<h2 id=\"my-dump-script\">My dump script</h2>\r\n<pre><code>#!/bin/bash\r\n\r\ndump=dump$(date +%m-%d-%Y).txt\r\npdat=$(date +%a_%b_%d_%Y_%T)\r\n\r\ntouch $dump;\r\n\r\necho -e "$pdat" > $dump; echo -e "\\n\\nThis file is used to store terminal output for later use; now get out!\\n\\n" >> $dump;\r\n\r\necho -e "\\n\\nDump file $dump is ready for use (created on $(date +%m-%d-%Y_%T)).\\n\\n"\r\n</code></pre>\r\n<h2 id=\"my-upgrade-script\">My Upgrade script</h2>\r\n<pre><code>#!/bin/bash\r\n\r\ndp=dump$(date +%m-%d-%Y).txt\r\n\r\ndate | tee -a ./$dp; echo -e "\\n" | tee -a ./$dp;\r\n\r\nsudo apt-get update | tee -a ./$dp; echo -e "\\n" | tee -a ./$dp;\r\necho -e "System Update Completed." | tee -a ./$dp; echo -e "\\n" | tee -a ./$dp;\r\n\r\nsudo apt-get upgrade --yes | tee -a ./$dp; echo -e "\\n" | tee -a ./$dp;\r\necho -e "System Upgrade Completed." | tee -a ./$dp; echo -e "\\n" | tee -a ./$dp;\r\n</code></pre>\r\n<h2 id=\"commands\">Commands</h2>\r\n<ol>\r\n<li><p>the upgrade example <code>sudo apt-get update | tee -a ~/Documents/.dump/dump05-05-2021.txt; nrpt >> ./dump05-05-2021.txt;</code></p></li>\r\n<li><p>the nmap example (plus the other command I couldn\'trememberwhilerecording)<code>apt-cachesearchnmap>>./dump05-05-2021.txt;nrpt>>./dump05-05-2021.txt;</code><code>apt-cacheshowpkgnmap</code></p></li>\r\n<li><p>thedependsexample<code>apt-cachedependsnmap>>./dump05-05-2021.txt;</code></p></li>\r\n<li><p>thedownloadexample<code>sudoapt-getdownloaddictdictddict-wndict-gcideartha</code></p></li>\r\n<li><p>vim<code>sudoapt-getvim;vimtutor</code></p></li>\r\n<li><p>Terminalexamples<code>~</code>=homefolder,<code>CTRL+R</code>=commandsearch,<code>CTRL+L</code>=clearterminal,<code>xdg-open</code>=openfileswithdefaultapp.</p></li>\r\n<li><p>Searchingwithgrepexample<code>ls-lhAr~|grep-ibash>>./dump05-05-2021.txt</code></p></li>\r\n<li><p>thedump05-05-2021.txtfile</p></li>\r\n</ol>\r\n<pre><code>Wed_May_05_2021_12:22:43\r\n\r\nThisfileisusedtostoreterminaloutputforlateruse;nowgetout!\r\n\r\n\r\nHit:1https://dl.google.com/linux/chrome/debstableInRelease\r\nIgn:2https://mirror.cs.jmu.edu/pub/linuxmint/packagesulyanaInRelease\r\nGet:3https://security.ubuntu.com/ubuntufocal-securityInRelease[109kB]\r\nHit:4https://mirror.cs.jmu.edu/pub/linuxmint/packagesulyanaRelease\r\nHit:5https://mirror.cogentco.com/pub/linux/ubuntufocalInRelease\r\nHit:6https://mirror.cogentco.com/pub/linux/ubuntufocal-updatesInRelease\r\nHit:7https://archive.canonical.com/ubuntufocalInRelease\r\nHit:8https://mirror.cogentco.com/pub/linux/ub
(3354,'2021-06-10','My Devices',1455,'I walk around my house and talk about any interesting Devices i have','N/A\r\n\r\n\r\n<p>\r\n<small>Added by Ken</small><br />\r\noperat0r and Son walk around the house talking about the devices that he has.\r\n</p>\r\n<ol>\r\n<li>Android meeting alarms</li>\r\n<li><a href=\"https://www.mozilla.org/en-US/firefox/new/\">Firefox</a></li>\r\n<li><a href=\"https://privacybadger.org/\">Privacy Badger</a></li>\r\n<li><a href=\"https://ublockorigin.com/\">UBlock Origin</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/eps.php?id=3321\">DNS66</a></li>\r\n<li><a href=\"https://voice.google.com/\">Google Voice</a></li>\r\n<li>CCTV Camera, to Zone Minder</li>\r\n<li><a href=\"https://pjreddie.com/darknet/\">DarkNet</a></li>\r\n<li><a href=\"https://kodi.tv/\">Kodi</a></li>\r\n<li><a href=\"https://sonarr.tv/\">sonarr</a></li>\r\n<li><a href=\"https://radarr.video/\">radarr</a></li>\r\n<li><a href=\"https://ombi.io/\">Ombi</a></li>\r\n<li><a href=\"https://www.plex.tv/\">Plex</a></li>\r\n<li><a href=\"https://www.accuweather.com/\">AccuWeather</a></li>\r\n<li><a href=\"https://blueteamlabs.online/\">Blue Team Labs</a></li>\r\n<li>Admin mode on bluethoot TV</li>\r\n<li>iroso ncf wireless bluetooth headset</li>\r\n<li><a href=\"https://www.amazon.com/Bluetooth-Receiver-Transmitter-Wireless-Headphones/dp/B00VJTIMIS\">Keedox V4.0 Bluetooth Music Receiver Transmitter</a></li>\r\n<li><a href=\"https://www.hunterindustries.com/\">Hunter Irrigation</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Infiniti_G-series_(Q40/Q60)\">Nissan Infiniti Q40</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Wii_U\">Nintendo Wii U</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Nintendo_Switch\">Nintendo Switch</a></li>\r\n<li><a href=\"https://gorillatough.com/\">Gorilla Glue</a></li>\r\n<li>Chargemaster 3000</li>\r\n<li>Get splitbox AC</li>\r\n<li><a href=\"https://steelseries.com/gaming-headsets\">Steel Series HeadSet</a></li>\r\n<li><a href=\"https://www.tindie.com/products/RobG/msp430-nixie-clock-kit/\">MSP430 Nixie Clock kit from RobG on Tindie</a></li>\r\n<li><a href=\"https://play.google.com/store/apps/details?id=co.brili.routines&hl=en_US&gl=US\">Brili Routines - Visual Timer for Kids</a></li>\r\n<li><a href=\"https://www.sonicalert.com/SBB500SS-Alarm-Clock\">Sonic Bomb Alarm Clock</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Chromecast\">Chromecast</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Pulse_oximetry\">Pulse oximetry</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Transcutaneous_electrical_nerve_stimulation\">Transcutaneous electrical nerve stimulation (TENS)</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Roomba\">Roomba</a></li>\r\n<li><a href=\"https://www.zircon.com/categories/water-detectors/\">Zircom Wireless Water Detectors</a></li>\r\n</ol>',36,0,0,'CC-BY-SA','devices',0,0,1),
(3357,'2021-06-15','My terminal journey, part 02.',1890,'Becoming terminal friendly.','<h2 id=\"discovering-the-packages-vertical-lists\">Discovering the packages; vertical lists.</h2>\r\n<p><a href=\"https://en.wikipedia.org/wiki/APT_(software)\" title=\"wiki\">apt package manager</a></p>\r\n<ul>\r\n<li><p><strong>First Command:</strong> <code>sudo apt list --upgradeable</code></p></li>\r\n<li><p><strong>Command Breakdown:</strong></p>\r\n<ul>\r\n<li><code>sudo</code> is <strong>root privileges</strong> (to become admin for a single command).</li>\r\n<li><code>apt</code> is the Command Name.</li>\r\n<li><code>list</code> to display a list of packages satisfying certain <strong>criteria</strong>.</li>\r\n<li><code>--upgradeable</code> the <strong>criteria</strong></li>\r\n</ul></li>\r\n<li><p>Command Standard Output: (abridged)</p>\r\n<pre><code>Listing...\r\nalsa-ucm-conf/focal-updates,focal-updates 1.2.2-1ubuntu0.7 all [upgradable from: 1.2.2-1ubuntu0.6]\r\nalsa-utils/focal-updates 1.2.2-1ubuntu2.1 amd64 [upgradable from: 1.2.2-1ubuntu2]\r\nbluetooth/focal-updates,focal-updates 5.53-0ubuntu3.1 all [upgradable from: 5.53-0ubuntu3]\r\ngir1.2-webkit2-4.0/focal-updates,focal-security 2.32.0-0ubuntu0.20.04.1 amd64 [upgradable from: 2.30.6-0ubuntu0.20.04.1]\r\ngoogle-chrome-stable/stable 90.0.4430.212-1 amd64 [upgradable from: 90.0.4430.93-1]\r\niio-sensor-proxy/focal-updates 2.8-1ubuntu1 amd64 [upgradable from: 2.8-1]\r\nqemu-system-x86/focal-updates 1:4.2-3ubuntu6.16 amd64 [upgradable from: 1:4.2-3ubuntu6.15]\r\nqemu-utils/focal-updates 1:4.2-3ubuntu6.16 amd64 [upgradable from: 1:4.2-3ubuntu6.15]\r\nsamba-common-bin/focal-updates,focal-security 2:4.11.6+dfsg-0ubuntu1.8 amd64 [upgradable from: 2:4.11.6+dfsg-0ubuntu1.6]\r\n</code></pre></li>\r\n</ul>\r\n<hr />\r\n<h2 id=\"discovering-the-packages-horizontal-list\">Discovering the packages; horizontal list.</h2>\r\n<p><a href=\"https://linux.die.net/man/8/apt-get\" title=\"apt-get manpage\">apt-get package manager</a></p>\r\n<ul>\r\n<li><p><strong>Second Command:</strong> <code>sudo apt-get -u upgrade --assume-no</code></p></li>\r\n<li><p><strong>Command Breakdown:</strong></p>\r\n<ul>\r\n<li><code>sudo</code> is <strong>root privileges</strong> (to become admin for a single command).</li>\r\n<li><code>apt-get</code> is the Command Name.</li>\r\n<li><code>-u</code> or <code>--show-upgraded</code> list of packages that are to be upgraded; must be used with <code>upgrade</code>.</li>\r\n<li><code>upgrade</code> is used to install the newest versions of all packages currently installed.</li>\r\n<li><code>--assume-no</code> Automatically answers \"No\" when the command asks, “Do you want to continue? [Y/n]”. (Do you want to upgrade at this moment? No. You get it).</li>\r\n</ul></li>\r\n<li><p><strong>Note:</strong> Linux Mint 20 manpage for <code>apt-get</code> does not include the <code>-u</code> option or description.</p>\r\n<pre><code>-u, --show-upgraded\r\nShow upgraded packages. Print out a list of all packages that are to be upgraded.\r\n</code></pre></li>\r\n<li><p>Command Standard Output:</p>\r\n<pre><code>Reading package lists...\r\nBuilding dependency tree...\r\nReading state information...\r\nCalculating upgrade...\r\nThe following packages were automatically installed and are no longer required:\r\n libllvm10 libllvm10:i386 libnvidia-common-450 libnvidia-compute-455:i386\r\n libnvidia-decode-455:i386 libnvidia-encode-455:i386 libnvidia-fbc1-455:i386\r\n libnvidia-gl-455:i386 libnvidia-ifr1-455:i386 nvidia-kernel-common-455\r\n nvidia-kernel-source-455 nvidia-utils-455 xserver-xorg-video-nvidia-455\r\nUse 'sudo apt autoremove' to remove them.\r\nThe following packages have been kept back:\r\n libnvidia-common-450 libnvidia-common-460 linux-generic\r\n linux-headers-generic linux-image-generic\r\nThe following packages will be upgraded:\r\n alsa-ucm-conf alsa-utils bluetooth bluez bluez-cups bluez-obexd firefox\r\n firefox-locale-en flatpak gir1.2-flatpak-1.0 gir1.2-javascriptcoregtk-4.0\r\n gir1.2-webkit2-4.0 google-chrome-stable iio-sensor-pr
(3358,'2021-06-16','BlastEm! A wicked awesome Sega Genesis/Megadrive emulator',1320,'This is an interview with the author of BlastEm, a Sega Genesis/Megadrive emulator','<p>In this Hacker Public Radio we talk to Mike about his emulator, BlastEm.</p>\r\n<p>This is the official BlastEm url: <a href=\"https://www.retrodev.com/blastem/\" class=\"uri\">https://www.retrodev.com/blastem/</a></p>\r\n',115,0,0,'CC-BY-SA','genesis megadrive emulation',0,0,1),
(3355,'2021-06-11','Tiki Hell',761,'I talk about my thoughts on outdoor torches','<p>Don\'tbuyTikianything...</p>\r\n',36,0,0,'CC-BY-SA','outdoor,tiki',0,0,1),
(3367,'2021-06-29','Making books with linux - part 1',3367,'A discussion about assembling books using simple tools commonly found in most linux distros.','<p>Andrew and Dave describe a common itch they have been scratching. Andrew talks through his approach to document creation in this episode and Dave will describe his in the next episode.</p>\r\n<p>Andrew was inspired by a simple and elegant approach to eBook creation by Jon Kulp, possibly from listening to <a href=\"https://hackerpublicradio.org/eps.php?id=1909\">HPR 1909</a> several years ago.</p>\r\n<p>In Andrew\'sapproach,bashandpythonscriptsassemblevarioustextfilesintothebook,insertingfiguresandtablesusingasimplehome-brewtagsystemtogeneratereferencenumberssuchasFigure3.7orTable2.2.Suchauto-numberingfunctionalityisofcourseprovidedbymanyotherdocumentauthoringsystems,suchasLaTeX,butthescriptalsousesthetagstohuntdowndatainCSVfilesandconvertthemintothefigures.Inthisway,nearlyallinformationinthebookcanstartoffastextandthenbeprocessedintoanything—prose,graphics,soundorevenmovies—thatcanbeincludedwithHTML.AlsoacleanseparationbetweencontentandappearanceiskeptbyusingaCSSfile.</p>\r\n<p>ThisisnotWYSIWYG(whatyouseeiswhatyouget)butusingthe<em>entr</em>commandtomonitorfilechangescanallowauto-generationoftheHTMLandevenabrowserrefresh(usingafeaturefoundinMidoriandFalkonbutnotmanyotherbrowsers).</p>\r\n<p>DavedescribeshowheachievessomethingsimilartowhatAndrewhascreatedbyusing<em>make</em>toco-ordinatetheprocessing.Theprocessofcompilingthesourcetextfilesintoafinaldocumentdoeshavesomesimilaritieswithcodecompilation.</p>\r\n<p>DaveandAndrewdiscusshowusefultheirmethodsmightbetoothers.SomeofAndrew\'s scripts are too bespoke to his use for wider consumption but the figure processing code is available online as part of the content and code of his book <a href=\"https://github.com/mcnalu/howscotlandworks\">How Scotland Works</a>.</p>\r\n<p>Andrew describes the horror of the suggestion that a non-fiction book does not need an index which prompted him to create his simple code to generate an index from a PDF. This was also motivated by laziness and a reluctance to read his own writing for the umpteenth time. Andrew then describes how this code works. The code itself can be found <a href=\"https://github.com/mcnalu/howscotlandworks/tree/master/scripts/index\">here</a>.</p>\r\n<p>Dave brings up the issue of other formats such as epub which have no concept of pages, or at least do not insist on it natively.</p>\r\n<p>The discussion moves on to other tools for document and text processing that are relevant to the tasks involved such as pandoc, LaTex and ASCIIdoc. In particular, Dave mentions that the \"look\" of LaTeX is simpler to control these days, at least as compared to the 1990s!</p>\r\n',268,0,0,'CC-BY-SA','linux,books,ebooks,scripts',0,0,1),
(3359,'2021-06-17','Linux Inlaws S01E32: Politicians and artificial intelligence part 3',2830,'Part 3 of the miniseries on Deep Learning, politicians and other approaches to intelligence (or not)','<p>In part three of the 27.64 episodes long mini-series on artificial intelligences, machine and deep learning\r\nand other hipster topics around machines trying to imitate humans (marketing made us do these :-), our\r\ntwo heroes discuss domain-specific frameworks on top of (more generic) infrastructure like TensorFlow or PyTorch.\r\nAs usual, all will be revealed and no details be spared (apart from a very few) including how to\r\ntell animals apart from humans (a tricky feat as any journalist can tell you who\'severfaceda\r\nstampedinghordeofangrypoliticians!).</p>\r\n<h2>Links:</h2>\r\n<ul>\r\n<li>Keras:<ahref=\"https://keras.io\"target=_blank>https://keras.io</a></li>\r\n<li>ImagerecognitioninKeras:<ahref=\"https://keras.io/examples/vision/image_classification_from_scratch\"target=_blank>https://keras.io/examples/vision/image_classification_from_scratch</a></li>\r\n<li>Facialrecognitionusingconvolutionalneuralnetworks(CNN):<ahref=\"https://www.sitepoint.com/keras-face-detection-recognition\"target=_blank>https://www.sitepoint.com/keras-face-detection-recognition</a></li>\r\n<li>PETA:<ahref=\"https://www.peta.org\"target=_blank>https://www.peta.org</a></li>\r\n<li>Userrecognitionbasedonmousemovementsanddeeplearning:<ahref=\"https://www.acta.sapientia.ro/acta-info/C12-1/info12-1-3.pdf\"target=_blank>https://www.acta.sapientia.ro/acta-info/C12-1/info12-1-3.pdf</a></li>\r\n<li>Comparisonofdeeplearningsoftware:<ahref=\"https://en.wikipedia.org/wiki/Comparison_of_deep-learning_software\"target=_blank>https://en.wikipedia.org/wiki/Comparison_of_deep-learning_software</a></li>\r\n<li>Apache\'s mxnet: <a href=\"https://mxnet.apache.org/versions/1.8.0\" target=_blank>https://mxnet.apache.org/versions/1.8.0</a></li>\r\n<li>Classification with deep belief networks: <a href=\"https://www.ki.tu-berlin.de/fileadmin/fg135/publikationen/Hebbo_2013_CDB.pdf\" target=_blank>https://www.ki.tu-berlin.de/fileadmin/fg135/publikationen/Hebbo_2013_CDB.pdf</a></li>\r\n<li>scikit-learn: <a href=\"https://scikit-learn.org/stable\" target=_blank>https://scikit-learn.org/stable</a></li>\r\n<li>Life on Mars: <a href=\"https://www.bbc.co.uk/lifeonmars/index_non_flash.shtml\" target=_blank>https://www.bbc.co.uk/lifeonmars/index_non_flash.shtml</a></li>\r\n<li>Limitless: <a href=\"https://www.imdb.com/title/tt1219289/?ref_=fn_al_tt_1\" target=_blank>https://www.imdb.com/title/tt1219289/?ref_=fn_al_tt_1</a></li>\r\n</ul>\r\n',384,111,1,'CC-BY-SA','Keras, scitkit-learn, neural networks, Mars, Twix, Limitless, Life',0,0,1),
(3363,'2021-06-23','Electronics podcasts I listen to',319,'I go over the 4 electronics podcasts I am currently listening to.','<h2 id=\"electronics-podcasts\">Electronics podcasts</h2>\r\n<ol type=\"1\">\r\n<li><p>Hackaday podcast</p>\r\n<p>Hackaday Editors take a look at all of the interesting uses of technology that pop up on the internet each week. Topics cover a wide range like bending consumer electronics to your will, designing circuit boards, building robots, writing software, 3D printing interesting objects, and using machine tools. Get your fix of geeky goodness from new episodes every Friday morning.</p>\r\n<p>Ep 117: Chiptunes in an RCA Plug, an Arduino Floppy Drive, $50 CNC, and Wireless Switches</p>\r\n<p><a href=\"https://hackaday.libsyn.com/ep-117-chiptunes-in-an-rca-plug-an-arduino-floppy-drive-50-cnc-and-wireless-switches\" class=\"uri\">https://hackaday.libsyn.com/ep-117-chiptunes-in-an-rca-plug-an-arduino-floppy-drive-50-cnc-and-wireless-switches</a></p></li>\r\n<li><p>Embedded.fm</p>\r\n<p>Embedded.fm is a site dedicated to the many aspects of engineering. We talk about the how, why, and what of engineering, usually devices.</p>\r\n<p>The site includes a weekly audio show created and hosted by Elecia White and Christopher White. Our guests include makers, entrepreneurs, educators, and normal, traditional engineers. The show is a product of Logical Elegance, an embedded software consulting company.</p>\r\n<p>The site also includes a blog written by Elecia White, Christopher White, Andrei Chichak, and Chris Svec.</p>\r\n<p><a href=\"https://embedded.fm/about-us\" class=\"uri\">https://embedded.fm/about-us</a></p>\r\n<p>371: All Martian Things Considered</p>\r\n<p><a href=\"https://embedded.fm/episodes/371\" class=\"uri\">https://embedded.fm/episodes/371</a></p>\r\n<p>The best paper for learning more is from NASA’s JPL site:<br />\r\nThe Mars Science Laboratory Engineering Cameras<br />\r\n<a href=\"https://www-robotics.jpl.nasa.gov/publications/Mark_Maimone/fulltext.pdf\" class=\"uri\">https://www-robotics.jpl.nasa.gov/publications/Mark_Maimone/fulltext.pdf</a></p>\r\n<p>Mars rovers wiki<br />\r\n<a href=\"https://en.wikipedia.org/wiki/Mars_rover\" class=\"uri\">https://en.wikipedia.org/wiki/Mars_rover</a></p>\r\n<p>142: New and Improved Appendages</p>\r\n<p>Sarah is a kinetic artist and some of her projects include a robot army (built your own from parts printed out or purchased at robot-army.com) <a href=\"https://robot-army.com/\" class=\"uri\">https://robot-army.com/</a></p></li>\r\n<li><p>The Amp Hour Electronics Podcast</p>\r\n<p>Dave Jones from the EEVblog in Sydney (Australia), and Chris Gammell from Contextual Electronics in Chicago (USA) discuss the world of electronics design in an hour long(ish) weekly show, recorded “live” without editing or a mute button! We are also joined every other week by guests throughout the electronics industry.</p>\r\n<p>The Amp Hour is a non-scripted off-the-cuff format show that usually airs every Sunday evening US time (recorded earlier in the week). It is the worlds largest and most respected electronics oriented radio show. Discussions range from hobbyist electronics to the state of the electronics industry, components, circuit design, and general on and off-topic rants.</p>\r\n<p><a href=\"https://theamphour.com/about\" class=\"uri\">https://theamphour.com/about</a></p>\r\n<p><a href=\"https://theamphour.com/the-amp-hour-539-the-king-of-trash-with-big-clive\" class=\"uri\">https://theamphour.com/the-amp-hour-539-the-king-of-trash-with-big-clive</a></p>\r\n<p>Youtube channel: bigclivedotcom</p>\r\n<p><a href=\"https://www.youtube.com/user/bigclivedotcom\" class=\"uri\">https://www.youtube.com/user/bigclivedotcom</a></p></li>\r\n<li><p>The Contextual Electronics Podcast</p>\r\n<p>The CE Podcast is a video and audio podcast that posts twice per month. We discuss more than how electronics work and talk to our guests about why they are building them in the first place. we cover topics inside and outside the field of electronics and try to bring more contex
(3362,'2021-06-22','Spam Bot Honey Pot: Eating your own dog food',1148,'Reviewing some stats and the accessibility by screen reader of this spam filter method.','<p>\r\nIn this episode, I revisit my spam bot honey pot method of spam detection for \r\nweb forms. The first part of the episode is a response to rtsn comment asking \r\nfor a follow up on how the method worked out. In the second part of the podcast \r\nI use the built-in screen reader of my Pop_OS system to review my test form and \r\nmy work form for audible accessibility and to check that the spam catching URL \r\nfield is not reveled by a screen reader. \r\n</p>\r\n<p>\r\nFor my work site, I pushed the spam catcher to production on 16 February 2021. \r\nThe total submitted form messages from that day until today, 29 May 2021, is 661.\r\nOf the total submitted, the method identified 527 spam messages, and passed \r\nalong 134 messages. Of those 134, 38 messages were uncaught spam--while the \r\nremaining 96 messages were valid inquiries. Overall, it seems to be doing a \r\ngood job. At one point, I thought about closing down the form, but the data \r\ndoes show we are receiving enough valid messages to make it worth keeping around \r\nand this method makes finding the good messages much easier.\r\n</p>\r\n<p>\r\nDuring the second part of the podcast, I find using a screen reader, like any \r\ntool, takes some practice. It also reveals that making a form audibly accessible \r\ndoes take some care, and should be reviewed with a screen reader. My method \r\nfor hiding the honey pot URL field from the screen reader was effective, but my \r\noverall implementation to make it accessible needs more work.\r\n</p>',293,0,0,'CC-BY-SA','Spam,HTML,Forms,accessibility,screen reader',0,0,1),
(3369,'2021-07-01','Linux Inlaws S01E33: The Return of the Rust',3869,'A show with Steve Klabnik on corroded metal, hipster programming languages and the analogue world','<p>In this episode - aptly named \"The return of the Rust\" our two heroes host\r\na very special guest: no other than Steve Klabnik of Rust fame himself.\r\nNeedless to say, this hipster programming language which is on everbody\'smind\r\natthemoment(apartmaybefromafewlostsoulsstillcryingoverspilled\r\ncoffee)playsaveryimportantroleinthisshowinadditiontothenewly\r\nfoundedRustFoundationhostingsucheclecticmemberssuchasMicrosoft,\r\nMozilla,GoogleandFacebookjusttonameafewlookingafterthelanguage.</p>\r\n<h2>Links:</h2>\r\n<ul>\r\n<li>Rust:<ahref=\"https://www.rust-lang.org\"target=_blank>https://www.rust-lang.org</a></li>\r\n<li>RustFoundation:<ahref=\"https://foundation.rust-lang.org\"target=_blank>https://foundation.rust-lang.org</a></li>\r\n<li>SteveKlabnik:<ahref=\"https://steveklabnik.com\"target=_blank>https://steveklabnik.com</a></li>\r\n<li>RubyonRails:<ahref=\"https://rubyonrails.org\"target=_blank>https://rubyonrails.org</a></li>\r\n<li>PyOxidizer:<ahref=\"https://github.com/indygreg/PyOxidizer\"target=_blank>https://github.com/indygreg/PyOxidizer</a></li>\r\n<li>Mercurial:<ahref=\"https://www.mercurial-scm.org\"target=_blank>https://www.mercurial-scm.org</a></li>\r\n<li>actixcontroversy:<ahref=\"https://github.com/actix/actix-web/issues/289\"target=_blank>https://github.com/actix/actix-web/issues/289</a></li>\r\n<li>OpenSearch:<ahref=\"https://aws.amazon.com/blogs/opensource/introducing-opensearch\"target=_blank>https://aws.amazon.com/blogs/opensource/introducing-opensearch</a></li>\r\n</ul>\r\n',384,111,1,'CC-BY-SA','Rust,actix,unsafecode,bulletedlists,pubs,OpenSearch',0,0,1),
(3631,'2022-07-04','HPR Community News for June 2022',7033,'HPR Volunteers talk about shows released and comments posted in June 2022','<style>\ntable td.shrink {\n white-space:nowrap\n}\n</style>\n\n<h2>New hosts</h2>\n<p>\nThere were no new hosts this month.\n</p>\n\n<h2>Last Month\'sShows</h2>\n<tableid=\"t01\">\n<tr>\n<th>Id</th>\n<th>Day</th>\n<th>Date</th>\n<th>Title</th>\n<th>Host</th>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3608\"target=\"_blank\">3608</a></strong></td>\n<td>Wed</td>\n<tdclass=\"shrink\">2022-06-01</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3608\"target=\"_blank\">BattlingwithEnglish-part5</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0225.html\"target=\"_blank\">DaveMorriss</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3609\"target=\"_blank\">3609</a></strong></td>\n<td>Thu</td>\n<tdclass=\"shrink\">2022-06-02</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3609\"target=\"_blank\">LinuxInlawsS01E57:OperatingSystemLevelVirtualisationandMartin\'s Faith</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0384.html\" target=\"_blank\">monochromec</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3610\" target=\"_blank\">3610</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2022-06-03</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3610\" target=\"_blank\">DOS Wildcards; File Attributes</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0198.html\" target=\"_blank\">Ahuka</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3611\" target=\"_blank\">3611</a></strong></td>\n<td>Mon</td>\n<td class=\"shrink\">2022-06-06</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3611\" target=\"_blank\">HPR Community News for May 2022</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0159.html\" target=\"_blank\">HPR Volunteers</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3612\" target=\"_blank\">3612</a></strong></td>\n<td>Tue</td>\n<td class=\"shrink\">2022-06-07</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3612\" target=\"_blank\">Who is Evil Steve? Part 2</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0405.html\" target=\"_blank\">Lurking Prion</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3613\" target=\"_blank\">3613</a></strong></td>\n<td>Wed</td>\n<td class=\"shrink\">2022-06-08</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3613\" target=\"_blank\">Man buys cheap Adirondack chair</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0399.html\" target=\"_blank\">dnt</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3614\" target=\"_blank\">3614</a></strong></td>\n<td>Thu</td>\n<td class=\"shrink\">2022-06-09</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3614\" target=\"_blank\">Everything You Always Wanted to Know About PEX Part 02- The Joy of PEX - What is it and how is it us</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0394.html\" target=\"_blank\">Trey</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.org/eps.php?id=3615\" target=\"_blank\">3615</a></strong></td>\n<td>Fri</td>\n<td class=\"shrink\">2022-06-10</td>\n<td><a href=\"https://hackerpublicradio.org/eps.php?id=3615\" target=\"_blank\">I am a troll and I\'mtrollingHPR,trollingHPR,trollingHPR.</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0030.html\"target=\"_blank\">KenFallon</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3616\"target=\"_blank\">3616</a></strong></td>\n<td>Mon</td>\n<tdclass=\"shrink\">2022-06-13</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3616\"target=\"_blank\">FillingfreeSlotsfromtheRese
(3651,'2022-08-01','HPR Community News for July 2022',2963,'HPR Volunteers talk about shows released and comments posted in July 2022','<style>\ntable td.shrink {\n white-space:nowrap\n}\n</style>\n\n<h2>New hosts</h2>\n<p>\nWelcome to our new hosts: <br />\n\n <a href=\"https://hackerpublicradio.org/correspondents/0406.html\" target=\"_blank\">binrc</a>, \n <a href=\"https://hackerpublicradio.org/correspondents/0407.html\" target=\"_blank\">Celeste</a>.\n</p>\n\n<h2>Last Month\'sShows</h2>\n<tableid=\"t01\">\n<tr>\n<th>Id</th>\n<th>Day</th>\n<th>Date</th>\n<th>Title</th>\n<th>Host</th>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3630\"target=\"_blank\">3630</a></strong></td>\n<td>Fri</td>\n<tdclass=\"shrink\">2022-07-01</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3630\"target=\"_blank\">PlanninganRVTrip</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0198.html\"target=\"_blank\">Ahuka</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3631\"target=\"_blank\">3631</a></strong></td>\n<td>Mon</td>\n<tdclass=\"shrink\">2022-07-04</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3631\"target=\"_blank\">HPRCommunityNewsforJune2022</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0159.html\"target=\"_blank\">HPRVolunteers</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3632\"target=\"_blank\">3632</a></strong></td>\n<td>Tue</td>\n<tdclass=\"shrink\">2022-07-05</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3632\"target=\"_blank\">IntrotowebscrapingwithPython</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0078.html\"target=\"_blank\">Klaatu</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3633\"target=\"_blank\">3633</a></strong></td>\n<td>Wed</td>\n<tdclass=\"shrink\">2022-07-06</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3633\"target=\"_blank\">ThecollectivehistoryofRAIDcontrollerbrands</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0129.html\"target=\"_blank\">JWP</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3634\"target=\"_blank\">3634</a></strong></td>\n<td>Thu</td>\n<tdclass=\"shrink\">2022-07-07</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3634\"target=\"_blank\">EverythingYouAlwaysWantedtoKnowAboutPEXPart05-PEXandtheSingleInstaller</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0394.html\"target=\"_blank\">Trey</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3635\"target=\"_blank\">3635</a></strong></td>\n<td>Fri</td>\n<tdclass=\"shrink\">2022-07-08</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3635\"target=\"_blank\">Ashortpodcastonanicetoolcalledsystem-monitoring-center</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0369.html\"target=\"_blank\">JeroenBaten</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3636\"target=\"_blank\">3636</a></strong></td>\n<td>Mon</td>\n<tdclass=\"shrink\">2022-07-11</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3636\"target=\"_blank\">TheImportanceofDataReduction</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0405.html\"target=\"_blank\">LurkingPrion</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3637\"target=\"_blank\">3637</a></strong></td>\n<td>Tue</td>\n<tdclass=\"shrink\">2022-07-12</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3637\"target=\"_blank\">HPRfeedtoSqlite</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0342.html\"target=\"_blank\">norrist</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3638\"target=\"_blank\">3638</a></strong></td>\n<td>Wed</td>\n<tdclass=\"s
(3540,'2022-02-25','HSV Components Layer Modes',1216,'More on Layer Modes in GIMP with the HSV Components Modes','<p>Layer Modes, sometimes called Blending Modes, allow you to combine layers in a variety of ways. We continue with the HSV Components Modes, which brings us to yet another color model, in this case the Hue, Saturation, and Value model. We\'vealreadylookedatRGB,whichisthemodelusedformostbroadcastandonlineuses,andtheCMYKmodelwhichisusedforprinting.ThesearetheLayerModesavailableonthelatest(atthetimeIwritethis)versionofGIMP,2.10.24.</p>\r\n<h2id=\"links\">Links:</h2>\r\n<ul>\r\n<li><ahref=\"https://docs.gimp.org/2.10/en/gimp-concepts-layer-modes.html\"class=\"uri\">https://docs.gimp.org/2.10/en/gimp-concepts-layer-modes.html</a></li>\r\n<li><ahref=\"https://www.linuxtopia.org/online_books/graphics_tools/gimp_advanced_guide/gimp_guide_node55_004.html\"class=\"uri\">https://www.linuxtopia.org/online_books/graphics_tools/gimp_advanced_guide/gimp_guide_node55_004.html</a></li>\r\n<li><ahref=\"https://www.youtube.com/watch?v=17Iivi0tmug&t=1734s\"class=\"uri\">https://www.youtube.com/watch?v=17Iivi0tmug&t=1734s</a></li>\r\n<li><ahref=\"https://en.wikipedia.org/wiki/RGB_color_model\"class=\"uri\">https://en.wikipedia.org/wiki/RGB_color_model</a></li>\r\n<li><ahref=\"https://en.wikipedia.org/wiki/Subtractive_color\"class=\"uri\">https://en.wikipedia.org/wiki/Subtractive_color</a></li>\r\n<li><ahref=\"https://en.wikipedia.org/wiki/Color_model\"class=\"uri\">https://en.wikipedia.org/wiki/Color_model</a></li>\r\n<li><ahref=\"https://en.wikipedia.org/wiki/HSL_and_HSV\"class=\"uri\">https://en.wikipedia.org/wiki/HSL_and_HSV</a></li>\r\n<li><ahref=\"https://snappygoat.com/\"class=\"uri\">https://snappygoat.com/</a></li>\r\n<li><ahref=\"https://www.ahuka.com/gimp/hsv-components-layer-modes/\"class=\"uri\">https://www.ahuka.com/gimp/hsv-components-layer-modes/</a></li>\r\n</ul>\r\n',198,113,0,'CC-BY-SA','GIMP,LayerModes,BlendingModes,HSVComponentsModes',0,0,1),
(3550,'2022-03-11','Format; Copy; Diskcopy; Xcopy',1202,'We continue our look at the old warhorse, DOS. This time it is Format and Copy commands','<p>This tutorial is mostly about working with floppy disks, or diskettes, though we also mention the formatting of hard drives, which generally required the use of a floppy drive and diskette to accomplish.</p>\r\n<h2 id=\"links\">Links:</h2>\r\n<ul>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Floppy_disk\" class=\"uri\">https://en.wikipedia.org/wiki/Floppy_disk</a></li>\r\n<li><a href=\"https://www.ahuka.com/dos-lessons-for-self-study-purposes/\" class=\"uri\">https://www.ahuka.com/dos-lessons-for-self-study-purposes/</a></li>\r\n</ul>\r\n',198,117,0,'CC-BY-SA','DOS, early PC computing, Format, Copy, Diskcopy, Xcopy',0,0,1),
(3560,'2022-03-25','LCh Components Layer Modes',758,'More on Layer Modes in GIMP with the LCh Components Modes','<p>Layer Modes, sometimes called Blending Modes, allow you to combine layers in a variety of ways. We continue with the LCh Components Modes, which brings us to yet another color model, in this case the Hue, Saturation, and Value model. We\'vealreadylookedatRGB,whichisthemodelusedformostbroadcastandonlineuses,andtheCMYKmodelwhichisusedforprinting,andintheprevioustutorialwelookedattheHSVmodel.Thiswrapsupourlookatcolormodels,andalsoconcludedourlookatLayerModes(orBlendingModes).ThesearetheLayerModesavailableonthelatest(atthetimeIwritethis)versionofGIMP,2.10.24.</p>\r\n<h2id=\"links\">Links:</h2>\r\n<ul>\r\n<li><ahref=\"https://docs.gimp.org/2.10/en/gimp-concepts-layer-modes.html\"class=\"uri\">https://docs.gimp.org/2.10/en/gimp-concepts-layer-modes.html</a></li>\r\n<li><ahref=\"https://ninedegreesbelow.com/photography/determine-image-tonality-and-palette-part-1.html\"class=\"uri\">https://ninedegreesbelow.com/photography/determine-image-tonality-and-palette-part-1.html</a></li>\r\n<li><ahref=\"https://en.wikipedia.org/wiki/CIELAB_color_space\"class=\"uri\">https://en.wikipedia.org/wiki/CIELAB_color_space</a></li>\r\n<li><ahref=\"https://en.wikipedia.org/wiki/CIELUV#Cylindrical_representation_.28CIELCH.29\"class=\"uri\">https://en.wikipedia.org/wiki/CIELUV#Cylindrical_representation_.28CIELCH.29</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/List_of_color_spaces_and_their_uses\" class=\"uri\">https://en.wikipedia.org/wiki/List_of_color_spaces_and_their_uses</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Luminance\" class=\"uri\">https://en.wikipedia.org/wiki/Luminance</a></li>\r\n<li><a href=\"https://www.ahuka.com/gimp/lch-components-layer-modes/\" class=\"uri\">https://www.ahuka.com/gimp/lch-components-layer-modes/</a></li>\r\n</ul>\r\n',198,113,0,'CC-BY-SA','GIMP, Layer Modes, Blending Modes, LCh Components Modes',0,0,1),
(3570,'2022-04-08','The Filesystem',1412,'We continue our look at the old warhorse, DOS. This time it is the file system.','<p>One key to working with DOS is to understand the file system. This is not just about organizing files, though that is certainly a part of it, but also about keeping your system running smoothly and recovering lost files in some circumstances.</p>\r\n<h2 id=\"links\">Links:</h2>\r\n<ul>\r\n<li><a href=\"https://en.wikipedia.org/wiki/File_Allocation_Table\" class=\"uri\">https://en.wikipedia.org/wiki/File_Allocation_Table</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Disk_sector\" class=\"uri\">https://en.wikipedia.org/wiki/Disk_sector</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Track_(disk_drive)\" class=\"uri\">https://en.wikipedia.org/wiki/Track_(disk_drive)</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Data_cluster\" class=\"uri\">https://en.wikipedia.org/wiki/Data_cluster</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/File_system_fragmentation\" class=\"uri\">https://en.wikipedia.org/wiki/File_system_fragmentation</a></li>\r\n<li><a href=\"https://en.wikipedia.org/wiki/Root_directory\" class=\"uri\">https://en.wikipedia.org/wiki/Root_directory</a></li>\r\n<li><a href=\"https://www.ahuka.com/dos-lessons-for-self-study-purposes/dos-lesson-9-the-file-system/\" class=\"uri\">https://www.ahuka.com/dos-lessons-for-self-study-purposes/dos-lesson-9-the-file-system/</a></li>\r\n</ul>\r\n',198,117,0,'CC-BY-SA','DOS, early PC computing, file system',0,0,1),
(3364,'2021-06-24','Part One - all the covid crap',99,'My new coffee pot, covid motivation','<p>So, I\'mcurrentlylisteningtothe\"Feedback on the Article\"show,andamfeelinglikeIshouldcontributeashow.</p>\r\n<p>Alongtimeagonow,Iboughtanewcoffeemachineforhome,onthebasisthatIwasgoingtobeworkingfromhomeforawhile,andIwasreallymissingmydailyhitsofactualcoffee.Idrinkmaybefourorfivecupsaday,dependingonhowearlyIgetintowork.Idotrytohaveallthiscoffeeinthemorning,andamprettygoodatnothavinganyafterlunch.</p>\r\n<p>Now,IdoneedtorecognisewhereIam,Australia,overallwe\'ve had a pretty good response to covid, fatalities have been very low by world standards. Having said that, I live in the part of Australia that has had the largest number and by far, longest lockdowns. Our longest one was 112 days.</p>\r\n<p>I\'vealsotravelledbackhome,andgotcaughtinalockdowninmyhomestateofQueenslandoverChristmas.</p>\r\n<p>Eventually,thelockdownsended,wewereallowedgobacktowork,andIstartedusingmyhomecoffeemachinelessandless,andIlostmotivationtodothisshow.</p>\r\n<p>Then,ofcourse,wehadanotherinevitablehotelquarantineleak,andthatspreadtoVictoria,we\'re now looking at a breakout of around sixty cases and Victoria is back on lockdown so this is my fifth lockdown, and I\'mbacktoworkingfromhome,andonceagain,I\'m appreciating my new coffee pot, and once again I have motivation to do a story on it.</p>\r\n<p>What I really want to do is to disentangle the two topics, this episode will deal with all the covid stuff, the second episode will only deal with coffee.</p>\r\n<p>So this covid rant ends here, and now I need to start writing the script for the second part of the show, before lockdown ends..</p>\r\n',315,0,0,'CC-BY-SA','covid19,coffee',0,0,1),
(3365,'2021-06-25','Diablo 2 Portable and Modding',452,'I talk about Diablo 2 and modding','<p>\r\n<a href=\"https://en.wikipedia.org/wiki/Diablo_II\">Diablo II</a>\r\n</p>\r\n<p>\r\nDiablo II is an action role-playing hack-and-slash computer video game developed by Blizzard North and published by Blizzard Entertainment in 2000 for Microsoft Windows, Classic Mac OS, and macOS. The game, with its dark fantasy and horror themes, was conceptualized and designed by David Brevik and Erich Schaefer, who, with Max Schaefer, acted as project leads on the game. The producers were Matthew Householder and Bill Roper. The game was developed over a 3 year period, with a crunch time of 1.5 years long\r\n</p>\r\n\r\n<p>\r\nSearch for \"Registry patch diablo 2\", \"borderless gaming diablo 2\"\r\n</p>\r\n\r\n<p>\r\n<a href=\"https://diablo-archive.fandom.com/wiki/PlugY\">PlugY</a> <br />\r\nPlugY is a mod whose primary purpose is to increase the stash size for Diablo II characters. Over the years it has grown to include numerous other useful functions, such as enabling Ladder Only Rune Words outside of the Battle.net Ladder, enabling the Uber quests outside of Battle.net and various other small tweaks and additions. PlugY is not a conversion of the original Diablo, and it doesn\'taltergameplaybychangingmonsterstats,skills,mapsoritems.\r\n</p>\r\n\r\n<p>\r\n<ahref=\"https://www.median-xl.com/\">medianxl</a><br/>\r\nThemostpopularDiabloIIoverhaulmodification,MedianXLisanactionRPGwithextensiveendgamecontent,deepcharactercustomisationandchallenginggameplay.Itoffersthousandsofnewitems,newskillsforallclasses,andmultipleimprovementstotheDiabloIIengine.\r\n</p>',36,0,0,'CC-BY-SA','diablo2,videogames,gaming,modding,hacking,medianxl,plugy',0,0,1),
(3375,'2021-07-09','Car ODB2 Fun and Fail',617,'I try to figure out ODB2 stuff again','<p>\r\n<a href=\"https://en.wikipedia.org/wiki/On-board_diagnostics\">On-board diagnostics (OBD)</a><br />\r\nFrom Wikipedia, the free encyclopedia<br />\r\nOn-board diagnostics (OBD) is an automotive term referring to a vehicle\'sself-diagnosticandreportingcapability.OBDsystemsgivethevehicleownerorrepairtechnicianaccesstothestatusofthevariousvehiclesub-systems.TheamountofdiagnosticinformationavailableviaOBDhasvariedwidelysinceitsintroductionintheearly1980sversionsofon-boardvehiclecomputers.EarlyversionsofOBDwouldsimplyilluminateamalfunctionindicatorlightor\"idiot light\"ifaproblemwasdetectedbutwouldnotprovideanyinformationastothenatureoftheproblem.ModernOBDimplementationsuseastandardizeddigitalcommunicationsporttoprovidereal-timedatainadditiontoastandardizedseriesofdiagnostictroublecodes,orDTCs,whichallowapersontorapidlyidentifyandremedymalfunctionswithinthevehicle.\r\n</p>\r\n<p>\r\n<ahref=\"https://play.google.com/store/apps/details?id=org.prowl.torque&hl=en_US&gl=US\">TorquePro(OBD2andCar)</a><br/>\r\nSeewhatyourcarisdoinginrealtime,getOBDfaultcodes,carperformance,sensordataandmore!\r\nTorqueisavehicle/carperformance/diagnosticstoolandscannerthatusesanOBDIIBluetoothadaptertoconnecttoyourOBD2enginemanagement/ECU\r\n</p>\r\n<p>\r\n<ahref=\"https://www.myg37.com/forums/engine-drivetrain-and-forced-induction/298338-vdc-stays-on-randomly.html\">ForumThread</a>\r\n</p>\r\n<p>\r\n<ahref=\"https://www.nicoclub.com/search#gsc.tab=0&gsc.q=infinity&gsc.sort=\">SearchonNicoClub.comforInfinityManuals</a>\r\n</p>\r\n',36,0,0,'CC-BY-SA','car,auto,odb2',0,0,1),
(3385,'2021-07-23','DIY Cat feeder!',824,'I talk about 3d printed cat feeders','<p>\r\nIn this episode operat0r builds a <a href=\"https://www.thingiverse.com/thing:27854\">cat feeder based on thingiverse.com</a>\r\n</p>',36,0,0,'CC-BY-SA','cats,3d printing,hacking,arduino',0,0,1),
(3395,'2021-08-06','Hacking Stories with Reacted: part 1',1979,'I talk about some old old old pentesting stories from days old!','<p>\r\nI talk about some old old old pentesting stories from days old!\r\n</p>',36,0,1,'CC-BY-SA','hackhacking,pentesting,red team,hacking storiesing',0,0,1),
(3405,'2021-08-20','Hacking Stories with Reacted: part 2',152,'I talk about some old old old pentesting stories from days old!','<p>\r\nI talk about some old old old pentesting stories from days old!\r\n</p>',36,0,0,'CC-BY-SA','hacking,pentesting,red team,hacking stories',0,0,1),
(3415,'2021-09-03','Hacking Stories with Reacted: part 3',836,'I talk about some old old old pentesting stories from days old!','<p>\r\nI talk about some old old old pentesting stories from days old!\r\n</p>',36,0,1,'CC-BY-SA','hacking,pentesting,red team,hacking stories',0,0,1),
(3425,'2021-09-17','Hacking Stories with Reacted: part 4',1055,'I talk about some old old old pentesting stories from days old!','<p>\r\nI talk about some old old old pentesting stories from days old!\r\n</p>',36,0,0,'CC-BY-SA','hacking,pentesting,red team,hacking stories',0,0,1),
(3435,'2021-10-01','Hacking Stories with Reacted: part 5',1060,'I talk about some old old old pentesting stories from days old!','<p>I talk about some old old old pentesting stories from days old!</p>',36,0,1,'CC-BY-SA','hacking,pentesting,red team,hacking stories',0,0,1),
(3376,'2021-07-12','Making books with Linux - part 2',2919,'Part 2 of a discussion about how two HPR hosts create books','<h2 id=\"hosts\">Hosts</h2>\r\n<ul>\r\n<li><a href=\"https://hackerpublicradio.org/correspondents/0268.html\">Andrew Conway (<em>mcnalu</em>)</a></li>\r\n<li><a href=\"https://hackerpublicradio.org/correspondents/0225.html\">Dave Morriss</a></li>\r\n</ul>\r\n<h2 id=\"handling-incoming-hpr-shows\">Handling incoming HPR shows</h2>\r\n<ul>\r\n<li>Dave, with his <em>Janitor</em> hat on\r\n<ul>\r\n<li>Processes incoming notes, to generate HTML</li>\r\n<li>Plain text is turned to Markdown. Otherwise various Markdown flavours are acceptable, or an HTML5 fragment</li>\r\n<li>If images are included the Markdown can refer to them with URLs such as: <code>https://hackerpublicradio.org/eps/hprNNNN/name.jpg</code>\r\n<ul>\r\n<li>The <code>hprNNNN</code> element is a directory using the number you chose for your show.</li>\r\n<li>In the directory will be the images you sent.</li>\r\n<li>Other <em>assets</em> will go there too so you can refer to these in your notes as well.</li>\r\n<li>If you’re sending plain text, then markers such as <strong>>> Picture name.jpg here <<</strong> will let me make the appropriate Markdown.</li>\r\n</ul></li>\r\n<li>The directory also needs an <code>index.html</code> file, but my scripts will generate this if needed.</li>\r\n<li>I intend to document this soon.</li>\r\n</ul></li>\r\n</ul>\r\n<h2 id=\"how-dave-makes-hpr-shownotes\">How Dave makes HPR shownotes</h2>\r\n<ul>\r\n<li>Uses scripts to manage show note generation</li>\r\n<li>Uses Markdown when writing the notes\r\n<ul>\r\n<li>Scripts generate note templates and a <code>Makefile</code></li>\r\n<li>Automation using <code>make</code></li>\r\n</ul></li>\r\n<li>Uses Template Toolkit features inside notes to allow extra features\r\n<ul>\r\n<li>Notes go through a pre-processor (a script with access to the show metadata)</li>\r\n<li>The end product is Markdown which is processed with Pandoc</li>\r\n</ul></li>\r\n<li>Template Toolkit (<em>TT<sup>2</sup></em>)\r\n<ul>\r\n<li>A Perl (and Python) tool kit for making templates</li>\r\n<li>Good for generating HTML, but can generate any text</li>\r\n</ul></li>\r\n<li><em>TT<sup>2</sup></em> macros can be used to display scripts in shows relating to the subject, and to run them and capture the output. This makes it certain that the script on display <strong>really</strong> generated the output shown!</li>\r\n<li>The <code>\'Falkon\'</code> browser (originally called <code>QupZilla</code>) is great for monitoring notes since it updates when the HTML changes.\r\n<ul>\r\n<li>Dave confused it with <code>Pale Moon</code> (a fork of <code>Firefox/Mozilla</code>) when talking about tab grouping features</li>\r\n</ul></li>\r\n<li>Should this (personalised) bundle of software be released to the world?\r\n<ul>\r\n<li>Probably yes, since the thoughts in it may be useful even if the code is not.</li>\r\n</ul></li>\r\n</ul>\r\n<h2 id=\"consolidating-show-notes-into-a-book\">Consolidating show notes into a book</h2>\r\n<ul>\r\n<li>We had discussed the following topic a little in other contexts, and offline, but didn’t really look at it in this show. In brief, and for the record, the plans are:\r\n<ul>\r\n<li>There was a series on <code>\'sed\'</code>, the stream editor from the GNU project. It was called <em>“Introduction to sed”</em>, and consisted of 5 parts, which ran through 2016.</li>\r\n<li>Each episode had short and long notes as well as several examples.</li>\r\n<li>Work has begun on consolidating all of the long notes into a single document which will be released on the HPR site, in HTML and PDF formats. Perhaps ePub will be included if feasible.</li>\r\n<li>It’s seen as critical that an index be provided so that topics can be found easily. At the moment this is simplest to achieve with the PDF version, using Andrew’s index generator as discussed in part 1 of this pair of shows.</li>\r\n</ul></li>\r\n</ul>\r\n<h2 id=\"digression-about-experiences-in-uk-higher-education\">
(3373,'2021-07-07','HPR RPG Club reviews Starfinder',5175,'Starfinder is a sci-fi RPG using Dungeons & Dragons 3.5 rules','<p>\r\nYou can <a href=\"https://paizo.com/starfinder\" target=\"_blank\">purchase Starfinder directly from Paizo</a>, and you can usually find <em>Starfinder Society</em> play at your friendly local game store.\r\n</p>\r\n\r\n<p>\r\nThe alternate starship combat rules mentioned in this episode are available from <a href=\"https://www.drivethrurpg.com/product/353682/Simple-Starship-Combat?affiliate_id=845571\" target=\"_blank\">drivethrurpg.com</a> (warning: this is an affiliate link, but any purchases made through it provide Klaatu with store credit so he can buy more RPG books for future HPR Club reviews).\r\n</p>\r\n',78,95,1,'CC-BY-SA','rpg, cyberpunk, science fiction',0,0,1),
(3374,'2021-07-08','Why I love the MacBook Mid 2010',1431,'I talk about the upgrades I made to the machine and how it\'sbenefitedmesinceIgotit','<p>Theupgradesmadetothemachinewerea500GBssd,16GBofram,andwentfromElCapitantoCatalina.</p>',297,0,0,'CC-BY-SA','technology,Apple,MacBook,laptop',0,0,1);
INSERTINTO`eps`(`id`,`date`,`title`,`duration`,`summary`,`notes`,`hostid`,`series`,`explicit`,`license`,`tags`,`version`,`downloads`,`valid`)VALUES(3676,'2022-09-05','HPR Community News for August 2022',9576,'HPR Volunteers talk about shows released and comments posted in August 2022','<style>\ntable td.shrink {\n white-space:nowrap\n}\n</style>\n\n<h2>New hosts</h2>\n<p>\nWelcome to our new hosts: <br />\n\n <a href=\"https://hackerpublicradio.org/correspondents/0408.html\" target=\"_blank\">Stache_AF</a>, \n <a href=\"https://hackerpublicradio.org/correspondents/0410.html\" target=\"_blank\">Hipernike</a>.\n</p>\n\n<h2>Last Month\'sShows</h2>\n<tableid=\"t01\">\n<tr>\n<th>Id</th>\n<th>Day</th>\n<th>Date</th>\n<th>Title</th>\n<th>Host</th>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3651\"target=\"_blank\">3651</a></strong></td>\n<td>Mon</td>\n<tdclass=\"shrink\">2022-08-01</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3651\"target=\"_blank\">HPRCommunityNewsforJuly2022</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0159.html\"target=\"_blank\">HPRVolunteers</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3652\"target=\"_blank\">3652</a></strong></td>\n<td>Tue</td>\n<tdclass=\"shrink\">2022-08-02</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3652\"target=\"_blank\">Registeredmemory</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0129.html\"target=\"_blank\">JWP</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3653\"target=\"_blank\">3653</a></strong></td>\n<td>Wed</td>\n<tdclass=\"shrink\">2022-08-03</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3653\"target=\"_blank\">HelloHPRCommunity</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0408.html\"target=\"_blank\">Stache_AF</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3654\"target=\"_blank\">3654</a></strong></td>\n<td>Thu</td>\n<tdclass=\"shrink\">2022-08-04</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3654\"target=\"_blank\">UsethedataintheOggfeedtocreateawebsite.</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0342.html\"target=\"_blank\">norrist</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3655\"target=\"_blank\">3655</a></strong></td>\n<td>Fri</td>\n<tdclass=\"shrink\">2022-08-05</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3655\"target=\"_blank\">BSDforLinuxusers</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0406.html\"target=\"_blank\">binrc</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3656\"target=\"_blank\">3656</a></strong></td>\n<td>Mon</td>\n<tdclass=\"shrink\">2022-08-08</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3656\"target=\"_blank\">ImportanceofSmalltoyprojects</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0342.html\"target=\"_blank\">norrist</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3657\"target=\"_blank\">3657</a></strong></td>\n<td>Tue</td>\n<tdclass=\"shrink\">2022-08-09</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3657\"target=\"_blank\">Smalltimesysadmin</a></td>\n<td><ahref=\"https://hackerpublicradio.org/correspondents/0391.html\"target=\"_blank\">SomeGuyOnTheInternet</a></td>\n</tr>\n<tr>\n<td><strong><ahref=\"https://hackerpublicradio.org/eps.php?id=3658\"target=\"_blank\">3658</a></strong></td>\n<td>Wed</td>\n<tdclass=\"shrink\">2022-08-10</td>\n<td><ahref=\"https://hackerpublicradio.org/eps.php?id=3658\"target=\"_blank\">LinuxInlawsS01E62:HPR\'s inner workings</a></td>\n<td><a href=\"https://hackerpublicradio.org/correspondents/0384.html\" target=\"_blank\">monochromec</a></td>\n</tr>\n<tr>\n<td><strong><a href=\"https://hackerpublicradio.
(3377,'2021-07-13','Chromebook support and more',994,'I\'verunintodisasterusingmychromebook','<p>\r\nI\'ve made a special show covering the problem with chromebook support.<br />\r\nI cover the latest AntiX release.<br />\r\nI cover the latest NomadBSD release and I cover GUIX 1.3 and what I ended up using GUIX for.\r\n</p>',377,0,1,'CC-BY-SA','chromebook, AntiX, NomadBSD, GUIX, bath',0,0,1),
(3389,'2021-07-29','Tales of a Tagger',366,'Adventures and mishaps tagging past shows','<p><a href=\"https://hackerpublicradio.org/report_missing_tags.php\" class=\"uri\">https://hackerpublicradio.org/report_missing_tags.php</a></p>\r\n<h2 id=\"shows-without-a-summary-andor-tags\">Shows without a summary and/or tags</h2>\r\n<h3 id=\"page-generated-on-2021-06-11-at-204339-utc\">Page generated on 2021-06-11 at 20:43:39 UTC</h3>\r\n<h3 id=\"sort-order-id\">Sort order: id</h3>\r\n<h3 id=\"current-counts\">Current counts</h3>\r\n<ul>\r\n<li>323 shows without summaries</li>\r\n<li>306 shows without tags</li>\r\n<li>275 shows with neither summaries nor tags</li>\r\n<li>354 shows which need work</li>\r\n</ul>\r\n<h3 id=\"instructions\">Instructions</h3>\r\n<ol type=\"1\">\r\n<li>Find a show in the list below</li>\r\n<li>Check in the list which attributes are missing: summary and/or tags</li>\r\n<li>Click the show number or title to visit the show page</li>\r\n<li>Read the show notes and listen to the show to determine the missing information</li>\r\n<li>Submit your updates by email to tags at hackerpublicradio.org</li>\r\n</ol>\r\n<p>Please send simple ASCII email. No HTML please, and no multipart, encrypted or signed messages; the script can\'thandlethematthemoment!(Weareworkingonasolutiontosomeofthisthough).Remember,theinternalsofanemailarecomplexandthescriptisn\'t clever enough to deal with all the many possible formats. Please be gentle with it!</p>\r\n<p>Format the message as follows:</p>\r\n<pre><code>show:12345\r\nsummary:Using Linux at Christmas to make tomato soup in a sporran\r\ntags:linux,christmas,sporran,tomato soup\r\n\r\nshow: 12346\r\ntags: sausage,clothing,hairpiece</code></pre>\r\n<ul>\r\n<li>Start with the show:XXXX line (just the show number, no \'hpr\')</li>\r\n<li>If either the summary or the tags are already present on the show you can omit them from the group</li>\r\n<li>It\'snotpossibletochangeexistingsummariesortagsbythisroute,onlytoaddmissingones</li>\r\n<li>Ensurethesummarytextisn\'t longer than 100 characters</li>\r\n<li>The tags need to be separated by commas</li>\r\n<li>If you need to add a tag with a comma in it enclose the tag in double quotes</li>\r\n<li>The length of the tag list can\'texceed200characters</li>\r\n<li>Youcanupdatemorethanoneshowperemailifyouwant</li>\r\n<li>Blanklinesbetweenthegroupsofshow/summary/tagslinesarefine(asshown),asarecommentlinesbeginningwith\'#\'</li>\r\n</ul>\r\n<p>Updateswillbeprocessedwithascript,whichisrunmanually,andthispagewillberefreshedoncethechangeshavebeenmade.Thetimestampaboveshowswhenitwaslastrefreshed.</p>\r\n<oltype=\"1\">\r\n<li>Gotcarriedawayandbrokethe100characterrule\r\n<ul>\r\n<li>canbecheckedinvimbyhitting\'$\',goestothelastcharacterintheline.Observethecharactercountatthebottomofthescreentoverifythisislessthan100.</li>\r\n</ul></li>\r\n<li>Wentalittletoofarwithtags,andwentprettyfarbeyondthe200character</li>\r\n<li>Foundthatthesearereasonablelimits,thatifnotfollowed,breakthescript</li>\r\n<li><strong>Don\'t be like me. Gently use these tools and they will serve you well.</strong></li>\r\n<li>Here are some of the tools I used when tagging was done right.\r\n<ol type=\"1\">\r\n<li>i3 window manager\r\n<ul>\r\n<li>Use mplayer and vim</li>\r\n</ul></li>\r\n<li>Mplayer\r\n<ul>\r\n<li><p>Play audio file faster without pitch increase</p></li>\r\n<li><p><a href=\"https://kenfallon.com/speeding-up-speech-with-mplayer\" class=\"uri\">https://kenfallon.com/speeding-up-speech-with-mplayer</a><br />\r\n{ key will slow down by 50% of the current rate<br />\r\n[ key will slow down by 10% of the current rate<br />\r\nBackspace will return the speed to normal<br />\r\n] key will speed up 10% of the current rate<br />\r\n} key will speed up by 50% of the current rate<br />\r\n9 key will decrease the volume<br />\r\n0 key will increase the volume<br />\r\n</p>\r\n<p><code>alias mplayer=\'mpl
(3388,'2021-07-28','Linux Inlaws S01E35: The Free Software Foundation Europe',4695,'An interview with Matthias Kirschner, Free Software Foundation Europe','<p>In this episode our aging heroes host the Free Software Foundation Europe (FSFE). Its president, Matthias\r\nKirschner talk about the past, the present and the future of free and open source software not only\r\nfrom an FSFE perspective. Never mind how he got into computers in the first place. Also, different opinions\r\nabout communism in general and its implementations (and the flaws of the first rounds of implementations)\r\nare touched upon. So historians, FLOSS users and enthusiasts, communists and free spirits: This is your episode!\r\nPlus: Ever wondered what the Towel Day is all about? Check out the second half of the episode! At our guest\'s\r\nrequest:PleasenotethatthisepisodewasrecordedonJune1st2021.</p>\r\n<h2>Links:</h2>\r\n<ul>\r\n<li>FreeSoftwareFoundationEurope:<ahref=\"https://fsfe.org\"target=_blank>https://fsfe.org</a></li>\r\n<li>MatthiasKirschner:<ahref=\"https://fsfe.org/about/people/kirschner/kirschner.en.html\"target=_blank>https://fsfe.org/about/people/kirschner/kirschner.en.html</a></li>\r\n<li>FreeSoftwareFoundation:<ahref=\"https://fsf.org\"target=_blank>https://fsf.org</a></li>\r\n<li>OpenSoftwareInitiative(OSI):<ahref=\"https://opensource.org\"target=_blank>https://opensource.org</a></li>\r\n<li>OSIdefinitionofopensource:<ahref=\"https://opensource.org/osd\"target=_blank>https://opensource.org/osd</a></li>\r\n<li>PublicMoneyPublicCodecampaign:<ahref=\"https://publiccode.eu\"target=_blank>https://publiccode.eu</a></li>\r\n<li>Stallmancontroversy:<ahref=\"https://arstechnica.com/tech-policy/2021/03/richard-stallman-returns-to-fsf-18-months-after-controversial-rape-comments\"target=_blank>https://arstechnica.com/tech-policy/2021/03/richard-stallman-returns-to-fsf-18-months-after-controversial-rape-comments</a></li>\r\n<li>TowelDay:<ahref=\"https://en.wikipedia.org/wiki/Towel_Day\"target=_blank>https://en.wikipedia.org/wiki/Towel_Day</a></li>\r\n<li>FSFEpodcast:<ahref=\"https://fsfe.org/news/podcast.en.html\"target=_blank>https://fsfe.org/news/podcast.en.html</a></li>\r\n<li>RutgerBregman,Humankind:<ahref=\"https://www.amazon.de/Humankind-Hopeful-History-Rutger-Bregman/dp/1408898934\"target=_blank>https://www.amazon.de/Humankind-Hopeful-History-Rutger-Bregman/dp/1408898934</a></li>\r\n<li>AshestoAshes:<ahref=\"https://www.bbc.co.uk/programmes/b00jhp3l\"target=_blank>https://www.bbc.co.uk/programmes/b00jhp3l</a></li>\r\n<li>UKmetoffice:<ahref=\"https://www.metoffice.gov.uk\"target=_blank>https://www.metoffice.gov.uk</a></li>\r\n<li>KarlMarx,ACritiqueofPoliticalEconomy:<ahref=\"https://en.wikipedia.org/wiki/Das_Kapital\"target=_blank>https://en.wikipedia.org/wiki/Das_Kapital</a></li>\r\n</ul>\r\n',384,111,1,'CC-BY-SA','FSFE,FSF,Stallman,Hackathon,Communism,TowelDay',0,0,1),
(3580,'2022-04-22','RAW images',939,'How to work with unprocessed images in RAW formats','<p>Most of the time we work with JPEG images because that is the most common format for digital images. They have the virtue of decent quality combined with smaller file size, and so won\'tfillupyourstoragequiteasfast.Butifyouwantthehighestqualityyouhavetoworkwithunprocessedimages,calledRAWimages.Thesearesimplytheactualdatarecordedbythecamerasensors,andtheygiveyousomeadvantages,suchasbettercorrectionofwhitebalance.ButGIMPdoesnotopenRAWimagesdirectly.Buttherearesomework-aroundswhichwediscussinthistutorial.</p>\r\n<h2id=\"links\">Links:</h2>\r\n<ul>\r\n<li><ahref=\"https://en.wikipedia.org/wiki/Raw_image_format\"class=\"uri\">https://en.wikipedia.org/wiki/Raw_image_format</a></li>\r\n<li><ahref=\"https://en.wikipedia.org/wiki/Darktable\"class=\"uri\">https://en.wikipedia.org/wiki/Darktable</a></li>\r\n<li><ahref=\"https://en.wikipedia.org/wiki/Dcraw\"class=\"uri\">https://en.wikipedia.org/wiki/Dcraw</a></li>\r\n<li><ahref=\"https://linux.die.net/man/1/dcraw\"class=\"uri\">https://linux.die.net/man/1/dcraw</a></li>\r\n<li><ahref=\"https://krita.org/en/\"class=\"uri\">https://krita.org/en/</a></li>\r\n<li><ahref=\"https://www.rawtherapee.com/\"class=\"uri\">https://www.rawtherapee.com/</a></li>\r\n<li><ahref=\"https://en.wikipedia.org/wiki/DigiKam\"class=\"uri\">https://en.wikipedia.org/wiki/DigiKam</a></li>\r\n<li><ahref=\"https://en.wikipedia.org/wiki/ImageMagick\"class=\"uri\">https://en.wikipedia.org/wiki/ImageMagick</a></li>\r\n<li><ahref=\"https://en.wikipedia.org/wiki/Shotwell_(software)\"class=\"uri\">https://en.wikipedia.org/wiki/Shotwell_(software)</a></li>\r\n<li><ahref=\"https://en.wikipedia.org/wiki/Raw_image_format\"class=\"uri\">https://en.wikipedia.org/wiki/Raw_image_format</a></li>\r\n<li><ahref=\"https://howtogimp.com/raw-photos-in-gimp/\"class=\"uri\">https://howtogimp.com/raw-photos-in-gimp/</a></li>\r\n<li><ahref=\"https://www.signatureedits.com/free-raw-photos/\"class=\"uri\">https://www.signatureedits.com/free-raw-photos/</a></li>\r\n<li><ahref=\"https://www.signatureedits.com/raw-files-license/\"class=\"uri\">https://www.signatureedits.com/raw-files-license/</a></li>\r\n<li><ahref=\"https://www.darktable.org/install/\"class=\"uri\">https://www.darktable.org/install/</a></li>\r\n<li><ahref=\"https://www.rawtherapee.com/downloads/\"class=\"uri\">https://www.rawtherapee.com/downloads/</a></li>\r\n<li><ahref=\"https://www.ahuka.com/gimp/raw-images/\"class=\"uri\">https://www.ahuka.com/gimp/raw-images/</a></li>\r\n</ul>\r\n',198,113,0,'CC-BY-SA','GIMP,RAWimages,unprocessedimages',0,0,1),
(3590,'2022-05-06','Directory Commands',872,'More on DOS. This time it is Directory commands.','<p>As we saw in the last lesson, DOS uses directories to organize the files on your disks. That means we need to use directory commands to create a structure to store our files, and to find the files we have stored there. This tutorial takes us through the various commands you can use to do this.</p>\r\n<h2 id=\"links\">Links:</h2>\r\n<ul>\r\n<li><a href=\"https://www.ahuka.com/dos-lessons-for-self-study-purposes/dos-lesson-10-directory-commands/\" class=\"uri\">https://www.ahuka.com/dos-lessons-for-self-study-purposes/dos-lesson-10-directory-commands/</a></li>\r\n</ul>\r\n',198,117,0,'CC-BY-SA','DOS, early PC computing, directory listing',0,0,1),
(3600,'2022-05-20','Digitizing Photos',791,'How to digitize old prints, slides, and negatives','<p>Today most photos are in digital formats, such as those you take with a smartphone, so they can be worked on with GIMP right away. But about old prints, slides, and negatives? Before you can work on them, they need to be digitized in some way. In this tutorial I look at some of the options you have for doing this</p>\r\n<h2 id=\"links\">Links:</h2>\r\n<ul>\r\n<li><a href=\"https://www.toptenreviews.com/best-photo-scanning-services\" class=\"uri\">https://www.toptenreviews.com/best-photo-scanning-services</a></li>\r\n<li><a href=\"https://scandigital.com/\" class=\"uri\">https://scandigital.com/</a></li>\r\n<li><a href=\"https://everpresent.com/\" class=\"uri\">https://everpresent.com/</a></li>\r\n<li><a href=\"https://www.scancafe.com/\" class=\"uri\">https://www.scancafe.com/</a></li>\r\n<li><a href=\"https://www.gophoto.com/\" class=\"uri\">https://www.gophoto.com/</a></li>\r\n<li><a href=\"https://www.digitalmemoriesonline.net/\" class=\"uri\">https://www.digitalmemoriesonline.net/</a></li>\r\n<li><a href=\"https://www.scanmyphotos.com/\" class=\"uri\">https://www.scanmyphotos.com/</a></li>\r\n<li><a href=\"https://www.pcmag.com/reviews/google-photoscan\" class=\"uri\">https://www.pcmag.com/reviews/google-photoscan</a></li>\r\n<li><a href=\"https://www.toptenreviews.com/best-slide-to-digital-image-converters\" class=\"uri\">https://www.toptenreviews.com/best-slide-to-digital-image-converters</a></li>\r\n<li><a href=\"https://www.ahuka.com/gimp/digitizing-photos/\" class=\"uri\">https://www.ahuka.com/gimp/digitizing-photos/</a></li>\r\n</ul>\r\n',198,113,0,'CC-BY-SA','GIMP, digitizing, scanning, photos',0,0,1),
(3610,'2022-06-03','DOS Wildcards; File Attributes',907,'More on DOS. This time it is DOS Wildcards and File Attributes.','<p>For this lesson we are going to fill in a couple of concepts that we will need before we go further with directories. Wildcards can let you look for files and directories without specifying the complete name, and look for items with similar names or file extensions. And file attributes are an important part of file management.</p>\r\n<h2 id=\"links\">Links:</h2>\r\n<ul>\r\n<li><a href=\"https://www.ahuka.com/dos-lessons-for-self-study-purposes/dos-lesson-11-dos-wildcards-file-attributes/\" class=\"uri\">https://www.ahuka.com/dos-lessons-for-self-study-purposes/dos-lesson-11-dos-wildcards-file-attributes/</a></li>\r\n</ul>\r\n',198,117,0,'CC-BY-SA','DOS, early PC computing, wildcards, attributes',0,0,1),